# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.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
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _p3dSkel
else:
    import _p3dSkel

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 == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, 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__)



def cdata(ptr, nelements=1):
    return _p3dSkel.cdata(ptr, nelements)

def memmove(data, indata):
    return _p3dSkel.memmove(data, indata)

def malloc_uchar(*args):
    return _p3dSkel.malloc_uchar(*args)

def calloc_uchar(*args):
    return _p3dSkel.calloc_uchar(*args)

def realloc_uchar(ptr, nitems):
    return _p3dSkel.realloc_uchar(ptr, nitems)

def free_uchar(ptr):
    return _p3dSkel.free_uchar(ptr)
sizeof_uchar = _p3dSkel.sizeof_uchar

def malloc_ushort(*args):
    return _p3dSkel.malloc_ushort(*args)

def calloc_ushort(*args):
    return _p3dSkel.calloc_ushort(*args)

def realloc_ushort(ptr, nitems):
    return _p3dSkel.realloc_ushort(ptr, nitems)

def free_ushort(ptr):
    return _p3dSkel.free_ushort(ptr)
sizeof_ushort = _p3dSkel.sizeof_ushort

def malloc_PSkeletonStats(*args):
    return _p3dSkel.malloc_PSkeletonStats(*args)

def calloc_PSkeletonStats(*args):
    return _p3dSkel.calloc_PSkeletonStats(*args)

def realloc_PSkeletonStats(ptr, nitems):
    return _p3dSkel.realloc_PSkeletonStats(ptr, nitems)

def free_PSkeletonStats(ptr):
    return _p3dSkel.free_PSkeletonStats(ptr)
sizeof_PSkeletonStats = _p3dSkel.sizeof_PSkeletonStats
P3D_FALSE = _p3dSkel.P3D_FALSE
P3D_TRUE = _p3dSkel.P3D_TRUE
P3D_ERROR = _p3dSkel.P3D_ERROR
P3D_SUCCESS = _p3dSkel.P3D_SUCCESS
BACKGROUND = _p3dSkel.BACKGROUND
NODE_LABEL = _p3dSkel.NODE_LABEL
END_LABEL = _p3dSkel.END_LABEL
ISOLATED_LABEL = _p3dSkel.ISOLATED_LABEL
NODETONODE_LABEL = _p3dSkel.NODETONODE_LABEL
NODETOEND_LABEL = _p3dSkel.NODETOEND_LABEL
ENDTOEND_LABEL = _p3dSkel.ENDTOEND_LABEL
class SkeletonStats(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ConnectivityDensity = property(_p3dSkel.SkeletonStats_ConnectivityDensity_get, _p3dSkel.SkeletonStats_ConnectivityDensity_set)
    CoordinationNumber = property(_p3dSkel.SkeletonStats_CoordinationNumber_get, _p3dSkel.SkeletonStats_CoordinationNumber_set)
    End_Counter = property(_p3dSkel.SkeletonStats_End_Counter_get, _p3dSkel.SkeletonStats_End_Counter_set)
    End_Width = property(_p3dSkel.SkeletonStats_End_Width_get, _p3dSkel.SkeletonStats_End_Width_set)
    EndToEnd_Counter = property(_p3dSkel.SkeletonStats_EndToEnd_Counter_get, _p3dSkel.SkeletonStats_EndToEnd_Counter_set)
    EndToEnd_Length = property(_p3dSkel.SkeletonStats_EndToEnd_Length_get, _p3dSkel.SkeletonStats_EndToEnd_Length_set)
    EndToEnd_MaxWidth = property(_p3dSkel.SkeletonStats_EndToEnd_MaxWidth_get, _p3dSkel.SkeletonStats_EndToEnd_MaxWidth_set)
    EndToEnd_MeanWidth = property(_p3dSkel.SkeletonStats_EndToEnd_MeanWidth_get, _p3dSkel.SkeletonStats_EndToEnd_MeanWidth_set)
    EndToEnd_MinWidth = property(_p3dSkel.SkeletonStats_EndToEnd_MinWidth_get, _p3dSkel.SkeletonStats_EndToEnd_MinWidth_set)
    NodeToEnd_Counter = property(_p3dSkel.SkeletonStats_NodeToEnd_Counter_get, _p3dSkel.SkeletonStats_NodeToEnd_Counter_set)
    NodeToEnd_Length = property(_p3dSkel.SkeletonStats_NodeToEnd_Length_get, _p3dSkel.SkeletonStats_NodeToEnd_Length_set)
    NodeToEnd_MaxWidth = property(_p3dSkel.SkeletonStats_NodeToEnd_MaxWidth_get, _p3dSkel.SkeletonStats_NodeToEnd_MaxWidth_set)
    NodeToEnd_MeanWidth = property(_p3dSkel.SkeletonStats_NodeToEnd_MeanWidth_get, _p3dSkel.SkeletonStats_NodeToEnd_MeanWidth_set)
    NodeToEnd_MinWidth = property(_p3dSkel.SkeletonStats_NodeToEnd_MinWidth_get, _p3dSkel.SkeletonStats_NodeToEnd_MinWidth_set)
    NodeToNode_Counter = property(_p3dSkel.SkeletonStats_NodeToNode_Counter_get, _p3dSkel.SkeletonStats_NodeToNode_Counter_set)
    NodeToNode_Length = property(_p3dSkel.SkeletonStats_NodeToNode_Length_get, _p3dSkel.SkeletonStats_NodeToNode_Length_set)
    NodeToNode_MaxWidth = property(_p3dSkel.SkeletonStats_NodeToNode_MaxWidth_get, _p3dSkel.SkeletonStats_NodeToNode_MaxWidth_set)
    NodeToNode_MeanWidth = property(_p3dSkel.SkeletonStats_NodeToNode_MeanWidth_get, _p3dSkel.SkeletonStats_NodeToNode_MeanWidth_set)
    NodeToNode_MinWidth = property(_p3dSkel.SkeletonStats_NodeToNode_MinWidth_get, _p3dSkel.SkeletonStats_NodeToNode_MinWidth_set)
    Node_Counter = property(_p3dSkel.SkeletonStats_Node_Counter_get, _p3dSkel.SkeletonStats_Node_Counter_set)
    Node_Width = property(_p3dSkel.SkeletonStats_Node_Width_get, _p3dSkel.SkeletonStats_Node_Width_set)

    def __init__(self):
        _p3dSkel.SkeletonStats_swiginit(self, _p3dSkel.new_SkeletonStats())
    __swig_destroy__ = _p3dSkel.delete_SkeletonStats

# Register SkeletonStats in _p3dSkel:
_p3dSkel.SkeletonStats_swigregister(SkeletonStats)


def p3dGVFSkeletonization(in_im, skl_im, dimx, dimy, dimz, mu, eps, thresh, scale, wr_log):
    return _p3dSkel.p3dGVFSkeletonization(in_im, skl_im, dimx, dimy, dimz, mu, eps, thresh, scale, wr_log)

def p3dThinningSkeletonization(in_im, out_im, dimx, dimy, dimz, wr_log):
    return _p3dSkel.p3dThinningSkeletonization(in_im, out_im, dimx, dimy, dimz, wr_log)

def p3dLKCSkeletonization(in_im, out_im, dimx, dimy, dimz, wr_log):
    return _p3dSkel.p3dLKCSkeletonization(in_im, out_im, dimx, dimy, dimz, wr_log)

def p3dSimpleSkeletonPruning(in_im, out_im, dimx, dimy, dimz, thresh, wr_log):
    return _p3dSkel.p3dSimpleSkeletonPruning(in_im, out_im, dimx, dimy, dimz, thresh, wr_log)

def p3dIterativeSkeletonPruning(in_im, out_im, dimx, dimy, dimz, thresh, wr_log):
    return _p3dSkel.p3dIterativeSkeletonPruning(in_im, out_im, dimx, dimy, dimz, thresh, wr_log)

def p3dUltimateSkeletonPruning(in_im, out_im, dimx, dimy, dimz, iterative, wr_log):
    return _p3dSkel.p3dUltimateSkeletonPruning(in_im, out_im, dimx, dimy, dimz, iterative, wr_log)

def p3dSkeletonLabeling(in_im, out_im, dimx, dimy, dimz, wr_log):
    return _p3dSkel.p3dSkeletonLabeling(in_im, out_im, dimx, dimy, dimz, wr_log)

def p3dSkeletonAnalysis(vol_im, skl_im, out_stats, nodes_im, pores_im, ends_im, throats_im, dimx, dimy, dimz, merging_factor, tortuosity_depth, voxelsize, wr_log):
    return _p3dSkel.p3dSkeletonAnalysis(vol_im, skl_im, out_stats, nodes_im, pores_im, ends_im, throats_im, dimx, dimy, dimz, merging_factor, tortuosity_depth, voxelsize, wr_log)

def p3dSkeletonAnalysis_2(vol_im, skl_im, out_stats, nodes_im, pores_im, ends_im, throats_im, dimx, dimy, dimz, merging_factor, tortuosity_depth, voxelsize, wr_log):
    return _p3dSkel.p3dSkeletonAnalysis_2(vol_im, skl_im, out_stats, nodes_im, pores_im, ends_im, throats_im, dimx, dimy, dimz, merging_factor, tortuosity_depth, voxelsize, wr_log)

def p3dSkeletonAnalysisFeasibility(in_im, sk_im, ratio, dimx, dimy, dimz, wr_log):
    return _p3dSkel.p3dSkeletonAnalysisFeasibility(in_im, sk_im, ratio, dimx, dimy, dimz, wr_log)

def p3dResetStartTime():
    return _p3dSkel.p3dResetStartTime()

def p3dGetElapsedTime():
    return _p3dSkel.p3dGetElapsedTime()

def p3dGetElapsedTime_min():
    return _p3dSkel.p3dGetElapsedTime_min()

def p3dGetElapsedTime_sec():
    return _p3dSkel.p3dGetElapsedTime_sec()
class bb_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    min_x = property(_p3dSkel.bb_t_min_x_get, _p3dSkel.bb_t_min_x_set)
    max_x = property(_p3dSkel.bb_t_max_x_get, _p3dSkel.bb_t_max_x_set)
    min_y = property(_p3dSkel.bb_t_min_y_get, _p3dSkel.bb_t_min_y_set)
    max_y = property(_p3dSkel.bb_t_max_y_get, _p3dSkel.bb_t_max_y_set)
    min_z = property(_p3dSkel.bb_t_min_z_get, _p3dSkel.bb_t_min_z_set)
    max_z = property(_p3dSkel.bb_t_max_z_get, _p3dSkel.bb_t_max_z_set)

    def __init__(self):
        _p3dSkel.bb_t_swiginit(self, _p3dSkel.new_bb_t())
    __swig_destroy__ = _p3dSkel.delete_bb_t

# Register bb_t in _p3dSkel:
_p3dSkel.bb_t_swigregister(bb_t)


def p3dConnectedComponentsLabeling(in_rev, out_rev, numOfConnectedComponents, volumes, boundingBoxes, dimx, dimy, dimz, conn, skip_borders):
    return _p3dSkel.p3dConnectedComponentsLabeling(in_rev, out_rev, numOfConnectedComponents, volumes, boundingBoxes, dimx, dimy, dimz, conn, skip_borders)

def p3dGetMaxVolumeRegion(in_rev, out_rev, dimx, dimy, dimz, conn):
    return _p3dSkel.p3dGetMaxVolumeRegion(in_rev, out_rev, dimx, dimy, dimz, conn)
class coords_lelem_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    elem = property(_p3dSkel.coords_lelem_t_elem_get, _p3dSkel.coords_lelem_t_elem_set)
    next = property(_p3dSkel.coords_lelem_t_next_get, _p3dSkel.coords_lelem_t_next_set)

    def __init__(self):
        _p3dSkel.coords_lelem_t_swiginit(self, _p3dSkel.new_coords_lelem_t())
    __swig_destroy__ = _p3dSkel.delete_coords_lelem_t

# Register coords_lelem_t in _p3dSkel:
_p3dSkel.coords_lelem_t_swigregister(coords_lelem_t)


def coords_list_init(arg1):
    return _p3dSkel.coords_list_init(arg1)

def coords_list_push(arg1, arg2):
    return _p3dSkel.coords_list_push(arg1, arg2)

def coords_list_pop(arg1):
    return _p3dSkel.coords_list_pop(arg1)

def coords_list_isempty(arg1):
    return _p3dSkel.coords_list_isempty(arg1)

def coords_list_toarray(arg1, arg2):
    return _p3dSkel.coords_list_toarray(arg1, arg2)
class coords_qelem_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    item = property(_p3dSkel.coords_qelem_t_item_get, _p3dSkel.coords_qelem_t_item_set)
    next = property(_p3dSkel.coords_qelem_t_next_get, _p3dSkel.coords_qelem_t_next_set)

    def __init__(self):
        _p3dSkel.coords_qelem_t_swiginit(self, _p3dSkel.new_coords_qelem_t())
    __swig_destroy__ = _p3dSkel.delete_coords_qelem_t

# Register coords_qelem_t in _p3dSkel:
_p3dSkel.coords_qelem_t_swigregister(coords_qelem_t)

class coords_queue_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    tail = property(_p3dSkel.coords_queue_t_tail_get, _p3dSkel.coords_queue_t_tail_set)
    head = property(_p3dSkel.coords_queue_t_head_get, _p3dSkel.coords_queue_t_head_set)

    def __init__(self):
        _p3dSkel.coords_queue_t_swiginit(self, _p3dSkel.new_coords_queue_t())
    __swig_destroy__ = _p3dSkel.delete_coords_queue_t

# Register coords_queue_t in _p3dSkel:
_p3dSkel.coords_queue_t_swigregister(coords_queue_t)


def coords_queue_init(queue):
    return _p3dSkel.coords_queue_init(queue)

def coords_queue_push(queue, elem):
    return _p3dSkel.coords_queue_push(queue, elem)

def coords_queue_pop(queue):
    return _p3dSkel.coords_queue_pop(queue)

def coords_queue_isempty(queue):
    return _p3dSkel.coords_queue_isempty(queue)
class coords_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    x = property(_p3dSkel.coords_t_x_get, _p3dSkel.coords_t_x_set)
    y = property(_p3dSkel.coords_t_y_get, _p3dSkel.coords_t_y_set)
    z = property(_p3dSkel.coords_t_z_get, _p3dSkel.coords_t_z_set)

    def __init__(self):
        _p3dSkel.coords_t_swiginit(self, _p3dSkel.new_coords_t())
    __swig_destroy__ = _p3dSkel.delete_coords_t

# Register coords_t in _p3dSkel:
_p3dSkel.coords_t_swigregister(coords_t)

class fcoords_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    x = property(_p3dSkel.fcoords_t_x_get, _p3dSkel.fcoords_t_x_set)
    y = property(_p3dSkel.fcoords_t_y_get, _p3dSkel.fcoords_t_y_set)
    z = property(_p3dSkel.fcoords_t_z_get, _p3dSkel.fcoords_t_z_set)

    def __init__(self):
        _p3dSkel.fcoords_t_swiginit(self, _p3dSkel.new_fcoords_t())
    __swig_destroy__ = _p3dSkel.delete_fcoords_t

# Register fcoords_t in _p3dSkel:
_p3dSkel.fcoords_t_swigregister(fcoords_t)

class fcoords_lelem_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    elem = property(_p3dSkel.fcoords_lelem_t_elem_get, _p3dSkel.fcoords_lelem_t_elem_set)
    next = property(_p3dSkel.fcoords_lelem_t_next_get, _p3dSkel.fcoords_lelem_t_next_set)

    def __init__(self):
        _p3dSkel.fcoords_lelem_t_swiginit(self, _p3dSkel.new_fcoords_lelem_t())
    __swig_destroy__ = _p3dSkel.delete_fcoords_lelem_t

# Register fcoords_lelem_t in _p3dSkel:
_p3dSkel.fcoords_lelem_t_swigregister(fcoords_lelem_t)


def fcoords_list_init(arg1):
    return _p3dSkel.fcoords_list_init(arg1)

def fcoords_list_push(arg1, arg2):
    return _p3dSkel.fcoords_list_push(arg1, arg2)

def fcoords_list_pop(arg1):
    return _p3dSkel.fcoords_list_pop(arg1)

def fcoords_list_isempty(arg1):
    return _p3dSkel.fcoords_list_isempty(arg1)

def fcoords_list_toarray(arg1, arg2):
    return _p3dSkel.fcoords_list_toarray(arg1, arg2)

def p3dSquaredEuclideanDT(in_im, out_im, dimx, dimy, dimz):
    return _p3dSkel.p3dSquaredEuclideanDT(in_im, out_im, dimx, dimy, dimz)

def p3dThinning(im, dimx, dimy, dimz):
    return _p3dSkel.p3dThinning(im, dimx, dimy, dimz)
class uint_lelem_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ct = property(_p3dSkel.uint_lelem_t_ct_get, _p3dSkel.uint_lelem_t_ct_set)
    next = property(_p3dSkel.uint_lelem_t_next_get, _p3dSkel.uint_lelem_t_next_set)

    def __init__(self):
        _p3dSkel.uint_lelem_t_swiginit(self, _p3dSkel.new_uint_lelem_t())
    __swig_destroy__ = _p3dSkel.delete_uint_lelem_t

# Register uint_lelem_t in _p3dSkel:
_p3dSkel.uint_lelem_t_swigregister(uint_lelem_t)


def uint_list_init(list):
    return _p3dSkel.uint_list_init(list)

def uint_list_add(list, ct):
    return _p3dSkel.uint_list_add(list, ct)

def uint_list_isempty(list):
    return _p3dSkel.uint_list_isempty(list)

def uint_list_toarray(list, numel):
    return _p3dSkel.uint_list_toarray(list, numel)

def uint_list_clear(list):
    return _p3dSkel.uint_list_clear(list)

def p3dComputeCoreSkeleton(crit_point_list, skel_point_list, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, step, close):
    return _p3dSkel.p3dComputeCoreSkeleton(crit_point_list, skel_point_list, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, step, close)

def p3dComputeEigenVal(H, S, eigen_re, eigen_im, n):
    return _p3dSkel.p3dComputeEigenVal(H, S, eigen_re, eigen_im, n)

def p3dComputeHierarchicalSkeleton(highDiv_point_list, skel_point_list, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, step, close_dist):
    return _p3dSkel.p3dComputeHierarchicalSkeleton(highDiv_point_list, skel_point_list, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, step, close_dist)

def p3dGetCriticalPoints(in_im, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, crit_point_list):
    return _p3dSkel.p3dGetCriticalPoints(in_im, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, crit_point_list)

def p3dClassifyCriticalPoints(crit_point_list, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz):
    return _p3dSkel.p3dClassifyCriticalPoints(crit_point_list, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz)
class crit_point_lelem_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    elem = property(_p3dSkel.crit_point_lelem_t_elem_get, _p3dSkel.crit_point_lelem_t_elem_set)
    next = property(_p3dSkel.crit_point_lelem_t_next_get, _p3dSkel.crit_point_lelem_t_next_set)

    def __init__(self):
        _p3dSkel.crit_point_lelem_t_swiginit(self, _p3dSkel.new_crit_point_lelem_t())
    __swig_destroy__ = _p3dSkel.delete_crit_point_lelem_t

# Register crit_point_lelem_t in _p3dSkel:
_p3dSkel.crit_point_lelem_t_swigregister(crit_point_lelem_t)


def crit_point_list_init(list):
    return _p3dSkel.crit_point_list_init(list)

def crit_point_list_push(list, item):
    return _p3dSkel.crit_point_list_push(list, item)

def crit_point_list_pop(list):
    return _p3dSkel.crit_point_list_pop(list)

def crit_point_list_isempty(list):
    return _p3dSkel.crit_point_list_isempty(list)
class crit_point_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    x = property(_p3dSkel.crit_point_t_x_get, _p3dSkel.crit_point_t_x_set)
    y = property(_p3dSkel.crit_point_t_y_get, _p3dSkel.crit_point_t_y_set)
    z = property(_p3dSkel.crit_point_t_z_get, _p3dSkel.crit_point_t_z_set)
    type = property(_p3dSkel.crit_point_t_type_get, _p3dSkel.crit_point_t_type_set)
    eval0 = property(_p3dSkel.crit_point_t_eval0_get, _p3dSkel.crit_point_t_eval0_set)
    eval1 = property(_p3dSkel.crit_point_t_eval1_get, _p3dSkel.crit_point_t_eval1_set)
    eval2 = property(_p3dSkel.crit_point_t_eval2_get, _p3dSkel.crit_point_t_eval2_set)
    evect0_x = property(_p3dSkel.crit_point_t_evect0_x_get, _p3dSkel.crit_point_t_evect0_x_set)
    evect0_y = property(_p3dSkel.crit_point_t_evect0_y_get, _p3dSkel.crit_point_t_evect0_y_set)
    evect0_z = property(_p3dSkel.crit_point_t_evect0_z_get, _p3dSkel.crit_point_t_evect0_z_set)
    evect1_x = property(_p3dSkel.crit_point_t_evect1_x_get, _p3dSkel.crit_point_t_evect1_x_set)
    evect1_y = property(_p3dSkel.crit_point_t_evect1_y_get, _p3dSkel.crit_point_t_evect1_y_set)
    evect1_z = property(_p3dSkel.crit_point_t_evect1_z_get, _p3dSkel.crit_point_t_evect1_z_set)
    evect2_x = property(_p3dSkel.crit_point_t_evect2_x_get, _p3dSkel.crit_point_t_evect2_x_set)
    evect2_y = property(_p3dSkel.crit_point_t_evect2_y_get, _p3dSkel.crit_point_t_evect2_y_set)
    evect2_z = property(_p3dSkel.crit_point_t_evect2_z_get, _p3dSkel.crit_point_t_evect2_z_set)

    def __init__(self):
        _p3dSkel.crit_point_t_swiginit(self, _p3dSkel.new_crit_point_t())
    __swig_destroy__ = _p3dSkel.delete_crit_point_t

# Register crit_point_t in _p3dSkel:
_p3dSkel.crit_point_t_swigregister(crit_point_t)


def p3dGetHighDivPoints(in_im, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, thresh, highDiv_point_list):
    return _p3dSkel.p3dGetHighDivPoints(in_im, gvf_x, gvf_y, gvf_z, dimx, dimy, dimz, thresh, highDiv_point_list)

def p3dGVF(in_im, out_x, out_y, out_z, dimx, dimy, dimz, mu, eps):
    return _p3dSkel.p3dGVF(in_im, out_x, out_y, out_z, dimx, dimy, dimz, mu, eps)
class highDiv_point_lelem_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    elem = property(_p3dSkel.highDiv_point_lelem_t_elem_get, _p3dSkel.highDiv_point_lelem_t_elem_set)
    next = property(_p3dSkel.highDiv_point_lelem_t_next_get, _p3dSkel.highDiv_point_lelem_t_next_set)

    def __init__(self):
        _p3dSkel.highDiv_point_lelem_t_swiginit(self, _p3dSkel.new_highDiv_point_lelem_t())
    __swig_destroy__ = _p3dSkel.delete_highDiv_point_lelem_t

# Register highDiv_point_lelem_t in _p3dSkel:
_p3dSkel.highDiv_point_lelem_t_swigregister(highDiv_point_lelem_t)


def highDiv_point_list_init(list):
    return _p3dSkel.highDiv_point_list_init(list)

def highDiv_point_list_push(list, item):
    return _p3dSkel.highDiv_point_list_push(list, item)

def highDiv_point_list_pop(list):
    return _p3dSkel.highDiv_point_list_pop(list)

def highDiv_point_list_isempty(list):
    return _p3dSkel.highDiv_point_list_isempty(list)

def highDiv_point_list_toarray(list, numel):
    return _p3dSkel.highDiv_point_list_toarray(list, numel)
class highDiv_point_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    x = property(_p3dSkel.highDiv_point_t_x_get, _p3dSkel.highDiv_point_t_x_set)
    y = property(_p3dSkel.highDiv_point_t_y_get, _p3dSkel.highDiv_point_t_y_set)
    z = property(_p3dSkel.highDiv_point_t_z_get, _p3dSkel.highDiv_point_t_z_set)
    div = property(_p3dSkel.highDiv_point_t_div_get, _p3dSkel.highDiv_point_t_div_set)

    def __init__(self):
        _p3dSkel.highDiv_point_t_swiginit(self, _p3dSkel.new_highDiv_point_t())
    __swig_destroy__ = _p3dSkel.delete_highDiv_point_t

# Register highDiv_point_t in _p3dSkel:
_p3dSkel.highDiv_point_t_swigregister(highDiv_point_t)



