# This file was automatically generated by SWIG (http://www.swig.org).
# Version 2.0.7
#
# 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
if 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('_libdelaunator', [dirname(__file__)])
        except ImportError:
            import _libdelaunator
            return _libdelaunator
        if fp is not None:
            try:
                _mod = imp.load_module('_libdelaunator', fp, pathname, description)
            finally:
                fp.close()
            return _mod
    _libdelaunator = swig_import_helper()
    del swig_import_helper
else:
    import _libdelaunator
del version_info
try:
    _swig_property = property
except NameError:
    pass # Python < 2.2 doesn't have 'property'.
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):
        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(name)

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

try:
    _object = object
    _newclass = 1
except AttributeError:
    class _object : pass
    _newclass = 0


class SwigPyIterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name)
    def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _libdelaunator.delete_SwigPyIterator
    __del__ = lambda self : None;
    def value(self): return _libdelaunator.SwigPyIterator_value(self)
    def incr(self, n=1): return _libdelaunator.SwigPyIterator_incr(self, n)
    def decr(self, n=1): return _libdelaunator.SwigPyIterator_decr(self, n)
    def distance(self, *args): return _libdelaunator.SwigPyIterator_distance(self, *args)
    def equal(self, *args): return _libdelaunator.SwigPyIterator_equal(self, *args)
    def copy(self): return _libdelaunator.SwigPyIterator_copy(self)
    def next(self): return _libdelaunator.SwigPyIterator_next(self)
    def __next__(self): return _libdelaunator.SwigPyIterator___next__(self)
    def previous(self): return _libdelaunator.SwigPyIterator_previous(self)
    def advance(self, *args): return _libdelaunator.SwigPyIterator_advance(self, *args)
    def __eq__(self, *args): return _libdelaunator.SwigPyIterator___eq__(self, *args)
    def __ne__(self, *args): return _libdelaunator.SwigPyIterator___ne__(self, *args)
    def __iadd__(self, *args): return _libdelaunator.SwigPyIterator___iadd__(self, *args)
    def __isub__(self, *args): return _libdelaunator.SwigPyIterator___isub__(self, *args)
    def __add__(self, *args): return _libdelaunator.SwigPyIterator___add__(self, *args)
    def __sub__(self, *args): return _libdelaunator.SwigPyIterator___sub__(self, *args)
    def __iter__(self): return self
SwigPyIterator_swigregister = _libdelaunator.SwigPyIterator_swigregister
SwigPyIterator_swigregister(SwigPyIterator)

class VirtualVertexList(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, VirtualVertexList, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, VirtualVertexList, name)
    __repr__ = _swig_repr
    def iterator(self): return _libdelaunator.VirtualVertexList_iterator(self)
    def __iter__(self): return self.iterator()
    def __nonzero__(self): return _libdelaunator.VirtualVertexList___nonzero__(self)
    def __bool__(self): return _libdelaunator.VirtualVertexList___bool__(self)
    def __len__(self): return _libdelaunator.VirtualVertexList___len__(self)
    def pop(self): return _libdelaunator.VirtualVertexList_pop(self)
    def __getslice__(self, *args): return _libdelaunator.VirtualVertexList___getslice__(self, *args)
    def __setslice__(self, *args): return _libdelaunator.VirtualVertexList___setslice__(self, *args)
    def __delslice__(self, *args): return _libdelaunator.VirtualVertexList___delslice__(self, *args)
    def __delitem__(self, *args): return _libdelaunator.VirtualVertexList___delitem__(self, *args)
    def __getitem__(self, *args): return _libdelaunator.VirtualVertexList___getitem__(self, *args)
    def __setitem__(self, *args): return _libdelaunator.VirtualVertexList___setitem__(self, *args)
    def append(self, *args): return _libdelaunator.VirtualVertexList_append(self, *args)
    def empty(self): return _libdelaunator.VirtualVertexList_empty(self)
    def size(self): return _libdelaunator.VirtualVertexList_size(self)
    def clear(self): return _libdelaunator.VirtualVertexList_clear(self)
    def swap(self, *args): return _libdelaunator.VirtualVertexList_swap(self, *args)
    def get_allocator(self): return _libdelaunator.VirtualVertexList_get_allocator(self)
    def begin(self): return _libdelaunator.VirtualVertexList_begin(self)
    def end(self): return _libdelaunator.VirtualVertexList_end(self)
    def rbegin(self): return _libdelaunator.VirtualVertexList_rbegin(self)
    def rend(self): return _libdelaunator.VirtualVertexList_rend(self)
    def pop_back(self): return _libdelaunator.VirtualVertexList_pop_back(self)
    def erase(self, *args): return _libdelaunator.VirtualVertexList_erase(self, *args)
    def __init__(self, *args): 
        this = _libdelaunator.new_VirtualVertexList(*args)
        try: self.this.append(this)
        except: self.this = this
    def push_back(self, *args): return _libdelaunator.VirtualVertexList_push_back(self, *args)
    def front(self): return _libdelaunator.VirtualVertexList_front(self)
    def back(self): return _libdelaunator.VirtualVertexList_back(self)
    def assign(self, *args): return _libdelaunator.VirtualVertexList_assign(self, *args)
    def resize(self, *args): return _libdelaunator.VirtualVertexList_resize(self, *args)
    def insert(self, *args): return _libdelaunator.VirtualVertexList_insert(self, *args)
    def pop_front(self): return _libdelaunator.VirtualVertexList_pop_front(self)
    def push_front(self, *args): return _libdelaunator.VirtualVertexList_push_front(self, *args)
    def remove(self, *args): return _libdelaunator.VirtualVertexList_remove(self, *args)
    def unique(self): return _libdelaunator.VirtualVertexList_unique(self)
    def reverse(self): return _libdelaunator.VirtualVertexList_reverse(self)
    def sort(self): return _libdelaunator.VirtualVertexList_sort(self)
    def merge(self, *args): return _libdelaunator.VirtualVertexList_merge(self, *args)
    __swig_destroy__ = _libdelaunator.delete_VirtualVertexList
    __del__ = lambda self : None;
VirtualVertexList_swigregister = _libdelaunator.VirtualVertexList_swigregister
VirtualVertexList_swigregister(VirtualVertexList)

FILE_LOGS = _libdelaunator.FILE_LOGS

def swap(*args):
  return _libdelaunator.swap(*args)
swap = _libdelaunator.swap

def strAfter(*args):
  return _libdelaunator.strAfter(*args)
strAfter = _libdelaunator.strAfter

def randstr(*args):
  return _libdelaunator.randstr(*args)
randstr = _libdelaunator.randstr

def logs(*args):
  return _libdelaunator.logs(*args)
logs = _libdelaunator.logs

def round_float(*args):
  return _libdelaunator.round_float(*args)
round_float = _libdelaunator.round_float
EPSILON = _libdelaunator.EPSILON
class Coordinates(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Coordinates, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Coordinates, name)
    __repr__ = _swig_repr
    def __init__(self, x=0., y=0.): 
        this = _libdelaunator.new_Coordinates(x, y)
        try: self.this.append(this)
        except: self.this = this
    def squareDistanceTo(self, *args): return _libdelaunator.Coordinates_squareDistanceTo(self, *args)
    def distanceTo(self, *args): return _libdelaunator.Coordinates_distanceTo(self, *args)
    def x(self): return _libdelaunator.Coordinates_x(self)
    def y(self): return _libdelaunator.Coordinates_y(self)
    def setX(self, *args): return _libdelaunator.Coordinates_setX(self, *args)
    def setY(self, *args): return _libdelaunator.Coordinates_setY(self, *args)
    def setCoord(self, *args): return _libdelaunator.Coordinates_setCoord(self, *args)
    def __eq__(self, *args): return _libdelaunator.Coordinates___eq__(self, *args)
    def __ne__(self, *args): return _libdelaunator.Coordinates___ne__(self, *args)
    def __add__(self, *args): return _libdelaunator.Coordinates___add__(self, *args)
    def __sub__(self, *args): return _libdelaunator.Coordinates___sub__(self, *args)
    def __div__(self, *args): return _libdelaunator.Coordinates___div__(self, *args)
    def __iadd__(self, *args): return _libdelaunator.Coordinates___iadd__(self, *args)
    __swig_getmethods__["x"] = x
    __swig_setmethods__["x"] = setX
    __swig_getmethods__["y"] = y
    __swig_setmethods__["y"] = setY
    if _newclass: 
            x = property(x, x)
            y = property(y, y)

    __swig_destroy__ = _libdelaunator.delete_Coordinates
    __del__ = lambda self : None;
Coordinates_swigregister = _libdelaunator.Coordinates_swigregister
Coordinates_swigregister(Coordinates)

class Vertex(Coordinates):
    __swig_setmethods__ = {}
    for _s in [Coordinates]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, Vertex, name, value)
    __swig_getmethods__ = {}
    for _s in [Coordinates]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, Vertex, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_Vertex(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _libdelaunator.delete_Vertex
    __del__ = lambda self : None;
    def neighbourCount(self): return _libdelaunator.Vertex_neighbourCount(self)
    def take(self, *args): return _libdelaunator.Vertex_take(self, *args)
    def giveVirtualVerticesTo(self, *args): return _libdelaunator.Vertex_giveVirtualVerticesTo(self, *args)
    def forget(self, *args): return _libdelaunator.Vertex_forget(self, *args)
    def getID(self): return _libdelaunator.Vertex_getID(self)
    def getObjectCount(self): return _libdelaunator.Vertex_getObjectCount(self)
    def getObjects(self, arg2=0): return _libdelaunator.Vertex_getObjects(self, arg2)
    def getFirstObject(self): return _libdelaunator.Vertex_getFirstObject(self)
    def getEdge(self): return _libdelaunator.Vertex_getEdge(self)
    def setEdge(self, *args): return _libdelaunator.Vertex_setEdge(self, *args)
    def isNeighbourOf(self, *args): return _libdelaunator.Vertex_isNeighbourOf(self, *args)
    def isACorner(self): return _libdelaunator.Vertex_isACorner(self)
    def have(self, *args): return _libdelaunator.Vertex_have(self, *args)
Vertex_swigregister = _libdelaunator.Vertex_swigregister
Vertex_swigregister(Vertex)

class Edge(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Edge, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Edge, name)
    __repr__ = _swig_repr
    def __init__(self, arg2=None, arg3=None, arg4=None, arg5=None, arg6=True): 
        this = _libdelaunator.new_Edge(arg2, arg3, arg4, arg5, arg6)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _libdelaunator.delete_Edge
    __del__ = lambda self : None;
    def distanceTo(self, *args): return _libdelaunator.Edge_distanceTo(self, *args)
    def squareDistanceTo(self, *args): return _libdelaunator.Edge_squareDistanceTo(self, *args)
    def coordOnTheStrictRight(self, *args): return _libdelaunator.Edge_coordOnTheStrictRight(self, *args)
    def coordOnTheRight(self, *args): return _libdelaunator.Edge_coordOnTheRight(self, *args)
    def coordOnTheStrictLeft(self, *args): return _libdelaunator.Edge_coordOnTheStrictLeft(self, *args)
    def coordOnTheLeft(self, *args): return _libdelaunator.Edge_coordOnTheLeft(self, *args)
    def originVertex(self): return _libdelaunator.Edge_originVertex(self)
    def destinVertex(self): return _libdelaunator.Edge_destinVertex(self)
    def oppositeEdge(self): return _libdelaunator.Edge_oppositeEdge(self)
    def nextLeftEdge(self): return _libdelaunator.Edge_nextLeftEdge(self)
    def prevLeftEdge(self): return _libdelaunator.Edge_prevLeftEdge(self)
    def nextRightEdge(self): return _libdelaunator.Edge_nextRightEdge(self)
    def prevRightEdge(self): return _libdelaunator.Edge_prevRightEdge(self)
    def rotLeftEdge(self): return _libdelaunator.Edge_rotLeftEdge(self)
    def rotRightEdge(self): return _libdelaunator.Edge_rotRightEdge(self)
    def leftFace(self): return _libdelaunator.Edge_leftFace(self)
    def rightFace(self): return _libdelaunator.Edge_rightFace(self)
    def isVisible(self): return _libdelaunator.Edge_isVisible(self)
    def isExternal(self): return _libdelaunator.Edge_isExternal(self)
    def getID(self): return _libdelaunator.Edge_getID(self)
    def length(self): return _libdelaunator.Edge_length(self)
    def squareLength(self): return _libdelaunator.Edge_squareLength(self)
    def middle(self): return _libdelaunator.Edge_middle(self)
    def setOriginVertex(self, *args): return _libdelaunator.Edge_setOriginVertex(self, *args)
    def setOppositeEdge(self, *args): return _libdelaunator.Edge_setOppositeEdge(self, *args)
    def setNextLeftEdge(self, *args): return _libdelaunator.Edge_setNextLeftEdge(self, *args)
    def setLeftFace(self, *args): return _libdelaunator.Edge_setLeftFace(self, *args)
    def setVisibility(self, *args): return _libdelaunator.Edge_setVisibility(self, *args)
    __swig_setmethods__["passing"] = _libdelaunator.Edge_passing_set
    __swig_getmethods__["passing"] = _libdelaunator.Edge_passing_get
    if _newclass:passing = _swig_property(_libdelaunator.Edge_passing_get, _libdelaunator.Edge_passing_set)
Edge_swigregister = _libdelaunator.Edge_swigregister
Edge_swigregister(Edge)

class Face(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Face, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Face, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_Face(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _libdelaunator.delete_Face
    __del__ = lambda self : None;
    def computeInternalValues(self): return _libdelaunator.Face_computeInternalValues(self)
    def collideAt(self, *args): return _libdelaunator.Face_collideAt(self, *args)
    def circumcircleContainCoords(self, *args): return _libdelaunator.Face_circumcircleContainCoords(self, *args)
    def isVisible(self): return _libdelaunator.Face_isVisible(self)
    def getEdge(self): return _libdelaunator.Face_getEdge(self)
    def getEdge1(self): return _libdelaunator.Face_getEdge1(self)
    def getEdge2(self): return _libdelaunator.Face_getEdge2(self)
    def getEdge3(self): return _libdelaunator.Face_getEdge3(self)
    def getP1(self): return _libdelaunator.Face_getP1(self)
    def getP2(self): return _libdelaunator.Face_getP2(self)
    def getP3(self): return _libdelaunator.Face_getP3(self)
    def getID(self): return _libdelaunator.Face_getID(self)
    def circumcenter(self): return _libdelaunator.Face_circumcenter(self)
    def circumcircleRadius(self): return _libdelaunator.Face_circumcircleRadius(self)
    def setEdge(self, *args): return _libdelaunator.Face_setEdge(self, *args)
    def setVisibility(self, *args): return _libdelaunator.Face_setVisibility(self, *args)
Face_swigregister = _libdelaunator.Face_swigregister
Face_swigregister(Face)

class IteratorOnVertices(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnVertices, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnVertices, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnVertices(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnVertices_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnVertices___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnVertices___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnVertices_begin(self)
    def end(self): return _libdelaunator.IteratorOnVertices_end(self)
    def getVertices(self): return _libdelaunator.IteratorOnVertices_getVertices(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnVertices
    __del__ = lambda self : None;
IteratorOnVertices_swigregister = _libdelaunator.IteratorOnVertices_swigregister
IteratorOnVertices_swigregister(IteratorOnVertices)

class IteratorOnVertices_read(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnVertices_read, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnVertices_read, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnVertices_read(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnVertices_read_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnVertices_read___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnVertices_read___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnVertices_read_begin(self)
    def end(self): return _libdelaunator.IteratorOnVertices_read_end(self)
    def getVertices(self): return _libdelaunator.IteratorOnVertices_read_getVertices(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnVertices_read
    __del__ = lambda self : None;
IteratorOnVertices_read_swigregister = _libdelaunator.IteratorOnVertices_read_swigregister
IteratorOnVertices_read_swigregister(IteratorOnVertices_read)

class IteratorOnAllVertices(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnAllVertices, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnAllVertices, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnAllVertices(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnAllVertices_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnAllVertices___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnAllVertices___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnAllVertices_begin(self)
    def end(self): return _libdelaunator.IteratorOnAllVertices_end(self)
    def getVertices(self): return _libdelaunator.IteratorOnAllVertices_getVertices(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnAllVertices
    __del__ = lambda self : None;
IteratorOnAllVertices_swigregister = _libdelaunator.IteratorOnAllVertices_swigregister
IteratorOnAllVertices_swigregister(IteratorOnAllVertices)

class IteratorOnAllVertices_read(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnAllVertices_read, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnAllVertices_read, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnAllVertices_read(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnAllVertices_read_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnAllVertices_read___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnAllVertices_read___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnAllVertices_read_begin(self)
    def end(self): return _libdelaunator.IteratorOnAllVertices_read_end(self)
    def getVertices(self): return _libdelaunator.IteratorOnAllVertices_read_getVertices(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnAllVertices_read
    __del__ = lambda self : None;
IteratorOnAllVertices_read_swigregister = _libdelaunator.IteratorOnAllVertices_read_swigregister
IteratorOnAllVertices_read_swigregister(IteratorOnAllVertices_read)

class IteratorVertexToNeighbourVertices(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorVertexToNeighbourVertices, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorVertexToNeighbourVertices, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorVertexToNeighbourVertices(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorVertexToNeighbourVertices_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorVertexToNeighbourVertices___ne__(self, *args)
    def __eq__(self, *args): return _libdelaunator.IteratorVertexToNeighbourVertices___eq__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorVertexToNeighbourVertices___ref__(self)
    def end(self): return _libdelaunator.IteratorVertexToNeighbourVertices_end(self)
    def getItem(self): return _libdelaunator.IteratorVertexToNeighbourVertices_getItem(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorVertexToNeighbourVertices
    __del__ = lambda self : None;
IteratorVertexToNeighbourVertices_swigregister = _libdelaunator.IteratorVertexToNeighbourVertices_swigregister
IteratorVertexToNeighbourVertices_swigregister(IteratorVertexToNeighbourVertices)

class IteratorVertexToNeighbourEdges(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorVertexToNeighbourEdges, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorVertexToNeighbourEdges, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorVertexToNeighbourEdges(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorVertexToNeighbourEdges_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorVertexToNeighbourEdges___ne__(self, *args)
    def __eq__(self, *args): return _libdelaunator.IteratorVertexToNeighbourEdges___eq__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorVertexToNeighbourEdges___ref__(self)
    def end(self): return _libdelaunator.IteratorVertexToNeighbourEdges_end(self)
    def getItem(self): return _libdelaunator.IteratorVertexToNeighbourEdges_getItem(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorVertexToNeighbourEdges
    __del__ = lambda self : None;
IteratorVertexToNeighbourEdges_swigregister = _libdelaunator.IteratorVertexToNeighbourEdges_swigregister
IteratorVertexToNeighbourEdges_swigregister(IteratorVertexToNeighbourEdges)

class IteratorOnFaces(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnFaces, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnFaces, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnFaces(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnFaces_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnFaces___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnFaces___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnFaces_begin(self)
    def end(self): return _libdelaunator.IteratorOnFaces_end(self)
    def getFaces(self): return _libdelaunator.IteratorOnFaces_getFaces(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnFaces
    __del__ = lambda self : None;
IteratorOnFaces_swigregister = _libdelaunator.IteratorOnFaces_swigregister
IteratorOnFaces_swigregister(IteratorOnFaces)

class IteratorOnFaces_read(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnFaces_read, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnFaces_read, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnFaces_read(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnFaces_read_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnFaces_read___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnFaces_read___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnFaces_read_begin(self)
    def end(self): return _libdelaunator.IteratorOnFaces_read_end(self)
    def getFaces(self): return _libdelaunator.IteratorOnFaces_read_getFaces(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnFaces_read
    __del__ = lambda self : None;
IteratorOnFaces_read_swigregister = _libdelaunator.IteratorOnFaces_read_swigregister
IteratorOnFaces_read_swigregister(IteratorOnFaces_read)

class IteratorOnAllFaces(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnAllFaces, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnAllFaces, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnAllFaces(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnAllFaces_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnAllFaces___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnAllFaces___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnAllFaces_begin(self)
    def end(self): return _libdelaunator.IteratorOnAllFaces_end(self)
    def getFaces(self): return _libdelaunator.IteratorOnAllFaces_getFaces(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnAllFaces
    __del__ = lambda self : None;
IteratorOnAllFaces_swigregister = _libdelaunator.IteratorOnAllFaces_swigregister
IteratorOnAllFaces_swigregister(IteratorOnAllFaces)

class IteratorOnAllFaces_read(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnAllFaces_read, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnAllFaces_read, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnAllFaces_read(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnAllFaces_read_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnAllFaces_read___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnAllFaces_read___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnAllFaces_read_begin(self)
    def end(self): return _libdelaunator.IteratorOnAllFaces_read_end(self)
    def getFaces(self): return _libdelaunator.IteratorOnAllFaces_read_getFaces(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnAllFaces_read
    __del__ = lambda self : None;
IteratorOnAllFaces_read_swigregister = _libdelaunator.IteratorOnAllFaces_read_swigregister
IteratorOnAllFaces_read_swigregister(IteratorOnAllFaces_read)

class IteratorFaceToVertices(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorFaceToVertices, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorFaceToVertices, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorFaceToVertices(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorFaceToVertices_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorFaceToVertices___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorFaceToVertices___ref__(self)
    def begin(self): return _libdelaunator.IteratorFaceToVertices_begin(self)
    def end(self): return _libdelaunator.IteratorFaceToVertices_end(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorFaceToVertices
    __del__ = lambda self : None;
IteratorFaceToVertices_swigregister = _libdelaunator.IteratorFaceToVertices_swigregister
IteratorFaceToVertices_swigregister(IteratorFaceToVertices)

class IteratorFaceToEdges(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorFaceToEdges, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorFaceToEdges, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorFaceToEdges(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorFaceToEdges_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorFaceToEdges___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorFaceToEdges___ref__(self)
    def begin(self): return _libdelaunator.IteratorFaceToEdges_begin(self)
    def end(self): return _libdelaunator.IteratorFaceToEdges_end(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorFaceToEdges
    __del__ = lambda self : None;
IteratorFaceToEdges_swigregister = _libdelaunator.IteratorFaceToEdges_swigregister
IteratorFaceToEdges_swigregister(IteratorFaceToEdges)

class IteratorFaceToNeighbourFaces(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorFaceToNeighbourFaces, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorFaceToNeighbourFaces, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorFaceToNeighbourFaces(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorFaceToNeighbourFaces_next(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorFaceToNeighbourFaces
    __del__ = lambda self : None;
IteratorFaceToNeighbourFaces_swigregister = _libdelaunator.IteratorFaceToNeighbourFaces_swigregister
IteratorFaceToNeighbourFaces_swigregister(IteratorFaceToNeighbourFaces)

class IteratorOnEdges(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnEdges, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnEdges, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnEdges(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnEdges_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnEdges___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnEdges___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnEdges_begin(self)
    def end(self): return _libdelaunator.IteratorOnEdges_end(self)
    def getEdges(self): return _libdelaunator.IteratorOnEdges_getEdges(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnEdges
    __del__ = lambda self : None;
IteratorOnEdges_swigregister = _libdelaunator.IteratorOnEdges_swigregister
IteratorOnEdges_swigregister(IteratorOnEdges)

class IteratorOnEdges_read(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnEdges_read, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnEdges_read, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnEdges_read(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnEdges_read_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnEdges_read___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnEdges_read___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnEdges_read_begin(self)
    def end(self): return _libdelaunator.IteratorOnEdges_read_end(self)
    def getEdges(self): return _libdelaunator.IteratorOnEdges_read_getEdges(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnEdges_read
    __del__ = lambda self : None;
IteratorOnEdges_read_swigregister = _libdelaunator.IteratorOnEdges_read_swigregister
IteratorOnEdges_read_swigregister(IteratorOnEdges_read)

class IteratorOnAllEdges(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnAllEdges, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnAllEdges, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnAllEdges(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnAllEdges_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnAllEdges___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnAllEdges___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnAllEdges_begin(self)
    def end(self): return _libdelaunator.IteratorOnAllEdges_end(self)
    def getEdges(self): return _libdelaunator.IteratorOnAllEdges_getEdges(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnAllEdges
    __del__ = lambda self : None;
IteratorOnAllEdges_swigregister = _libdelaunator.IteratorOnAllEdges_swigregister
IteratorOnAllEdges_swigregister(IteratorOnAllEdges)

class IteratorOnAllEdges_read(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, IteratorOnAllEdges_read, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, IteratorOnAllEdges_read, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_IteratorOnAllEdges_read(*args)
        try: self.this.append(this)
        except: self.this = this
    def next(self): return _libdelaunator.IteratorOnAllEdges_read_next(self)
    def __ne__(self, *args): return _libdelaunator.IteratorOnAllEdges_read___ne__(self, *args)
    def __ref__(self): return _libdelaunator.IteratorOnAllEdges_read___ref__(self)
    def begin(self): return _libdelaunator.IteratorOnAllEdges_read_begin(self)
    def end(self): return _libdelaunator.IteratorOnAllEdges_read_end(self)
    def getEdges(self): return _libdelaunator.IteratorOnAllEdges_read_getEdges(self)
    __swig_destroy__ = _libdelaunator.delete_IteratorOnAllEdges_read
    __del__ = lambda self : None;
IteratorOnAllEdges_read_swigregister = _libdelaunator.IteratorOnAllEdges_read_swigregister
IteratorOnAllEdges_read_swigregister(IteratorOnAllEdges_read)

class VirtualVertex(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, VirtualVertex, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, VirtualVertex, name)
    __repr__ = _swig_repr
    def __init__(self, arg2=None): 
        this = _libdelaunator.new_VirtualVertex(arg2)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _libdelaunator.delete_VirtualVertex
    __del__ = lambda self : None;
    def confoundedWithAnotherObject(self): return _libdelaunator.VirtualVertex_confoundedWithAnotherObject(self)
    def vertex(self): return _libdelaunator.VirtualVertex_vertex(self)
    def id(self): return _libdelaunator.VirtualVertex_id(self)
    def coordinates(self): return _libdelaunator.VirtualVertex_coordinates(self)
    def setVertex(self, *args): return _libdelaunator.VirtualVertex_setVertex(self, *args)
    def confundedNeighbors(self): return _libdelaunator.VirtualVertex_confundedNeighbors(self)
    def directNeighbors(self): return _libdelaunator.VirtualVertex_directNeighbors(self)
    def neighborsAt(self, *args): return _libdelaunator.VirtualVertex_neighborsAt(self, *args)
    def nearerNeighbors(self, *args): return _libdelaunator.VirtualVertex_nearerNeighbors(self, *args)
VirtualVertex_swigregister = _libdelaunator.VirtualVertex_swigregister
VirtualVertex_swigregister(VirtualVertex)

VERTEX_FINDER_MODE_RANDOM = _libdelaunator.VERTEX_FINDER_MODE_RANDOM
VERTEX_FINDER_MODE_FIRST = _libdelaunator.VERTEX_FINDER_MODE_FIRST
VERTEX_FINDER_MODE_MIDDLE = _libdelaunator.VERTEX_FINDER_MODE_MIDDLE
VERTEX_FINDER_MODE_LAST = _libdelaunator.VERTEX_FINDER_MODE_LAST
class Triangulation(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Triangulation, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Triangulation, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_Triangulation(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _libdelaunator.delete_Triangulation
    __del__ = lambda self : None;
    def addVertexAt(self, *args): return _libdelaunator.Triangulation_addVertexAt(self, *args)
    def vertexAt(self, *args): return _libdelaunator.Triangulation_vertexAt(self, *args)
    def moveVertex(self, *args): return _libdelaunator.Triangulation_moveVertex(self, *args)
    def moveVertexTo(self, *args): return _libdelaunator.Triangulation_moveVertexTo(self, *args)
    def delVertex(self, *args): return _libdelaunator.Triangulation_delVertex(self, *args)
    def mergeVertex(self, *args): return _libdelaunator.Triangulation_mergeVertex(self, *args)
    def getIndexOf(self, *args): return _libdelaunator.Triangulation_getIndexOf(self, *args)
    def getEdges(self): return _libdelaunator.Triangulation_getEdges(self)
    def getVerticeCount(self): return _libdelaunator.Triangulation_getVerticeCount(self)
    def getXmin(self): return _libdelaunator.Triangulation_getXmin(self)
    def getXmax(self): return _libdelaunator.Triangulation_getXmax(self)
    def getYmin(self): return _libdelaunator.Triangulation_getYmin(self)
    def getYmax(self): return _libdelaunator.Triangulation_getYmax(self)
    def epsilon(self): return _libdelaunator.Triangulation_epsilon(self)
    def getFinderMode(self): return _libdelaunator.Triangulation_getFinderMode(self)
    def setFinderMode(self, *args): return _libdelaunator.Triangulation_setFinderMode(self, *args)
    def haveVertex(self, *args): return _libdelaunator.Triangulation_haveVertex(self, *args)
    def collideAt(self, *args): return _libdelaunator.Triangulation_collideAt(self, *args)
    def opt_isdebug(self): return _libdelaunator.Triangulation_opt_isdebug(self)
    def opt_follow_search(self): return _libdelaunator.Triangulation_opt_follow_search(self)
    def getNeighbors(self, *args): return _libdelaunator.Triangulation_getNeighbors(self, *args)
    def iterEdges(self): return _libdelaunator.Triangulation_iterEdges(self)
    def iterEdges_read(self): return _libdelaunator.Triangulation_iterEdges_read(self)
    def iterAllEdges(self): return _libdelaunator.Triangulation_iterAllEdges(self)
    def iterAllEdges_read(self): return _libdelaunator.Triangulation_iterAllEdges_read(self)
    def iterFaces(self): return _libdelaunator.Triangulation_iterFaces(self)
    def iterFaces_read(self): return _libdelaunator.Triangulation_iterFaces_read(self)
    def iterAllFaces(self): return _libdelaunator.Triangulation_iterAllFaces(self)
    def iterAllFaces_read(self): return _libdelaunator.Triangulation_iterAllFaces_read(self)
    def iterVertices(self): return _libdelaunator.Triangulation_iterVertices(self)
    def iterVertices_read(self): return _libdelaunator.Triangulation_iterVertices_read(self)
    def iterAllVertices(self): return _libdelaunator.Triangulation_iterAllVertices(self)
    def iterAllVertices_read(self): return _libdelaunator.Triangulation_iterAllVertices_read(self)
Triangulation_swigregister = _libdelaunator.Triangulation_swigregister
Triangulation_swigregister(Triangulation)

class Delaunator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Delaunator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Delaunator, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _libdelaunator.new_Delaunator(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _libdelaunator.delete_Delaunator
    __del__ = lambda self : None;
    def addVirtualVertex(self, *args): return _libdelaunator.Delaunator_addVirtualVertex(self, *args)
    def delVirtualVertex(self, *args): return _libdelaunator.Delaunator_delVirtualVertex(self, *args)
    def movVirtualVertex(self, *args): return _libdelaunator.Delaunator_movVirtualVertex(self, *args)
    def virtualVertexAt(self, *args): return _libdelaunator.Delaunator_virtualVertexAt(self, *args)
    def virtualVerticesAt(self, *args): return _libdelaunator.Delaunator_virtualVerticesAt(self, *args)
    def objectCount(self): return _libdelaunator.Delaunator_objectCount(self)
    def getXmin(self): return _libdelaunator.Delaunator_getXmin(self)
    def getXmax(self): return _libdelaunator.Delaunator_getXmax(self)
    def getYmin(self): return _libdelaunator.Delaunator_getYmin(self)
    def getYmax(self): return _libdelaunator.Delaunator_getYmax(self)
    def epsilon(self): return _libdelaunator.Delaunator_epsilon(self)
    def haveVertex(self, *args): return _libdelaunator.Delaunator_haveVertex(self, *args)
    def collideAt(self, *args): return _libdelaunator.Delaunator_collideAt(self, *args)
    def opt_isdebug(self): return _libdelaunator.Delaunator_opt_isdebug(self)
    def opt_follow_search(self): return _libdelaunator.Delaunator_opt_follow_search(self)
    def virtualVertices(self): return _libdelaunator.Delaunator_virtualVertices(self)
Delaunator_swigregister = _libdelaunator.Delaunator_swigregister
Delaunator_swigregister(Delaunator)

class TrianguledObject(object):
        """
        Object defined by Delaunator module for simplify using of it.
        This is like an abstract class : no real code need to have pure Trianguled Object defined.
        Correct use is to use objects that inherits from this class.
        """
        VRTL_VRTX_TO_TRNGLD_OBJCT = {None:None}


# CONSTRUCTOR #################################################################
        def __init__(self, delaunator = None, coords = None):
                """
                @param delaunator a valid reference to a delaunay triangulation, or None (default is None)
                @param coords (x,y) tuple, position in the triangulation, or None (default is None)
                @note that self will attach itself if and only if given args are not None, and coords are valid in delaunator
                """
                if delaunator is not None:
                        delaunator.addTrianguledObject(self, coords)



# PUBLIC METHOD ###############################################################
        def coordinates(self):
                return self.virtual_vertex.coordinates()



# ACCESSORS ###################################################################
        @property
        def virtualConfundedNeighbors(self):
                """
                @return list of VirtualVertex, that are confunded neighbors of self
                @note confunded neighbors share the same Vertex instance.
                """
                return self.virtual_vertex.confundedNeighbors()


        @property
        def confundedNeighbors(self):
                """
                @return list of TrianguledObject, that are confunded neighbors of self
                @note confunded neighbors share the same Vertex instance.
                """
                return (TrianguledObject.of(_) for _ in self.virtual_vertex.confundedNeighbors())


        @property
        def directNeighbors(self):
                """
                @return list of direct neighbors of self
                @note direct neighbors have no sense out of mathematical definition of delaunay triangulation, because its just objects that are directly connected to self by an edge.
                """
                return self.virtual_vertex.directNeighbors()


        def nearerNeighbors(self, nb_neighbors, confounded = False):
                """
                @param nb_neighbors a positiv integer
                @param confounded a boolean (False by default). If true, confounded TrianguledObject count for only one, but are all returned.
                @return list that contain the nb_neighbors neighbors in nearer-first order
                """
                return (TrianguledObject.of(_) for _ in self.virtual_vertex.nearerNeighbors(nb_neighbors, confounded))


        def neighborsAt(self, max_distance, min_distance = 0):
                """
                @param max_distance number that give the limit distance 
                @param min_distance number that give the low limit. No low limit if equal to zero (default value is zero)
                @return list that contain the TrianguledObject that are at max_distance at most of self 
                """
                return (TrianguledObject.of(_) for _ in self.virtual_vertex.neighborsAt(max_distance, min_distance))



# PREDICAT ####################################################################
        def inTriangulation(self):
                """
                @return True iff associated with a triangulation.
                """
                return self.virtual_vertex is not None



# CLASS METHOD ################################################################
        @staticmethod
        def of(virtual_vertex):
                return TrianguledObject.VRTL_VRTX_TO_TRNGLD_OBJCT[virtual_vertex.id()] if virtual_vertex is not None else None




def trianguledObjects(self):
        """
        @return iterable of objects
        """
        return (TrianguledObject.of(_) for _ in self.virtualVertices())
Delaunator.trianguledObjects = trianguledObjects




def addTrianguledObject(self, tri_obj, coords):
        """
        @param tri_obj TrianguledObject to add
        @param coords (x,y) where tri_obj will be place
        @return the id of tri_obj in self instance, or None iff coords invalid 
        """
        added = None
        # transform user coords into Coordinates object
        if not isinstance(coords, Coordinates):
                coords = Coordinates(*coords)
        # add the trianguled object
        if tri_obj is not None and coords is not None:
                tri_obj.virtual_vertex  = self.addVirtualVertex(coords)
                if tri_obj.virtual_vertex is not None:
                        # all is ok, object is added !
                        TrianguledObject.VRTL_VRTX_TO_TRNGLD_OBJCT[tri_obj.virtual_vertex.id()] = tri_obj
                        added = tri_obj.virtual_vertex.id()
        return added
Delaunator.addTrianguledObject = addTrianguledObject




def delTrianguledObject(self, tri_obj):
        """
        @param tri_obj the TrianguledObject that will be forget
        Detach tri_obj of self. Destroy associated VirtualVertex.
        """
        if tri_obj.virtual_vertex is not None:
                # delete entry in dictionnary
                del TrianguledObject.VRTL_VRTX_TO_TRNGLD_OBJCT[tri_obj.virtual_vertex.id()]
                self.delVirtualVertex(tri_obj.virtual_vertex)
                tri_obj.virtual_vertex = None
Delaunator.delTrianguledObject = delTrianguledObject
       



def movTrianguledObject(self, tri_obj, coords):
        """
        @param tri_obj the TrianguledObject that will be moved
        @param coords that will be added to current tri_obj coordinates
        """
        # transform user coords into Coordinates object
        if not isinstance(coords, Coordinates):
                coords = Coordinates(*coords)
        # do the move
        self.movVirtualVertex(tri_obj.virtual_vertex, coords)
Delaunator.movTrianguledObject = movTrianguledObject






# This file is compatible with both classic and new-style classes.


