# 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 _itkSizePython
else:
    import _itkSizePython

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.pyBasePython
class itkSize1(object):
    r"""Proxy of C++ itkSize1 class."""

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

    @staticmethod
    def GetSizeDimension():
        r"""GetSizeDimension() -> unsigned int"""
        return _itkSizePython.itkSize1_GetSizeDimension()

    def __add__(self, vec):
        r"""
        __add__(self, vec) -> itkSize1

        Parameters
        ----------
        vec: itkSize1 const &

        """
        return _itkSizePython.itkSize1___add__(self, vec)

    def __iadd__(self, vec):
        r"""
        __iadd__(self, vec) -> itkSize1

        Parameters
        ----------
        vec: itkSize1 const &

        """
        return _itkSizePython.itkSize1___iadd__(self, vec)

    def __sub__(self, vec):
        r"""
        __sub__(self, vec) -> itkSize1

        Parameters
        ----------
        vec: itkSize1 const &

        """
        return _itkSizePython.itkSize1___sub__(self, vec)

    def __isub__(self, vec):
        r"""
        __isub__(self, vec) -> itkSize1

        Parameters
        ----------
        vec: itkSize1 const &

        """
        return _itkSizePython.itkSize1___isub__(self, vec)

    def __mul__(self, vec):
        r"""
        __mul__(self, vec) -> itkSize1

        Parameters
        ----------
        vec: itkSize1 const &

        """
        return _itkSizePython.itkSize1___mul__(self, vec)

    def __imul__(self, vec):
        r"""
        __imul__(self, vec) -> itkSize1

        Parameters
        ----------
        vec: itkSize1 const &

        """
        return _itkSizePython.itkSize1___imul__(self, vec)

    def GetSize(self):
        r"""GetSize(self) -> unsigned long const *"""
        return _itkSizePython.itkSize1_GetSize(self)

    def SetSize(self, val):
        r"""
        SetSize(self, val)

        Parameters
        ----------
        val: unsigned long const *

        """
        return _itkSizePython.itkSize1_SetSize(self, val)

    def SetElement(self, element, val):
        r"""
        SetElement(self, element, val)

        Parameters
        ----------
        element: unsigned long
        val: unsigned long

        """
        return _itkSizePython.itkSize1_SetElement(self, element, val)

    def GetElement(self, element):
        r"""
        GetElement(self, element) -> unsigned long

        Parameters
        ----------
        element: unsigned long

        """
        return _itkSizePython.itkSize1_GetElement(self, element)

    def Fill(self, value):
        r"""
        Fill(self, value)

        Parameters
        ----------
        value: unsigned long

        """
        return _itkSizePython.itkSize1_Fill(self, value)

    def CalculateProductOfElements(self):
        r"""CalculateProductOfElements(self) -> unsigned long"""
        return _itkSizePython.itkSize1_CalculateProductOfElements(self)

    def assign(self, newValue):
        r"""
        assign(self, newValue)

        Parameters
        ----------
        newValue: unsigned long const &

        """
        return _itkSizePython.itkSize1_assign(self, newValue)

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

        Parameters
        ----------
        other: itkSize1 &

        """
        return _itkSizePython.itkSize1_swap(self, other)

    def cbegin(self):
        r"""cbegin(self) -> unsigned long const *"""
        return _itkSizePython.itkSize1_cbegin(self)

    def begin(self, *args):
        r"""
        begin(self) -> unsigned long
        begin(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize1_begin(self, *args)

    def cend(self):
        r"""cend(self) -> unsigned long const *"""
        return _itkSizePython.itkSize1_cend(self)

    def end(self, *args):
        r"""
        end(self) -> unsigned long
        end(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize1_end(self, *args)

    def rbegin(self, *args):
        r"""
        rbegin(self) -> std::reverse_iterator< unsigned long * >
        rbegin(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize1_rbegin(self, *args)

    def rend(self, *args):
        r"""
        rend(self) -> std::reverse_iterator< unsigned long * >
        rend(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize1_rend(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _itkSizePython.itkSize1_size(self)

    def max_size(self):
        r"""max_size(self) -> unsigned int"""
        return _itkSizePython.itkSize1_max_size(self)

    def empty(self):
        r"""empty(self) -> bool"""
        return _itkSizePython.itkSize1_empty(self)

    def at(self, *args):
        r"""
        at(self, pos) -> unsigned long

        Parameters
        ----------
        pos: unsigned int

        at(self, pos) -> unsigned long const &

        Parameters
        ----------
        pos: unsigned int

        """
        return _itkSizePython.itkSize1_at(self, *args)

    def front(self, *args):
        r"""
        front(self) -> unsigned long
        front(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize1_front(self, *args)

    def back(self, *args):
        r"""
        back(self) -> unsigned long
        back(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize1_back(self, *args)

    def data(self, *args):
        r"""
        data(self) -> unsigned long
        data(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize1_data(self, *args)

    @staticmethod
    def Filled(value):
        r"""
        Filled(value) -> itkSize1

        Parameters
        ----------
        value: unsigned long const

        """
        return _itkSizePython.itkSize1_Filled(value)

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

        Parameters
        ----------
        arg0: itkSize1 const &

        """
        _itkSizePython.itkSize1_swiginit(self, _itkSizePython.new_itkSize1(*args))
    __swig_destroy__ = _itkSizePython.delete_itkSize1

    def __getitem__(self, d):
        r"""
        __getitem__(self, d) -> long

        Parameters
        ----------
        d: unsigned long

        """
        return _itkSizePython.itkSize1___getitem__(self, d)

    def __setitem__(self, d, v):
        r"""
        __setitem__(self, d, v)

        Parameters
        ----------
        d: unsigned long
        v: long

        """
        return _itkSizePython.itkSize1___setitem__(self, d, v)

    @staticmethod
    def __len__():
        r"""__len__() -> unsigned int"""
        return _itkSizePython.itkSize1___len__()

    def __repr__(self):
        r"""__repr__(self) -> std::string"""
        return _itkSizePython.itkSize1___repr__(self)

    def __eq__(self, other):
        return tuple(self) == tuple(other)


# Register itkSize1 in _itkSizePython:
_itkSizePython.itkSize1_swigregister(itkSize1)
class itkSize2(object):
    r"""Proxy of C++ itkSize2 class."""

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

    @staticmethod
    def GetSizeDimension():
        r"""GetSizeDimension() -> unsigned int"""
        return _itkSizePython.itkSize2_GetSizeDimension()

    def __add__(self, vec):
        r"""
        __add__(self, vec) -> itkSize2

        Parameters
        ----------
        vec: itkSize2 const &

        """
        return _itkSizePython.itkSize2___add__(self, vec)

    def __iadd__(self, vec):
        r"""
        __iadd__(self, vec) -> itkSize2

        Parameters
        ----------
        vec: itkSize2 const &

        """
        return _itkSizePython.itkSize2___iadd__(self, vec)

    def __sub__(self, vec):
        r"""
        __sub__(self, vec) -> itkSize2

        Parameters
        ----------
        vec: itkSize2 const &

        """
        return _itkSizePython.itkSize2___sub__(self, vec)

    def __isub__(self, vec):
        r"""
        __isub__(self, vec) -> itkSize2

        Parameters
        ----------
        vec: itkSize2 const &

        """
        return _itkSizePython.itkSize2___isub__(self, vec)

    def __mul__(self, vec):
        r"""
        __mul__(self, vec) -> itkSize2

        Parameters
        ----------
        vec: itkSize2 const &

        """
        return _itkSizePython.itkSize2___mul__(self, vec)

    def __imul__(self, vec):
        r"""
        __imul__(self, vec) -> itkSize2

        Parameters
        ----------
        vec: itkSize2 const &

        """
        return _itkSizePython.itkSize2___imul__(self, vec)

    def GetSize(self):
        r"""GetSize(self) -> unsigned long const *"""
        return _itkSizePython.itkSize2_GetSize(self)

    def SetSize(self, val):
        r"""
        SetSize(self, val)

        Parameters
        ----------
        val: unsigned long const *

        """
        return _itkSizePython.itkSize2_SetSize(self, val)

    def SetElement(self, element, val):
        r"""
        SetElement(self, element, val)

        Parameters
        ----------
        element: unsigned long
        val: unsigned long

        """
        return _itkSizePython.itkSize2_SetElement(self, element, val)

    def GetElement(self, element):
        r"""
        GetElement(self, element) -> unsigned long

        Parameters
        ----------
        element: unsigned long

        """
        return _itkSizePython.itkSize2_GetElement(self, element)

    def Fill(self, value):
        r"""
        Fill(self, value)

        Parameters
        ----------
        value: unsigned long

        """
        return _itkSizePython.itkSize2_Fill(self, value)

    def CalculateProductOfElements(self):
        r"""CalculateProductOfElements(self) -> unsigned long"""
        return _itkSizePython.itkSize2_CalculateProductOfElements(self)

    def assign(self, newValue):
        r"""
        assign(self, newValue)

        Parameters
        ----------
        newValue: unsigned long const &

        """
        return _itkSizePython.itkSize2_assign(self, newValue)

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

        Parameters
        ----------
        other: itkSize2 &

        """
        return _itkSizePython.itkSize2_swap(self, other)

    def cbegin(self):
        r"""cbegin(self) -> unsigned long const *"""
        return _itkSizePython.itkSize2_cbegin(self)

    def begin(self, *args):
        r"""
        begin(self) -> unsigned long
        begin(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize2_begin(self, *args)

    def cend(self):
        r"""cend(self) -> unsigned long const *"""
        return _itkSizePython.itkSize2_cend(self)

    def end(self, *args):
        r"""
        end(self) -> unsigned long
        end(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize2_end(self, *args)

    def rbegin(self, *args):
        r"""
        rbegin(self) -> std::reverse_iterator< unsigned long * >
        rbegin(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize2_rbegin(self, *args)

    def rend(self, *args):
        r"""
        rend(self) -> std::reverse_iterator< unsigned long * >
        rend(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize2_rend(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _itkSizePython.itkSize2_size(self)

    def max_size(self):
        r"""max_size(self) -> unsigned int"""
        return _itkSizePython.itkSize2_max_size(self)

    def empty(self):
        r"""empty(self) -> bool"""
        return _itkSizePython.itkSize2_empty(self)

    def at(self, *args):
        r"""
        at(self, pos) -> unsigned long

        Parameters
        ----------
        pos: unsigned int

        at(self, pos) -> unsigned long const &

        Parameters
        ----------
        pos: unsigned int

        """
        return _itkSizePython.itkSize2_at(self, *args)

    def front(self, *args):
        r"""
        front(self) -> unsigned long
        front(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize2_front(self, *args)

    def back(self, *args):
        r"""
        back(self) -> unsigned long
        back(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize2_back(self, *args)

    def data(self, *args):
        r"""
        data(self) -> unsigned long
        data(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize2_data(self, *args)

    @staticmethod
    def Filled(value):
        r"""
        Filled(value) -> itkSize2

        Parameters
        ----------
        value: unsigned long const

        """
        return _itkSizePython.itkSize2_Filled(value)

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

        Parameters
        ----------
        arg0: itkSize2 const &

        """
        _itkSizePython.itkSize2_swiginit(self, _itkSizePython.new_itkSize2(*args))
    __swig_destroy__ = _itkSizePython.delete_itkSize2

    def __getitem__(self, d):
        r"""
        __getitem__(self, d) -> long

        Parameters
        ----------
        d: unsigned long

        """
        return _itkSizePython.itkSize2___getitem__(self, d)

    def __setitem__(self, d, v):
        r"""
        __setitem__(self, d, v)

        Parameters
        ----------
        d: unsigned long
        v: long

        """
        return _itkSizePython.itkSize2___setitem__(self, d, v)

    @staticmethod
    def __len__():
        r"""__len__() -> unsigned int"""
        return _itkSizePython.itkSize2___len__()

    def __repr__(self):
        r"""__repr__(self) -> std::string"""
        return _itkSizePython.itkSize2___repr__(self)

    def __eq__(self, other):
        return tuple(self) == tuple(other)


# Register itkSize2 in _itkSizePython:
_itkSizePython.itkSize2_swigregister(itkSize2)
class itkSize3(object):
    r"""Proxy of C++ itkSize3 class."""

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

    @staticmethod
    def GetSizeDimension():
        r"""GetSizeDimension() -> unsigned int"""
        return _itkSizePython.itkSize3_GetSizeDimension()

    def __add__(self, vec):
        r"""
        __add__(self, vec) -> itkSize3

        Parameters
        ----------
        vec: itkSize3 const &

        """
        return _itkSizePython.itkSize3___add__(self, vec)

    def __iadd__(self, vec):
        r"""
        __iadd__(self, vec) -> itkSize3

        Parameters
        ----------
        vec: itkSize3 const &

        """
        return _itkSizePython.itkSize3___iadd__(self, vec)

    def __sub__(self, vec):
        r"""
        __sub__(self, vec) -> itkSize3

        Parameters
        ----------
        vec: itkSize3 const &

        """
        return _itkSizePython.itkSize3___sub__(self, vec)

    def __isub__(self, vec):
        r"""
        __isub__(self, vec) -> itkSize3

        Parameters
        ----------
        vec: itkSize3 const &

        """
        return _itkSizePython.itkSize3___isub__(self, vec)

    def __mul__(self, vec):
        r"""
        __mul__(self, vec) -> itkSize3

        Parameters
        ----------
        vec: itkSize3 const &

        """
        return _itkSizePython.itkSize3___mul__(self, vec)

    def __imul__(self, vec):
        r"""
        __imul__(self, vec) -> itkSize3

        Parameters
        ----------
        vec: itkSize3 const &

        """
        return _itkSizePython.itkSize3___imul__(self, vec)

    def GetSize(self):
        r"""GetSize(self) -> unsigned long const *"""
        return _itkSizePython.itkSize3_GetSize(self)

    def SetSize(self, val):
        r"""
        SetSize(self, val)

        Parameters
        ----------
        val: unsigned long const *

        """
        return _itkSizePython.itkSize3_SetSize(self, val)

    def SetElement(self, element, val):
        r"""
        SetElement(self, element, val)

        Parameters
        ----------
        element: unsigned long
        val: unsigned long

        """
        return _itkSizePython.itkSize3_SetElement(self, element, val)

    def GetElement(self, element):
        r"""
        GetElement(self, element) -> unsigned long

        Parameters
        ----------
        element: unsigned long

        """
        return _itkSizePython.itkSize3_GetElement(self, element)

    def Fill(self, value):
        r"""
        Fill(self, value)

        Parameters
        ----------
        value: unsigned long

        """
        return _itkSizePython.itkSize3_Fill(self, value)

    def CalculateProductOfElements(self):
        r"""CalculateProductOfElements(self) -> unsigned long"""
        return _itkSizePython.itkSize3_CalculateProductOfElements(self)

    def assign(self, newValue):
        r"""
        assign(self, newValue)

        Parameters
        ----------
        newValue: unsigned long const &

        """
        return _itkSizePython.itkSize3_assign(self, newValue)

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

        Parameters
        ----------
        other: itkSize3 &

        """
        return _itkSizePython.itkSize3_swap(self, other)

    def cbegin(self):
        r"""cbegin(self) -> unsigned long const *"""
        return _itkSizePython.itkSize3_cbegin(self)

    def begin(self, *args):
        r"""
        begin(self) -> unsigned long
        begin(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize3_begin(self, *args)

    def cend(self):
        r"""cend(self) -> unsigned long const *"""
        return _itkSizePython.itkSize3_cend(self)

    def end(self, *args):
        r"""
        end(self) -> unsigned long
        end(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize3_end(self, *args)

    def rbegin(self, *args):
        r"""
        rbegin(self) -> std::reverse_iterator< unsigned long * >
        rbegin(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize3_rbegin(self, *args)

    def rend(self, *args):
        r"""
        rend(self) -> std::reverse_iterator< unsigned long * >
        rend(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize3_rend(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _itkSizePython.itkSize3_size(self)

    def max_size(self):
        r"""max_size(self) -> unsigned int"""
        return _itkSizePython.itkSize3_max_size(self)

    def empty(self):
        r"""empty(self) -> bool"""
        return _itkSizePython.itkSize3_empty(self)

    def at(self, *args):
        r"""
        at(self, pos) -> unsigned long

        Parameters
        ----------
        pos: unsigned int

        at(self, pos) -> unsigned long const &

        Parameters
        ----------
        pos: unsigned int

        """
        return _itkSizePython.itkSize3_at(self, *args)

    def front(self, *args):
        r"""
        front(self) -> unsigned long
        front(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize3_front(self, *args)

    def back(self, *args):
        r"""
        back(self) -> unsigned long
        back(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize3_back(self, *args)

    def data(self, *args):
        r"""
        data(self) -> unsigned long
        data(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize3_data(self, *args)

    @staticmethod
    def Filled(value):
        r"""
        Filled(value) -> itkSize3

        Parameters
        ----------
        value: unsigned long const

        """
        return _itkSizePython.itkSize3_Filled(value)

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

        Parameters
        ----------
        arg0: itkSize3 const &

        """
        _itkSizePython.itkSize3_swiginit(self, _itkSizePython.new_itkSize3(*args))
    __swig_destroy__ = _itkSizePython.delete_itkSize3

    def __getitem__(self, d):
        r"""
        __getitem__(self, d) -> long

        Parameters
        ----------
        d: unsigned long

        """
        return _itkSizePython.itkSize3___getitem__(self, d)

    def __setitem__(self, d, v):
        r"""
        __setitem__(self, d, v)

        Parameters
        ----------
        d: unsigned long
        v: long

        """
        return _itkSizePython.itkSize3___setitem__(self, d, v)

    @staticmethod
    def __len__():
        r"""__len__() -> unsigned int"""
        return _itkSizePython.itkSize3___len__()

    def __repr__(self):
        r"""__repr__(self) -> std::string"""
        return _itkSizePython.itkSize3___repr__(self)

    def __eq__(self, other):
        return tuple(self) == tuple(other)


# Register itkSize3 in _itkSizePython:
_itkSizePython.itkSize3_swigregister(itkSize3)
class itkSize4(object):
    r"""Proxy of C++ itkSize4 class."""

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

    @staticmethod
    def GetSizeDimension():
        r"""GetSizeDimension() -> unsigned int"""
        return _itkSizePython.itkSize4_GetSizeDimension()

    def __add__(self, vec):
        r"""
        __add__(self, vec) -> itkSize4

        Parameters
        ----------
        vec: itkSize4 const &

        """
        return _itkSizePython.itkSize4___add__(self, vec)

    def __iadd__(self, vec):
        r"""
        __iadd__(self, vec) -> itkSize4

        Parameters
        ----------
        vec: itkSize4 const &

        """
        return _itkSizePython.itkSize4___iadd__(self, vec)

    def __sub__(self, vec):
        r"""
        __sub__(self, vec) -> itkSize4

        Parameters
        ----------
        vec: itkSize4 const &

        """
        return _itkSizePython.itkSize4___sub__(self, vec)

    def __isub__(self, vec):
        r"""
        __isub__(self, vec) -> itkSize4

        Parameters
        ----------
        vec: itkSize4 const &

        """
        return _itkSizePython.itkSize4___isub__(self, vec)

    def __mul__(self, vec):
        r"""
        __mul__(self, vec) -> itkSize4

        Parameters
        ----------
        vec: itkSize4 const &

        """
        return _itkSizePython.itkSize4___mul__(self, vec)

    def __imul__(self, vec):
        r"""
        __imul__(self, vec) -> itkSize4

        Parameters
        ----------
        vec: itkSize4 const &

        """
        return _itkSizePython.itkSize4___imul__(self, vec)

    def GetSize(self):
        r"""GetSize(self) -> unsigned long const *"""
        return _itkSizePython.itkSize4_GetSize(self)

    def SetSize(self, val):
        r"""
        SetSize(self, val)

        Parameters
        ----------
        val: unsigned long const *

        """
        return _itkSizePython.itkSize4_SetSize(self, val)

    def SetElement(self, element, val):
        r"""
        SetElement(self, element, val)

        Parameters
        ----------
        element: unsigned long
        val: unsigned long

        """
        return _itkSizePython.itkSize4_SetElement(self, element, val)

    def GetElement(self, element):
        r"""
        GetElement(self, element) -> unsigned long

        Parameters
        ----------
        element: unsigned long

        """
        return _itkSizePython.itkSize4_GetElement(self, element)

    def Fill(self, value):
        r"""
        Fill(self, value)

        Parameters
        ----------
        value: unsigned long

        """
        return _itkSizePython.itkSize4_Fill(self, value)

    def CalculateProductOfElements(self):
        r"""CalculateProductOfElements(self) -> unsigned long"""
        return _itkSizePython.itkSize4_CalculateProductOfElements(self)

    def assign(self, newValue):
        r"""
        assign(self, newValue)

        Parameters
        ----------
        newValue: unsigned long const &

        """
        return _itkSizePython.itkSize4_assign(self, newValue)

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

        Parameters
        ----------
        other: itkSize4 &

        """
        return _itkSizePython.itkSize4_swap(self, other)

    def cbegin(self):
        r"""cbegin(self) -> unsigned long const *"""
        return _itkSizePython.itkSize4_cbegin(self)

    def begin(self, *args):
        r"""
        begin(self) -> unsigned long
        begin(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize4_begin(self, *args)

    def cend(self):
        r"""cend(self) -> unsigned long const *"""
        return _itkSizePython.itkSize4_cend(self)

    def end(self, *args):
        r"""
        end(self) -> unsigned long
        end(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize4_end(self, *args)

    def rbegin(self, *args):
        r"""
        rbegin(self) -> std::reverse_iterator< unsigned long * >
        rbegin(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize4_rbegin(self, *args)

    def rend(self, *args):
        r"""
        rend(self) -> std::reverse_iterator< unsigned long * >
        rend(self) -> std::reverse_iterator< unsigned long const * >
        """
        return _itkSizePython.itkSize4_rend(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _itkSizePython.itkSize4_size(self)

    def max_size(self):
        r"""max_size(self) -> unsigned int"""
        return _itkSizePython.itkSize4_max_size(self)

    def empty(self):
        r"""empty(self) -> bool"""
        return _itkSizePython.itkSize4_empty(self)

    def at(self, *args):
        r"""
        at(self, pos) -> unsigned long

        Parameters
        ----------
        pos: unsigned int

        at(self, pos) -> unsigned long const &

        Parameters
        ----------
        pos: unsigned int

        """
        return _itkSizePython.itkSize4_at(self, *args)

    def front(self, *args):
        r"""
        front(self) -> unsigned long
        front(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize4_front(self, *args)

    def back(self, *args):
        r"""
        back(self) -> unsigned long
        back(self) -> unsigned long const &
        """
        return _itkSizePython.itkSize4_back(self, *args)

    def data(self, *args):
        r"""
        data(self) -> unsigned long
        data(self) -> unsigned long const *
        """
        return _itkSizePython.itkSize4_data(self, *args)

    @staticmethod
    def Filled(value):
        r"""
        Filled(value) -> itkSize4

        Parameters
        ----------
        value: unsigned long const

        """
        return _itkSizePython.itkSize4_Filled(value)

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

        Parameters
        ----------
        arg0: itkSize4 const &

        """
        _itkSizePython.itkSize4_swiginit(self, _itkSizePython.new_itkSize4(*args))
    __swig_destroy__ = _itkSizePython.delete_itkSize4

    def __getitem__(self, d):
        r"""
        __getitem__(self, d) -> long

        Parameters
        ----------
        d: unsigned long

        """
        return _itkSizePython.itkSize4___getitem__(self, d)

    def __setitem__(self, d, v):
        r"""
        __setitem__(self, d, v)

        Parameters
        ----------
        d: unsigned long
        v: long

        """
        return _itkSizePython.itkSize4___setitem__(self, d, v)

    @staticmethod
    def __len__():
        r"""__len__() -> unsigned int"""
        return _itkSizePython.itkSize4___len__()

    def __repr__(self):
        r"""__repr__(self) -> std::string"""
        return _itkSizePython.itkSize4___repr__(self)

    def __eq__(self, other):
        return tuple(self) == tuple(other)


# Register itkSize4 in _itkSizePython:
_itkSizePython.itkSize4_swigregister(itkSize4)

