# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# 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 _otbApplication
else:
    import _otbApplication

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__)


import weakref

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_SwigPyIterator

    def value(self):
        return _otbApplication.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _otbApplication.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _otbApplication.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _otbApplication.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _otbApplication.SwigPyIterator_equal(self, x)

    def copy(self):
        return _otbApplication.SwigPyIterator_copy(self)

    def next(self):
        return _otbApplication.SwigPyIterator_next(self)

    def __next__(self):
        return _otbApplication.SwigPyIterator___next__(self)

    def previous(self):
        return _otbApplication.SwigPyIterator_previous(self)

    def advance(self, n):
        return _otbApplication.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _otbApplication.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _otbApplication.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _otbApplication.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _otbApplication.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _otbApplication.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _otbApplication.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _otbApplication:
_otbApplication.SwigPyIterator_swigregister(SwigPyIterator)

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

    def iterator(self):
        return _otbApplication.vectorstring_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _otbApplication.vectorstring___nonzero__(self)

    def __bool__(self):
        return _otbApplication.vectorstring___bool__(self)

    def __len__(self):
        return _otbApplication.vectorstring___len__(self)

    def __getslice__(self, i, j):
        return _otbApplication.vectorstring___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _otbApplication.vectorstring___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _otbApplication.vectorstring___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _otbApplication.vectorstring___delitem__(self, *args)

    def __getitem__(self, *args):
        return _otbApplication.vectorstring___getitem__(self, *args)

    def __setitem__(self, *args):
        return _otbApplication.vectorstring___setitem__(self, *args)

    def pop(self):
        return _otbApplication.vectorstring_pop(self)

    def append(self, x):
        return _otbApplication.vectorstring_append(self, x)

    def empty(self):
        return _otbApplication.vectorstring_empty(self)

    def size(self):
        return _otbApplication.vectorstring_size(self)

    def swap(self, v):
        return _otbApplication.vectorstring_swap(self, v)

    def begin(self):
        return _otbApplication.vectorstring_begin(self)

    def end(self):
        return _otbApplication.vectorstring_end(self)

    def rbegin(self):
        return _otbApplication.vectorstring_rbegin(self)

    def rend(self):
        return _otbApplication.vectorstring_rend(self)

    def clear(self):
        return _otbApplication.vectorstring_clear(self)

    def get_allocator(self):
        return _otbApplication.vectorstring_get_allocator(self)

    def pop_back(self):
        return _otbApplication.vectorstring_pop_back(self)

    def erase(self, *args):
        return _otbApplication.vectorstring_erase(self, *args)

    def __init__(self, *args):
        _otbApplication.vectorstring_swiginit(self, _otbApplication.new_vectorstring(*args))

    def push_back(self, x):
        return _otbApplication.vectorstring_push_back(self, x)

    def front(self):
        return _otbApplication.vectorstring_front(self)

    def back(self):
        return _otbApplication.vectorstring_back(self)

    def assign(self, n, x):
        return _otbApplication.vectorstring_assign(self, n, x)

    def resize(self, *args):
        return _otbApplication.vectorstring_resize(self, *args)

    def insert(self, *args):
        return _otbApplication.vectorstring_insert(self, *args)

    def reserve(self, n):
        return _otbApplication.vectorstring_reserve(self, n)

    def capacity(self):
        return _otbApplication.vectorstring_capacity(self)
    __swig_destroy__ = _otbApplication.delete_vectorstring

# Register vectorstring in _otbApplication:
_otbApplication.vectorstring_swigregister(vectorstring)

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

    def iterator(self):
        return _otbApplication.mapstringstring_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _otbApplication.mapstringstring___nonzero__(self)

    def __bool__(self):
        return _otbApplication.mapstringstring___bool__(self)

    def __len__(self):
        return _otbApplication.mapstringstring___len__(self)
    def __iter__(self):
        return self.key_iterator()
    def iterkeys(self):
        return self.key_iterator()
    def itervalues(self):
        return self.value_iterator()
    def iteritems(self):
        return self.iterator()

    def __getitem__(self, key):
        return _otbApplication.mapstringstring___getitem__(self, key)

    def __delitem__(self, key):
        return _otbApplication.mapstringstring___delitem__(self, key)

    def has_key(self, key):
        return _otbApplication.mapstringstring_has_key(self, key)

    def keys(self):
        return _otbApplication.mapstringstring_keys(self)

    def values(self):
        return _otbApplication.mapstringstring_values(self)

    def items(self):
        return _otbApplication.mapstringstring_items(self)

    def __contains__(self, key):
        return _otbApplication.mapstringstring___contains__(self, key)

    def key_iterator(self):
        return _otbApplication.mapstringstring_key_iterator(self)

    def value_iterator(self):
        return _otbApplication.mapstringstring_value_iterator(self)

    def __setitem__(self, *args):
        return _otbApplication.mapstringstring___setitem__(self, *args)

    def asdict(self):
        return _otbApplication.mapstringstring_asdict(self)

    def __init__(self, *args):
        _otbApplication.mapstringstring_swiginit(self, _otbApplication.new_mapstringstring(*args))

    def empty(self):
        return _otbApplication.mapstringstring_empty(self)

    def size(self):
        return _otbApplication.mapstringstring_size(self)

    def swap(self, v):
        return _otbApplication.mapstringstring_swap(self, v)

    def begin(self):
        return _otbApplication.mapstringstring_begin(self)

    def end(self):
        return _otbApplication.mapstringstring_end(self)

    def rbegin(self):
        return _otbApplication.mapstringstring_rbegin(self)

    def rend(self):
        return _otbApplication.mapstringstring_rend(self)

    def clear(self):
        return _otbApplication.mapstringstring_clear(self)

    def get_allocator(self):
        return _otbApplication.mapstringstring_get_allocator(self)

    def count(self, x):
        return _otbApplication.mapstringstring_count(self, x)

    def erase(self, *args):
        return _otbApplication.mapstringstring_erase(self, *args)

    def find(self, x):
        return _otbApplication.mapstringstring_find(self, x)

    def lower_bound(self, x):
        return _otbApplication.mapstringstring_lower_bound(self, x)

    def upper_bound(self, x):
        return _otbApplication.mapstringstring_upper_bound(self, x)

    def __str__(self):
      ret = "{"
      for key in self:
        ret += str(key)+":"+str(self[key])+", "
      if len(ret) == 1:
        ret += ", "
      return ret[:-2]+"}"

    __swig_destroy__ = _otbApplication.delete_mapstringstring

# Register mapstringstring in _otbApplication:
_otbApplication.mapstringstring_swigregister(mapstringstring)

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

    def iterator(self):
        return _otbApplication.vectorbool_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _otbApplication.vectorbool___nonzero__(self)

    def __bool__(self):
        return _otbApplication.vectorbool___bool__(self)

    def __len__(self):
        return _otbApplication.vectorbool___len__(self)

    def __getslice__(self, i, j):
        return _otbApplication.vectorbool___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _otbApplication.vectorbool___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _otbApplication.vectorbool___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _otbApplication.vectorbool___delitem__(self, *args)

    def __getitem__(self, *args):
        return _otbApplication.vectorbool___getitem__(self, *args)

    def __setitem__(self, *args):
        return _otbApplication.vectorbool___setitem__(self, *args)

    def pop(self):
        return _otbApplication.vectorbool_pop(self)

    def append(self, x):
        return _otbApplication.vectorbool_append(self, x)

    def empty(self):
        return _otbApplication.vectorbool_empty(self)

    def size(self):
        return _otbApplication.vectorbool_size(self)

    def swap(self, v):
        return _otbApplication.vectorbool_swap(self, v)

    def begin(self):
        return _otbApplication.vectorbool_begin(self)

    def end(self):
        return _otbApplication.vectorbool_end(self)

    def rbegin(self):
        return _otbApplication.vectorbool_rbegin(self)

    def rend(self):
        return _otbApplication.vectorbool_rend(self)

    def clear(self):
        return _otbApplication.vectorbool_clear(self)

    def get_allocator(self):
        return _otbApplication.vectorbool_get_allocator(self)

    def pop_back(self):
        return _otbApplication.vectorbool_pop_back(self)

    def erase(self, *args):
        return _otbApplication.vectorbool_erase(self, *args)

    def __init__(self, *args):
        _otbApplication.vectorbool_swiginit(self, _otbApplication.new_vectorbool(*args))

    def push_back(self, x):
        return _otbApplication.vectorbool_push_back(self, x)

    def front(self):
        return _otbApplication.vectorbool_front(self)

    def back(self):
        return _otbApplication.vectorbool_back(self)

    def assign(self, n, x):
        return _otbApplication.vectorbool_assign(self, n, x)

    def resize(self, *args):
        return _otbApplication.vectorbool_resize(self, *args)

    def insert(self, *args):
        return _otbApplication.vectorbool_insert(self, *args)

    def reserve(self, n):
        return _otbApplication.vectorbool_reserve(self, n)

    def capacity(self):
        return _otbApplication.vectorbool_capacity(self)
    __swig_destroy__ = _otbApplication.delete_vectorbool

# Register vectorbool in _otbApplication:
_otbApplication.vectorbool_swigregister(vectorbool)

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

    def iterator(self):
        return _otbApplication.vectordouble_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self):
        return _otbApplication.vectordouble___nonzero__(self)

    def __bool__(self):
        return _otbApplication.vectordouble___bool__(self)

    def __len__(self):
        return _otbApplication.vectordouble___len__(self)

    def __getslice__(self, i, j):
        return _otbApplication.vectordouble___getslice__(self, i, j)

    def __setslice__(self, *args):
        return _otbApplication.vectordouble___setslice__(self, *args)

    def __delslice__(self, i, j):
        return _otbApplication.vectordouble___delslice__(self, i, j)

    def __delitem__(self, *args):
        return _otbApplication.vectordouble___delitem__(self, *args)

    def __getitem__(self, *args):
        return _otbApplication.vectordouble___getitem__(self, *args)

    def __setitem__(self, *args):
        return _otbApplication.vectordouble___setitem__(self, *args)

    def pop(self):
        return _otbApplication.vectordouble_pop(self)

    def append(self, x):
        return _otbApplication.vectordouble_append(self, x)

    def empty(self):
        return _otbApplication.vectordouble_empty(self)

    def size(self):
        return _otbApplication.vectordouble_size(self)

    def swap(self, v):
        return _otbApplication.vectordouble_swap(self, v)

    def begin(self):
        return _otbApplication.vectordouble_begin(self)

    def end(self):
        return _otbApplication.vectordouble_end(self)

    def rbegin(self):
        return _otbApplication.vectordouble_rbegin(self)

    def rend(self):
        return _otbApplication.vectordouble_rend(self)

    def clear(self):
        return _otbApplication.vectordouble_clear(self)

    def get_allocator(self):
        return _otbApplication.vectordouble_get_allocator(self)

    def pop_back(self):
        return _otbApplication.vectordouble_pop_back(self)

    def erase(self, *args):
        return _otbApplication.vectordouble_erase(self, *args)

    def __init__(self, *args):
        _otbApplication.vectordouble_swiginit(self, _otbApplication.new_vectordouble(*args))

    def push_back(self, x):
        return _otbApplication.vectordouble_push_back(self, x)

    def front(self):
        return _otbApplication.vectordouble_front(self)

    def back(self):
        return _otbApplication.vectordouble_back(self)

    def assign(self, n, x):
        return _otbApplication.vectordouble_assign(self, n, x)

    def resize(self, *args):
        return _otbApplication.vectordouble_resize(self, *args)

    def insert(self, *args):
        return _otbApplication.vectordouble_insert(self, *args)

    def reserve(self, n):
        return _otbApplication.vectordouble_reserve(self, n)

    def capacity(self):
        return _otbApplication.vectordouble_capacity(self)
    __swig_destroy__ = _otbApplication.delete_vectordouble

# Register vectordouble in _otbApplication:
_otbApplication.vectordouble_swigregister(vectordouble)

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

    def __init__(self):
        _otbApplication.itkSize_swiginit(self, _otbApplication.new_itkSize())
    __swig_destroy__ = _otbApplication.delete_itkSize

    def Fill(self, val):
        return _otbApplication.itkSize_Fill(self, val)

    def GetElement(self, element):
        return _otbApplication.itkSize_GetElement(self, element)

    def SetElement(self, element, val):
        return _otbApplication.itkSize_SetElement(self, element, val)

    @staticmethod
    def GetSizeDimension():
        return _otbApplication.itkSize_GetSizeDimension()

    def __str__(self):
      ret = "["
      for index in range(2):
        ret += str(self.GetElement(index))+","
      ret = ret[:-1] + "]"
      return ret
    def __len__(self):
      return 2
    def __getitem__(self,idx):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.GetElement(idx)
    def __setitem__(self,idx,val):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.SetElement(idx,val)


# Register itkSize in _otbApplication:
_otbApplication.itkSize_swigregister(itkSize)

def itkSize_GetSizeDimension():
    return _otbApplication.itkSize_GetSizeDimension()

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

    def __init__(self):
        _otbApplication.itkIndex_swiginit(self, _otbApplication.new_itkIndex())
    __swig_destroy__ = _otbApplication.delete_itkIndex

    def Fill(self, val):
        return _otbApplication.itkIndex_Fill(self, val)

    def GetElement(self, element):
        return _otbApplication.itkIndex_GetElement(self, element)

    def SetElement(self, element, val):
        return _otbApplication.itkIndex_SetElement(self, element, val)

    @staticmethod
    def GetIndexDimension():
        return _otbApplication.itkIndex_GetIndexDimension()

    def __str__(self):
      ret = "["
      for index in range(2):
        ret += str(self.GetElement(index))+","
      ret = ret[:-1] + "]"
      return ret
    def __len__(self):
      return 2
    def __getitem__(self,idx):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.GetElement(idx)
    def __setitem__(self,idx,val):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.SetElement(idx,val)


# Register itkIndex in _otbApplication:
_otbApplication.itkIndex_swigregister(itkIndex)

def itkIndex_GetIndexDimension():
    return _otbApplication.itkIndex_GetIndexDimension()

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

    def __init__(self, *args):
        _otbApplication.itkRegion_swiginit(self, _otbApplication.new_itkRegion(*args))
    __swig_destroy__ = _otbApplication.delete_itkRegion

    def SetUpperIndex(self, idx):
        return _otbApplication.itkRegion_SetUpperIndex(self, idx)

    def GetUpperIndex(self):
        return _otbApplication.itkRegion_GetUpperIndex(self)

    def IsInside(self, index):
        return _otbApplication.itkRegion_IsInside(self, index)

    def SetSize(self, *args):
        return _otbApplication.itkRegion_SetSize(self, *args)

    def GetSize(self, *args):
        return _otbApplication.itkRegion_GetSize(self, *args)

    def SetIndex(self, *args):
        return _otbApplication.itkRegion_SetIndex(self, *args)

    def GetIndex(self, *args):
        return _otbApplication.itkRegion_GetIndex(self, *args)

    def __str__(self):
      return "{index:"+str(self.GetIndex())+", size:"+str(self.GetSize())+"}"
    def __len__(self):
      return 2
    def keys(self):
      return ['index', 'size']
    def __getitem__(self,key):
      if key == 'index':
        return self.GetIndex()
      elif key == 'size':
        return self.GetSize()
      else:
        raise IndexError('Key not in ["index","size"]')
    def __setitem__(self,key,val):
      if key == 'index':
        self.SetIndex(val)
      elif key == 'size':
        self.SetSize(val)
      else:
        raise IndexError('Key not in ["index","size"]')


# Register itkRegion in _otbApplication:
_otbApplication.itkRegion_swigregister(itkRegion)

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

    def __init__(self):
        _otbApplication.itkFixedArray_swiginit(self, _otbApplication.new_itkFixedArray())
    __swig_destroy__ = _otbApplication.delete_itkFixedArray

    def Size(self):
        return _otbApplication.itkFixedArray_Size(self)

    def SetElement(self, idx, val):
        return _otbApplication.itkFixedArray_SetElement(self, idx, val)

    def GetElement(self, idx):
        return _otbApplication.itkFixedArray_GetElement(self, idx)

    def __str__(self):
      ret = "["
      for index in range(2):
        ret += str(self.GetElement(index))+","
      ret = ret[:-1] + "]"
      return ret
    def __len__(self):
      return 2
    def __getitem__(self,idx):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.GetElement(idx)
    def __setitem__(self,idx,val):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.SetElement(idx,val)


# Register itkFixedArray in _otbApplication:
_otbApplication.itkFixedArray_swigregister(itkFixedArray)

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

    def __init__(self):
        _otbApplication.itkVector_swiginit(self, _otbApplication.new_itkVector())
    __swig_destroy__ = _otbApplication.delete_itkVector

    def GetNorm(self):
        return _otbApplication.itkVector_GetNorm(self)

    def GetSquaredNorm(self):
        return _otbApplication.itkVector_GetSquaredNorm(self)

    def Normalize(self):
        return _otbApplication.itkVector_Normalize(self)

    def __str__(self):
      ret = "["
      for index in range(2):
        ret += str(self.GetElement(index))+","
      ret = ret[:-1] + "]"
      return ret
    def __len__(self):
      return 2
    def __getitem__(self,idx):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.GetElement(idx)
    def __setitem__(self,idx,val):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.SetElement(idx,val)


# Register itkVector in _otbApplication:
_otbApplication.itkVector_swigregister(itkVector)

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

    def __init__(self):
        _otbApplication.itkPoint_swiginit(self, _otbApplication.new_itkPoint())
    __swig_destroy__ = _otbApplication.delete_itkPoint

    def __str__(self):
      ret = "["
      for index in range(2):
        ret += str(self.GetElement(index))+","
      ret = ret[:-1] + "]"
      return ret
    def __len__(self):
      return 2
    def __getitem__(self,idx):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.GetElement(idx)
    def __setitem__(self,idx,val):
      if idx >= 2 or idx < 0:
        raise IndexError('Index outside [0,'+str(2-1)+']')
      return self.SetElement(idx,val)


# Register itkPoint in _otbApplication:
_otbApplication.itkPoint_swigregister(itkPoint)

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

    @staticmethod
    def New():
        return _otbApplication.itkIndent_New()

    def __init__(self, ind=0):
        _otbApplication.itkIndent_swiginit(self, _otbApplication.new_itkIndent(ind))

    @staticmethod
    def GetNameOfClass():
        return _otbApplication.itkIndent_GetNameOfClass()

    def GetNextIndent(self):
        return _otbApplication.itkIndent_GetNextIndent(self)
    __swig_destroy__ = _otbApplication.delete_itkIndent

# Register itkIndent in _otbApplication:
_otbApplication.itkIndent_swigregister(itkIndent)

def itkIndent_New():
    return _otbApplication.itkIndent_New()

def itkIndent_GetNameOfClass():
    return _otbApplication.itkIndent_GetNameOfClass()

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def New():
        return _otbApplication.itkLightObject_New()

    def GetNameOfClass(self):
        return _otbApplication.itkLightObject_GetNameOfClass(self)

    def Print(self, os, indent=0):
        return _otbApplication.itkLightObject_Print(self, os, indent)

    @staticmethod
    def BreakOnError():
        return _otbApplication.itkLightObject_BreakOnError()

    def ToString(self):
        return _otbApplication.itkLightObject_ToString(self)

    def __str__( self ):
      return self.ToString()

    __swig_destroy__ = _otbApplication.delete_itkLightObject

# Register itkLightObject in _otbApplication:
_otbApplication.itkLightObject_swigregister(itkLightObject)

def itkLightObject_New():
    return _otbApplication.itkLightObject_New()

def itkLightObject_BreakOnError():
    return _otbApplication.itkLightObject_BreakOnError()

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

    def __init__(self, *args):
        _otbApplication.itkLightObject_Pointer_swiginit(self, _otbApplication.new_itkLightObject_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_itkLightObject_Pointer

    def __deref__(self):
        return _otbApplication.itkLightObject_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.itkLightObject_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.itkLightObject_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.itkLightObject_Pointer_GetPointer(self)

    def New(self):
        return _otbApplication.itkLightObject_Pointer_New(self)

    def GetNameOfClass(self):
        return _otbApplication.itkLightObject_Pointer_GetNameOfClass(self)

    def Print(self, os, indent=0):
        return _otbApplication.itkLightObject_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.itkLightObject_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.itkLightObject_Pointer_ToString(self)

# Register itkLightObject_Pointer in _otbApplication:
_otbApplication.itkLightObject_Pointer_swigregister(itkLightObject_Pointer)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def New():
        return _otbApplication.itkObject_New()

    def GetNameOfClass(self):
        return _otbApplication.itkObject_GetNameOfClass(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.itkObject_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.itkObject_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.itkObject_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.itkObject_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.itkObject_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.itkObject_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.itkObject_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.itkObject_SetMetaDataDictionary(self, rhs)
    __swig_destroy__ = _otbApplication.delete_itkObject

# Register itkObject in _otbApplication:
_otbApplication.itkObject_swigregister(itkObject)

def itkObject_New():
    return _otbApplication.itkObject_New()

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

    def __init__(self, *args):
        _otbApplication.itkObject_Pointer_swiginit(self, _otbApplication.new_itkObject_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_itkObject_Pointer

    def __deref__(self):
        return _otbApplication.itkObject_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.itkObject_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.itkObject_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.itkObject_Pointer_GetPointer(self)

    def New(self):
        return _otbApplication.itkObject_Pointer_New(self)

    def GetNameOfClass(self):
        return _otbApplication.itkObject_Pointer_GetNameOfClass(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.itkObject_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.itkObject_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.itkObject_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.itkObject_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.itkObject_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.itkObject_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.itkObject_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.itkObject_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.itkObject_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.itkObject_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.itkObject_Pointer_ToString(self)

# Register itkObject_Pointer in _otbApplication:
_otbApplication.itkObject_Pointer_swigregister(itkObject_Pointer)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def GetProgress(self):
        return _otbApplication.itkProcessObject_GetProgress(self)
    __swig_destroy__ = _otbApplication.delete_itkProcessObject

# Register itkProcessObject in _otbApplication:
_otbApplication.itkProcessObject_swigregister(itkProcessObject)

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

    def __init__(self, *args):
        _otbApplication.itkProcessObject_Pointer_swiginit(self, _otbApplication.new_itkProcessObject_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_itkProcessObject_Pointer

    def __deref__(self):
        return _otbApplication.itkProcessObject_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.itkProcessObject_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.itkProcessObject_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.itkProcessObject_Pointer_GetPointer(self)

    def GetProgress(self):
        return _otbApplication.itkProcessObject_Pointer_GetProgress(self)

    def New(self):
        return _otbApplication.itkProcessObject_Pointer_New(self)

    def GetNameOfClass(self):
        return _otbApplication.itkProcessObject_Pointer_GetNameOfClass(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.itkProcessObject_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.itkProcessObject_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.itkProcessObject_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.itkProcessObject_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.itkProcessObject_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.itkProcessObject_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.itkProcessObject_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.itkProcessObject_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.itkProcessObject_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.itkProcessObject_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.itkProcessObject_Pointer_ToString(self)

# Register itkProcessObject_Pointer in _otbApplication:
_otbApplication.itkProcessObject_Pointer_swigregister(itkProcessObject_Pointer)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def GetNameOfClass(self):
        return _otbApplication.itkObjectFactoryBase_GetNameOfClass(self)

    @staticmethod
    def CreateInstance(itkclassname):
        return _otbApplication.itkObjectFactoryBase_CreateInstance(itkclassname)

    @staticmethod
    def CreateAllInstance(itkclassname):
        return _otbApplication.itkObjectFactoryBase_CreateAllInstance(itkclassname)

    @staticmethod
    def ReHash():
        return _otbApplication.itkObjectFactoryBase_ReHash()

    @staticmethod
    def RegisterFactory(arg0):
        return _otbApplication.itkObjectFactoryBase_RegisterFactory(arg0)

    @staticmethod
    def UnRegisterFactory(arg0):
        return _otbApplication.itkObjectFactoryBase_UnRegisterFactory(arg0)

    @staticmethod
    def UnRegisterAllFactories():
        return _otbApplication.itkObjectFactoryBase_UnRegisterAllFactories()

    @staticmethod
    def GetRegisteredFactories():
        return _otbApplication.itkObjectFactoryBase_GetRegisteredFactories()

    def GetITKSourceVersion(self):
        return _otbApplication.itkObjectFactoryBase_GetITKSourceVersion(self)

    def GetDescription(self):
        return _otbApplication.itkObjectFactoryBase_GetDescription(self)

    def GetClassOverrideNames(self):
        return _otbApplication.itkObjectFactoryBase_GetClassOverrideNames(self)

    def GetClassOverrideWithNames(self):
        return _otbApplication.itkObjectFactoryBase_GetClassOverrideWithNames(self)

    def GetClassOverrideDescriptions(self):
        return _otbApplication.itkObjectFactoryBase_GetClassOverrideDescriptions(self)

    def GetEnableFlags(self):
        return _otbApplication.itkObjectFactoryBase_GetEnableFlags(self)

    def SetEnableFlag(self, flag, className, subclassName):
        return _otbApplication.itkObjectFactoryBase_SetEnableFlag(self, flag, className, subclassName)

    def GetEnableFlag(self, className, subclassName):
        return _otbApplication.itkObjectFactoryBase_GetEnableFlag(self, className, subclassName)

    def Disable(self, className):
        return _otbApplication.itkObjectFactoryBase_Disable(self, className)

    def GetLibraryPath(self):
        return _otbApplication.itkObjectFactoryBase_GetLibraryPath(self)
    __swig_destroy__ = _otbApplication.delete_itkObjectFactoryBase

# Register itkObjectFactoryBase in _otbApplication:
_otbApplication.itkObjectFactoryBase_swigregister(itkObjectFactoryBase)

def itkObjectFactoryBase_CreateInstance(itkclassname):
    return _otbApplication.itkObjectFactoryBase_CreateInstance(itkclassname)

def itkObjectFactoryBase_CreateAllInstance(itkclassname):
    return _otbApplication.itkObjectFactoryBase_CreateAllInstance(itkclassname)

def itkObjectFactoryBase_ReHash():
    return _otbApplication.itkObjectFactoryBase_ReHash()

def itkObjectFactoryBase_RegisterFactory(arg0):
    return _otbApplication.itkObjectFactoryBase_RegisterFactory(arg0)

def itkObjectFactoryBase_UnRegisterFactory(arg0):
    return _otbApplication.itkObjectFactoryBase_UnRegisterFactory(arg0)

def itkObjectFactoryBase_UnRegisterAllFactories():
    return _otbApplication.itkObjectFactoryBase_UnRegisterAllFactories()

def itkObjectFactoryBase_GetRegisteredFactories():
    return _otbApplication.itkObjectFactoryBase_GetRegisteredFactories()

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

    def __init__(self, *args):
        _otbApplication.itkObjectFactoryBase_Pointer_swiginit(self, _otbApplication.new_itkObjectFactoryBase_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_itkObjectFactoryBase_Pointer

    def __deref__(self):
        return _otbApplication.itkObjectFactoryBase_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetPointer(self)

    def GetNameOfClass(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetNameOfClass(self)

    def CreateInstance(self, itkclassname):
        return _otbApplication.itkObjectFactoryBase_Pointer_CreateInstance(self, itkclassname)

    def CreateAllInstance(self, itkclassname):
        return _otbApplication.itkObjectFactoryBase_Pointer_CreateAllInstance(self, itkclassname)

    def ReHash(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_ReHash(self)

    def RegisterFactory(self, arg0):
        return _otbApplication.itkObjectFactoryBase_Pointer_RegisterFactory(self, arg0)

    def UnRegisterFactory(self, arg0):
        return _otbApplication.itkObjectFactoryBase_Pointer_UnRegisterFactory(self, arg0)

    def UnRegisterAllFactories(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_UnRegisterAllFactories(self)

    def GetRegisteredFactories(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetRegisteredFactories(self)

    def GetITKSourceVersion(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetITKSourceVersion(self)

    def GetDescription(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetDescription(self)

    def GetClassOverrideNames(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetClassOverrideNames(self)

    def GetClassOverrideWithNames(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetClassOverrideWithNames(self)

    def GetClassOverrideDescriptions(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetClassOverrideDescriptions(self)

    def GetEnableFlags(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetEnableFlags(self)

    def SetEnableFlag(self, flag, className, subclassName):
        return _otbApplication.itkObjectFactoryBase_Pointer_SetEnableFlag(self, flag, className, subclassName)

    def GetEnableFlag(self, className, subclassName):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetEnableFlag(self, className, subclassName)

    def Disable(self, className):
        return _otbApplication.itkObjectFactoryBase_Pointer_Disable(self, className)

    def GetLibraryPath(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetLibraryPath(self)

    def New(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_New(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.itkObjectFactoryBase_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.itkObjectFactoryBase_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.itkObjectFactoryBase_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.itkObjectFactoryBase_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.itkObjectFactoryBase_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.itkObjectFactoryBase_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.itkObjectFactoryBase_Pointer_ToString(self)

# Register itkObjectFactoryBase_Pointer in _otbApplication:
_otbApplication.itkObjectFactoryBase_Pointer_swigregister(itkObjectFactoryBase_Pointer)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def GetMetaDataObjectTypeInfo(self):
        return _otbApplication.itkMetaDataObjectBase_GetMetaDataObjectTypeInfo(self)

    def GetMetaDataObjectTypeName(self):
        return _otbApplication.itkMetaDataObjectBase_GetMetaDataObjectTypeName(self)

    def GetNameOfClass(self):
        return _otbApplication.itkMetaDataObjectBase_GetNameOfClass(self)

    def Print(self, os):
        return _otbApplication.itkMetaDataObjectBase_Print(self, os)
    __swig_destroy__ = _otbApplication.delete_itkMetaDataObjectBase

# Register itkMetaDataObjectBase in _otbApplication:
_otbApplication.itkMetaDataObjectBase_swigregister(itkMetaDataObjectBase)

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

    def __init__(self, *args):
        _otbApplication.itkMetaDataObjectBase_Pointer_swiginit(self, _otbApplication.new_itkMetaDataObjectBase_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_itkMetaDataObjectBase_Pointer

    def __deref__(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_GetPointer(self)

    def GetMetaDataObjectTypeInfo(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_GetMetaDataObjectTypeInfo(self)

    def GetMetaDataObjectTypeName(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_GetMetaDataObjectTypeName(self)

    def GetNameOfClass(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_GetNameOfClass(self)

    def Print(self, os):
        return _otbApplication.itkMetaDataObjectBase_Pointer_Print(self, os)

    def New(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_New(self)

    def BreakOnError(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.itkMetaDataObjectBase_Pointer_ToString(self)

# Register itkMetaDataObjectBase_Pointer in _otbApplication:
_otbApplication.itkMetaDataObjectBase_Pointer_swigregister(itkMetaDataObjectBase_Pointer)

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

    def Print(self, os):
        return _otbApplication.itkMetaDataDictionary_Print(self, os)

    def __init__(self, *args):
        _otbApplication.itkMetaDataDictionary_swiginit(self, _otbApplication.new_itkMetaDataDictionary(*args))
    __swig_destroy__ = _otbApplication.delete_itkMetaDataDictionary

    def GetKeys(self):
        return _otbApplication.itkMetaDataDictionary_GetKeys(self)

    def HasKey(self, arg0):
        return _otbApplication.itkMetaDataDictionary_HasKey(self, arg0)

    def Get(self, arg2):
        return _otbApplication.itkMetaDataDictionary_Get(self, arg2)

    def Set(self, arg2, arg3):
        return _otbApplication.itkMetaDataDictionary_Set(self, arg2, arg3)

    def GetType(self, key):
        return _otbApplication.itkMetaDataDictionary_GetType(self, key)

    def GetString(self, key):
        return _otbApplication.itkMetaDataDictionary_GetString(self, key)

    def SetString(self, key, val):
        return _otbApplication.itkMetaDataDictionary_SetString(self, key, val)

    def GetInt(self, key):
        return _otbApplication.itkMetaDataDictionary_GetInt(self, key)

    def SetInt(self, key, val):
        return _otbApplication.itkMetaDataDictionary_SetInt(self, key, val)

    def GetDouble(self, key):
        return _otbApplication.itkMetaDataDictionary_GetDouble(self, key)

    def SetDouble(self, key, val):
        return _otbApplication.itkMetaDataDictionary_SetDouble(self, key, val)

    def GetGCP(self, key):
        return _otbApplication.itkMetaDataDictionary_GetGCP(self, key)

    def SetGCP(self, key, val):
        return _otbApplication.itkMetaDataDictionary_SetGCP(self, key, val)

    def GetVector(self, key):
        return _otbApplication.itkMetaDataDictionary_GetVector(self, key)

    def SetVector(self, key, val):
        return _otbApplication.itkMetaDataDictionary_SetVector(self, key, val)

    def GetVectorDataKWL(self, key):
        return _otbApplication.itkMetaDataDictionary_GetVectorDataKWL(self, key)

    def SetVectorDataKWL(self, key, val):
        return _otbApplication.itkMetaDataDictionary_SetVectorDataKWL(self, key, val)

    def GetBoolVector(self, key):
        return _otbApplication.itkMetaDataDictionary_GetBoolVector(self, key)

    def SetBoolVector(self, key, val):
        return _otbApplication.itkMetaDataDictionary_SetBoolVector(self, key, val)

    GetterMap = {
      0 : GetString,
      1 : GetInt,
      2 : GetDouble,
      3 : GetGCP,
      4 : GetVector,
      5 : GetVectorDataKWL,
      6 : GetBoolVector,
      }

    SetterMap = {
      0 : SetString,
      1 : SetInt,
      2 : SetDouble,
      3 : SetGCP,
      4 : SetVector,
      5 : SetVectorDataKWL,
      6 : SetBoolVector,
      }

    def __str__(self):
      ret = ''
      for k in self.GetKeys():
        ret += k + ':<...>, '
      if len(ret) == 0:
        ret += ', '
      return "{"+ret[:-2] +"}"
    def __len__(self):
      return len(self.GetKeys())
    def keys(self):
      return self.GetKeys()
    def __getitem__(self,key):
      if key in self.GetKeys():
        return self.GetterMap[self.GetType(key)](self,key)
      else:
        raise IndexError('Key not recognized')
    def __setitem__(self,key,val):
      if key in self.GetKeys():
        self.SetterMap[self.GetType(key)](self,key,val)
      else:
        raise IndexError('Key not recognized')


# Register itkMetaDataDictionary in _otbApplication:
_otbApplication.itkMetaDataDictionary_swigregister(itkMetaDataDictionary)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr

    def GetNameOfClass(self):
        return _otbApplication.itkCommand_GetNameOfClass(self)

    def Execute(self, caller, event):
        return _otbApplication.itkCommand_Execute(self, caller, event)
    __swig_destroy__ = _otbApplication.delete_itkCommand

# Register itkCommand in _otbApplication:
_otbApplication.itkCommand_swigregister(itkCommand)

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

    def __init__(self, *args):
        _otbApplication.itkCommand_Pointer_swiginit(self, _otbApplication.new_itkCommand_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_itkCommand_Pointer

    def __deref__(self):
        return _otbApplication.itkCommand_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.itkCommand_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.itkCommand_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.itkCommand_Pointer_GetPointer(self)

    def GetNameOfClass(self):
        return _otbApplication.itkCommand_Pointer_GetNameOfClass(self)

    def Execute(self, caller, event):
        return _otbApplication.itkCommand_Pointer_Execute(self, caller, event)

    def New(self):
        return _otbApplication.itkCommand_Pointer_New(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.itkCommand_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.itkCommand_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.itkCommand_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.itkCommand_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.itkCommand_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.itkCommand_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.itkCommand_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.itkCommand_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.itkCommand_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.itkCommand_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.itkCommand_Pointer_ToString(self)

# Register itkCommand_Pointer in _otbApplication:
_otbApplication.itkCommand_Pointer_swigregister(itkCommand_Pointer)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkEventObject

    def MakeObject(self):
        return _otbApplication.itkEventObject_MakeObject(self)

    def Print(self, os):
        return _otbApplication.itkEventObject_Print(self, os)

    def GetEventName(self):
        return _otbApplication.itkEventObject_GetEventName(self)

    def CheckEvent(self, arg0):
        return _otbApplication.itkEventObject_CheckEvent(self, arg0)

# Register itkEventObject in _otbApplication:
_otbApplication.itkEventObject_swigregister(itkEventObject)

class itkNoEvent(itkEventObject):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkNoEvent

    def GetEventName(self):
        return _otbApplication.itkNoEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkNoEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkNoEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkNoEvent_swiginit(self, _otbApplication.new_itkNoEvent(*args))

# Register itkNoEvent in _otbApplication:
_otbApplication.itkNoEvent_swigregister(itkNoEvent)

class itkAnyEvent(itkEventObject):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkAnyEvent

    def GetEventName(self):
        return _otbApplication.itkAnyEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkAnyEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkAnyEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkAnyEvent_swiginit(self, _otbApplication.new_itkAnyEvent(*args))

# Register itkAnyEvent in _otbApplication:
_otbApplication.itkAnyEvent_swigregister(itkAnyEvent)

class itkDeleteEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkDeleteEvent

    def GetEventName(self):
        return _otbApplication.itkDeleteEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkDeleteEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkDeleteEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkDeleteEvent_swiginit(self, _otbApplication.new_itkDeleteEvent(*args))

# Register itkDeleteEvent in _otbApplication:
_otbApplication.itkDeleteEvent_swigregister(itkDeleteEvent)

class itkEndEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkEndEvent

    def GetEventName(self):
        return _otbApplication.itkEndEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkEndEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkEndEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkEndEvent_swiginit(self, _otbApplication.new_itkEndEvent(*args))

# Register itkEndEvent in _otbApplication:
_otbApplication.itkEndEvent_swigregister(itkEndEvent)

class itkExitEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkExitEvent

    def GetEventName(self):
        return _otbApplication.itkExitEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkExitEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkExitEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkExitEvent_swiginit(self, _otbApplication.new_itkExitEvent(*args))

# Register itkExitEvent in _otbApplication:
_otbApplication.itkExitEvent_swigregister(itkExitEvent)

class itkIterationEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkIterationEvent

    def GetEventName(self):
        return _otbApplication.itkIterationEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkIterationEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkIterationEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkIterationEvent_swiginit(self, _otbApplication.new_itkIterationEvent(*args))

# Register itkIterationEvent in _otbApplication:
_otbApplication.itkIterationEvent_swigregister(itkIterationEvent)

class itkModifiedEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkModifiedEvent

    def GetEventName(self):
        return _otbApplication.itkModifiedEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkModifiedEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkModifiedEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkModifiedEvent_swiginit(self, _otbApplication.new_itkModifiedEvent(*args))

# Register itkModifiedEvent in _otbApplication:
_otbApplication.itkModifiedEvent_swigregister(itkModifiedEvent)

class itkPickEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkPickEvent

    def GetEventName(self):
        return _otbApplication.itkPickEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkPickEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkPickEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkPickEvent_swiginit(self, _otbApplication.new_itkPickEvent(*args))

# Register itkPickEvent in _otbApplication:
_otbApplication.itkPickEvent_swigregister(itkPickEvent)

class itkProgressEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkProgressEvent

    def GetEventName(self):
        return _otbApplication.itkProgressEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkProgressEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkProgressEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkProgressEvent_swiginit(self, _otbApplication.new_itkProgressEvent(*args))

# Register itkProgressEvent in _otbApplication:
_otbApplication.itkProgressEvent_swigregister(itkProgressEvent)

class itkStartEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkStartEvent

    def GetEventName(self):
        return _otbApplication.itkStartEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkStartEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkStartEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkStartEvent_swiginit(self, _otbApplication.new_itkStartEvent(*args))

# Register itkStartEvent in _otbApplication:
_otbApplication.itkStartEvent_swigregister(itkStartEvent)

class itkStartPickEvent(itkPickEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkStartPickEvent

    def GetEventName(self):
        return _otbApplication.itkStartPickEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkStartPickEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkStartPickEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkStartPickEvent_swiginit(self, _otbApplication.new_itkStartPickEvent(*args))

# Register itkStartPickEvent in _otbApplication:
_otbApplication.itkStartPickEvent_swigregister(itkStartPickEvent)

class itkUserEvent(itkAnyEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkUserEvent

    def GetEventName(self):
        return _otbApplication.itkUserEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkUserEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkUserEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkUserEvent_swiginit(self, _otbApplication.new_itkUserEvent(*args))

# Register itkUserEvent in _otbApplication:
_otbApplication.itkUserEvent_swigregister(itkUserEvent)

class itkAbortCheckEvent(itkPickEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkAbortCheckEvent

    def GetEventName(self):
        return _otbApplication.itkAbortCheckEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkAbortCheckEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkAbortCheckEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkAbortCheckEvent_swiginit(self, _otbApplication.new_itkAbortCheckEvent(*args))

# Register itkAbortCheckEvent in _otbApplication:
_otbApplication.itkAbortCheckEvent_swigregister(itkAbortCheckEvent)

class itkEndPickEvent(itkPickEvent):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_itkEndPickEvent

    def GetEventName(self):
        return _otbApplication.itkEndPickEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.itkEndPickEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.itkEndPickEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.itkEndPickEvent_swiginit(self, _otbApplication.new_itkEndPickEvent(*args))

# Register itkEndPickEvent in _otbApplication:
_otbApplication.itkEndPickEvent_swigregister(itkEndPickEvent)

class GCP(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    m_Id = property(_otbApplication.GCP_m_Id_get, _otbApplication.GCP_m_Id_set)
    m_Info = property(_otbApplication.GCP_m_Info_get, _otbApplication.GCP_m_Info_set)
    m_GCPCol = property(_otbApplication.GCP_m_GCPCol_get, _otbApplication.GCP_m_GCPCol_set)
    m_GCPRow = property(_otbApplication.GCP_m_GCPRow_get, _otbApplication.GCP_m_GCPRow_set)
    m_GCPX = property(_otbApplication.GCP_m_GCPX_get, _otbApplication.GCP_m_GCPX_set)
    m_GCPY = property(_otbApplication.GCP_m_GCPY_get, _otbApplication.GCP_m_GCPY_set)
    m_GCPZ = property(_otbApplication.GCP_m_GCPZ_get, _otbApplication.GCP_m_GCPZ_set)

    def __init__(self):
        _otbApplication.GCP_swiginit(self, _otbApplication.new_GCP())

    def Print(self, os):
        return _otbApplication.GCP_Print(self, os)
    __swig_destroy__ = _otbApplication.delete_GCP

# Register GCP in _otbApplication:
_otbApplication.GCP_swigregister(GCP)

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

    def GetJulianDay(self):
        return _otbApplication.TimePoint_GetJulianDay(self)

    def GetModifiedJulianDay(self):
        return _otbApplication.TimePoint_GetModifiedJulianDay(self)

    def __repr__(self):
        return _otbApplication.TimePoint___repr__(self)

    def __init__(self):
        _otbApplication.TimePoint_swiginit(self, _otbApplication.new_TimePoint())
    __swig_destroy__ = _otbApplication.delete_TimePoint

# Register TimePoint in _otbApplication:
_otbApplication.TimePoint_swigregister(TimePoint)

class LUTAxis(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Size = property(_otbApplication.LUTAxis_Size_get, _otbApplication.LUTAxis_Size_set)
    Origin = property(_otbApplication.LUTAxis_Origin_get, _otbApplication.LUTAxis_Origin_set)
    Spacing = property(_otbApplication.LUTAxis_Spacing_get, _otbApplication.LUTAxis_Spacing_set)
    Values = property(_otbApplication.LUTAxis_Values_get, _otbApplication.LUTAxis_Values_set)

    def ToJSON(self, multiline=False):
        return _otbApplication.LUTAxis_ToJSON(self, multiline)

    def __init__(self):
        _otbApplication.LUTAxis_swiginit(self, _otbApplication.new_LUTAxis())
    __swig_destroy__ = _otbApplication.delete_LUTAxis

# Register LUTAxis in _otbApplication:
_otbApplication.LUTAxis_swigregister(LUTAxis)

class lut1d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Axis = property(_otbApplication.lut1d_Axis_get, _otbApplication.lut1d_Axis_set)
    Array = property(_otbApplication.lut1d_Array_get, _otbApplication.lut1d_Array_set)

    def ToJSON(self, multiline=False):
        return _otbApplication.lut1d_ToJSON(self, multiline)

    def ToString(self):
        return _otbApplication.lut1d_ToString(self)

    def FromString(self, arg2):
        return _otbApplication.lut1d_FromString(self, arg2)

    def __init__(self):
        _otbApplication.lut1d_swiginit(self, _otbApplication.new_lut1d())
    __swig_destroy__ = _otbApplication.delete_lut1d

# Register lut1d in _otbApplication:
_otbApplication.lut1d_swigregister(lut1d)

class lut2d(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Axis = property(_otbApplication.lut2d_Axis_get, _otbApplication.lut2d_Axis_set)
    Array = property(_otbApplication.lut2d_Array_get, _otbApplication.lut2d_Array_set)

    def ToJSON(self, multiline=False):
        return _otbApplication.lut2d_ToJSON(self, multiline)

    def ToString(self):
        return _otbApplication.lut2d_ToString(self)

    def FromString(self, arg2):
        return _otbApplication.lut2d_FromString(self, arg2)

    def __init__(self):
        _otbApplication.lut2d_swiginit(self, _otbApplication.new_lut2d())
    __swig_destroy__ = _otbApplication.delete_lut2d

# Register lut2d in _otbApplication:
_otbApplication.lut2d_swigregister(lut2d)

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

    def GetProjectedGeometry(self):
        return _otbApplication.ImageMetadataBase_GetProjectedGeometry(self)

    def GetProjectionProj(self):
        return _otbApplication.ImageMetadataBase_GetProjectionProj(self)

    def GetKeyListNum(self):
        return _otbApplication.ImageMetadataBase_GetKeyListNum(self)

    def GetKeyListStr(self):
        return _otbApplication.ImageMetadataBase_GetKeyListStr(self)

    def GetKeyListL1D(self):
        return _otbApplication.ImageMetadataBase_GetKeyListL1D(self)

    def GetKeyListTime(self):
        return _otbApplication.ImageMetadataBase_GetKeyListTime(self)

    def is_num(self, key):
        return _otbApplication.ImageMetadataBase_is_num(self, key)

    def get_num(self, key):
        return _otbApplication.ImageMetadataBase_get_num(self, key)

    def is_str(self, key):
        return _otbApplication.ImageMetadataBase_is_str(self, key)

    def get_str(self, key):
        return _otbApplication.ImageMetadataBase_get_str(self, key)

    def is_l1d(self, key):
        return _otbApplication.ImageMetadataBase_is_l1d(self, key)

    def get_l1d(self, key):
        return _otbApplication.ImageMetadataBase_get_l1d(self, key)

    def is_l2d(self, key):
        return _otbApplication.ImageMetadataBase_is_l2d(self, key)

    def get_l2d(self, key):
        return _otbApplication.ImageMetadataBase_get_l2d(self, key)

    def is_time(self, key):
        return _otbApplication.ImageMetadataBase_is_time(self, key)

    def get_time(self, key):
        return _otbApplication.ImageMetadataBase_get_time(self, key)

    def is_geom(self, key):
        return _otbApplication.ImageMetadataBase_is_geom(self, key)

    def is_extra(self, key):
        return _otbApplication.ImageMetadataBase_is_extra(self, key)

    def get_extra(self, key):
        return _otbApplication.ImageMetadataBase_get_extra(self, key)

    def has(self, key):
        return _otbApplication.ImageMetadataBase_has(self, key)

    def __setitem__(self, *args):
        return _otbApplication.ImageMetadataBase___setitem__(self, *args)

    def __getitem__(self, key):
      if self.is_num(key):
        return self.get_num(key)
      elif self.is_str(key):
        return self.get_str(key)
      elif self.is_l1d(key):
        return self.get_l1d(key)
      elif self.is_l2d(key):
        return self.get_l2d(key)
      elif self.is_time(key):
        return self.get_time(key)
      elif self.is_geom(key):
        return None # TODO: the geom part of the Imagemetadata is not wrapped yet
      elif self.is_extra(key):
        return self.get_extra(key)
      else:
        return None


    def __init__(self):
        _otbApplication.ImageMetadataBase_swiginit(self, _otbApplication.new_ImageMetadataBase())
    __swig_destroy__ = _otbApplication.delete_ImageMetadataBase

# Register ImageMetadataBase in _otbApplication:
_otbApplication.ImageMetadataBase_swigregister(ImageMetadataBase)

class ImageMetadata(ImageMetadataBase):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    Bands = property(_otbApplication.ImageMetadata_Bands_get, _otbApplication.ImageMetadata_Bands_set)

    def __init__(self):
        _otbApplication.ImageMetadata_swiginit(self, _otbApplication.new_ImageMetadata())
    __swig_destroy__ = _otbApplication.delete_ImageMetadata

# Register ImageMetadata in _otbApplication:
_otbApplication.ImageMetadata_swigregister(ImageMetadata)

ParameterType_Int = _otbApplication.ParameterType_Int
ParameterType_Float = _otbApplication.ParameterType_Float
ParameterType_Double = _otbApplication.ParameterType_Double
ParameterType_String = _otbApplication.ParameterType_String
ParameterType_StringList = _otbApplication.ParameterType_StringList
ParameterType_InputFilename = _otbApplication.ParameterType_InputFilename
ParameterType_InputFilenameList = _otbApplication.ParameterType_InputFilenameList
ParameterType_OutputFilename = _otbApplication.ParameterType_OutputFilename
ParameterType_Directory = _otbApplication.ParameterType_Directory
ParameterType_Choice = _otbApplication.ParameterType_Choice
ParameterType_InputImage = _otbApplication.ParameterType_InputImage
ParameterType_InputImageList = _otbApplication.ParameterType_InputImageList
ParameterType_InputVectorData = _otbApplication.ParameterType_InputVectorData
ParameterType_InputVectorDataList = _otbApplication.ParameterType_InputVectorDataList
ParameterType_OutputImage = _otbApplication.ParameterType_OutputImage
ParameterType_OutputVectorData = _otbApplication.ParameterType_OutputVectorData
ParameterType_Radius = _otbApplication.ParameterType_Radius
ParameterType_Group = _otbApplication.ParameterType_Group
ParameterType_ListView = _otbApplication.ParameterType_ListView
ParameterType_RAM = _otbApplication.ParameterType_RAM
ParameterType_Bool = _otbApplication.ParameterType_Bool
ParameterType_Field = _otbApplication.ParameterType_Field
ParameterType_Band = _otbApplication.ParameterType_Band
UserLevel_Basic = _otbApplication.UserLevel_Basic
UserLevel_Advanced = _otbApplication.UserLevel_Advanced
ImagePixelType_uint8 = _otbApplication.ImagePixelType_uint8
ImagePixelType_int16 = _otbApplication.ImagePixelType_int16
ImagePixelType_uint16 = _otbApplication.ImagePixelType_uint16
ImagePixelType_int32 = _otbApplication.ImagePixelType_int32
ImagePixelType_uint32 = _otbApplication.ImagePixelType_uint32
ImagePixelType_float = _otbApplication.ImagePixelType_float
ImagePixelType_double = _otbApplication.ImagePixelType_double
ImagePixelType_cint16 = _otbApplication.ImagePixelType_cint16
ImagePixelType_cint32 = _otbApplication.ImagePixelType_cint32
ImagePixelType_cfloat = _otbApplication.ImagePixelType_cfloat
ImagePixelType_cdouble = _otbApplication.ImagePixelType_cdouble
Role_Input = _otbApplication.Role_Input
Role_Output = _otbApplication.Role_Output
ComplexImagePixelType_float = _otbApplication.ComplexImagePixelType_float
ComplexImagePixelType_double = _otbApplication.ComplexImagePixelType_double
class VectorDataKeywordlist(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _otbApplication.VectorDataKeywordlist_swiginit(self, _otbApplication.new_VectorDataKeywordlist())
    __swig_destroy__ = _otbApplication.delete_VectorDataKeywordlist

# Register VectorDataKeywordlist in _otbApplication:
_otbApplication.VectorDataKeywordlist_swigregister(VectorDataKeywordlist)

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

    def __init__(self):
        if self.__class__ == SwigPrintCallback:
            _self = None
        else:
            _self = self
        _otbApplication.SwigPrintCallback_swiginit(self, _otbApplication.new_SwigPrintCallback(_self, ))
    __swig_destroy__ = _otbApplication.delete_SwigPrintCallback

    def Call(self, arg0):
        return _otbApplication.SwigPrintCallback_Call(self, arg0)

    def Flush(self):
        return _otbApplication.SwigPrintCallback_Flush(self)

    def IsInteractive(self):
        return _otbApplication.SwigPrintCallback_IsInteractive(self)
    def __disown__(self):
        self.this.disown()
        _otbApplication.disown_SwigPrintCallback(self)
        return weakref.proxy(self)

# Register SwigPrintCallback in _otbApplication:
_otbApplication.SwigPrintCallback_swigregister(SwigPrintCallback)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

# Register itkLogOutput in _otbApplication:
_otbApplication.itkLogOutput_swigregister(itkLogOutput)


class PythonPrintCallback(SwigPrintCallback):
    def __init__(self):
        super(PythonPrintCallback, self).__init__()
    def Call(self, content):
        sys.stdout.write(content)
    def Flush(self):
        sys.stdout.flush()
    def IsInteractive(self):
        return sys.stdout.isatty()

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def New():
        return _otbApplication.PythonLogOutput_New()

    def SetCallback(self, callback):
        return _otbApplication.PythonLogOutput_SetCallback(self, callback)

    def Write(self, content):
        return _otbApplication.PythonLogOutput_Write(self, content)
    __swig_destroy__ = _otbApplication.delete_PythonLogOutput

# Register PythonLogOutput in _otbApplication:
_otbApplication.PythonLogOutput_swigregister(PythonLogOutput)

def PythonLogOutput_New():
    return _otbApplication.PythonLogOutput_New()

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

    def __init__(self, *args):
        _otbApplication.PythonLogOutput_Pointer_swiginit(self, _otbApplication.new_PythonLogOutput_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_PythonLogOutput_Pointer

    def __deref__(self):
        return _otbApplication.PythonLogOutput_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.PythonLogOutput_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.PythonLogOutput_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.PythonLogOutput_Pointer_GetPointer(self)

    def New(self):
        return _otbApplication.PythonLogOutput_Pointer_New(self)

    def SetCallback(self, callback):
        return _otbApplication.PythonLogOutput_Pointer_SetCallback(self, callback)

    def Write(self, content):
        return _otbApplication.PythonLogOutput_Pointer_Write(self, content)

    def GetNameOfClass(self):
        return _otbApplication.PythonLogOutput_Pointer_GetNameOfClass(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.PythonLogOutput_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.PythonLogOutput_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.PythonLogOutput_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.PythonLogOutput_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.PythonLogOutput_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.PythonLogOutput_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.PythonLogOutput_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.PythonLogOutput_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.PythonLogOutput_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.PythonLogOutput_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.PythonLogOutput_Pointer_ToString(self)

# Register PythonLogOutput_Pointer in _otbApplication:
_otbApplication.PythonLogOutput_Pointer_swigregister(PythonLogOutput_Pointer)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def AddLogOutput(self, output):
        return _otbApplication.Logger_AddLogOutput(self, output)

    @staticmethod
    def Instance():
        return _otbApplication.Logger_Instance()

    def ResetOutputs(self):
        return _otbApplication.Logger_ResetOutputs(self)

    def Debug(self, message):
        return _otbApplication.Logger_Debug(self, message)

    def Info(self, message):
        return _otbApplication.Logger_Info(self, message)

    def Warning(self, message):
        return _otbApplication.Logger_Warning(self, message)

    def Critical(self, message):
        return _otbApplication.Logger_Critical(self, message)

    def Error(self, message):
        return _otbApplication.Logger_Error(self, message)

    def Fatal(self, message):
        return _otbApplication.Logger_Fatal(self, message)

# Register Logger in _otbApplication:
_otbApplication.Logger_swigregister(Logger)

def Logger_Instance():
    return _otbApplication.Logger_Instance()

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def New():
        return _otbApplication.ProgressReporterManager_New()

    def DeleteWatcherList(self):
        return _otbApplication.ProgressReporterManager_DeleteWatcherList(self)

    def SetLogOutputCallback(self, callback):
        return _otbApplication.ProgressReporterManager_SetLogOutputCallback(self, callback)

    def GetAddProcessCommand(self):
        return _otbApplication.ProgressReporterManager_GetAddProcessCommand(self)
    __swig_destroy__ = _otbApplication.delete_ProgressReporterManager

# Register ProgressReporterManager in _otbApplication:
_otbApplication.ProgressReporterManager_swigregister(ProgressReporterManager)

def ProgressReporterManager_New():
    return _otbApplication.ProgressReporterManager_New()

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

    def __init__(self, *args):
        _otbApplication.ProgressReporterManager_Pointer_swiginit(self, _otbApplication.new_ProgressReporterManager_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_ProgressReporterManager_Pointer

    def __deref__(self):
        return _otbApplication.ProgressReporterManager_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.ProgressReporterManager_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.ProgressReporterManager_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.ProgressReporterManager_Pointer_GetPointer(self)

    def New(self):
        return _otbApplication.ProgressReporterManager_Pointer_New(self)

    def DeleteWatcherList(self):
        return _otbApplication.ProgressReporterManager_Pointer_DeleteWatcherList(self)

    def SetLogOutputCallback(self, callback):
        return _otbApplication.ProgressReporterManager_Pointer_SetLogOutputCallback(self, callback)

    def GetAddProcessCommand(self):
        return _otbApplication.ProgressReporterManager_Pointer_GetAddProcessCommand(self)

    def GetNameOfClass(self):
        return _otbApplication.ProgressReporterManager_Pointer_GetNameOfClass(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.ProgressReporterManager_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.ProgressReporterManager_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.ProgressReporterManager_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.ProgressReporterManager_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.ProgressReporterManager_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.ProgressReporterManager_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.ProgressReporterManager_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.ProgressReporterManager_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.ProgressReporterManager_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.ProgressReporterManager_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.ProgressReporterManager_Pointer_ToString(self)

# Register ProgressReporterManager_Pointer in _otbApplication:
_otbApplication.ProgressReporterManager_Pointer_swigregister(ProgressReporterManager_Pointer)


_libraryLogOutput = PythonLogOutput_New()
_libraryLogCallback = PythonPrintCallback()

Logger.Instance().ResetOutputs()
_libraryLogOutput.SetCallback(_libraryLogCallback)
Logger.Instance().AddLogOutput(_libraryLogOutput.GetPointer())

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def SetName(self, name):
        return _otbApplication.Application_SetName(self, name)

    def GetName(self):
        return _otbApplication.Application_GetName(self)

    def SetDescription(self, _arg):
        return _otbApplication.Application_SetDescription(self, _arg)

    def GetDescription(self):
        return _otbApplication.Application_GetDescription(self)

    def Init(self):
        return _otbApplication.Application_Init(self)

    def UpdateParameters(self):
        return _otbApplication.Application_UpdateParameters(self)

    def Execute(self):
        return _otbApplication.Application_Execute(self)

    def WriteOutput(self):
        return _otbApplication.Application_WriteOutput(self)

    def ExecuteAndWriteOutput(self):
        return _otbApplication.Application_ExecuteAndWriteOutput(self)

    def ConnectImage(self, _in, app, out):
        return _otbApplication.Application_ConnectImage(self, _in, app, out)

    def PropagateConnectMode(self, isMem):
        return _otbApplication.Application_PropagateConnectMode(self, isMem)

    def LoadParametersFromXML(self, filename):
        return _otbApplication.Application_LoadParametersFromXML(self, filename)

    def SaveParametersToXML(self, filename):
        return _otbApplication.Application_SaveParametersToXML(self, filename)

    def GetLogger(self):
        return _otbApplication.Application_GetLogger(self)

    def IsDeprecated(self):
        return _otbApplication.Application_IsDeprecated(self)

    def SetupLogger(self):
        logger = self.GetLogger()
        logger.AddLogOutput(_libraryLogOutput.GetPointer())

        self.progressReportManager = ProgressReporterManager_New()
        self.progressReportManager.SetLogOutputCallback(_libraryLogCallback)
        self.AddObserver(AddProcessToWatchEvent(),
                         self.progressReportManager.GetAddProcessCommand()
                        )


    def GetParametersKeys(self, recursive=True):
        return _otbApplication.Application_GetParametersKeys(self, recursive)

    def GetParameterByKey(self, name):
        return _otbApplication.Application_GetParameterByKey(self, name)

    def GetParameterName(self, arg2):
        return _otbApplication.Application_GetParameterName(self, arg2)

    def GetParameterDescription(self, arg2):
        return _otbApplication.Application_GetParameterDescription(self, arg2)

    def SetParameterDescription(self, paramKey, dec):
        return _otbApplication.Application_SetParameterDescription(self, paramKey, dec)

    def SetParameterUserValue(self, paramKey, value):
        return _otbApplication.Application_SetParameterUserValue(self, paramKey, value)

    def EnableParameter(self, paramKey):
        return _otbApplication.Application_EnableParameter(self, paramKey)

    def DisableParameter(self, paramKey):
        return _otbApplication.Application_DisableParameter(self, paramKey)

    def IsParameterEnabled(self, paramKey):
        return _otbApplication.Application_IsParameterEnabled(self, paramKey)

    def IsMandatory(self, paramKey):
        return _otbApplication.Application_IsMandatory(self, paramKey)

    def HasAutomaticValue(self, paramKey):
        return _otbApplication.Application_HasAutomaticValue(self, paramKey)

    def HasUserValue(self, paramKey):
        return _otbApplication.Application_HasUserValue(self, paramKey)

    def ClearValue(self, paramKey):
        return _otbApplication.Application_ClearValue(self, paramKey)

    def HasValue(self, paramKey):
        return _otbApplication.Application_HasValue(self, paramKey)

    def GetParameterUserLevel(self, paramKey):
        return _otbApplication.Application_GetParameterUserLevel(self, paramKey)

    def GetParameterType(self, paramKey):
        return _otbApplication.Application_GetParameterType(self, paramKey)

    def GetParameterRole(self, paramKey):
        return _otbApplication.Application_GetParameterRole(self, paramKey)

    def GetChoiceKeys(self, choiceKey):
        return _otbApplication.Application_GetChoiceKeys(self, choiceKey)

    def GetChoiceNames(self, choiceKey):
        return _otbApplication.Application_GetChoiceNames(self, choiceKey)

    def IsApplicationReady(self):
        return _otbApplication.Application_IsApplicationReady(self)

    def SetParameterInt(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_SetParameterInt(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterFloat(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_SetParameterFloat(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterDouble(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_SetParameterDouble(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterString(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_SetParameterString(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterStringList(self, parameter, values, hasUserValueFlag=True):
        val = _otbApplication.Application_SetParameterStringList(self, parameter, values, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterOutputImagePixelType(self, parameter, pixelType):
        val = _otbApplication.Application_SetParameterOutputImagePixelType(self, parameter, pixelType)

        self.UpdateParameters()


        return val


    def GetParameterOutputImagePixelType(self, parameter):
        return _otbApplication.Application_GetParameterOutputImagePixelType(self, parameter)

    def GetParameterInt(self, parameter):
        return _otbApplication.Application_GetParameterInt(self, parameter)

    def GetParameterFloat(self, parameter):
        return _otbApplication.Application_GetParameterFloat(self, parameter)

    def GetParameterDouble(self, parameter):
        return _otbApplication.Application_GetParameterDouble(self, parameter)

    def GetParameterString(self, parameter):
        return _otbApplication.Application_GetParameterString(self, parameter)

    def GetParameterStringList(self, parameter):
        return _otbApplication.Application_GetParameterStringList(self, parameter)

    def GetParameterAsString(self, paramKey):
        return _otbApplication.Application_GetParameterAsString(self, paramKey)

    def GetListViewSingleSelectionMode(self, paramKey):
        return _otbApplication.Application_GetListViewSingleSelectionMode(self, paramKey)

    def GetParameterOutputImage(self, parameter):
        return _otbApplication.Application_GetParameterOutputImage(self, parameter)

    def SetParameterInputImage(self, parameter, inputImage):
        return _otbApplication.Application_SetParameterInputImage(self, parameter, inputImage)

    def AddImageToParameterInputImageList(self, parameter, img):
        return _otbApplication.Application_AddImageToParameterInputImageList(self, parameter, img)

    def AddParameterStringList(self, parameter, str):
        return _otbApplication.Application_AddParameterStringList(self, parameter, str)

    def SetNthParameterInputImageList(self, parameter, id, img):
        return _otbApplication.Application_SetNthParameterInputImageList(self, parameter, id, img)

    def SetNthParameterStringList(self, parameter, id, str):
        return _otbApplication.Application_SetNthParameterStringList(self, parameter, id, str)

    def ClearParameterInputImageList(self, parameter):
        return _otbApplication.Application_ClearParameterInputImageList(self, parameter)

    def GetNumberOfElementsInParameterInputImageList(self, parameter):
        return _otbApplication.Application_GetNumberOfElementsInParameterInputImageList(self, parameter)

    def GetImageOrigin(self, key, idx=0):
        return _otbApplication.Application_GetImageOrigin(self, key, idx)

    def GetImageSpacing(self, key, idx=0):
        return _otbApplication.Application_GetImageSpacing(self, key, idx)

    def GetImageSize(self, key, idx=0):
        return _otbApplication.Application_GetImageSize(self, key, idx)

    def GetImageNbBands(self, key, idx=0):
        return _otbApplication.Application_GetImageNbBands(self, key, idx)

    def GetImageProjection(self, key, idx=0):
        return _otbApplication.Application_GetImageProjection(self, key, idx)

    def PropagateRequestedRegion(self, key, region, idx=0):
        return _otbApplication.Application_PropagateRequestedRegion(self, key, region, idx)

    def GetImageRequestedRegion(self, key, idx=0):
        return _otbApplication.Application_GetImageRequestedRegion(self, key, idx)

    def GetImageMetadata(self, key, idx=0):
        return _otbApplication.Application_GetImageMetadata(self, key, idx)

    def SetImageMetadata(self, imd, key, idx=0):
        return _otbApplication.Application_SetImageMetadata(self, imd, key, idx)

    def GetMetadataDictionary(self, key, idx=0):
        return _otbApplication.Application_GetMetadataDictionary(self, key, idx)

    def GetImageBasePixelType(self, key, idx=0):
        return _otbApplication.Application_GetImageBasePixelType(self, key, idx)

    def GetProgressSource(self):
        return _otbApplication.Application_GetProgressSource(self)

    def GetProgressDescription(self):
        return _otbApplication.Application_GetProgressDescription(self)

    def FreeRessources(self):
        return _otbApplication.Application_FreeRessources(self)

    def SetDocLongDescription(self, _arg):
        return _otbApplication.Application_SetDocLongDescription(self, _arg)

    def GetDocLongDescription(self):
        return _otbApplication.Application_GetDocLongDescription(self)

    def SetDocAuthors(self, _arg):
        return _otbApplication.Application_SetDocAuthors(self, _arg)

    def GetDocAuthors(self):
        return _otbApplication.Application_GetDocAuthors(self)

    def SetDocLimitations(self, _arg):
        return _otbApplication.Application_SetDocLimitations(self, _arg)

    def GetDocLimitations(self):
        return _otbApplication.Application_GetDocLimitations(self)

    def SetDocSeeAlso(self, _arg):
        return _otbApplication.Application_SetDocSeeAlso(self, _arg)

    def GetDocSeeAlso(self):
        return _otbApplication.Application_GetDocSeeAlso(self)

    def SetDocTags(self, val):
        return _otbApplication.Application_SetDocTags(self, val)

    def AddDocTag(self, tag):
        return _otbApplication.Application_AddDocTag(self, tag)

    def GetDocTags(self):
        return _otbApplication.Application_GetDocTags(self)

    def IsMultiWritingEnabled(self):
        return _otbApplication.Application_IsMultiWritingEnabled(self)

    def GetParameterList(self):
        return _otbApplication.Application_GetParameterList(self)

    def GetNumberOfExamples(self):
        return _otbApplication.Application_GetNumberOfExamples(self)

    def GetExampleComment(self, id):
        return _otbApplication.Application_GetExampleComment(self, id)

    def GetExampleNumberOfParameters(self, id):
        return _otbApplication.Application_GetExampleNumberOfParameters(self, id)

    def GetExampleParameterKey(self, exId, paramId):
        return _otbApplication.Application_GetExampleParameterKey(self, exId, paramId)

    def GetExampleParameterValue(self, exId, paramId):
        return _otbApplication.Application_GetExampleParameterValue(self, exId, paramId)

    def SetDocExampleParameterValue(self, key, value, exId=0):
        return _otbApplication.Application_SetDocExampleParameterValue(self, key, value, exId)

    def SetExampleComment(self, comm, i):
        return _otbApplication.Application_SetExampleComment(self, comm, i)

    def AddExample(self, *args):
        return _otbApplication.Application_AddExample(self, *args)

    def GetCLExample(self):
        return _otbApplication.Application_GetCLExample(self)

    def GetHtmlExample(self):
        return _otbApplication.Application_GetHtmlExample(self)

    def GetOutputParametersSumUp(self):
        return _otbApplication.Application_GetOutputParametersSumUp(self)

    def SetVectorImageFromUInt8NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetVectorImageFromUInt8NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetVectorImageFromInt16NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromUInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetVectorImageFromUInt16NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetVectorImageFromInt32NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromUInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetVectorImageFromUInt32NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromFloatNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetVectorImageFromFloatNumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromDoubleNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetVectorImageFromDoubleNumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_SetVectorImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def SetVectorImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_SetVectorImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def SetImageFromUInt8NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetImageFromUInt8NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetImageFromInt16NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromUInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetImageFromUInt16NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetImageFromInt32NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromUInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetImageFromUInt32NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromFloatNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetImageFromFloatNumpyArray_(self, pkey, idx, buffer)

    def SetImageFromDoubleNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_SetImageFromDoubleNumpyArray_(self, pkey, idx, buffer)

    def SetImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_SetImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def SetImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_SetImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def GetVectorImageAsUInt8NumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsUInt8NumpyArray_(self, pkey)

    def GetVectorImageAsInt16NumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsInt16NumpyArray_(self, pkey)

    def GetVectorImageAsUInt16NumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsUInt16NumpyArray_(self, pkey)

    def GetVectorImageAsInt32NumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsInt32NumpyArray_(self, pkey)

    def GetVectorImageAsUInt32NumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsUInt32NumpyArray_(self, pkey)

    def GetVectorImageAsFloatNumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsFloatNumpyArray_(self, pkey)

    def GetVectorImageAsDoubleNumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsDoubleNumpyArray_(self, pkey)

    def GetVectorImageAsCFloatNumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsCFloatNumpyArray_(self, pkey)

    def GetVectorImageAsCDoubleNumpyArray_(self, pkey):
        return _otbApplication.Application_GetVectorImageAsCDoubleNumpyArray_(self, pkey)

    def ConvertPixelTypeToNumpy(self, pixType):
        return _otbApplication.Application_ConvertPixelTypeToNumpy(self, pixType)

    def SetupImageInformation(self, img, origin, spacing, size, bufferRegion, metadata):
        return _otbApplication.Application_SetupImageInformation(self, img, origin, spacing, size, bufferRegion, metadata)
    __swig_destroy__ = _otbApplication.delete_Application


    def GetParameterTypeAsString(self, parameter_type):
      return {
        ParameterType_String : 'ParameterType_String',
        ParameterType_InputFilename : 'ParameterType_InputFilename',
        ParameterType_OutputImage : 'ParameterType_OutputImage',
        ParameterType_OutputVectorData : 'ParameterType_OutputVectorData',
        ParameterType_OutputFilename : 'ParameterType_OutputFilename',
        ParameterType_Directory : 'ParameterType_Directory',
        ParameterType_InputImage : 'ParameterType_InputImage',
        ParameterType_InputVectorData : 'ParameterType_InputVectorData',
        ParameterType_InputImageList : 'ParameterType_InputImageList',
        ParameterType_InputVectorDataList : 'ParameterType_InputImageList',
        ParameterType_InputFilenameList : 'ParameterType_InputFilenameList',
        ParameterType_StringList : 'ParameterType_StringList',
        ParameterType_ListView : 'ParameterType_ListView',
        ParameterType_Int : 'ParameterType_Int',
        ParameterType_Radius : 'ParameterType_Radius',
        ParameterType_RAM : 'ParameterType_RAM',
        ParameterType_Double : 'ParameterType_Double',
        ParameterType_Float : 'ParameterType_Float',
        ParameterType_Choice : 'ParameterType_Choice',
        ParameterType_Group : 'ParameterType_Group',
        ParameterType_Bool : 'ParameterType_Bool',
        ParameterType_Field : 'ParameterType_Field',
        ParameterType_Band : 'ParameterType_Band'
      }.get(parameter_type, 'ParameterType_UNKNOWN')

    def __str__(self):
      s  = self.GetName()
      s += '\n'
      s += self.GetDocLongDescription()
      return s

    def SetParameters(self, dict_params):
      for param_key, param_value in dict_params.items():
        self.SetParameterValue(param_key, param_value)

    def SetParameterValue(self, paramKey, value):
      paramType = self.GetParameterType(paramKey)
      if paramType in [ParameterType_String, ParameterType_InputFilename,
                       ParameterType_OutputImage, ParameterType_OutputVectorData,
                       ParameterType_OutputFilename,
                       ParameterType_Directory, ParameterType_InputImage,
                       ParameterType_InputVectorData]:
        if not isinstance(value, str):
          raise TypeError("Expected a string for '%s' parameter in %s, got %s for %s" % (paramKey, self.GetName(), type(value), value))
        return self.SetParameterString(paramKey, value)
      elif paramType in [ParameterType_InputImageList, ParameterType_InputVectorDataList,
                         ParameterType_InputFilenameList, ParameterType_StringList,
                         ParameterType_ListView, ParameterType_Field, ParameterType_Band]:
        if not isinstance(value, list):
          raise TypeError("Expected a list for '%s' parameter in %s, got %s for %s" % (paramKey, self.GetName(), type(value), value))
        return self.SetParameterStringList(paramKey, value)
      elif paramType in [ParameterType_Int, ParameterType_Radius, ParameterType_RAM]:
        if not isinstance(value, int):
          raise TypeError("Expected an int for '%s' parameter in %s, got %s for %s" % (paramKey, self.GetName(), type(value), value))
        return self.SetParameterInt(paramKey, value)
      elif paramType in [ParameterType_Float]:
        if not isinstance(value, (int, float)):
          raise TypeError("Expected a float for '%s' parameter in %s, got %s for %s" % (paramKey, self.GetName(), type(value), value))
        return self.SetParameterFloat(paramKey, value)
      elif paramType in [ParameterType_Double]:
        if not isinstance(value, (int, float)):
          raise TypeError("Expected a float for '%s' parameter in %s, got %s for %s" % (paramKey, self.GetName(), type(value), value))
        return self.SetParameterDouble(paramKey, value)
      elif paramType in [ParameterType_Bool]:
        if not isinstance(value, bool):
          raise TypeError("Expected a bool for '%s' parameter in %s, got %s for %s" % (paramKey, self.GetName(), type(value), value))
        return self.SetParameterString(paramKey, str(value) )
      elif paramType in [ParameterType_Group]:
        return ApplicationProxy(self, paramKey)
      elif paramType in [ParameterType_Choice]:
        return ApplicationProxy(self, paramKey, value)
      else:
        print ("Unsupported parameter type '%s' with key '%s'" %(self.GetParameterTypeAsString(paramType), paramKey))
      return

    def GetParameters(self):
      ret = {}
      for key in self.GetParametersKeys():
        if self.HasValue(key) and self.IsParameterEnabled(key) and self.GetParameterRole(key) == 0:
          ret[key] = self.GetParameterValue(key)
      return ret

    def GetParameterValue(self, paramKey):
      paramType = self.GetParameterType(paramKey)
      if paramType in [
                       ParameterType_String, ParameterType_InputFilename,
                       ParameterType_OutputImage, ParameterType_OutputVectorData,
                       ParameterType_OutputFilename,
                       ParameterType_Directory, ParameterType_InputImage,
                       ParameterType_InputVectorData]:
        return self.GetParameterString(paramKey)
      elif paramType in [ParameterType_InputImageList, ParameterType_InputVectorDataList,
                         ParameterType_InputFilenameList, ParameterType_StringList,
                         ParameterType_ListView, ParameterType_Field, ParameterType_Band]:
        return self.GetParameterStringList(paramKey)
      elif paramType in [ParameterType_Int, ParameterType_Radius, ParameterType_RAM]:
        return self.GetParameterInt(paramKey)
      elif paramType in [ParameterType_Float]:
        return self.GetParameterFloat(paramKey)
      elif paramType in [ParameterType_Double]:
        return self.GetParameterDouble(paramKey)
      elif paramType in [ParameterType_Bool]:
        return bool(self.GetParameterInt(paramKey))
      elif paramType in [ParameterType_Group, ParameterType_Choice]:
        return ApplicationProxy(self, paramKey)
      else:
        print ("Unsupported parameter type '%s' with key '%s'" %(self.GetParameterTypeAsString(paramType) ,paramKey))
      return None

    def __getattr__(self,name):
      """
      __get_attribute__ is called whenever an instance request an attribute.
      eg: App.SetParameterString(), App.GetName() ..
      __getattr__ is only called if the attribute is not found by __get_attribute__ call
      So we keep hide the GetParameter** calls within this method so that it seems like
      an obivous call for users. App.IN , App.OUT , where 'in' and 'out' are
      parameters in the 'otb application' with instance App
      Since SWIG also uses this function, we have to copy their code before
      using custom OTB behaviour
      """
      if (name == "thisown"):
        return self.this.own()

      if hasattr(Application, "__swig_getmethods__"):
        method = Application.__swig_getmethods__.get(name, None)
        if method:
          return method(self)
      key_list = [k.upper() for k in self.GetParametersKeys(True)]
      if name in key_list:
        return self.GetParameterValue(name.lower())
      raise AttributeError("'%s' object has no attribute '%s'" % (Application.__name__, name))

    def __setattr__(self, name, value):
      """
      __setattr__ is called if the attribute requested is not found in the attribute list.
      So these attributes are supposed to be 'key' of parameters used. Here we
      keep hide the SetParameter** calls within this method so that it seems like
      an obivous call for users. App.IN='my-input-file-name' , App.OUT='my-output-file-name'w
      here 'in' and 'out' are    parameters in the 'otb application' with instance App
      Ofcourse, we don't blindly accept any attributes as python, we check them against
      list of existing parameters for application with 'self.GetParametersKeys(True)'
      Since SWIG also uses this function, we have to copy their code before
      using custom OTB behaviour
      """
      if (name == "thisown"):
        return self.this.own(value)
      if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
          self.__dict__[name] = value
          return
      if (name == "progressReportManager"):
        super().__setattr__(name, value)
        return

      if hasattr(Application, "__swig_setmethods__"):
        method = Application.__swig_setmethods__.get(name, None)
        if method:
          return method(self, value)
      key_list = [k.upper() for k in self.GetParametersKeys(True)]
      if name in key_list:
        self.SetParameterValue(name.lower(), value)
      else:
        raise AttributeError("You cannot add attributes to %s" % self)



    NumpyExporterMap = {
      ImagePixelType_uint8 : GetVectorImageAsUInt8NumpyArray_,
      ImagePixelType_int16 : GetVectorImageAsInt16NumpyArray_,
      ImagePixelType_uint16 : GetVectorImageAsUInt16NumpyArray_,
      ImagePixelType_int32 : GetVectorImageAsInt32NumpyArray_,
      ImagePixelType_uint32 : GetVectorImageAsUInt32NumpyArray_,
      ImagePixelType_float : GetVectorImageAsFloatNumpyArray_,
      ImagePixelType_double : GetVectorImageAsDoubleNumpyArray_,
      ImagePixelType_cfloat : GetVectorImageAsCFloatNumpyArray_,
      ImagePixelType_cdouble : GetVectorImageAsCDoubleNumpyArray_,
      }
    ImageImporterMap = {
      ImagePixelType_uint8 : SetImageFromUInt8NumpyArray_,
      ImagePixelType_int16 : SetImageFromInt16NumpyArray_,
      ImagePixelType_uint16 : SetImageFromUInt16NumpyArray_,
      ImagePixelType_int32 : SetImageFromInt32NumpyArray_,
      ImagePixelType_uint32 : SetImageFromUInt32NumpyArray_,
      ImagePixelType_float : SetImageFromFloatNumpyArray_,
      ImagePixelType_double : SetImageFromDoubleNumpyArray_,
      ImagePixelType_cfloat : SetImageFromCFloatNumpyArray_,
      ImagePixelType_cdouble : SetImageFromCDoubleNumpyArray_,
      }
    VectorImageImporterMap = {
      ImagePixelType_uint8 : SetVectorImageFromUInt8NumpyArray_,
      ImagePixelType_int16 : SetVectorImageFromInt16NumpyArray_,
      ImagePixelType_uint16 : SetVectorImageFromUInt16NumpyArray_,
      ImagePixelType_int32 : SetVectorImageFromInt32NumpyArray_,
      ImagePixelType_uint32 : SetVectorImageFromUInt32NumpyArray_,
      ImagePixelType_float : SetVectorImageFromFloatNumpyArray_,
      ImagePixelType_double : SetVectorImageFromDoubleNumpyArray_,
      ImagePixelType_cfloat : SetVectorImageFromCFloatNumpyArray_,
      ImagePixelType_cdouble : SetVectorImageFromCDoubleNumpyArray_,
      }

    def SetImageFromNumpyArray(self, paramKey, npArray, index=0):
      """
      This method takes a numpy array and set ImageIOBase of
      InputImageParameter by creating an otbImage with
      same pixel type as numpyarray.dtype
      """
      shp = npArray.shape
      if len(shp) == 2:
        npArray = npArray.reshape((shp[0],shp[1],1))
      elif len(shp) == 3:
        if shp[2] > 1:
          raise ValueError( "More than 1 band in numpy array\n"
                           "Cannot convert to Image, use SetVectorImageFromNumpyArray instead\n")
      else:
        raise ValueError( "Expected 2 or 3 dimensions for numpyarray\n")
      dt = npArray.dtype.name
      isFound = False
      for pixT in self.ImageImporterMap:
        if dt == self.ConvertPixelTypeToNumpy(pixT):
          isFound = True
          img = self.ImageImporterMap[pixT](self,paramKey, index, npArray)
          break
      if len(shp) == 2:
        npArray = npArray.reshape(shp)
      if not isFound:
        raise ValueError("Can't convert Numpy array of dtype "+dt)
      return img

    def SetVectorImageFromNumpyArray(self, paramKey, npArray, index=0):
      """
      This method takes a numpy array and set
      InputImageParameter by creating an otbVectorImage with
      same pixel type as numpyarray.dtype.
      NOTE: Input (npArray) must be an ndarray with 2 or 3 dimensions,
      """
      shp = npArray.shape
      if len(shp) == 2:
        npArray = npArray.reshape((shp[0],shp[1],1))
      elif len(npArray.shape) != 3:
        raise ValueError( "Expected 2 or 3 dimensions for numpyarray")
      dt = npArray.dtype.name
      isFound = False
      for pixT in self.VectorImageImporterMap:
        if dt == self.ConvertPixelTypeToNumpy(pixT):
          isFound = True
          img = self.VectorImageImporterMap[pixT](self,paramKey, index, npArray)
          break
      if len(shp) == 2:
        npArray = npArray.reshape(shp)
      if not isFound:
        raise ValueError("Can't convert Numpy array of dtype "+dt)
      return img

    def GetVectorImageAsNumpyArray(self, paramKey, dt='float'):
      """
      This function retrieves an output image parameter as a Numpy array.
      The array datatype is guessed automatically from the underlying
      otb::VectorImage<T,2> type (should also work with otb::Image<T,2>). The
      optional parameter dt is deprecated and should not be used anymore. The
      possible output datatypes are:
      int8, int16, int32, uint8, uint16, uint32, float, double, cint16, cint32,
      cfloat, cdouble.
      NOTE: This method always return an numpy array with 3 dimensions
      NOTE: cint16 and cint32 are not supported yet
      """
      pixT = self.GetImageBasePixelType(paramKey)
      return self.NumpyExporterMap[pixT](self,paramKey)

    def GetImageAsNumpyArray(self, paramKey, dt='float'):
      """
      This function retrieves an output image parameter as a Numpy array.
      The array datatype is guessed automatically from the underlying
      otb::VectorImage<T,2> type (should also work with otb::Image<T,2>). The
      optional parameter dt is deprecated and should not be used anymore. The
      possible output datatypes are:
      int8, int16, int32, uint8, uint16, uint32, float, double, cint16, cint32,
      cfloat, cdouble.
      NOTE: This method always return an numpy array with 2 dimensions
      NOTE: cint16 and cint32 are not supported yet
      """
      pixT = self.GetImageBasePixelType(paramKey)
      array = self.NumpyExporterMap[pixT](self,paramKey)
      if array.shape[2] > 1:
        raise ValueError("array.shape[2] > 1\n"
                         "Output image from application has more than 1 band.\n"
                         "GetImageAsNumpyArray only returns the first band, which will result in a loss of data.\n"
                         "In this case you must use GetVectorImageAsNumpyArray which can return a 3 dimension image.\n")
      array = array[:,:,0]
      return array

    def ImportImage(self, paramKey, pyImg, index = 0):
      """
      Import an image into a parameter, from a Python dict. with the following
      keys: array, origin, spacing, size, region, metadata
      """
      img = self.SetImageFromNumpyArray(paramKey, pyImg["array"], index)
      self.SetupImageInformation(img, pyImg["origin"], pyImg["spacing"], pyImg["size"], pyImg["region"], pyImg["metadata"])

    def ImportVectorImage(self, paramKey, pyImg, index = 0):
      """
      Import a vector image into a parameter, from a Python dict. with the following
      keys: array, origin, spacing, size, region, metadata
      """
      img = self.SetVectorImageFromNumpyArray(paramKey, pyImg["array"], index)
      self.SetupImageInformation(img, pyImg["origin"], pyImg["spacing"], pyImg["size"], pyImg["region"], pyImg["metadata"])

    def ExportImage(self, paramKey):
      """
      Export an output image from an otbApplication into a python dictionary with the
      following fields: array, origin, spacing, size, region, metadata
      """
      output = {}
      output["array"] = self.GetVectorImageAsNumpyArray(paramKey)
      output["origin"] = self.GetImageOrigin(paramKey)
      output["spacing"] = self.GetImageSpacing(paramKey)
      output["size"] = self.GetImageSize(paramKey)
      output["region"] = self.GetImageRequestedRegion(paramKey)
      output["metadata"] = self.GetImageMetadata(paramKey)
      return output



# Register Application in _otbApplication:
_otbApplication.Application_swigregister(Application)

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

    def __init__(self, *args):
        _otbApplication.Application_Pointer_swiginit(self, _otbApplication.new_Application_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_Application_Pointer

    def __deref__(self):
        return _otbApplication.Application_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.Application_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.Application_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.Application_Pointer_GetPointer(self)

    def SetName(self, name):
        return _otbApplication.Application_Pointer_SetName(self, name)

    def GetName(self):
        return _otbApplication.Application_Pointer_GetName(self)

    def SetDescription(self, _arg):
        return _otbApplication.Application_Pointer_SetDescription(self, _arg)

    def GetDescription(self):
        return _otbApplication.Application_Pointer_GetDescription(self)

    def Init(self):
        return _otbApplication.Application_Pointer_Init(self)

    def UpdateParameters(self):
        return _otbApplication.Application_Pointer_UpdateParameters(self)

    def Execute(self):
        return _otbApplication.Application_Pointer_Execute(self)

    def WriteOutput(self):
        return _otbApplication.Application_Pointer_WriteOutput(self)

    def ExecuteAndWriteOutput(self):
        return _otbApplication.Application_Pointer_ExecuteAndWriteOutput(self)

    def ConnectImage(self, _in, app, out):
        return _otbApplication.Application_Pointer_ConnectImage(self, _in, app, out)

    def PropagateConnectMode(self, isMem):
        return _otbApplication.Application_Pointer_PropagateConnectMode(self, isMem)

    def LoadParametersFromXML(self, filename):
        return _otbApplication.Application_Pointer_LoadParametersFromXML(self, filename)

    def SaveParametersToXML(self, filename):
        return _otbApplication.Application_Pointer_SaveParametersToXML(self, filename)

    def GetLogger(self):
        return _otbApplication.Application_Pointer_GetLogger(self)

    def IsDeprecated(self):
        return _otbApplication.Application_Pointer_IsDeprecated(self)

    def GetParametersKeys(self, recursive=True):
        return _otbApplication.Application_Pointer_GetParametersKeys(self, recursive)

    def GetParameterByKey(self, name):
        return _otbApplication.Application_Pointer_GetParameterByKey(self, name)

    def GetParameterName(self, arg2):
        return _otbApplication.Application_Pointer_GetParameterName(self, arg2)

    def GetParameterDescription(self, arg2):
        return _otbApplication.Application_Pointer_GetParameterDescription(self, arg2)

    def SetParameterDescription(self, paramKey, dec):
        return _otbApplication.Application_Pointer_SetParameterDescription(self, paramKey, dec)

    def SetParameterUserValue(self, paramKey, value):
        return _otbApplication.Application_Pointer_SetParameterUserValue(self, paramKey, value)

    def EnableParameter(self, paramKey):
        return _otbApplication.Application_Pointer_EnableParameter(self, paramKey)

    def DisableParameter(self, paramKey):
        return _otbApplication.Application_Pointer_DisableParameter(self, paramKey)

    def IsParameterEnabled(self, paramKey):
        return _otbApplication.Application_Pointer_IsParameterEnabled(self, paramKey)

    def IsMandatory(self, paramKey):
        return _otbApplication.Application_Pointer_IsMandatory(self, paramKey)

    def HasAutomaticValue(self, paramKey):
        return _otbApplication.Application_Pointer_HasAutomaticValue(self, paramKey)

    def HasUserValue(self, paramKey):
        return _otbApplication.Application_Pointer_HasUserValue(self, paramKey)

    def ClearValue(self, paramKey):
        return _otbApplication.Application_Pointer_ClearValue(self, paramKey)

    def HasValue(self, paramKey):
        return _otbApplication.Application_Pointer_HasValue(self, paramKey)

    def GetParameterUserLevel(self, paramKey):
        return _otbApplication.Application_Pointer_GetParameterUserLevel(self, paramKey)

    def GetParameterType(self, paramKey):
        return _otbApplication.Application_Pointer_GetParameterType(self, paramKey)

    def GetParameterRole(self, paramKey):
        return _otbApplication.Application_Pointer_GetParameterRole(self, paramKey)

    def GetChoiceKeys(self, choiceKey):
        return _otbApplication.Application_Pointer_GetChoiceKeys(self, choiceKey)

    def GetChoiceNames(self, choiceKey):
        return _otbApplication.Application_Pointer_GetChoiceNames(self, choiceKey)

    def IsApplicationReady(self):
        return _otbApplication.Application_Pointer_IsApplicationReady(self)

    def SetParameterInt(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_Pointer_SetParameterInt(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterFloat(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_Pointer_SetParameterFloat(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterDouble(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_Pointer_SetParameterDouble(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterString(self, parameter, value, hasUserValueFlag=True):
        val = _otbApplication.Application_Pointer_SetParameterString(self, parameter, value, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterStringList(self, parameter, values, hasUserValueFlag=True):
        val = _otbApplication.Application_Pointer_SetParameterStringList(self, parameter, values, hasUserValueFlag)

        self.UpdateParameters()


        return val


    def SetParameterOutputImagePixelType(self, parameter, pixelType):
        val = _otbApplication.Application_Pointer_SetParameterOutputImagePixelType(self, parameter, pixelType)

        self.UpdateParameters()


        return val


    def GetParameterOutputImagePixelType(self, parameter):
        return _otbApplication.Application_Pointer_GetParameterOutputImagePixelType(self, parameter)

    def GetParameterInt(self, parameter):
        return _otbApplication.Application_Pointer_GetParameterInt(self, parameter)

    def GetParameterFloat(self, parameter):
        return _otbApplication.Application_Pointer_GetParameterFloat(self, parameter)

    def GetParameterDouble(self, parameter):
        return _otbApplication.Application_Pointer_GetParameterDouble(self, parameter)

    def GetParameterString(self, parameter):
        return _otbApplication.Application_Pointer_GetParameterString(self, parameter)

    def GetParameterStringList(self, parameter):
        return _otbApplication.Application_Pointer_GetParameterStringList(self, parameter)

    def GetParameterAsString(self, paramKey):
        return _otbApplication.Application_Pointer_GetParameterAsString(self, paramKey)

    def GetListViewSingleSelectionMode(self, paramKey):
        return _otbApplication.Application_Pointer_GetListViewSingleSelectionMode(self, paramKey)

    def GetParameterOutputImage(self, parameter):
        return _otbApplication.Application_Pointer_GetParameterOutputImage(self, parameter)

    def SetParameterInputImage(self, parameter, inputImage):
        return _otbApplication.Application_Pointer_SetParameterInputImage(self, parameter, inputImage)

    def AddImageToParameterInputImageList(self, parameter, img):
        return _otbApplication.Application_Pointer_AddImageToParameterInputImageList(self, parameter, img)

    def AddParameterStringList(self, parameter, str):
        return _otbApplication.Application_Pointer_AddParameterStringList(self, parameter, str)

    def SetNthParameterInputImageList(self, parameter, id, img):
        return _otbApplication.Application_Pointer_SetNthParameterInputImageList(self, parameter, id, img)

    def SetNthParameterStringList(self, parameter, id, str):
        return _otbApplication.Application_Pointer_SetNthParameterStringList(self, parameter, id, str)

    def ClearParameterInputImageList(self, parameter):
        return _otbApplication.Application_Pointer_ClearParameterInputImageList(self, parameter)

    def GetNumberOfElementsInParameterInputImageList(self, parameter):
        return _otbApplication.Application_Pointer_GetNumberOfElementsInParameterInputImageList(self, parameter)

    def GetImageOrigin(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageOrigin(self, key, idx)

    def GetImageSpacing(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageSpacing(self, key, idx)

    def GetImageSize(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageSize(self, key, idx)

    def GetImageNbBands(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageNbBands(self, key, idx)

    def GetImageProjection(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageProjection(self, key, idx)

    def PropagateRequestedRegion(self, key, region, idx=0):
        return _otbApplication.Application_Pointer_PropagateRequestedRegion(self, key, region, idx)

    def GetImageRequestedRegion(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageRequestedRegion(self, key, idx)

    def GetImageMetadata(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageMetadata(self, key, idx)

    def SetImageMetadata(self, imd, key, idx=0):
        return _otbApplication.Application_Pointer_SetImageMetadata(self, imd, key, idx)

    def GetMetadataDictionary(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetMetadataDictionary(self, key, idx)

    def GetImageBasePixelType(self, key, idx=0):
        return _otbApplication.Application_Pointer_GetImageBasePixelType(self, key, idx)

    def GetProgressSource(self):
        return _otbApplication.Application_Pointer_GetProgressSource(self)

    def GetProgressDescription(self):
        return _otbApplication.Application_Pointer_GetProgressDescription(self)

    def FreeRessources(self):
        return _otbApplication.Application_Pointer_FreeRessources(self)

    def SetDocLongDescription(self, _arg):
        return _otbApplication.Application_Pointer_SetDocLongDescription(self, _arg)

    def GetDocLongDescription(self):
        return _otbApplication.Application_Pointer_GetDocLongDescription(self)

    def SetDocAuthors(self, _arg):
        return _otbApplication.Application_Pointer_SetDocAuthors(self, _arg)

    def GetDocAuthors(self):
        return _otbApplication.Application_Pointer_GetDocAuthors(self)

    def SetDocLimitations(self, _arg):
        return _otbApplication.Application_Pointer_SetDocLimitations(self, _arg)

    def GetDocLimitations(self):
        return _otbApplication.Application_Pointer_GetDocLimitations(self)

    def SetDocSeeAlso(self, _arg):
        return _otbApplication.Application_Pointer_SetDocSeeAlso(self, _arg)

    def GetDocSeeAlso(self):
        return _otbApplication.Application_Pointer_GetDocSeeAlso(self)

    def SetDocTags(self, val):
        return _otbApplication.Application_Pointer_SetDocTags(self, val)

    def AddDocTag(self, tag):
        return _otbApplication.Application_Pointer_AddDocTag(self, tag)

    def GetDocTags(self):
        return _otbApplication.Application_Pointer_GetDocTags(self)

    def IsMultiWritingEnabled(self):
        return _otbApplication.Application_Pointer_IsMultiWritingEnabled(self)

    def GetParameterList(self):
        return _otbApplication.Application_Pointer_GetParameterList(self)

    def GetNumberOfExamples(self):
        return _otbApplication.Application_Pointer_GetNumberOfExamples(self)

    def GetExampleComment(self, id):
        return _otbApplication.Application_Pointer_GetExampleComment(self, id)

    def GetExampleNumberOfParameters(self, id):
        return _otbApplication.Application_Pointer_GetExampleNumberOfParameters(self, id)

    def GetExampleParameterKey(self, exId, paramId):
        return _otbApplication.Application_Pointer_GetExampleParameterKey(self, exId, paramId)

    def GetExampleParameterValue(self, exId, paramId):
        return _otbApplication.Application_Pointer_GetExampleParameterValue(self, exId, paramId)

    def SetDocExampleParameterValue(self, key, value, exId=0):
        return _otbApplication.Application_Pointer_SetDocExampleParameterValue(self, key, value, exId)

    def SetExampleComment(self, comm, i):
        return _otbApplication.Application_Pointer_SetExampleComment(self, comm, i)

    def AddExample(self, *args):
        return _otbApplication.Application_Pointer_AddExample(self, *args)

    def GetCLExample(self):
        return _otbApplication.Application_Pointer_GetCLExample(self)

    def GetHtmlExample(self):
        return _otbApplication.Application_Pointer_GetHtmlExample(self)

    def GetOutputParametersSumUp(self):
        return _otbApplication.Application_Pointer_GetOutputParametersSumUp(self)

    def SetVectorImageFromUInt8NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetVectorImageFromUInt8NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetVectorImageFromInt16NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromUInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetVectorImageFromUInt16NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetVectorImageFromInt32NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromUInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetVectorImageFromUInt32NumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromFloatNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetVectorImageFromFloatNumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromDoubleNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetVectorImageFromDoubleNumpyArray_(self, pkey, idx, buffer)

    def SetVectorImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_Pointer_SetVectorImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def SetVectorImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_Pointer_SetVectorImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def SetImageFromUInt8NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetImageFromUInt8NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetImageFromInt16NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromUInt16NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetImageFromUInt16NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetImageFromInt32NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromUInt32NumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetImageFromUInt32NumpyArray_(self, pkey, idx, buffer)

    def SetImageFromFloatNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetImageFromFloatNumpyArray_(self, pkey, idx, buffer)

    def SetImageFromDoubleNumpyArray_(self, pkey, idx, buffer):
        return _otbApplication.Application_Pointer_SetImageFromDoubleNumpyArray_(self, pkey, idx, buffer)

    def SetImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_Pointer_SetImageFromCFloatNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def SetImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3):
        return _otbApplication.Application_Pointer_SetImageFromCDoubleNumpyArray_(self, pkey, idx, buffer, dim1, dim2, dim3)

    def GetVectorImageAsUInt8NumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsUInt8NumpyArray_(self, pkey)

    def GetVectorImageAsInt16NumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsInt16NumpyArray_(self, pkey)

    def GetVectorImageAsUInt16NumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsUInt16NumpyArray_(self, pkey)

    def GetVectorImageAsInt32NumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsInt32NumpyArray_(self, pkey)

    def GetVectorImageAsUInt32NumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsUInt32NumpyArray_(self, pkey)

    def GetVectorImageAsFloatNumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsFloatNumpyArray_(self, pkey)

    def GetVectorImageAsDoubleNumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsDoubleNumpyArray_(self, pkey)

    def GetVectorImageAsCFloatNumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsCFloatNumpyArray_(self, pkey)

    def GetVectorImageAsCDoubleNumpyArray_(self, pkey):
        return _otbApplication.Application_Pointer_GetVectorImageAsCDoubleNumpyArray_(self, pkey)

    def ConvertPixelTypeToNumpy(self, pixType):
        return _otbApplication.Application_Pointer_ConvertPixelTypeToNumpy(self, pixType)

    def SetupImageInformation(self, img, origin, spacing, size, bufferRegion, metadata):
        return _otbApplication.Application_Pointer_SetupImageInformation(self, img, origin, spacing, size, bufferRegion, metadata)

    def New(self):
        return _otbApplication.Application_Pointer_New(self)

    def GetNameOfClass(self):
        return _otbApplication.Application_Pointer_GetNameOfClass(self)

    def AddObserver(self, event, arg1):
        return _otbApplication.Application_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.Application_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.Application_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.Application_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.Application_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.Application_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.Application_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.Application_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.Application_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.Application_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.Application_Pointer_ToString(self)

# Register Application_Pointer in _otbApplication:
_otbApplication.Application_Pointer_swigregister(Application_Pointer)


import sys

class ApplicationProxy(object):
  def __init__(self, application, groupkey, value = None):
    self.__dict__["application"] = application
    self.__dict__["groupkey"] = groupkey
    if value is not None:
      self.__dict__["application"].SetParameterString(groupkey, value)

  def __str__(self):
    return self.__dict__["application"].GetParameterAsString(self.groupkey)

  def __eq__(self, other):
    if not type(other) == type(self):
      return (self.__str__() == other)
    else:
      return (isinstance(other, self.__class__) and self.__dict__ == other.__dict__)

  def __ne__(self, other):
    return not self.__eq__(other)

  def __getattr__(self,attr):
    return self.__dict__["application"].GetParameterValue( self.groupkey + "." + attr.lower() )

  def __setattr__(self,attr,value):
    if attr not in self.__dict__:
      return self.__dict__["application"].SetParameterValue( self.groupkey + "." + attr.lower(), value )
    else:
      return dict.__setattr__(self, attr, value)


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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def GetAvailableApplications():
        return _otbApplication.Registry_GetAvailableApplications()

    @staticmethod
    def CreateApplicationWithoutLogger(name):
        return _otbApplication.Registry_CreateApplicationWithoutLogger(name)

    @staticmethod
    def CreateApplication(name):
        application = _otbApplication.Registry_CreateApplicationWithoutLogger(name)
        if application is not None:
            application.SetupLogger()
            if application.IsDeprecated():
                application.GetLogger().Warning("This application is deprecated and will be removed in a future OTB release")
        return application


    @staticmethod
    def AddApplicationPath(newpath):
        return _otbApplication.Registry_AddApplicationPath(newpath)

    @staticmethod
    def SetApplicationPath(newpath):
        return _otbApplication.Registry_SetApplicationPath(newpath)

    @staticmethod
    def CleanRegistry():
        return _otbApplication.Registry_CleanRegistry()

# Register Registry in _otbApplication:
_otbApplication.Registry_swigregister(Registry)

def Registry_GetAvailableApplications():
    return _otbApplication.Registry_GetAvailableApplications()

def Registry_CreateApplicationWithoutLogger(name):
    return _otbApplication.Registry_CreateApplicationWithoutLogger(name)

def Registry_AddApplicationPath(newpath):
    return _otbApplication.Registry_AddApplicationPath(newpath)

def Registry_SetApplicationPath(newpath):
    return _otbApplication.Registry_SetApplicationPath(newpath)

def Registry_CleanRegistry():
    return _otbApplication.Registry_CleanRegistry()

class AddProcessToWatchEvent(itkEventObject):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _otbApplication.delete_AddProcessToWatchEvent

    def GetEventName(self):
        return _otbApplication.AddProcessToWatchEvent_GetEventName(self)

    def CheckEvent(self, e):
        return _otbApplication.AddProcessToWatchEvent_CheckEvent(self, e)

    def MakeObject(self):
        return _otbApplication.AddProcessToWatchEvent_MakeObject(self)

    def __init__(self, *args):
        _otbApplication.AddProcessToWatchEvent_swiginit(self, _otbApplication.new_AddProcessToWatchEvent(*args))

    def GetProcess(self):
        return _otbApplication.AddProcessToWatchEvent_GetProcess(self)

    def SetProcess(self, process):
        return _otbApplication.AddProcessToWatchEvent_SetProcess(self, process)

    def SetProcessDescription(self, desc):
        return _otbApplication.AddProcessToWatchEvent_SetProcessDescription(self, desc)

    def GetProcessDescription(self):
        return _otbApplication.AddProcessToWatchEvent_GetProcessDescription(self)

# Register AddProcessToWatchEvent in _otbApplication:
_otbApplication.AddProcessToWatchEvent_swigregister(AddProcessToWatchEvent)

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def New():
        return _otbApplication.itkPyCommand_New()

    def GetNameOfClass(self):
        return _otbApplication.itkPyCommand_GetNameOfClass(self)

    def SetCommandCallable(self, obj):
        return _otbApplication.itkPyCommand_SetCommandCallable(self, obj)

    def GetCommandCallable(self):
        return _otbApplication.itkPyCommand_GetCommandCallable(self)

    def Execute(self, arg2, arg3):
        return _otbApplication.itkPyCommand_Execute(self, arg2, arg3)
    __swig_destroy__ = _otbApplication.delete_itkPyCommand

# Register itkPyCommand in _otbApplication:
_otbApplication.itkPyCommand_swigregister(itkPyCommand)

def itkPyCommand_New():
    return _otbApplication.itkPyCommand_New()

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

    def __init__(self, *args):
        _otbApplication.itkPyCommand_Pointer_swiginit(self, _otbApplication.new_itkPyCommand_Pointer(*args))
    __swig_destroy__ = _otbApplication.delete_itkPyCommand_Pointer

    def __deref__(self):
        return _otbApplication.itkPyCommand_Pointer___deref__(self)

    def IsNotNull(self):
        return _otbApplication.itkPyCommand_Pointer_IsNotNull(self)

    def IsNull(self):
        return _otbApplication.itkPyCommand_Pointer_IsNull(self)

    def GetPointer(self):
        return _otbApplication.itkPyCommand_Pointer_GetPointer(self)

    def New(self):
        return _otbApplication.itkPyCommand_Pointer_New(self)

    def GetNameOfClass(self):
        return _otbApplication.itkPyCommand_Pointer_GetNameOfClass(self)

    def SetCommandCallable(self, obj):
        return _otbApplication.itkPyCommand_Pointer_SetCommandCallable(self, obj)

    def GetCommandCallable(self):
        return _otbApplication.itkPyCommand_Pointer_GetCommandCallable(self)

    def Execute(self, arg2, arg3):
        return _otbApplication.itkPyCommand_Pointer_Execute(self, arg2, arg3)

    def AddObserver(self, event, arg1):
        return _otbApplication.itkPyCommand_Pointer_AddObserver(self, event, arg1)

    def GetCommand(self, tag):
        return _otbApplication.itkPyCommand_Pointer_GetCommand(self, tag)

    def InvokeEvent(self, arg0):
        return _otbApplication.itkPyCommand_Pointer_InvokeEvent(self, arg0)

    def RemoveObserver(self, tag):
        return _otbApplication.itkPyCommand_Pointer_RemoveObserver(self, tag)

    def RemoveAllObservers(self):
        return _otbApplication.itkPyCommand_Pointer_RemoveAllObservers(self)

    def HasObserver(self, event):
        return _otbApplication.itkPyCommand_Pointer_HasObserver(self, event)

    def GetMetaDataDictionary(self):
        return _otbApplication.itkPyCommand_Pointer_GetMetaDataDictionary(self)

    def SetMetaDataDictionary(self, rhs):
        return _otbApplication.itkPyCommand_Pointer_SetMetaDataDictionary(self, rhs)

    def Print(self, os, indent=0):
        return _otbApplication.itkPyCommand_Pointer_Print(self, os, indent)

    def BreakOnError(self):
        return _otbApplication.itkPyCommand_Pointer_BreakOnError(self)

    def ToString(self):
        return _otbApplication.itkPyCommand_Pointer_ToString(self)

# Register itkPyCommand_Pointer in _otbApplication:
_otbApplication.itkPyCommand_Pointer_swigregister(itkPyCommand_Pointer)



