# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.3.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.


import collections

from sys import version_info as _version_info
if _version_info < (3, 7, 0):
    raise RuntimeError("Python 3.7 or later required")

from . import _ITKCommonPython


from . import _ITKCommonPython



from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _itkImageRegionPython
else:
    import _itkImageRegionPython

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


if _swig_python_version_info[0:2] >= (3, 3):
    import collections.abc
else:
    import collections

import itk.itkIndexPython
import itk.itkSizePython
import itk.pyBasePython
import itk.itkOffsetPython
import itk.ITKCommonBasePython
import itk.itkMatrixPython
import itk.vnl_matrixPython
import itk.stdcomplexPython
import itk.vnl_vectorPython
import itk.vnl_matrix_fixedPython
import itk.itkCovariantVectorPython
import itk.itkFixedArrayPython
import itk.vnl_vector_refPython
import itk.itkVectorPython
import itk.itkPointPython
class vectoritkImageRegion2(collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence):
    r"""Proxy of C++ std::vector< itkImageRegion2 > class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        r"""iterator(self) -> SwigPyIterator"""
        return _itkImageRegionPython.vectoritkImageRegion2_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        r"""__nonzero__(self) -> bool"""
        return _itkImageRegionPython.vectoritkImageRegion2___nonzero__(self)

    def __bool__(self):
        r"""__bool__(self) -> bool"""
        return _itkImageRegionPython.vectoritkImageRegion2___bool__(self)

    def __len__(self):
        r"""__len__(self) -> std::vector< itkImageRegion2 >::size_type"""
        return _itkImageRegionPython.vectoritkImageRegion2___len__(self)

    def __getslice__(self, i, j):
        r"""
        __getslice__(self, i, j) -> vectoritkImageRegion2

        Parameters
        ----------
        i: std::vector< itkImageRegion2 >::difference_type
        j: std::vector< itkImageRegion2 >::difference_type

        """
        return _itkImageRegionPython.vectoritkImageRegion2___getslice__(self, i, j)

    def __setslice__(self, *args):
        r"""
        __setslice__(self, i, j)

        Parameters
        ----------
        i: std::vector< itkImageRegion2 >::difference_type
        j: std::vector< itkImageRegion2 >::difference_type

        __setslice__(self, i, j, v)

        Parameters
        ----------
        i: std::vector< itkImageRegion2 >::difference_type
        j: std::vector< itkImageRegion2 >::difference_type
        v: std::vector< itkImageRegion2,std::allocator< itkImageRegion2 > > const &

        """
        return _itkImageRegionPython.vectoritkImageRegion2___setslice__(self, *args)

    def __delslice__(self, i, j):
        r"""
        __delslice__(self, i, j)

        Parameters
        ----------
        i: std::vector< itkImageRegion2 >::difference_type
        j: std::vector< itkImageRegion2 >::difference_type

        """
        return _itkImageRegionPython.vectoritkImageRegion2___delslice__(self, i, j)

    def __delitem__(self, *args):
        r"""
        __delitem__(self, i)

        Parameters
        ----------
        i: std::vector< itkImageRegion2 >::difference_type

        __delitem__(self, slice)

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *

        """
        return _itkImageRegionPython.vectoritkImageRegion2___delitem__(self, *args)

    def __getitem__(self, *args):
        r"""
        __getitem__(self, slice) -> vectoritkImageRegion2

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *

        __getitem__(self, i) -> itkImageRegion2

        Parameters
        ----------
        i: std::vector< itkImageRegion2 >::difference_type

        """
        return _itkImageRegionPython.vectoritkImageRegion2___getitem__(self, *args)

    def __setitem__(self, *args):
        r"""
        __setitem__(self, slice, v)

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *
        v: std::vector< itkImageRegion2,std::allocator< itkImageRegion2 > > const &

        __setitem__(self, slice)

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *

        __setitem__(self, i, x)

        Parameters
        ----------
        i: std::vector< itkImageRegion2 >::difference_type
        x: std::vector< itkImageRegion2 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion2___setitem__(self, *args)

    def pop(self):
        r"""pop(self) -> itkImageRegion2"""
        return _itkImageRegionPython.vectoritkImageRegion2_pop(self)

    def append(self, x):
        r"""
        append(self, x)

        Parameters
        ----------
        x: std::vector< itkImageRegion2 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion2_append(self, x)

    def empty(self):
        r"""empty(self) -> bool"""
        return _itkImageRegionPython.vectoritkImageRegion2_empty(self)

    def size(self):
        r"""size(self) -> std::vector< itkImageRegion2 >::size_type"""
        return _itkImageRegionPython.vectoritkImageRegion2_size(self)

    def swap(self, v):
        r"""
        swap(self, v)

        Parameters
        ----------
        v: std::vector< itkImageRegion2 > &

        """
        return _itkImageRegionPython.vectoritkImageRegion2_swap(self, v)

    def begin(self):
        r"""begin(self) -> std::vector< itkImageRegion2 >::iterator"""
        return _itkImageRegionPython.vectoritkImageRegion2_begin(self)

    def end(self):
        r"""end(self) -> std::vector< itkImageRegion2 >::iterator"""
        return _itkImageRegionPython.vectoritkImageRegion2_end(self)

    def rbegin(self):
        r"""rbegin(self) -> std::vector< itkImageRegion2 >::reverse_iterator"""
        return _itkImageRegionPython.vectoritkImageRegion2_rbegin(self)

    def rend(self):
        r"""rend(self) -> std::vector< itkImageRegion2 >::reverse_iterator"""
        return _itkImageRegionPython.vectoritkImageRegion2_rend(self)

    def clear(self):
        r"""clear(self)"""
        return _itkImageRegionPython.vectoritkImageRegion2_clear(self)

    def get_allocator(self):
        r"""get_allocator(self) -> std::vector< itkImageRegion2 >::allocator_type"""
        return _itkImageRegionPython.vectoritkImageRegion2_get_allocator(self)

    def pop_back(self):
        r"""pop_back(self)"""
        return _itkImageRegionPython.vectoritkImageRegion2_pop_back(self)

    def erase(self, *args):
        r"""
        erase(self, pos) -> std::vector< itkImageRegion2 >::iterator

        Parameters
        ----------
        pos: std::vector< itkImageRegion2 >::iterator

        erase(self, first, last) -> std::vector< itkImageRegion2 >::iterator

        Parameters
        ----------
        first: std::vector< itkImageRegion2 >::iterator
        last: std::vector< itkImageRegion2 >::iterator

        """
        return _itkImageRegionPython.vectoritkImageRegion2_erase(self, *args)

    def __init__(self, *args):
        r"""
        __init__(self) -> vectoritkImageRegion2
        __init__(self, other) -> vectoritkImageRegion2

        Parameters
        ----------
        other: std::vector< itkImageRegion2 > const &

        __init__(self, size) -> vectoritkImageRegion2

        Parameters
        ----------
        size: std::vector< itkImageRegion2 >::size_type

        __init__(self, size, value) -> vectoritkImageRegion2

        Parameters
        ----------
        size: std::vector< itkImageRegion2 >::size_type
        value: std::vector< itkImageRegion2 >::value_type const &

        """
        _itkImageRegionPython.vectoritkImageRegion2_swiginit(self, _itkImageRegionPython.new_vectoritkImageRegion2(*args))

    def push_back(self, x):
        r"""
        push_back(self, x)

        Parameters
        ----------
        x: std::vector< itkImageRegion2 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion2_push_back(self, x)

    def front(self):
        r"""front(self) -> itkImageRegion2"""
        return _itkImageRegionPython.vectoritkImageRegion2_front(self)

    def back(self):
        r"""back(self) -> itkImageRegion2"""
        return _itkImageRegionPython.vectoritkImageRegion2_back(self)

    def assign(self, n, x):
        r"""
        assign(self, n, x)

        Parameters
        ----------
        n: std::vector< itkImageRegion2 >::size_type
        x: std::vector< itkImageRegion2 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion2_assign(self, n, x)

    def resize(self, *args):
        r"""
        resize(self, new_size)

        Parameters
        ----------
        new_size: std::vector< itkImageRegion2 >::size_type

        resize(self, new_size, x)

        Parameters
        ----------
        new_size: std::vector< itkImageRegion2 >::size_type
        x: std::vector< itkImageRegion2 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion2_resize(self, *args)

    def insert(self, *args):
        r"""
        insert(self, pos, x) -> std::vector< itkImageRegion2 >::iterator

        Parameters
        ----------
        pos: std::vector< itkImageRegion2 >::iterator
        x: std::vector< itkImageRegion2 >::value_type const &

        insert(self, pos, n, x)

        Parameters
        ----------
        pos: std::vector< itkImageRegion2 >::iterator
        n: std::vector< itkImageRegion2 >::size_type
        x: std::vector< itkImageRegion2 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion2_insert(self, *args)

    def reserve(self, n):
        r"""
        reserve(self, n)

        Parameters
        ----------
        n: std::vector< itkImageRegion2 >::size_type

        """
        return _itkImageRegionPython.vectoritkImageRegion2_reserve(self, n)

    def capacity(self):
        r"""capacity(self) -> std::vector< itkImageRegion2 >::size_type"""
        return _itkImageRegionPython.vectoritkImageRegion2_capacity(self)
    __swig_destroy__ = _itkImageRegionPython.delete_vectoritkImageRegion2

# Register vectoritkImageRegion2 in _itkImageRegionPython:
_itkImageRegionPython.vectoritkImageRegion2_swigregister(vectoritkImageRegion2)
class vectoritkImageRegion3(collections.abc.MutableSequence if _swig_python_version_info >= (3, 3) else collections.MutableSequence):
    r"""Proxy of C++ std::vector< itkImageRegion3 > class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def iterator(self):
        r"""iterator(self) -> SwigPyIterator"""
        return _itkImageRegionPython.vectoritkImageRegion3_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        r"""__nonzero__(self) -> bool"""
        return _itkImageRegionPython.vectoritkImageRegion3___nonzero__(self)

    def __bool__(self):
        r"""__bool__(self) -> bool"""
        return _itkImageRegionPython.vectoritkImageRegion3___bool__(self)

    def __len__(self):
        r"""__len__(self) -> std::vector< itkImageRegion3 >::size_type"""
        return _itkImageRegionPython.vectoritkImageRegion3___len__(self)

    def __getslice__(self, i, j):
        r"""
        __getslice__(self, i, j) -> vectoritkImageRegion3

        Parameters
        ----------
        i: std::vector< itkImageRegion3 >::difference_type
        j: std::vector< itkImageRegion3 >::difference_type

        """
        return _itkImageRegionPython.vectoritkImageRegion3___getslice__(self, i, j)

    def __setslice__(self, *args):
        r"""
        __setslice__(self, i, j)

        Parameters
        ----------
        i: std::vector< itkImageRegion3 >::difference_type
        j: std::vector< itkImageRegion3 >::difference_type

        __setslice__(self, i, j, v)

        Parameters
        ----------
        i: std::vector< itkImageRegion3 >::difference_type
        j: std::vector< itkImageRegion3 >::difference_type
        v: std::vector< itkImageRegion3,std::allocator< itkImageRegion3 > > const &

        """
        return _itkImageRegionPython.vectoritkImageRegion3___setslice__(self, *args)

    def __delslice__(self, i, j):
        r"""
        __delslice__(self, i, j)

        Parameters
        ----------
        i: std::vector< itkImageRegion3 >::difference_type
        j: std::vector< itkImageRegion3 >::difference_type

        """
        return _itkImageRegionPython.vectoritkImageRegion3___delslice__(self, i, j)

    def __delitem__(self, *args):
        r"""
        __delitem__(self, i)

        Parameters
        ----------
        i: std::vector< itkImageRegion3 >::difference_type

        __delitem__(self, slice)

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *

        """
        return _itkImageRegionPython.vectoritkImageRegion3___delitem__(self, *args)

    def __getitem__(self, *args):
        r"""
        __getitem__(self, slice) -> vectoritkImageRegion3

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *

        __getitem__(self, i) -> itkImageRegion3

        Parameters
        ----------
        i: std::vector< itkImageRegion3 >::difference_type

        """
        return _itkImageRegionPython.vectoritkImageRegion3___getitem__(self, *args)

    def __setitem__(self, *args):
        r"""
        __setitem__(self, slice, v)

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *
        v: std::vector< itkImageRegion3,std::allocator< itkImageRegion3 > > const &

        __setitem__(self, slice)

        Parameters
        ----------
        slice: SWIGPY_SLICEOBJECT *

        __setitem__(self, i, x)

        Parameters
        ----------
        i: std::vector< itkImageRegion3 >::difference_type
        x: std::vector< itkImageRegion3 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion3___setitem__(self, *args)

    def pop(self):
        r"""pop(self) -> itkImageRegion3"""
        return _itkImageRegionPython.vectoritkImageRegion3_pop(self)

    def append(self, x):
        r"""
        append(self, x)

        Parameters
        ----------
        x: std::vector< itkImageRegion3 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion3_append(self, x)

    def empty(self):
        r"""empty(self) -> bool"""
        return _itkImageRegionPython.vectoritkImageRegion3_empty(self)

    def size(self):
        r"""size(self) -> std::vector< itkImageRegion3 >::size_type"""
        return _itkImageRegionPython.vectoritkImageRegion3_size(self)

    def swap(self, v):
        r"""
        swap(self, v)

        Parameters
        ----------
        v: std::vector< itkImageRegion3 > &

        """
        return _itkImageRegionPython.vectoritkImageRegion3_swap(self, v)

    def begin(self):
        r"""begin(self) -> std::vector< itkImageRegion3 >::iterator"""
        return _itkImageRegionPython.vectoritkImageRegion3_begin(self)

    def end(self):
        r"""end(self) -> std::vector< itkImageRegion3 >::iterator"""
        return _itkImageRegionPython.vectoritkImageRegion3_end(self)

    def rbegin(self):
        r"""rbegin(self) -> std::vector< itkImageRegion3 >::reverse_iterator"""
        return _itkImageRegionPython.vectoritkImageRegion3_rbegin(self)

    def rend(self):
        r"""rend(self) -> std::vector< itkImageRegion3 >::reverse_iterator"""
        return _itkImageRegionPython.vectoritkImageRegion3_rend(self)

    def clear(self):
        r"""clear(self)"""
        return _itkImageRegionPython.vectoritkImageRegion3_clear(self)

    def get_allocator(self):
        r"""get_allocator(self) -> std::vector< itkImageRegion3 >::allocator_type"""
        return _itkImageRegionPython.vectoritkImageRegion3_get_allocator(self)

    def pop_back(self):
        r"""pop_back(self)"""
        return _itkImageRegionPython.vectoritkImageRegion3_pop_back(self)

    def erase(self, *args):
        r"""
        erase(self, pos) -> std::vector< itkImageRegion3 >::iterator

        Parameters
        ----------
        pos: std::vector< itkImageRegion3 >::iterator

        erase(self, first, last) -> std::vector< itkImageRegion3 >::iterator

        Parameters
        ----------
        first: std::vector< itkImageRegion3 >::iterator
        last: std::vector< itkImageRegion3 >::iterator

        """
        return _itkImageRegionPython.vectoritkImageRegion3_erase(self, *args)

    def __init__(self, *args):
        r"""
        __init__(self) -> vectoritkImageRegion3
        __init__(self, other) -> vectoritkImageRegion3

        Parameters
        ----------
        other: std::vector< itkImageRegion3 > const &

        __init__(self, size) -> vectoritkImageRegion3

        Parameters
        ----------
        size: std::vector< itkImageRegion3 >::size_type

        __init__(self, size, value) -> vectoritkImageRegion3

        Parameters
        ----------
        size: std::vector< itkImageRegion3 >::size_type
        value: std::vector< itkImageRegion3 >::value_type const &

        """
        _itkImageRegionPython.vectoritkImageRegion3_swiginit(self, _itkImageRegionPython.new_vectoritkImageRegion3(*args))

    def push_back(self, x):
        r"""
        push_back(self, x)

        Parameters
        ----------
        x: std::vector< itkImageRegion3 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion3_push_back(self, x)

    def front(self):
        r"""front(self) -> itkImageRegion3"""
        return _itkImageRegionPython.vectoritkImageRegion3_front(self)

    def back(self):
        r"""back(self) -> itkImageRegion3"""
        return _itkImageRegionPython.vectoritkImageRegion3_back(self)

    def assign(self, n, x):
        r"""
        assign(self, n, x)

        Parameters
        ----------
        n: std::vector< itkImageRegion3 >::size_type
        x: std::vector< itkImageRegion3 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion3_assign(self, n, x)

    def resize(self, *args):
        r"""
        resize(self, new_size)

        Parameters
        ----------
        new_size: std::vector< itkImageRegion3 >::size_type

        resize(self, new_size, x)

        Parameters
        ----------
        new_size: std::vector< itkImageRegion3 >::size_type
        x: std::vector< itkImageRegion3 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion3_resize(self, *args)

    def insert(self, *args):
        r"""
        insert(self, pos, x) -> std::vector< itkImageRegion3 >::iterator

        Parameters
        ----------
        pos: std::vector< itkImageRegion3 >::iterator
        x: std::vector< itkImageRegion3 >::value_type const &

        insert(self, pos, n, x)

        Parameters
        ----------
        pos: std::vector< itkImageRegion3 >::iterator
        n: std::vector< itkImageRegion3 >::size_type
        x: std::vector< itkImageRegion3 >::value_type const &

        """
        return _itkImageRegionPython.vectoritkImageRegion3_insert(self, *args)

    def reserve(self, n):
        r"""
        reserve(self, n)

        Parameters
        ----------
        n: std::vector< itkImageRegion3 >::size_type

        """
        return _itkImageRegionPython.vectoritkImageRegion3_reserve(self, n)

    def capacity(self):
        r"""capacity(self) -> std::vector< itkImageRegion3 >::size_type"""
        return _itkImageRegionPython.vectoritkImageRegion3_capacity(self)
    __swig_destroy__ = _itkImageRegionPython.delete_vectoritkImageRegion3

# Register vectoritkImageRegion3 in _itkImageRegionPython:
_itkImageRegionPython.vectoritkImageRegion3_swigregister(vectoritkImageRegion3)
class itkImageRegion2(itk.ITKCommonBasePython.itkRegion):
    r"""Proxy of C++ itkImageRegion2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    @staticmethod
    def GetImageDimension():
        r"""GetImageDimension() -> unsigned int"""
        return _itkImageRegionPython.itkImageRegion2_GetImageDimension()

    def Print(self, os, indent=0):
        r"""
        Print(self, os, indent=0)

        Parameters
        ----------
        os: std::basic_ostream< char,std::char_traits< char > > &
        indent: itkIndent

        """
        return _itkImageRegionPython.itkImageRegion2_Print(self, os, indent)
    __swig_destroy__ = _itkImageRegionPython.delete_itkImageRegion2

    def __init__(self, *args):
        r"""
        __init__(self) -> itkImageRegion2
        __init__(self, arg0) -> itkImageRegion2

        Parameters
        ----------
        arg0: itkImageRegion2 const &

        __init__(self, index, size) -> itkImageRegion2

        Parameters
        ----------
        index: itkIndex2 const &
        size: itkSize2 const &

        __init__(self, size) -> itkImageRegion2

        Parameters
        ----------
        size: itkSize2 const &

        """
        _itkImageRegionPython.itkImageRegion2_swiginit(self, _itkImageRegionPython.new_itkImageRegion2(*args))

    def __GetModifiableIndex_orig__(self):
        r"""__GetModifiableIndex_orig__(self) -> itkIndex2"""
        return _itkImageRegionPython.itkImageRegion2___GetModifiableIndex_orig__(self)

    def __GetModifiableSize_orig__(self):
        r"""__GetModifiableSize_orig__(self) -> itkSize2"""
        return _itkImageRegionPython.itkImageRegion2___GetModifiableSize_orig__(self)

    def SetSize(self, *args):
        r"""
        SetSize(self, size)

        Parameters
        ----------
        size: itkSize2 const &

        SetSize(self, i, sze)

        Parameters
        ----------
        i: unsigned int
        sze: unsigned long

        """
        return _itkImageRegionPython.itkImageRegion2_SetSize(self, *args)

    def __GetSize_orig__(self, *args):
        r"""
        __GetSize_orig__(self) -> itkSize2
        __GetSize_orig__(self, i) -> unsigned long

        Parameters
        ----------
        i: unsigned int

        """
        return _itkImageRegionPython.itkImageRegion2___GetSize_orig__(self, *args)

    def SetIndex(self, *args):
        r"""
        SetIndex(self, index)

        Parameters
        ----------
        index: itkIndex2 const &

        SetIndex(self, i, sze)

        Parameters
        ----------
        i: unsigned int
        sze: long

        """
        return _itkImageRegionPython.itkImageRegion2_SetIndex(self, *args)

    def __GetIndex_orig__(self, *args):
        r"""
        __GetIndex_orig__(self) -> itkIndex2
        __GetIndex_orig__(self, i) -> long

        Parameters
        ----------
        i: unsigned int

        """
        return _itkImageRegionPython.itkImageRegion2___GetIndex_orig__(self, *args)

    def GetUpperIndex(self):
        r"""GetUpperIndex(self) -> itkIndex2"""
        return _itkImageRegionPython.itkImageRegion2_GetUpperIndex(self)

    def SetUpperIndex(self, idx):
        r"""
        SetUpperIndex(self, idx)

        Parameters
        ----------
        idx: itkIndex2 const &

        """
        return _itkImageRegionPython.itkImageRegion2_SetUpperIndex(self, idx)

    def ComputeOffsetTable(self, offsetTable):
        r"""
        ComputeOffsetTable(self, offsetTable)

        Parameters
        ----------
        offsetTable: long *

        """
        return _itkImageRegionPython.itkImageRegion2_ComputeOffsetTable(self, offsetTable)

    def __eq__(self, region):
        r"""
        __eq__(self, region) -> bool

        Parameters
        ----------
        region: itkImageRegion2 const &

        """
        return _itkImageRegionPython.itkImageRegion2___eq__(self, region)

    def __ne__(self, other):
        r"""
        __ne__(self, other) -> bool

        Parameters
        ----------
        other: itkImageRegion2 const &

        """
        return _itkImageRegionPython.itkImageRegion2___ne__(self, other)

    def IsInside(self, *args):
        r"""
        IsInside(self, index) -> bool

        Parameters
        ----------
        index: itkIndex2 const &

        IsInside(self, otherRegion) -> bool

        Parameters
        ----------
        otherRegion: itkImageRegion2 const &

        """
        return _itkImageRegionPython.itkImageRegion2_IsInside(self, *args)

    def GetNumberOfPixels(self):
        r"""GetNumberOfPixels(self) -> unsigned long"""
        return _itkImageRegionPython.itkImageRegion2_GetNumberOfPixels(self)

    def PadByRadius(self, *args):
        r"""
        PadByRadius(self, radius)

        Parameters
        ----------
        radius: long

        PadByRadius(self, radius)

        Parameters
        ----------
        radius: long const *

        PadByRadius(self, radius)

        Parameters
        ----------
        radius: itkSize2 const &

        """
        return _itkImageRegionPython.itkImageRegion2_PadByRadius(self, *args)

    def ShrinkByRadius(self, *args):
        r"""
        ShrinkByRadius(self, radius) -> bool

        Parameters
        ----------
        radius: long

        ShrinkByRadius(self, radius) -> bool

        Parameters
        ----------
        radius: long const *

        ShrinkByRadius(self, radius) -> bool

        Parameters
        ----------
        radius: itkSize2 const &

        """
        return _itkImageRegionPython.itkImageRegion2_ShrinkByRadius(self, *args)

    def Crop(self, region):
        r"""
        Crop(self, region) -> bool

        Parameters
        ----------
        region: itkImageRegion2 const &

        """
        return _itkImageRegionPython.itkImageRegion2_Crop(self, region)

    def Slice(self, dim):
        r"""
        Slice(self, dim) -> itk::ImageRegion< 1 >

        Parameters
        ----------
        dim: unsigned int const

        """
        return _itkImageRegionPython.itkImageRegion2_Slice(self, dim)

    def GetIndex(self):
        var = self.__GetIndex_orig__()
        var_copy = type(var)(var)
        return var_copy


    def GetModifiableIndex(self):
        var = self.__GetModifiableIndex_orig__()
        var_copy = type(var)(var)
        return var_copy


    def GetSize(self):
        var = self.__GetSize_orig__()
        var_copy = type(var)(var)
        return var_copy


    def GetModifiableSize(self):
        var = self.__GetModifiableSize_orig__()
        var_copy = type(var)(var)
        return var_copy


    def __repr__(self):
        r"""__repr__(self) -> std::string"""
        return _itkImageRegionPython.itkImageRegion2___repr__(self)

    def __getstate__(self):
        """Get object state, necessary for serialization with pickle."""
        state = (tuple(self.GetIndex()), tuple(self.GetSize()))
        return state

    def __setstate__(self, state):
        """Set object state, necessary for serialization with pickle."""
        self.__init__(*state)


# Register itkImageRegion2 in _itkImageRegionPython:
_itkImageRegionPython.itkImageRegion2_swigregister(itkImageRegion2)
class itkImageRegion3(itk.ITKCommonBasePython.itkRegion):
    r"""Proxy of C++ itkImageRegion3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    @staticmethod
    def GetImageDimension():
        r"""GetImageDimension() -> unsigned int"""
        return _itkImageRegionPython.itkImageRegion3_GetImageDimension()

    def Print(self, os, indent=0):
        r"""
        Print(self, os, indent=0)

        Parameters
        ----------
        os: std::basic_ostream< char,std::char_traits< char > > &
        indent: itkIndent

        """
        return _itkImageRegionPython.itkImageRegion3_Print(self, os, indent)
    __swig_destroy__ = _itkImageRegionPython.delete_itkImageRegion3

    def __init__(self, *args):
        r"""
        __init__(self) -> itkImageRegion3
        __init__(self, arg0) -> itkImageRegion3

        Parameters
        ----------
        arg0: itkImageRegion3 const &

        __init__(self, index, size) -> itkImageRegion3

        Parameters
        ----------
        index: itkIndex3 const &
        size: itkSize3 const &

        __init__(self, size) -> itkImageRegion3

        Parameters
        ----------
        size: itkSize3 const &

        """
        _itkImageRegionPython.itkImageRegion3_swiginit(self, _itkImageRegionPython.new_itkImageRegion3(*args))

    def __GetModifiableIndex_orig__(self):
        r"""__GetModifiableIndex_orig__(self) -> itkIndex3"""
        return _itkImageRegionPython.itkImageRegion3___GetModifiableIndex_orig__(self)

    def __GetModifiableSize_orig__(self):
        r"""__GetModifiableSize_orig__(self) -> itkSize3"""
        return _itkImageRegionPython.itkImageRegion3___GetModifiableSize_orig__(self)

    def SetSize(self, *args):
        r"""
        SetSize(self, size)

        Parameters
        ----------
        size: itkSize3 const &

        SetSize(self, i, sze)

        Parameters
        ----------
        i: unsigned int
        sze: unsigned long

        """
        return _itkImageRegionPython.itkImageRegion3_SetSize(self, *args)

    def __GetSize_orig__(self, *args):
        r"""
        __GetSize_orig__(self) -> itkSize3
        __GetSize_orig__(self, i) -> unsigned long

        Parameters
        ----------
        i: unsigned int

        """
        return _itkImageRegionPython.itkImageRegion3___GetSize_orig__(self, *args)

    def SetIndex(self, *args):
        r"""
        SetIndex(self, index)

        Parameters
        ----------
        index: itkIndex3 const &

        SetIndex(self, i, sze)

        Parameters
        ----------
        i: unsigned int
        sze: long

        """
        return _itkImageRegionPython.itkImageRegion3_SetIndex(self, *args)

    def __GetIndex_orig__(self, *args):
        r"""
        __GetIndex_orig__(self) -> itkIndex3
        __GetIndex_orig__(self, i) -> long

        Parameters
        ----------
        i: unsigned int

        """
        return _itkImageRegionPython.itkImageRegion3___GetIndex_orig__(self, *args)

    def GetUpperIndex(self):
        r"""GetUpperIndex(self) -> itkIndex3"""
        return _itkImageRegionPython.itkImageRegion3_GetUpperIndex(self)

    def SetUpperIndex(self, idx):
        r"""
        SetUpperIndex(self, idx)

        Parameters
        ----------
        idx: itkIndex3 const &

        """
        return _itkImageRegionPython.itkImageRegion3_SetUpperIndex(self, idx)

    def ComputeOffsetTable(self, offsetTable):
        r"""
        ComputeOffsetTable(self, offsetTable)

        Parameters
        ----------
        offsetTable: long *

        """
        return _itkImageRegionPython.itkImageRegion3_ComputeOffsetTable(self, offsetTable)

    def __eq__(self, region):
        r"""
        __eq__(self, region) -> bool

        Parameters
        ----------
        region: itkImageRegion3 const &

        """
        return _itkImageRegionPython.itkImageRegion3___eq__(self, region)

    def __ne__(self, other):
        r"""
        __ne__(self, other) -> bool

        Parameters
        ----------
        other: itkImageRegion3 const &

        """
        return _itkImageRegionPython.itkImageRegion3___ne__(self, other)

    def IsInside(self, *args):
        r"""
        IsInside(self, index) -> bool

        Parameters
        ----------
        index: itkIndex3 const &

        IsInside(self, otherRegion) -> bool

        Parameters
        ----------
        otherRegion: itkImageRegion3 const &

        """
        return _itkImageRegionPython.itkImageRegion3_IsInside(self, *args)

    def GetNumberOfPixels(self):
        r"""GetNumberOfPixels(self) -> unsigned long"""
        return _itkImageRegionPython.itkImageRegion3_GetNumberOfPixels(self)

    def PadByRadius(self, *args):
        r"""
        PadByRadius(self, radius)

        Parameters
        ----------
        radius: long

        PadByRadius(self, radius)

        Parameters
        ----------
        radius: long const *

        PadByRadius(self, radius)

        Parameters
        ----------
        radius: itkSize3 const &

        """
        return _itkImageRegionPython.itkImageRegion3_PadByRadius(self, *args)

    def ShrinkByRadius(self, *args):
        r"""
        ShrinkByRadius(self, radius) -> bool

        Parameters
        ----------
        radius: long

        ShrinkByRadius(self, radius) -> bool

        Parameters
        ----------
        radius: long const *

        ShrinkByRadius(self, radius) -> bool

        Parameters
        ----------
        radius: itkSize3 const &

        """
        return _itkImageRegionPython.itkImageRegion3_ShrinkByRadius(self, *args)

    def Crop(self, region):
        r"""
        Crop(self, region) -> bool

        Parameters
        ----------
        region: itkImageRegion3 const &

        """
        return _itkImageRegionPython.itkImageRegion3_Crop(self, region)

    def Slice(self, dim):
        r"""
        Slice(self, dim) -> itkImageRegion2

        Parameters
        ----------
        dim: unsigned int const

        """
        return _itkImageRegionPython.itkImageRegion3_Slice(self, dim)

    def GetIndex(self):
        var = self.__GetIndex_orig__()
        var_copy = type(var)(var)
        return var_copy


    def GetModifiableIndex(self):
        var = self.__GetModifiableIndex_orig__()
        var_copy = type(var)(var)
        return var_copy


    def GetSize(self):
        var = self.__GetSize_orig__()
        var_copy = type(var)(var)
        return var_copy


    def GetModifiableSize(self):
        var = self.__GetModifiableSize_orig__()
        var_copy = type(var)(var)
        return var_copy


    def __repr__(self):
        r"""__repr__(self) -> std::string"""
        return _itkImageRegionPython.itkImageRegion3___repr__(self)

    def __getstate__(self):
        """Get object state, necessary for serialization with pickle."""
        state = (tuple(self.GetIndex()), tuple(self.GetSize()))
        return state

    def __setstate__(self, state):
        """Set object state, necessary for serialization with pickle."""
        self.__init__(*state)


# Register itkImageRegion3 in _itkImageRegionPython:
_itkImageRegionPython.itkImageRegion3_swigregister(itkImageRegion3)

