# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# 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, '_CGAL_Polyhedron_3')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_CGAL_Polyhedron_3')
    _CGAL_Polyhedron_3 = 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('_CGAL_Polyhedron_3', [dirname(__file__)])
        except ImportError:
            import _CGAL_Polyhedron_3
            return _CGAL_Polyhedron_3
        try:
            _mod = imp.load_module('_CGAL_Polyhedron_3', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()
        return _mod
    _CGAL_Polyhedron_3 = swig_import_helper()
    del swig_import_helper
else:
    import _CGAL_Polyhedron_3
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

import CGAL.CGAL_Kernel
class Polyhedron_3_Modifier_base(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Modifier_base, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Modifier_base, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Modifier_base()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Modifier_base
    __del__ = lambda self: None
Polyhedron_3_Modifier_base_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Modifier_base_swigregister
Polyhedron_3_Modifier_base_swigregister(Polyhedron_3_Modifier_base)

class Polyhedron_3_Modifier_1(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Modifier_1, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Modifier_1, name)
    __repr__ = _swig_repr

    def get_modifier(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Modifier_1_get_modifier(self)

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Modifier_1()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Modifier_1
    __del__ = lambda self: None
Polyhedron_3_Modifier_1_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Modifier_1_swigregister
Polyhedron_3_Modifier_1_swigregister(Polyhedron_3_Modifier_1)

class Polyhedron_3_Modifier_2(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Modifier_2, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Modifier_2, name)
    __repr__ = _swig_repr

    def get_modifier(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Modifier_2_get_modifier(self)

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Modifier_2()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Modifier_2
    __del__ = lambda self: None
Polyhedron_3_Modifier_2_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Modifier_2_swigregister
Polyhedron_3_Modifier_2_swigregister(Polyhedron_3_Modifier_2)

RELATIVE_INDEXING = _CGAL_Polyhedron_3.RELATIVE_INDEXING
ABSOLUTE_INDEXING = _CGAL_Polyhedron_3.ABSOLUTE_INDEXING
class Polyhedron_3_Halfedge_handle(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Halfedge_handle, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Halfedge_handle, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Halfedge_handle()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def opposite(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_opposite(self, *args)

    def next(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_next(self, *args)

    def prev(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_prev(self, *args)

    def next_on_vertex(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_next_on_vertex(self, *args)

    def prev_on_vertex(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_prev_on_vertex(self, *args)

    def is_border(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_is_border(self)

    def is_border_edge(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_is_border_edge(self)

    def vertex_begin(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_vertex_begin(self)

    def facet_begin(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_facet_begin(self)

    def vertex_degree(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_vertex_degree(self)

    def is_bivalent(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_is_bivalent(self)

    def is_trivalent(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_is_trivalent(self)

    def facet_degree(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_facet_degree(self)

    def is_triangle(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_is_triangle(self)

    def is_quad(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_is_quad(self)

    def vertex(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_vertex(self, *args)

    def facet(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_facet(self, *args)

    def __lt__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle___lt__(self, p)

    def __gt__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle___gt__(self, p)

    def __le__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle___le__(self, p)

    def __ge__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle___ge__(self, p)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle___ne__(self, p)

    def __hash__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle___hash__(self)

    def id(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_id(self)

    def set_id(self, i):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_set_id(self, i)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_deepcopy(self, *args)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Halfedge_handle
    __del__ = lambda self: None
Polyhedron_3_Halfedge_handle_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_handle_swigregister
Polyhedron_3_Halfedge_handle_swigregister(Polyhedron_3_Halfedge_handle)

class Polyhedron_3_Vertex_handle(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Vertex_handle, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Vertex_handle, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Vertex_handle()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def point(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_point(self, *args)

    def halfedge(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_halfedge(self, *args)

    def vertex_begin(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_vertex_begin(self)

    def set_halfedge(self, c):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_set_halfedge(self, c)

    def vertex_degree(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_vertex_degree(self)

    def is_bivalent(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_is_bivalent(self)

    def is_trivalent(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_is_trivalent(self)

    def __lt__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle___lt__(self, p)

    def __gt__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle___gt__(self, p)

    def __le__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle___le__(self, p)

    def __ge__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle___ge__(self, p)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle___ne__(self, p)

    def __hash__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle___hash__(self)

    def id(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_id(self)

    def set_id(self, i):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_set_id(self, i)

    def set_point(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_set_point(self, p)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_deepcopy(self, *args)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Vertex_handle
    __del__ = lambda self: None
Polyhedron_3_Vertex_handle_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Vertex_handle_swigregister
Polyhedron_3_Vertex_handle_swigregister(Polyhedron_3_Vertex_handle)

class Polyhedron_3_Facet_handle(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Facet_handle, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Facet_handle, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Facet_handle()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def halfedge(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_halfedge(self, *args)

    def facet_begin(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_facet_begin(self)

    def set_halfedge(self, c):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_set_halfedge(self, c)

    def facet_degree(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_facet_degree(self)

    def is_triangle(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_is_triangle(self)

    def is_quad(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_is_quad(self)

    def __lt__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle___lt__(self, p)

    def __gt__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle___gt__(self, p)

    def __le__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle___le__(self, p)

    def __ge__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle___ge__(self, p)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle___ne__(self, p)

    def __hash__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle___hash__(self)

    def id(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_id(self)

    def set_id(self, i):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_set_id(self, i)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_deepcopy(self, *args)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Facet_handle
    __del__ = lambda self: None
Polyhedron_3_Facet_handle_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Facet_handle_swigregister
Polyhedron_3_Facet_handle_swigregister(Polyhedron_3_Facet_handle)

class Polyhedron_3(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def reserve(self, c1, c2, c3):
        return _CGAL_Polyhedron_3.Polyhedron_3_reserve(self, c1, c2, c3)

    def make_tetrahedron(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_make_tetrahedron(self, *args)

    def make_triangle(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_make_triangle(self, *args)

    def empty(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_empty(self)

    def size_of_vertices(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_size_of_vertices(self)

    def size_of_halfedges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_size_of_halfedges(self)

    def size_of_facets(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_size_of_facets(self)

    def capacity_of_vertices(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_capacity_of_vertices(self)

    def capacity_of_halfedges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_capacity_of_halfedges(self)

    def capacity_of_facets(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_capacity_of_facets(self)

    def bytes(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_bytes(self)

    def bytes_reserved(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_bytes_reserved(self)

    def vertices(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_vertices(self)

    def halfedges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_halfedges(self)

    def facets(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_facets(self)

    def edges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_edges(self)

    def points(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_points(self)

    def is_closed(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_closed(self)

    def is_pure_bivalent(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_pure_bivalent(self)

    def is_pure_trivalent(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_pure_trivalent(self)

    def is_pure_triangle(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_pure_triangle(self)

    def is_pure_quad(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_pure_quad(self)

    def is_triangle(self, c):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_triangle(self, c)

    def is_tetrahedron(self, c):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_tetrahedron(self, c)

    def split_facet(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_split_facet(self, *args)

    def join_facet(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_join_facet(self, *args)

    def split_vertex(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_split_vertex(self, *args)

    def join_vertex(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_join_vertex(self, *args)

    def split_edge(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_split_edge(self, *args)

    def flip_edge(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_flip_edge(self, *args)

    def create_center_vertex(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_create_center_vertex(self, *args)

    def erase_center_vertex(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_erase_center_vertex(self, *args)

    def split_loop(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_split_loop(self, *args)

    def join_loop(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_join_loop(self, *args)

    def make_hole(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_make_hole(self, *args)

    def fill_hole(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_fill_hole(self, *args)

    def add_vertex_and_facet_to_border(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_add_vertex_and_facet_to_border(self, *args)

    def add_facet_to_border(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_add_facet_to_border(self, *args)

    def erase_facet(self, c):
        return _CGAL_Polyhedron_3.Polyhedron_3_erase_facet(self, c)

    def erase_connected_component(self, c):
        return _CGAL_Polyhedron_3.Polyhedron_3_erase_connected_component(self, c)

    def keep_largest_connected_components(self, c):
        return _CGAL_Polyhedron_3.Polyhedron_3_keep_largest_connected_components(self, c)

    def clear(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_clear(self)

    def normalize_border(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_normalize_border(self)

    def size_of_border_halfedges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_size_of_border_halfedges(self)

    def size_of_border_edges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_size_of_border_edges(self)

    def border_halfedges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_border_halfedges(self)

    def non_border_halfedges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_non_border_halfedges(self)

    def border_edges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_border_edges(self)

    def non_border_edges(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_non_border_edges(self)

    def inside_out(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_inside_out(self)

    def is_valid(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_is_valid(self)

    def normalized_border_is_valid(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_normalized_border_is_valid(self)

    def delegate(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_delegate(self, *args)

    def write_to_file(self, off_filename, prec=5):
        return _CGAL_Polyhedron_3.Polyhedron_3_write_to_file(self, off_filename, prec)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_deepcopy(self, *args)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3
    __del__ = lambda self: None
Polyhedron_3_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_swigregister
Polyhedron_3_swigregister(Polyhedron_3)

class Polyhedron_modifier(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_modifier, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_modifier, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_modifier()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def begin_surface(self, v, f, h=0, mode=RELATIVE_INDEXING):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_begin_surface(self, v, f, h, mode)

    def end_surface(self):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_end_surface(self)

    def add_vertex(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_add_vertex(self, p)

    def begin_facet(self):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_begin_facet(self)

    def end_facet(self):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_end_facet(self)

    def add_vertex_to_facet(self, i):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_add_vertex_to_facet(self, i)

    def rollback(self):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_rollback(self)

    def clear(self):
        return _CGAL_Polyhedron_3.Polyhedron_modifier_clear(self)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_modifier
    __del__ = lambda self: None
Polyhedron_modifier_swigregister = _CGAL_Polyhedron_3.Polyhedron_modifier_swigregister
Polyhedron_modifier_swigregister(Polyhedron_modifier)

class Polyhedron_3_Halfedge_iterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Halfedge_iterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Halfedge_iterator, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Halfedge_iterator()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iter__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator___iter__(self)

    def __next__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator___next__(self)

    def next(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator_next(self, *args)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator_deepcopy(self, *args)

    def hasNext(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator_hasNext(self)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator___ne__(self, p)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Halfedge_iterator
    __del__ = lambda self: None
Polyhedron_3_Halfedge_iterator_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_iterator_swigregister
Polyhedron_3_Halfedge_iterator_swigregister(Polyhedron_3_Halfedge_iterator)

class Polyhedron_3_Edge_iterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Edge_iterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Edge_iterator, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Edge_iterator()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iter__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator___iter__(self)

    def __next__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator___next__(self)

    def next(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator_next(self, *args)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator_deepcopy(self, *args)

    def hasNext(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator_hasNext(self)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator___ne__(self, p)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Edge_iterator
    __del__ = lambda self: None
Polyhedron_3_Edge_iterator_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Edge_iterator_swigregister
Polyhedron_3_Edge_iterator_swigregister(Polyhedron_3_Edge_iterator)

class Polyhedron_3_Vertex_iterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Vertex_iterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Vertex_iterator, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Vertex_iterator()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iter__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator___iter__(self)

    def __next__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator___next__(self)

    def next(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator_next(self, *args)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator_deepcopy(self, *args)

    def hasNext(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator_hasNext(self)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator___ne__(self, p)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Vertex_iterator
    __del__ = lambda self: None
Polyhedron_3_Vertex_iterator_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Vertex_iterator_swigregister
Polyhedron_3_Vertex_iterator_swigregister(Polyhedron_3_Vertex_iterator)

class Polyhedron_3_Facet_iterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Facet_iterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Facet_iterator, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Facet_iterator()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iter__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator___iter__(self)

    def __next__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator___next__(self)

    def next(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator_next(self, *args)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator_deepcopy(self, *args)

    def hasNext(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator_hasNext(self)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator___ne__(self, p)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Facet_iterator
    __del__ = lambda self: None
Polyhedron_3_Facet_iterator_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Facet_iterator_swigregister
Polyhedron_3_Facet_iterator_swigregister(Polyhedron_3_Facet_iterator)

class Polyhedron_3_Point_iterator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Point_iterator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Point_iterator, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Point_iterator()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iter__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator___iter__(self)

    def __next__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator___next__(self)

    def next(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator_next(self, *args)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator_deepcopy(self, *args)

    def hasNext(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator_hasNext(self)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator___ne__(self, p)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Point_iterator
    __del__ = lambda self: None
Polyhedron_3_Point_iterator_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Point_iterator_swigregister
Polyhedron_3_Point_iterator_swigregister(Polyhedron_3_Point_iterator)

class Polyhedron_3_Halfedge_around_vertex_circulator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Halfedge_around_vertex_circulator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Halfedge_around_vertex_circulator, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Halfedge_around_vertex_circulator()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iter__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator___iter__(self)

    def next(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator_next(self)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator_deepcopy(self, *args)

    def prev(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator_prev(self)

    def hasNext(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator_hasNext(self)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator___ne__(self, p)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Halfedge_around_vertex_circulator
    __del__ = lambda self: None
Polyhedron_3_Halfedge_around_vertex_circulator_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_vertex_circulator_swigregister
Polyhedron_3_Halfedge_around_vertex_circulator_swigregister(Polyhedron_3_Halfedge_around_vertex_circulator)

class Polyhedron_3_Halfedge_around_facet_circulator(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Polyhedron_3_Halfedge_around_facet_circulator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Polyhedron_3_Halfedge_around_facet_circulator, name)
    __repr__ = _swig_repr

    def __init__(self):
        this = _CGAL_Polyhedron_3.new_Polyhedron_3_Halfedge_around_facet_circulator()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iter__(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator___iter__(self)

    def next(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator_next(self)

    def deepcopy(self, *args):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator_deepcopy(self, *args)

    def prev(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator_prev(self)

    def hasNext(self):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator_hasNext(self)

    def __eq__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator___eq__(self, p)

    def __ne__(self, p):
        return _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator___ne__(self, p)
    __swig_destroy__ = _CGAL_Polyhedron_3.delete_Polyhedron_3_Halfedge_around_facet_circulator
    __del__ = lambda self: None
Polyhedron_3_Halfedge_around_facet_circulator_swigregister = _CGAL_Polyhedron_3.Polyhedron_3_Halfedge_around_facet_circulator_swigregister
Polyhedron_3_Halfedge_around_facet_circulator_swigregister(Polyhedron_3_Halfedge_around_facet_circulator)

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


