# This file was created automatically by SWIG.
# Don't modify this file, modify the SWIG interface instead.

import _QuantLib

class Observable(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(Observable)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.Observable___deref__(*args)
    def __nonzero__(*args): return _QuantLib.Observable___nonzero__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Observable(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Observable):
        try:
            if self.thisown: destroy(self)
        except: pass

class ObservablePtr(Observable):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Observable
_QuantLib.Observable_swigregister(ObservablePtr)
cvar = _QuantLib.cvar
__hexversion__ = cvar.__hexversion__

class Observer(object):
    def __repr__(self):
        return "<C PyObserver instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Observer(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def _registerWith(*args): return _QuantLib.Observer__registerWith(*args)
    def _unregisterWith(*args): return _QuantLib.Observer__unregisterWith(*args)
    def registerWith(self,x):
        self._registerWith(x.asObservable())
    def unregisterWith(self,x):
        self._unregisterWith(x.asObservable())

    def __del__(self, destroy=_QuantLib.delete_Observer):
        try:
            if self.thisown: destroy(self)
        except: pass

class ObserverPtr(Observer):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Observer
_QuantLib.Observer_swigregister(ObserverPtr)

class Array(object):
    def __repr__(self):
        return "<C Array instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Array(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.Array___len__(*args)
    def __str__(*args): return _QuantLib.Array___str__(*args)
    def __add__(*args): return _QuantLib.Array___add__(*args)
    def __sub__(*args): return _QuantLib.Array___sub__(*args)
    def __mul__(*args): return _QuantLib.Array___mul__(*args)
    def __div__(*args): return _QuantLib.Array___div__(*args)
    def __rmul__(*args): return _QuantLib.Array___rmul__(*args)
    def __getslice__(*args): return _QuantLib.Array___getslice__(*args)
    def __setslice__(*args): return _QuantLib.Array___setslice__(*args)
    def __nonzero__(*args): return _QuantLib.Array___nonzero__(*args)
    def __getitem__(*args): return _QuantLib.Array___getitem__(*args)
    def __setitem__(*args): return _QuantLib.Array___setitem__(*args)
    def __del__(self, destroy=_QuantLib.delete_Array):
        try:
            if self.thisown: destroy(self)
        except: pass

class ArrayPtr(Array):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Array
_QuantLib.Array_swigregister(ArrayPtr)

class LexicographicalViewColumn(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C LexicographicalViewColumn instance at %s>" % (self.this,)
    def __getitem__(*args): return _QuantLib.LexicographicalViewColumn___getitem__(*args)
    def __setitem__(*args): return _QuantLib.LexicographicalViewColumn___setitem__(*args)
    def __del__(self, destroy=_QuantLib.delete_LexicographicalViewColumn):
        try:
            if self.thisown: destroy(self)
        except: pass

class LexicographicalViewColumnPtr(LexicographicalViewColumn):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LexicographicalViewColumn
_QuantLib.LexicographicalViewColumn_swigregister(LexicographicalViewColumnPtr)

class LexicographicalView(object):
    def __repr__(self):
        return "<C LexicographicalView instance at %s>" % (self.this,)
    def xSize(*args): return _QuantLib.LexicographicalView_xSize(*args)
    def ySize(*args): return _QuantLib.LexicographicalView_ySize(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_LexicographicalView(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __str__(*args): return _QuantLib.LexicographicalView___str__(*args)
    def __getitem__(*args): return _QuantLib.LexicographicalView___getitem__(*args)
    def __del__(self, destroy=_QuantLib.delete_LexicographicalView):
        try:
            if self.thisown: destroy(self)
        except: pass

class LexicographicalViewPtr(LexicographicalView):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LexicographicalView
_QuantLib.LexicographicalView_swigregister(LexicographicalViewPtr)

class MatrixRow(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C MatrixRow instance at %s>" % (self.this,)
    def __getitem__(*args): return _QuantLib.MatrixRow___getitem__(*args)
    def __setitem__(*args): return _QuantLib.MatrixRow___setitem__(*args)
    def __del__(self, destroy=_QuantLib.delete_MatrixRow):
        try:
            if self.thisown: destroy(self)
        except: pass

class MatrixRowPtr(MatrixRow):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MatrixRow
_QuantLib.MatrixRow_swigregister(MatrixRowPtr)

class Matrix(object):
    def __repr__(self):
        return "<C Matrix instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Matrix(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def rows(*args): return _QuantLib.Matrix_rows(*args)
    def columns(*args): return _QuantLib.Matrix_columns(*args)
    def __str__(*args): return _QuantLib.Matrix___str__(*args)
    def __add__(*args): return _QuantLib.Matrix___add__(*args)
    def __sub__(*args): return _QuantLib.Matrix___sub__(*args)
    def __mul__(*args): return _QuantLib.Matrix___mul__(*args)
    def __div__(*args): return _QuantLib.Matrix___div__(*args)
    def __getitem__(*args): return _QuantLib.Matrix___getitem__(*args)
    def __rmul__(*args): return _QuantLib.Matrix___rmul__(*args)
    def __del__(self, destroy=_QuantLib.delete_Matrix):
        try:
            if self.thisown: destroy(self)
        except: pass

class MatrixPtr(Matrix):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Matrix
_QuantLib.Matrix_swigregister(MatrixPtr)


transpose = _QuantLib.transpose

outerProduct = _QuantLib.outerProduct

pseudoSqrt = _QuantLib.pseudoSqrt
class SVD(object):
    def __repr__(self):
        return "<C SVD instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SVD(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def U(*args): return _QuantLib.SVD_U(*args)
    def V(*args): return _QuantLib.SVD_V(*args)
    def S(*args): return _QuantLib.SVD_S(*args)
    def singularValues(*args): return _QuantLib.SVD_singularValues(*args)
    def __del__(self, destroy=_QuantLib.delete_SVD):
        try:
            if self.thisown: destroy(self)
        except: pass

class SVDPtr(SVD):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SVD
_QuantLib.SVD_swigregister(SVDPtr)

class Quote(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(Quote)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.Quote___deref__(*args)
    def __nonzero__(*args): return _QuantLib.Quote___nonzero__(*args)
    def asObservable(*args): return _QuantLib.Quote_asObservable(*args)
    def value(*args): return _QuantLib.Quote_value(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Quote(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Quote):
        try:
            if self.thisown: destroy(self)
        except: pass

class QuotePtr(Quote):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Quote
_QuantLib.Quote_swigregister(QuotePtr)

class QuoteHandle(object):
    def __repr__(self):
        return "<C Handle<(Quote)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_QuoteHandle(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __deref__(*args): return _QuantLib.QuoteHandle___deref__(*args)
    def linkTo(*args): return _QuantLib.QuoteHandle_linkTo(*args)
    def __nonzero__(*args): return _QuantLib.QuoteHandle___nonzero__(*args)
    def asObservable(*args): return _QuantLib.QuoteHandle_asObservable(*args)
    def value(*args): return _QuantLib.QuoteHandle_value(*args)
    def __del__(self, destroy=_QuantLib.delete_QuoteHandle):
        try:
            if self.thisown: destroy(self)
        except: pass

class QuoteHandlePtr(QuoteHandle):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = QuoteHandle
_QuantLib.QuoteHandle_swigregister(QuoteHandlePtr)

class SimpleQuote(Quote):
    def __repr__(self):
        return "<C SimpleQuotePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SimpleQuote(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def setValue(*args): return _QuantLib.SimpleQuote_setValue(*args)
    def __del__(self, destroy=_QuantLib.delete_SimpleQuote):
        try:
            if self.thisown: destroy(self)
        except: pass

class SimpleQuotePtr(SimpleQuote):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SimpleQuote
_QuantLib.SimpleQuote_swigregister(SimpleQuotePtr)

class DerivedQuote(Quote):
    def __repr__(self):
        return "<C DerivedQuotePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DerivedQuote(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DerivedQuote):
        try:
            if self.thisown: destroy(self)
        except: pass

class DerivedQuotePtr(DerivedQuote):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DerivedQuote
_QuantLib.DerivedQuote_swigregister(DerivedQuotePtr)

class CompositeQuote(Quote):
    def __repr__(self):
        return "<C CompositeQuotePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CompositeQuote(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CompositeQuote):
        try:
            if self.thisown: destroy(self)
        except: pass

class CompositeQuotePtr(CompositeQuote):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CompositeQuote
_QuantLib.CompositeQuote_swigregister(CompositeQuotePtr)

class QuoteVector(object):
    def __repr__(self):
        return "<C std::vector<(boost::shared_ptr<(Quote)>)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_QuoteVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.QuoteVector___len__(*args)
    def clear(*args): return _QuantLib.QuoteVector_clear(*args)
    def append(*args): return _QuantLib.QuoteVector_append(*args)
    def __nonzero__(*args): return _QuantLib.QuoteVector___nonzero__(*args)
    def pop(*args): return _QuantLib.QuoteVector_pop(*args)
    def __getitem__(*args): return _QuantLib.QuoteVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.QuoteVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.QuoteVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.QuoteVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.QuoteVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.QuoteVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_QuoteVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class QuoteVectorPtr(QuoteVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = QuoteVector
_QuantLib.QuoteVector_swigregister(QuoteVectorPtr)

class QuoteHandleVector(object):
    def __repr__(self):
        return "<C std::vector<(Handle<(Quote)>)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_QuoteHandleVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.QuoteHandleVector___len__(*args)
    def clear(*args): return _QuantLib.QuoteHandleVector_clear(*args)
    def append(*args): return _QuantLib.QuoteHandleVector_append(*args)
    def __nonzero__(*args): return _QuantLib.QuoteHandleVector___nonzero__(*args)
    def pop(*args): return _QuantLib.QuoteHandleVector_pop(*args)
    def __getitem__(*args): return _QuantLib.QuoteHandleVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.QuoteHandleVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.QuoteHandleVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.QuoteHandleVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.QuoteHandleVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.QuoteHandleVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_QuoteHandleVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class QuoteHandleVectorPtr(QuoteHandleVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = QuoteHandleVector
_QuantLib.QuoteHandleVector_swigregister(QuoteHandleVectorPtr)

class Period(object):
    def length(*args): return _QuantLib.Period_length(*args)
    def units(*args): return _QuantLib.Period_units(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Period(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __str__(*args): return _QuantLib.Period___str__(*args)
    def __repr__(*args): return _QuantLib.Period___repr__(*args)
    def __cmp__(*args): return _QuantLib.Period___cmp__(*args)
    def __del__(self, destroy=_QuantLib.delete_Period):
        try:
            if self.thisown: destroy(self)
        except: pass

class PeriodPtr(Period):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Period
_QuantLib.Period_swigregister(PeriodPtr)

class PeriodVector(object):
    def __repr__(self):
        return "<C std::vector<(Period)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PeriodVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.PeriodVector___len__(*args)
    def clear(*args): return _QuantLib.PeriodVector_clear(*args)
    def append(*args): return _QuantLib.PeriodVector_append(*args)
    def __nonzero__(*args): return _QuantLib.PeriodVector___nonzero__(*args)
    def pop(*args): return _QuantLib.PeriodVector_pop(*args)
    def __getitem__(*args): return _QuantLib.PeriodVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.PeriodVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.PeriodVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.PeriodVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.PeriodVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.PeriodVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_PeriodVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class PeriodVectorPtr(PeriodVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PeriodVector
_QuantLib.PeriodVector_swigregister(PeriodVectorPtr)

class Date(object):
    def weekday(*args): return _QuantLib.Date_weekday(*args)
    def dayOfMonth(*args): return _QuantLib.Date_dayOfMonth(*args)
    def dayOfYear(*args): return _QuantLib.Date_dayOfYear(*args)
    def month(*args): return _QuantLib.Date_month(*args)
    def year(*args): return _QuantLib.Date_year(*args)
    def serialNumber(*args): return _QuantLib.Date_serialNumber(*args)
    isLeap = staticmethod(_QuantLib.Date_isLeap)
    minDate = staticmethod(_QuantLib.Date_minDate)
    maxDate = staticmethod(_QuantLib.Date_maxDate)
    todaysDate = staticmethod(_QuantLib.Date_todaysDate)
    endOfMonth = staticmethod(_QuantLib.Date_endOfMonth)
    isEOM = staticmethod(_QuantLib.Date_isEOM)
    def __add__(*args): return _QuantLib.Date___add__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Date(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def weekdayNumber(*args): return _QuantLib.Date_weekdayNumber(*args)
    def __str__(*args): return _QuantLib.Date___str__(*args)
    def __repr__(*args): return _QuantLib.Date___repr__(*args)
    def ISO(*args): return _QuantLib.Date_ISO(*args)
    def __sub__(*args): return _QuantLib.Date___sub__(*args)
    def __cmp__(*args): return _QuantLib.Date___cmp__(*args)
    def __nonzero__(*args): return _QuantLib.Date___nonzero__(*args)
    def __hash__(*args): return _QuantLib.Date___hash__(*args)
    def __del__(self, destroy=_QuantLib.delete_Date):
        try:
            if self.thisown: destroy(self)
        except: pass

class DatePtr(Date):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Date
_QuantLib.Date_swigregister(DatePtr)

Date_isLeap = _QuantLib.Date_isLeap

Date_minDate = _QuantLib.Date_minDate

Date_maxDate = _QuantLib.Date_maxDate

Date_todaysDate = _QuantLib.Date_todaysDate

Date_endOfMonth = _QuantLib.Date_endOfMonth

Date_isEOM = _QuantLib.Date_isEOM

Date._old___add__ = Date.__add__
Date._old___sub__ = Date.__sub__
def Date_new___add__(self,x):
    if type(x) is tuple and len(x) == 2:
        return self._old___add__(Period(x[0],x[1]))
    else:
        return self._old___add__(x)
def Date_new___sub__(self,x):
    if type(x) is tuple and len(x) == 2:
        return self._old___sub__(Period(x[0],x[1]))
    else:
        return self._old___sub__(x)
Date.__add__ = Date_new___add__
Date.__sub__ = Date_new___sub__

class DateVector(object):
    def __repr__(self):
        return "<C std::vector<(Date)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DateVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.DateVector___len__(*args)
    def clear(*args): return _QuantLib.DateVector_clear(*args)
    def append(*args): return _QuantLib.DateVector_append(*args)
    def __nonzero__(*args): return _QuantLib.DateVector___nonzero__(*args)
    def pop(*args): return _QuantLib.DateVector_pop(*args)
    def __getitem__(*args): return _QuantLib.DateVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.DateVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.DateVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.DateVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.DateVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.DateVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_DateVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class DateVectorPtr(DateVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DateVector
_QuantLib.DateVector_swigregister(DateVectorPtr)


nullInt = _QuantLib.nullInt

nullDouble = _QuantLib.nullDouble
class DayCounter(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C DayCounter instance at %s>" % (self.this,)
    def dayCount(*args): return _QuantLib.DayCounter_dayCount(*args)
    def yearFraction(*args): return _QuantLib.DayCounter_yearFraction(*args)
    def __str__(*args): return _QuantLib.DayCounter___str__(*args)
    def __eq__(*args): return _QuantLib.DayCounter___eq__(*args)
    def __ne__(*args): return _QuantLib.DayCounter___ne__(*args)
    def __del__(self, destroy=_QuantLib.delete_DayCounter):
        try:
            if self.thisown: destroy(self)
        except: pass

class DayCounterPtr(DayCounter):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DayCounter
_QuantLib.DayCounter_swigregister(DayCounterPtr)

class Actual360(DayCounter):
    def __repr__(self):
        return "<C QuantLib::Actual360 instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Actual360(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Actual360):
        try:
            if self.thisown: destroy(self)
        except: pass

class Actual360Ptr(Actual360):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Actual360
_QuantLib.Actual360_swigregister(Actual360Ptr)

class Actual365Fixed(DayCounter):
    def __repr__(self):
        return "<C QuantLib::Actual365Fixed instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Actual365Fixed(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Actual365Fixed):
        try:
            if self.thisown: destroy(self)
        except: pass

class Actual365FixedPtr(Actual365Fixed):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Actual365Fixed
_QuantLib.Actual365Fixed_swigregister(Actual365FixedPtr)

class Thirty360(DayCounter):
    def __repr__(self):
        return "<C QuantLib::Thirty360 instance at %s>" % (self.this,)
    USA = _QuantLib.Thirty360_USA
    BondBasis = _QuantLib.Thirty360_BondBasis
    European = _QuantLib.Thirty360_European
    EurobondBasis = _QuantLib.Thirty360_EurobondBasis
    Italian = _QuantLib.Thirty360_Italian
    def __init__(self, *args):
        newobj = _QuantLib.new_Thirty360(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Thirty360):
        try:
            if self.thisown: destroy(self)
        except: pass

class Thirty360Ptr(Thirty360):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Thirty360
_QuantLib.Thirty360_swigregister(Thirty360Ptr)

class ActualActual(DayCounter):
    def __repr__(self):
        return "<C QuantLib::ActualActual instance at %s>" % (self.this,)
    ISMA = _QuantLib.ActualActual_ISMA
    Bond = _QuantLib.ActualActual_Bond
    ISDA = _QuantLib.ActualActual_ISDA
    Historical = _QuantLib.ActualActual_Historical
    AFB = _QuantLib.ActualActual_AFB
    Euro = _QuantLib.ActualActual_Euro
    def __init__(self, *args):
        newobj = _QuantLib.new_ActualActual(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ActualActual):
        try:
            if self.thisown: destroy(self)
        except: pass

class ActualActualPtr(ActualActual):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ActualActual
_QuantLib.ActualActual_swigregister(ActualActualPtr)

class OneDayCounter(DayCounter):
    def __repr__(self):
        return "<C QuantLib::OneDayCounter instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_OneDayCounter(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_OneDayCounter):
        try:
            if self.thisown: destroy(self)
        except: pass

class OneDayCounterPtr(OneDayCounter):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = OneDayCounter
_QuantLib.OneDayCounter_swigregister(OneDayCounterPtr)

class SimpleDayCounter(DayCounter):
    def __repr__(self):
        return "<C QuantLib::SimpleDayCounter instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SimpleDayCounter(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SimpleDayCounter):
        try:
            if self.thisown: destroy(self)
        except: pass

class SimpleDayCounterPtr(SimpleDayCounter):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SimpleDayCounter
_QuantLib.SimpleDayCounter_swigregister(SimpleDayCounterPtr)

class InterestRate(object):
    def __repr__(self):
        return "<C InterestRate instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InterestRate(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def rate(*args): return _QuantLib.InterestRate_rate(*args)
    def dayCounter(*args): return _QuantLib.InterestRate_dayCounter(*args)
    def compounding(*args): return _QuantLib.InterestRate_compounding(*args)
    def frequency(*args): return _QuantLib.InterestRate_frequency(*args)
    def discountFactor(*args): return _QuantLib.InterestRate_discountFactor(*args)
    def compoundFactor(*args): return _QuantLib.InterestRate_compoundFactor(*args)
    impliedRate = staticmethod(_QuantLib.InterestRate_impliedRate)
    impliedRate = staticmethod(_QuantLib.InterestRate_impliedRate)
    def equivalentRate(*args): return _QuantLib.InterestRate_equivalentRate(*args)
    def __str__(*args): return _QuantLib.InterestRate___str__(*args)
    def __del__(self, destroy=_QuantLib.delete_InterestRate):
        try:
            if self.thisown: destroy(self)
        except: pass

class InterestRatePtr(InterestRate):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InterestRate
_QuantLib.InterestRate_swigregister(InterestRatePtr)

InterestRate_impliedRate = _QuantLib.InterestRate_impliedRate

class Calendar(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Calendar instance at %s>" % (self.this,)
    def isBusinessDay(*args): return _QuantLib.Calendar_isBusinessDay(*args)
    def isHoliday(*args): return _QuantLib.Calendar_isHoliday(*args)
    def isEndOfMonth(*args): return _QuantLib.Calendar_isEndOfMonth(*args)
    def addHoliday(*args): return _QuantLib.Calendar_addHoliday(*args)
    def removeHoliday(*args): return _QuantLib.Calendar_removeHoliday(*args)
    def adjust(*args): return _QuantLib.Calendar_adjust(*args)
    def advance(*args): return _QuantLib.Calendar_advance(*args)
    def __str__(*args): return _QuantLib.Calendar___str__(*args)
    def __eq__(*args): return _QuantLib.Calendar___eq__(*args)
    def __ne__(*args): return _QuantLib.Calendar___ne__(*args)
    def __del__(self, destroy=_QuantLib.delete_Calendar):
        try:
            if self.thisown: destroy(self)
        except: pass

class CalendarPtr(Calendar):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Calendar
_QuantLib.Calendar_swigregister(CalendarPtr)

class Beijing(Calendar):
    def __repr__(self):
        return "<C QuantLib::Beijing instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Beijing(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Beijing):
        try:
            if self.thisown: destroy(self)
        except: pass

class BeijingPtr(Beijing):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Beijing
_QuantLib.Beijing_swigregister(BeijingPtr)

class Bratislava(Calendar):
    def __repr__(self):
        return "<C QuantLib::Bratislava instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Bratislava(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Bratislava):
        try:
            if self.thisown: destroy(self)
        except: pass

class BratislavaPtr(Bratislava):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Bratislava
_QuantLib.Bratislava_swigregister(BratislavaPtr)

class Budapest(Calendar):
    def __repr__(self):
        return "<C QuantLib::Budapest instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Budapest(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Budapest):
        try:
            if self.thisown: destroy(self)
        except: pass

class BudapestPtr(Budapest):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Budapest
_QuantLib.Budapest_swigregister(BudapestPtr)

class Copenhagen(Calendar):
    def __repr__(self):
        return "<C QuantLib::Copenhagen instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Copenhagen(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Copenhagen):
        try:
            if self.thisown: destroy(self)
        except: pass

class CopenhagenPtr(Copenhagen):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Copenhagen
_QuantLib.Copenhagen_swigregister(CopenhagenPtr)

class Germany(Calendar):
    def __repr__(self):
        return "<C QuantLib::Germany instance at %s>" % (self.this,)
    Settlement = _QuantLib.Germany_Settlement
    FrankfurtStockExchange = _QuantLib.Germany_FrankfurtStockExchange
    Xetra = _QuantLib.Germany_Xetra
    Eurex = _QuantLib.Germany_Eurex
    def __init__(self, *args):
        newobj = _QuantLib.new_Germany(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Germany):
        try:
            if self.thisown: destroy(self)
        except: pass

class GermanyPtr(Germany):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Germany
_QuantLib.Germany_swigregister(GermanyPtr)

class Helsinki(Calendar):
    def __repr__(self):
        return "<C QuantLib::Helsinki instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Helsinki(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Helsinki):
        try:
            if self.thisown: destroy(self)
        except: pass

class HelsinkiPtr(Helsinki):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Helsinki
_QuantLib.Helsinki_swigregister(HelsinkiPtr)

class HongKong(Calendar):
    def __repr__(self):
        return "<C QuantLib::HongKong instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_HongKong(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_HongKong):
        try:
            if self.thisown: destroy(self)
        except: pass

class HongKongPtr(HongKong):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HongKong
_QuantLib.HongKong_swigregister(HongKongPtr)

class Italy(Calendar):
    def __repr__(self):
        return "<C QuantLib::Italy instance at %s>" % (self.this,)
    Settlement = _QuantLib.Italy_Settlement
    Exchange = _QuantLib.Italy_Exchange
    def __init__(self, *args):
        newobj = _QuantLib.new_Italy(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Italy):
        try:
            if self.thisown: destroy(self)
        except: pass

class ItalyPtr(Italy):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Italy
_QuantLib.Italy_swigregister(ItalyPtr)

class Johannesburg(Calendar):
    def __repr__(self):
        return "<C QuantLib::Johannesburg instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Johannesburg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Johannesburg):
        try:
            if self.thisown: destroy(self)
        except: pass

class JohannesburgPtr(Johannesburg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Johannesburg
_QuantLib.Johannesburg_swigregister(JohannesburgPtr)

class NullCalendar(Calendar):
    def __repr__(self):
        return "<C QuantLib::NullCalendar instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NullCalendar(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NullCalendar):
        try:
            if self.thisown: destroy(self)
        except: pass

class NullCalendarPtr(NullCalendar):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NullCalendar
_QuantLib.NullCalendar_swigregister(NullCalendarPtr)

class Oslo(Calendar):
    def __repr__(self):
        return "<C QuantLib::Oslo instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Oslo(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Oslo):
        try:
            if self.thisown: destroy(self)
        except: pass

class OsloPtr(Oslo):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Oslo
_QuantLib.Oslo_swigregister(OsloPtr)

class Prague(Calendar):
    def __repr__(self):
        return "<C QuantLib::Prague instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Prague(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Prague):
        try:
            if self.thisown: destroy(self)
        except: pass

class PraguePtr(Prague):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Prague
_QuantLib.Prague_swigregister(PraguePtr)

class Riyadh(Calendar):
    def __repr__(self):
        return "<C QuantLib::Riyadh instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Riyadh(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Riyadh):
        try:
            if self.thisown: destroy(self)
        except: pass

class RiyadhPtr(Riyadh):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Riyadh
_QuantLib.Riyadh_swigregister(RiyadhPtr)

class Seoul(Calendar):
    def __repr__(self):
        return "<C QuantLib::Seoul instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Seoul(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Seoul):
        try:
            if self.thisown: destroy(self)
        except: pass

class SeoulPtr(Seoul):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Seoul
_QuantLib.Seoul_swigregister(SeoulPtr)

class Singapore(Calendar):
    def __repr__(self):
        return "<C QuantLib::Singapore instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Singapore(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Singapore):
        try:
            if self.thisown: destroy(self)
        except: pass

class SingaporePtr(Singapore):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Singapore
_QuantLib.Singapore_swigregister(SingaporePtr)

class Stockholm(Calendar):
    def __repr__(self):
        return "<C QuantLib::Stockholm instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Stockholm(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Stockholm):
        try:
            if self.thisown: destroy(self)
        except: pass

class StockholmPtr(Stockholm):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Stockholm
_QuantLib.Stockholm_swigregister(StockholmPtr)

class Sydney(Calendar):
    def __repr__(self):
        return "<C QuantLib::Sydney instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Sydney(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Sydney):
        try:
            if self.thisown: destroy(self)
        except: pass

class SydneyPtr(Sydney):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Sydney
_QuantLib.Sydney_swigregister(SydneyPtr)

class TARGET(Calendar):
    def __repr__(self):
        return "<C QuantLib::TARGET instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TARGET(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_TARGET):
        try:
            if self.thisown: destroy(self)
        except: pass

class TARGETPtr(TARGET):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TARGET
_QuantLib.TARGET_swigregister(TARGETPtr)

class Taiwan(Calendar):
    def __repr__(self):
        return "<C QuantLib::Taiwan instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Taiwan(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Taiwan):
        try:
            if self.thisown: destroy(self)
        except: pass

class TaiwanPtr(Taiwan):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Taiwan
_QuantLib.Taiwan_swigregister(TaiwanPtr)

class Tokyo(Calendar):
    def __repr__(self):
        return "<C QuantLib::Tokyo instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Tokyo(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Tokyo):
        try:
            if self.thisown: destroy(self)
        except: pass

class TokyoPtr(Tokyo):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Tokyo
_QuantLib.Tokyo_swigregister(TokyoPtr)

class Toronto(Calendar):
    def __repr__(self):
        return "<C QuantLib::Toronto instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Toronto(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Toronto):
        try:
            if self.thisown: destroy(self)
        except: pass

class TorontoPtr(Toronto):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Toronto
_QuantLib.Toronto_swigregister(TorontoPtr)

class UnitedKingdom(Calendar):
    def __repr__(self):
        return "<C QuantLib::UnitedKingdom instance at %s>" % (self.this,)
    Settlement = _QuantLib.UnitedKingdom_Settlement
    Exchange = _QuantLib.UnitedKingdom_Exchange
    Metals = _QuantLib.UnitedKingdom_Metals
    def __init__(self, *args):
        newobj = _QuantLib.new_UnitedKingdom(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_UnitedKingdom):
        try:
            if self.thisown: destroy(self)
        except: pass

class UnitedKingdomPtr(UnitedKingdom):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = UnitedKingdom
_QuantLib.UnitedKingdom_swigregister(UnitedKingdomPtr)

class UnitedStates(Calendar):
    def __repr__(self):
        return "<C QuantLib::UnitedStates instance at %s>" % (self.this,)
    Settlement = _QuantLib.UnitedStates_Settlement
    Exchange = _QuantLib.UnitedStates_Exchange
    GovernmentBond = _QuantLib.UnitedStates_GovernmentBond
    def __init__(self, *args):
        newobj = _QuantLib.new_UnitedStates(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_UnitedStates):
        try:
            if self.thisown: destroy(self)
        except: pass

class UnitedStatesPtr(UnitedStates):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = UnitedStates
_QuantLib.UnitedStates_swigregister(UnitedStatesPtr)

class Warsaw(Calendar):
    def __repr__(self):
        return "<C QuantLib::Warsaw instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Warsaw(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Warsaw):
        try:
            if self.thisown: destroy(self)
        except: pass

class WarsawPtr(Warsaw):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Warsaw
_QuantLib.Warsaw_swigregister(WarsawPtr)

class Wellington(Calendar):
    def __repr__(self):
        return "<C QuantLib::Wellington instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Wellington(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Wellington):
        try:
            if self.thisown: destroy(self)
        except: pass

class WellingtonPtr(Wellington):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Wellington
_QuantLib.Wellington_swigregister(WellingtonPtr)

class Zurich(Calendar):
    def __repr__(self):
        return "<C QuantLib::Zurich instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Zurich(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Zurich):
        try:
            if self.thisown: destroy(self)
        except: pass

class ZurichPtr(Zurich):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Zurich
_QuantLib.Zurich_swigregister(ZurichPtr)

class JointCalendar(Calendar):
    def __repr__(self):
        return "<C QuantLib::JointCalendar instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_JointCalendar(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_JointCalendar):
        try:
            if self.thisown: destroy(self)
        except: pass

class JointCalendarPtr(JointCalendar):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = JointCalendar
_QuantLib.JointCalendar_swigregister(JointCalendarPtr)

class Rounding(object):
    def __repr__(self):
        return "<C Rounding instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Rounding(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.Rounding___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_Rounding):
        try:
            if self.thisown: destroy(self)
        except: pass

class RoundingPtr(Rounding):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Rounding
_QuantLib.Rounding_swigregister(RoundingPtr)

class UpRounding(Rounding):
    def __repr__(self):
        return "<C UpRounding instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_UpRounding(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_UpRounding):
        try:
            if self.thisown: destroy(self)
        except: pass

class UpRoundingPtr(UpRounding):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = UpRounding
_QuantLib.UpRounding_swigregister(UpRoundingPtr)

class DownRounding(Rounding):
    def __repr__(self):
        return "<C DownRounding instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DownRounding(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DownRounding):
        try:
            if self.thisown: destroy(self)
        except: pass

class DownRoundingPtr(DownRounding):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DownRounding
_QuantLib.DownRounding_swigregister(DownRoundingPtr)

class ClosestRounding(Rounding):
    def __repr__(self):
        return "<C ClosestRounding instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ClosestRounding(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ClosestRounding):
        try:
            if self.thisown: destroy(self)
        except: pass

class ClosestRoundingPtr(ClosestRounding):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ClosestRounding
_QuantLib.ClosestRounding_swigregister(ClosestRoundingPtr)

class CeilingTruncation(Rounding):
    def __repr__(self):
        return "<C CeilingTruncation instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CeilingTruncation(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CeilingTruncation):
        try:
            if self.thisown: destroy(self)
        except: pass

class CeilingTruncationPtr(CeilingTruncation):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CeilingTruncation
_QuantLib.CeilingTruncation_swigregister(CeilingTruncationPtr)

class FloorTruncation(Rounding):
    def __repr__(self):
        return "<C FloorTruncation instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FloorTruncation(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FloorTruncation):
        try:
            if self.thisown: destroy(self)
        except: pass

class FloorTruncationPtr(FloorTruncation):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FloorTruncation
_QuantLib.FloorTruncation_swigregister(FloorTruncationPtr)

class Currency(object):
    def __repr__(self):
        return "<C Currency instance at %s>" % (self.this,)
    def name(*args): return _QuantLib.Currency_name(*args)
    def code(*args): return _QuantLib.Currency_code(*args)
    def numericCode(*args): return _QuantLib.Currency_numericCode(*args)
    def symbol(*args): return _QuantLib.Currency_symbol(*args)
    def fractionSymbol(*args): return _QuantLib.Currency_fractionSymbol(*args)
    def fractionsPerUnit(*args): return _QuantLib.Currency_fractionsPerUnit(*args)
    def rounding(*args): return _QuantLib.Currency_rounding(*args)
    def __nonzero__(*args): return _QuantLib.Currency___nonzero__(*args)
    def triangulationCurrency(*args): return _QuantLib.Currency_triangulationCurrency(*args)
    def __str__(*args): return _QuantLib.Currency___str__(*args)
    def __eq__(*args): return _QuantLib.Currency___eq__(*args)
    def __ne__(*args): return _QuantLib.Currency___ne__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Currency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Currency):
        try:
            if self.thisown: destroy(self)
        except: pass

class CurrencyPtr(Currency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Currency
_QuantLib.Currency_swigregister(CurrencyPtr)

class ARSCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ARSCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ARSCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ARSCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ARSCurrencyPtr(ARSCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ARSCurrency
_QuantLib.ARSCurrency_swigregister(ARSCurrencyPtr)

class ATSCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ATSCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ATSCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ATSCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ATSCurrencyPtr(ATSCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ATSCurrency
_QuantLib.ATSCurrency_swigregister(ATSCurrencyPtr)

class AUDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::AUDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AUDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AUDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class AUDCurrencyPtr(AUDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AUDCurrency
_QuantLib.AUDCurrency_swigregister(AUDCurrencyPtr)

class BDTCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::BDTCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BDTCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BDTCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class BDTCurrencyPtr(BDTCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BDTCurrency
_QuantLib.BDTCurrency_swigregister(BDTCurrencyPtr)

class BEFCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::BEFCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BEFCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BEFCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class BEFCurrencyPtr(BEFCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BEFCurrency
_QuantLib.BEFCurrency_swigregister(BEFCurrencyPtr)

class BGLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::BGLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BGLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BGLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class BGLCurrencyPtr(BGLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BGLCurrency
_QuantLib.BGLCurrency_swigregister(BGLCurrencyPtr)

class BRLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::BRLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BRLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BRLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class BRLCurrencyPtr(BRLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BRLCurrency
_QuantLib.BRLCurrency_swigregister(BRLCurrencyPtr)

class BYRCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::BYRCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BYRCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BYRCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class BYRCurrencyPtr(BYRCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BYRCurrency
_QuantLib.BYRCurrency_swigregister(BYRCurrencyPtr)

class CADCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::CADCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CADCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CADCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class CADCurrencyPtr(CADCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CADCurrency
_QuantLib.CADCurrency_swigregister(CADCurrencyPtr)

class CHFCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::CHFCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CHFCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CHFCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class CHFCurrencyPtr(CHFCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CHFCurrency
_QuantLib.CHFCurrency_swigregister(CHFCurrencyPtr)

class CLPCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::CLPCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CLPCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CLPCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class CLPCurrencyPtr(CLPCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CLPCurrency
_QuantLib.CLPCurrency_swigregister(CLPCurrencyPtr)

class CNYCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::CNYCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CNYCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CNYCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class CNYCurrencyPtr(CNYCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CNYCurrency
_QuantLib.CNYCurrency_swigregister(CNYCurrencyPtr)

class COPCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::COPCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_COPCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_COPCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class COPCurrencyPtr(COPCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = COPCurrency
_QuantLib.COPCurrency_swigregister(COPCurrencyPtr)

class CYPCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::CYPCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CYPCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CYPCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class CYPCurrencyPtr(CYPCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CYPCurrency
_QuantLib.CYPCurrency_swigregister(CYPCurrencyPtr)

class CZKCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::CZKCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CZKCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CZKCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class CZKCurrencyPtr(CZKCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CZKCurrency
_QuantLib.CZKCurrency_swigregister(CZKCurrencyPtr)

class DEMCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::DEMCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DEMCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DEMCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class DEMCurrencyPtr(DEMCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DEMCurrency
_QuantLib.DEMCurrency_swigregister(DEMCurrencyPtr)

class DKKCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::DKKCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DKKCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DKKCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class DKKCurrencyPtr(DKKCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DKKCurrency
_QuantLib.DKKCurrency_swigregister(DKKCurrencyPtr)

class EEKCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::EEKCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_EEKCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_EEKCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class EEKCurrencyPtr(EEKCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = EEKCurrency
_QuantLib.EEKCurrency_swigregister(EEKCurrencyPtr)

class ESPCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ESPCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ESPCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ESPCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ESPCurrencyPtr(ESPCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ESPCurrency
_QuantLib.ESPCurrency_swigregister(ESPCurrencyPtr)

class EURCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::EURCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_EURCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_EURCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class EURCurrencyPtr(EURCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = EURCurrency
_QuantLib.EURCurrency_swigregister(EURCurrencyPtr)

class FIMCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::FIMCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FIMCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FIMCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class FIMCurrencyPtr(FIMCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FIMCurrency
_QuantLib.FIMCurrency_swigregister(FIMCurrencyPtr)

class FRFCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::FRFCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FRFCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FRFCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class FRFCurrencyPtr(FRFCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FRFCurrency
_QuantLib.FRFCurrency_swigregister(FRFCurrencyPtr)

class GBPCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::GBPCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GBPCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_GBPCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class GBPCurrencyPtr(GBPCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GBPCurrency
_QuantLib.GBPCurrency_swigregister(GBPCurrencyPtr)

class GRDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::GRDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GRDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_GRDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class GRDCurrencyPtr(GRDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GRDCurrency
_QuantLib.GRDCurrency_swigregister(GRDCurrencyPtr)

class HKDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::HKDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_HKDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_HKDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class HKDCurrencyPtr(HKDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HKDCurrency
_QuantLib.HKDCurrency_swigregister(HKDCurrencyPtr)

class HUFCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::HUFCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_HUFCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_HUFCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class HUFCurrencyPtr(HUFCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HUFCurrency
_QuantLib.HUFCurrency_swigregister(HUFCurrencyPtr)

class IEPCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::IEPCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_IEPCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_IEPCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class IEPCurrencyPtr(IEPCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = IEPCurrency
_QuantLib.IEPCurrency_swigregister(IEPCurrencyPtr)

class ILSCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ILSCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ILSCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ILSCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ILSCurrencyPtr(ILSCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ILSCurrency
_QuantLib.ILSCurrency_swigregister(ILSCurrencyPtr)

class INRCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::INRCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_INRCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_INRCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class INRCurrencyPtr(INRCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = INRCurrency
_QuantLib.INRCurrency_swigregister(INRCurrencyPtr)

class IQDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::IQDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_IQDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_IQDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class IQDCurrencyPtr(IQDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = IQDCurrency
_QuantLib.IQDCurrency_swigregister(IQDCurrencyPtr)

class IRRCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::IRRCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_IRRCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_IRRCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class IRRCurrencyPtr(IRRCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = IRRCurrency
_QuantLib.IRRCurrency_swigregister(IRRCurrencyPtr)

class ISKCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ISKCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ISKCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ISKCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ISKCurrencyPtr(ISKCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ISKCurrency
_QuantLib.ISKCurrency_swigregister(ISKCurrencyPtr)

class ITLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ITLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ITLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ITLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ITLCurrencyPtr(ITLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ITLCurrency
_QuantLib.ITLCurrency_swigregister(ITLCurrencyPtr)

class JPYCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::JPYCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_JPYCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_JPYCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class JPYCurrencyPtr(JPYCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = JPYCurrency
_QuantLib.JPYCurrency_swigregister(JPYCurrencyPtr)

class KRWCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::KRWCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_KRWCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_KRWCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class KRWCurrencyPtr(KRWCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = KRWCurrency
_QuantLib.KRWCurrency_swigregister(KRWCurrencyPtr)

class KWDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::KWDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_KWDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_KWDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class KWDCurrencyPtr(KWDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = KWDCurrency
_QuantLib.KWDCurrency_swigregister(KWDCurrencyPtr)

class LTLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::LTLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LTLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_LTLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class LTLCurrencyPtr(LTLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LTLCurrency
_QuantLib.LTLCurrency_swigregister(LTLCurrencyPtr)

class LUFCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::LUFCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LUFCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_LUFCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class LUFCurrencyPtr(LUFCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LUFCurrency
_QuantLib.LUFCurrency_swigregister(LUFCurrencyPtr)

class LVLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::LVLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LVLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_LVLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class LVLCurrencyPtr(LVLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LVLCurrency
_QuantLib.LVLCurrency_swigregister(LVLCurrencyPtr)

class MTLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::MTLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MTLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_MTLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class MTLCurrencyPtr(MTLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MTLCurrency
_QuantLib.MTLCurrency_swigregister(MTLCurrencyPtr)

class MXNCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::MXNCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MXNCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_MXNCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class MXNCurrencyPtr(MXNCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MXNCurrency
_QuantLib.MXNCurrency_swigregister(MXNCurrencyPtr)

class NLGCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::NLGCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NLGCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NLGCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class NLGCurrencyPtr(NLGCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NLGCurrency
_QuantLib.NLGCurrency_swigregister(NLGCurrencyPtr)

class NOKCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::NOKCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NOKCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NOKCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class NOKCurrencyPtr(NOKCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NOKCurrency
_QuantLib.NOKCurrency_swigregister(NOKCurrencyPtr)

class NPRCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::NPRCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NPRCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NPRCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class NPRCurrencyPtr(NPRCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NPRCurrency
_QuantLib.NPRCurrency_swigregister(NPRCurrencyPtr)

class NZDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::NZDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NZDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NZDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class NZDCurrencyPtr(NZDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NZDCurrency
_QuantLib.NZDCurrency_swigregister(NZDCurrencyPtr)

class PKRCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::PKRCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PKRCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_PKRCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class PKRCurrencyPtr(PKRCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PKRCurrency
_QuantLib.PKRCurrency_swigregister(PKRCurrencyPtr)

class PLNCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::PLNCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PLNCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_PLNCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class PLNCurrencyPtr(PLNCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PLNCurrency
_QuantLib.PLNCurrency_swigregister(PLNCurrencyPtr)

class PTECurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::PTECurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PTECurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_PTECurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class PTECurrencyPtr(PTECurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PTECurrency
_QuantLib.PTECurrency_swigregister(PTECurrencyPtr)

class ROLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ROLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ROLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ROLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ROLCurrencyPtr(ROLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ROLCurrency
_QuantLib.ROLCurrency_swigregister(ROLCurrencyPtr)

class SARCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::SARCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SARCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SARCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class SARCurrencyPtr(SARCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SARCurrency
_QuantLib.SARCurrency_swigregister(SARCurrencyPtr)

class SEKCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::SEKCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SEKCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SEKCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class SEKCurrencyPtr(SEKCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SEKCurrency
_QuantLib.SEKCurrency_swigregister(SEKCurrencyPtr)

class SGDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::SGDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SGDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SGDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class SGDCurrencyPtr(SGDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SGDCurrency
_QuantLib.SGDCurrency_swigregister(SGDCurrencyPtr)

class SITCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::SITCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SITCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SITCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class SITCurrencyPtr(SITCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SITCurrency
_QuantLib.SITCurrency_swigregister(SITCurrencyPtr)

class SKKCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::SKKCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SKKCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SKKCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class SKKCurrencyPtr(SKKCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SKKCurrency
_QuantLib.SKKCurrency_swigregister(SKKCurrencyPtr)

class THBCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::THBCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_THBCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_THBCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class THBCurrencyPtr(THBCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = THBCurrency
_QuantLib.THBCurrency_swigregister(THBCurrencyPtr)

class TRLCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::TRLCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TRLCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_TRLCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class TRLCurrencyPtr(TRLCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TRLCurrency
_QuantLib.TRLCurrency_swigregister(TRLCurrencyPtr)

class TTDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::TTDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TTDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_TTDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class TTDCurrencyPtr(TTDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TTDCurrency
_QuantLib.TTDCurrency_swigregister(TTDCurrencyPtr)

class TWDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::TWDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TWDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_TWDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class TWDCurrencyPtr(TWDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TWDCurrency
_QuantLib.TWDCurrency_swigregister(TWDCurrencyPtr)

class USDCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::USDCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_USDCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_USDCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class USDCurrencyPtr(USDCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = USDCurrency
_QuantLib.USDCurrency_swigregister(USDCurrencyPtr)

class VEBCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::VEBCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_VEBCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_VEBCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class VEBCurrencyPtr(VEBCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = VEBCurrency
_QuantLib.VEBCurrency_swigregister(VEBCurrencyPtr)

class ZARCurrency(Currency):
    def __repr__(self):
        return "<C QuantLib::ZARCurrency instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ZARCurrency(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ZARCurrency):
        try:
            if self.thisown: destroy(self)
        except: pass

class ZARCurrencyPtr(ZARCurrency):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ZARCurrency
_QuantLib.ZARCurrency_swigregister(ZARCurrencyPtr)

class LinearInterpolation(object):
    def __repr__(self):
        return "<C SafeLinearInterpolation instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LinearInterpolation(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.LinearInterpolation___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_LinearInterpolation):
        try:
            if self.thisown: destroy(self)
        except: pass

class LinearInterpolationPtr(LinearInterpolation):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LinearInterpolation
_QuantLib.LinearInterpolation_swigregister(LinearInterpolationPtr)

class LogLinearInterpolation(object):
    def __repr__(self):
        return "<C SafeLogLinearInterpolation instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LogLinearInterpolation(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.LogLinearInterpolation___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_LogLinearInterpolation):
        try:
            if self.thisown: destroy(self)
        except: pass

class LogLinearInterpolationPtr(LogLinearInterpolation):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LogLinearInterpolation
_QuantLib.LogLinearInterpolation_swigregister(LogLinearInterpolationPtr)

class BackwardFlatInterpolation(object):
    def __repr__(self):
        return "<C SafeBackwardFlatInterpolation instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BackwardFlatInterpolation(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.BackwardFlatInterpolation___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_BackwardFlatInterpolation):
        try:
            if self.thisown: destroy(self)
        except: pass

class BackwardFlatInterpolationPtr(BackwardFlatInterpolation):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BackwardFlatInterpolation
_QuantLib.BackwardFlatInterpolation_swigregister(BackwardFlatInterpolationPtr)

class ForwardFlatInterpolation(object):
    def __repr__(self):
        return "<C SafeForwardFlatInterpolation instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ForwardFlatInterpolation(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.ForwardFlatInterpolation___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_ForwardFlatInterpolation):
        try:
            if self.thisown: destroy(self)
        except: pass

class ForwardFlatInterpolationPtr(ForwardFlatInterpolation):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ForwardFlatInterpolation
_QuantLib.ForwardFlatInterpolation_swigregister(ForwardFlatInterpolationPtr)

class CubicSpline(object):
    def __repr__(self):
        return "<C SafeNaturalCubicSpline instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CubicSpline(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.CubicSpline___call__(*args)
    def derivative(*args): return _QuantLib.CubicSpline_derivative(*args)
    def secondDerivative(*args): return _QuantLib.CubicSpline_secondDerivative(*args)
    def __del__(self, destroy=_QuantLib.delete_CubicSpline):
        try:
            if self.thisown: destroy(self)
        except: pass

class CubicSplinePtr(CubicSpline):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CubicSpline
_QuantLib.CubicSpline_swigregister(CubicSplinePtr)

class MonotonicCubicSpline(object):
    def __repr__(self):
        return "<C SafeNaturalMonotonicCubicSpline instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MonotonicCubicSpline(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.MonotonicCubicSpline___call__(*args)
    def derivative(*args): return _QuantLib.MonotonicCubicSpline_derivative(*args)
    def secondDerivative(*args): return _QuantLib.MonotonicCubicSpline_secondDerivative(*args)
    def __del__(self, destroy=_QuantLib.delete_MonotonicCubicSpline):
        try:
            if self.thisown: destroy(self)
        except: pass

class MonotonicCubicSplinePtr(MonotonicCubicSpline):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MonotonicCubicSpline
_QuantLib.MonotonicCubicSpline_swigregister(MonotonicCubicSplinePtr)

class BilinearInterpolation(object):
    def __repr__(self):
        return "<C SafeBilinearInterpolation instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BilinearInterpolation(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.BilinearInterpolation___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_BilinearInterpolation):
        try:
            if self.thisown: destroy(self)
        except: pass

class BilinearInterpolationPtr(BilinearInterpolation):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BilinearInterpolation
_QuantLib.BilinearInterpolation_swigregister(BilinearInterpolationPtr)

class BicubicSpline(object):
    def __repr__(self):
        return "<C SafeBicubicSpline instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BicubicSpline(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.BicubicSpline___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_BicubicSpline):
        try:
            if self.thisown: destroy(self)
        except: pass

class BicubicSplinePtr(BicubicSpline):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BicubicSpline
_QuantLib.BicubicSpline_swigregister(BicubicSplinePtr)

class YieldTermStructure(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(YieldTermStructure)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.YieldTermStructure___deref__(*args)
    def __nonzero__(*args): return _QuantLib.YieldTermStructure___nonzero__(*args)
    def asObservable(*args): return _QuantLib.YieldTermStructure_asObservable(*args)
    def dayCounter(*args): return _QuantLib.YieldTermStructure_dayCounter(*args)
    def calendar(*args): return _QuantLib.YieldTermStructure_calendar(*args)
    def referenceDate(*args): return _QuantLib.YieldTermStructure_referenceDate(*args)
    def maxDate(*args): return _QuantLib.YieldTermStructure_maxDate(*args)
    def maxTime(*args): return _QuantLib.YieldTermStructure_maxTime(*args)
    def discount(*args): return _QuantLib.YieldTermStructure_discount(*args)
    def zeroRate(*args): return _QuantLib.YieldTermStructure_zeroRate(*args)
    def forwardRate(*args): return _QuantLib.YieldTermStructure_forwardRate(*args)
    def enableExtrapolation(*args): return _QuantLib.YieldTermStructure_enableExtrapolation(*args)
    def disableExtrapolation(*args): return _QuantLib.YieldTermStructure_disableExtrapolation(*args)
    def allowsExtrapolation(*args): return _QuantLib.YieldTermStructure_allowsExtrapolation(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_YieldTermStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_YieldTermStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class YieldTermStructurePtr(YieldTermStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = YieldTermStructure
_QuantLib.YieldTermStructure_swigregister(YieldTermStructurePtr)

class YieldTermStructureHandle(object):
    def __repr__(self):
        return "<C Handle<(YieldTermStructure)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_YieldTermStructureHandle(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __deref__(*args): return _QuantLib.YieldTermStructureHandle___deref__(*args)
    def linkTo(*args): return _QuantLib.YieldTermStructureHandle_linkTo(*args)
    def __nonzero__(*args): return _QuantLib.YieldTermStructureHandle___nonzero__(*args)
    def asObservable(*args): return _QuantLib.YieldTermStructureHandle_asObservable(*args)
    def dayCounter(*args): return _QuantLib.YieldTermStructureHandle_dayCounter(*args)
    def calendar(*args): return _QuantLib.YieldTermStructureHandle_calendar(*args)
    def referenceDate(*args): return _QuantLib.YieldTermStructureHandle_referenceDate(*args)
    def maxDate(*args): return _QuantLib.YieldTermStructureHandle_maxDate(*args)
    def maxTime(*args): return _QuantLib.YieldTermStructureHandle_maxTime(*args)
    def discount(*args): return _QuantLib.YieldTermStructureHandle_discount(*args)
    def zeroRate(*args): return _QuantLib.YieldTermStructureHandle_zeroRate(*args)
    def forwardRate(*args): return _QuantLib.YieldTermStructureHandle_forwardRate(*args)
    def enableExtrapolation(*args): return _QuantLib.YieldTermStructureHandle_enableExtrapolation(*args)
    def disableExtrapolation(*args): return _QuantLib.YieldTermStructureHandle_disableExtrapolation(*args)
    def allowsExtrapolation(*args): return _QuantLib.YieldTermStructureHandle_allowsExtrapolation(*args)
    def __del__(self, destroy=_QuantLib.delete_YieldTermStructureHandle):
        try:
            if self.thisown: destroy(self)
        except: pass

class YieldTermStructureHandlePtr(YieldTermStructureHandle):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = YieldTermStructureHandle
_QuantLib.YieldTermStructureHandle_swigregister(YieldTermStructureHandlePtr)

class ImpliedTermStructure(YieldTermStructure):
    def __repr__(self):
        return "<C ImpliedTermStructurePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ImpliedTermStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ImpliedTermStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class ImpliedTermStructurePtr(ImpliedTermStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ImpliedTermStructure
_QuantLib.ImpliedTermStructure_swigregister(ImpliedTermStructurePtr)

class ZeroSpreadedTermStructure(YieldTermStructure):
    def __repr__(self):
        return "<C ZeroSpreadedTermStructurePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ZeroSpreadedTermStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ZeroSpreadedTermStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class ZeroSpreadedTermStructurePtr(ZeroSpreadedTermStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ZeroSpreadedTermStructure
_QuantLib.ZeroSpreadedTermStructure_swigregister(ZeroSpreadedTermStructurePtr)

class ForwardSpreadedTermStructure(YieldTermStructure):
    def __repr__(self):
        return "<C ForwardSpreadedTermStructurePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ForwardSpreadedTermStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ForwardSpreadedTermStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class ForwardSpreadedTermStructurePtr(ForwardSpreadedTermStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ForwardSpreadedTermStructure
_QuantLib.ForwardSpreadedTermStructure_swigregister(ForwardSpreadedTermStructurePtr)

class FlatForward(YieldTermStructure):
    def __repr__(self):
        return "<C FlatForwardPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FlatForward(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FlatForward):
        try:
            if self.thisown: destroy(self)
        except: pass

class FlatForwardPtr(FlatForward):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FlatForward
_QuantLib.FlatForward_swigregister(FlatForwardPtr)

class BlackModel(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(BlackModel)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.BlackModel___deref__(*args)
    def __nonzero__(*args): return _QuantLib.BlackModel___nonzero__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackModel(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackModel):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackModelPtr(BlackModel):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackModel
_QuantLib.BlackModel_swigregister(BlackModelPtr)

class PricingEngine(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(PricingEngine)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.PricingEngine___deref__(*args)
    def __nonzero__(*args): return _QuantLib.PricingEngine___nonzero__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_PricingEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_PricingEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class PricingEnginePtr(PricingEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PricingEngine
_QuantLib.PricingEngine_swigregister(PricingEnginePtr)

class Instrument(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(Instrument)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.Instrument___deref__(*args)
    def __nonzero__(*args): return _QuantLib.Instrument___nonzero__(*args)
    def asObservable(*args): return _QuantLib.Instrument_asObservable(*args)
    def NPV(*args): return _QuantLib.Instrument_NPV(*args)
    def errorEstimate(*args): return _QuantLib.Instrument_errorEstimate(*args)
    def isExpired(*args): return _QuantLib.Instrument_isExpired(*args)
    def setPricingEngine(*args): return _QuantLib.Instrument_setPricingEngine(*args)
    def recalculate(*args): return _QuantLib.Instrument_recalculate(*args)
    def freeze(*args): return _QuantLib.Instrument_freeze(*args)
    def unfreeze(*args): return _QuantLib.Instrument_unfreeze(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Instrument(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Instrument):
        try:
            if self.thisown: destroy(self)
        except: pass

class InstrumentPtr(Instrument):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Instrument
_QuantLib.Instrument_swigregister(InstrumentPtr)

class Stock(Instrument):
    def __repr__(self):
        return "<C StockPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Stock(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Stock):
        try:
            if self.thisown: destroy(self)
        except: pass

class StockPtr(Stock):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Stock
_QuantLib.Stock_swigregister(StockPtr)

class IntVector(object):
    def __repr__(self):
        return "<C std::vector<(int)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_IntVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.IntVector___len__(*args)
    def __nonzero__(*args): return _QuantLib.IntVector___nonzero__(*args)
    def clear(*args): return _QuantLib.IntVector_clear(*args)
    def append(*args): return _QuantLib.IntVector_append(*args)
    def pop(*args): return _QuantLib.IntVector_pop(*args)
    def __getitem__(*args): return _QuantLib.IntVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.IntVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.IntVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.IntVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.IntVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.IntVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_IntVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class IntVectorPtr(IntVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = IntVector
_QuantLib.IntVector_swigregister(IntVectorPtr)

class DoubleVector(object):
    def __repr__(self):
        return "<C std::vector<(double)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DoubleVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.DoubleVector___len__(*args)
    def __nonzero__(*args): return _QuantLib.DoubleVector___nonzero__(*args)
    def clear(*args): return _QuantLib.DoubleVector_clear(*args)
    def append(*args): return _QuantLib.DoubleVector_append(*args)
    def pop(*args): return _QuantLib.DoubleVector_pop(*args)
    def __getitem__(*args): return _QuantLib.DoubleVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.DoubleVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.DoubleVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.DoubleVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.DoubleVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.DoubleVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_DoubleVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class DoubleVectorPtr(DoubleVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DoubleVector
_QuantLib.DoubleVector_swigregister(DoubleVectorPtr)

class StrVector(object):
    def __repr__(self):
        return "<C std::vector<(std::string)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_StrVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.StrVector___len__(*args)
    def __nonzero__(*args): return _QuantLib.StrVector___nonzero__(*args)
    def clear(*args): return _QuantLib.StrVector_clear(*args)
    def append(*args): return _QuantLib.StrVector_append(*args)
    def pop(*args): return _QuantLib.StrVector_pop(*args)
    def __getitem__(*args): return _QuantLib.StrVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.StrVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.StrVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.StrVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.StrVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.StrVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_StrVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class StrVectorPtr(StrVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = StrVector
_QuantLib.StrVector_swigregister(StrVectorPtr)

class HistoryEntry(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C HistoryEntry instance at %s>" % (self.this,)
    def __del__(self, destroy=_QuantLib.delete_HistoryEntry):
        try:
            if self.thisown: destroy(self)
        except: pass

class HistoryEntryPtr(HistoryEntry):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HistoryEntry
_QuantLib.HistoryEntry_swigregister(HistoryEntryPtr)

class HistoryIterator(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C HistoryIterator instance at %s>" % (self.this,)
    def next(*args): return _QuantLib.HistoryIterator_next(*args)
    def __del__(self, destroy=_QuantLib.delete_HistoryIterator):
        try:
            if self.thisown: destroy(self)
        except: pass

class HistoryIteratorPtr(HistoryIterator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HistoryIterator
_QuantLib.HistoryIterator_swigregister(HistoryIteratorPtr)

class HistoryValidIterator(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C HistoryValidIterator instance at %s>" % (self.this,)
    def next(*args): return _QuantLib.HistoryValidIterator_next(*args)
    def __iter__(*args): return _QuantLib.HistoryValidIterator___iter__(*args)
    def __del__(self, destroy=_QuantLib.delete_HistoryValidIterator):
        try:
            if self.thisown: destroy(self)
        except: pass

class HistoryValidIteratorPtr(HistoryValidIterator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HistoryValidIterator
_QuantLib.HistoryValidIterator_swigregister(HistoryValidIteratorPtr)

class History(object):
    def __repr__(self):
        return "<C History instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_History(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def firstDate(*args): return _QuantLib.History_firstDate(*args)
    def lastDate(*args): return _QuantLib.History_lastDate(*args)
    def __len__(*args): return _QuantLib.History___len__(*args)
    def __getitem__(*args): return _QuantLib.History___getitem__(*args)
    def __iter__(*args): return _QuantLib.History___iter__(*args)
    def valid(*args): return _QuantLib.History_valid(*args)
    def __del__(self, destroy=_QuantLib.delete_History):
        try:
            if self.thisown: destroy(self)
        except: pass

class HistoryPtr(History):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = History
_QuantLib.History_swigregister(HistoryPtr)

History._old___init__ = History.__init__
def History_new___init__(self,dates,values):
    values = values[:]
    for i in range(len(values)):
        values[i] = values[i] or nullDouble()
    self._old___init__(dates,values)
History.__init__ = History_new___init__

class IndexManager(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C IndexManager instance at %s>" % (self.this,)
    instance = staticmethod(_QuantLib.IndexManager_instance)
    def setHistory(*args): return _QuantLib.IndexManager_setHistory(*args)
    def getHistory(*args): return _QuantLib.IndexManager_getHistory(*args)
    def hasHistory(*args): return _QuantLib.IndexManager_hasHistory(*args)
    def histories(*args): return _QuantLib.IndexManager_histories(*args)
    def __del__(self, destroy=_QuantLib.delete_IndexManager):
        try:
            if self.thisown: destroy(self)
        except: pass

class IndexManagerPtr(IndexManager):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = IndexManager
_QuantLib.IndexManager_swigregister(IndexManagerPtr)

IndexManager_instance = _QuantLib.IndexManager_instance

class Index(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(Index)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.Index___deref__(*args)
    def __nonzero__(*args): return _QuantLib.Index___nonzero__(*args)
    def __str__(*args): return _QuantLib.Index___str__(*args)
    def fixing(*args): return _QuantLib.Index_fixing(*args)
    def name(*args): return _QuantLib.Index_name(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Index(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Index):
        try:
            if self.thisown: destroy(self)
        except: pass

class IndexPtr(Index):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Index
_QuantLib.Index_swigregister(IndexPtr)

class Xibor(Index):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C XiborPtr instance at %s>" % (self.this,)
    def tenor(*args): return _QuantLib.Xibor_tenor(*args)
    def currency(*args): return _QuantLib.Xibor_currency(*args)
    def calendar(*args): return _QuantLib.Xibor_calendar(*args)
    def isAdjusted(*args): return _QuantLib.Xibor_isAdjusted(*args)
    def businessDayConvention(*args): return _QuantLib.Xibor_businessDayConvention(*args)
    def dayCounter(*args): return _QuantLib.Xibor_dayCounter(*args)
    def __del__(self, destroy=_QuantLib.delete_Xibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class XiborPtr(Xibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Xibor
_QuantLib.Xibor_swigregister(XiborPtr)

class AUDLibor(Xibor):
    def __repr__(self):
        return "<C AUDLiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AUDLibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AUDLibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class AUDLiborPtr(AUDLibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AUDLibor
_QuantLib.AUDLibor_swigregister(AUDLiborPtr)

class CADLibor(Xibor):
    def __repr__(self):
        return "<C CADLiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CADLibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CADLibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class CADLiborPtr(CADLibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CADLibor
_QuantLib.CADLibor_swigregister(CADLiborPtr)

class Cdor(Xibor):
    def __repr__(self):
        return "<C CdorPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Cdor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Cdor):
        try:
            if self.thisown: destroy(self)
        except: pass

class CdorPtr(Cdor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Cdor
_QuantLib.Cdor_swigregister(CdorPtr)

class CHFLibor(Xibor):
    def __repr__(self):
        return "<C CHFLiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CHFLibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CHFLibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class CHFLiborPtr(CHFLibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CHFLibor
_QuantLib.CHFLibor_swigregister(CHFLiborPtr)

class Euribor(Xibor):
    def __repr__(self):
        return "<C EuriborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Euribor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Euribor):
        try:
            if self.thisown: destroy(self)
        except: pass

class EuriborPtr(Euribor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Euribor
_QuantLib.Euribor_swigregister(EuriborPtr)

class GBPLibor(Xibor):
    def __repr__(self):
        return "<C GBPLiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GBPLibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_GBPLibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class GBPLiborPtr(GBPLibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GBPLibor
_QuantLib.GBPLibor_swigregister(GBPLiborPtr)

class Jibar(Xibor):
    def __repr__(self):
        return "<C JibarPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Jibar(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Jibar):
        try:
            if self.thisown: destroy(self)
        except: pass

class JibarPtr(Jibar):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Jibar
_QuantLib.Jibar_swigregister(JibarPtr)

class JPYLibor(Xibor):
    def __repr__(self):
        return "<C JPYLiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_JPYLibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_JPYLibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class JPYLiborPtr(JPYLibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = JPYLibor
_QuantLib.JPYLibor_swigregister(JPYLiborPtr)

class Tibor(Xibor):
    def __repr__(self):
        return "<C TiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Tibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Tibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class TiborPtr(Tibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Tibor
_QuantLib.Tibor_swigregister(TiborPtr)

class USDLibor(Xibor):
    def __repr__(self):
        return "<C USDLiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_USDLibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_USDLibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class USDLiborPtr(USDLibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = USDLibor
_QuantLib.USDLibor_swigregister(USDLiborPtr)

class ZARLibor(Xibor):
    def __repr__(self):
        return "<C ZARLiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ZARLibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ZARLibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class ZARLiborPtr(ZARLibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ZARLibor
_QuantLib.ZARLibor_swigregister(ZARLiborPtr)

class Zibor(Xibor):
    def __repr__(self):
        return "<C ZiborPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Zibor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Zibor):
        try:
            if self.thisown: destroy(self)
        except: pass

class ZiborPtr(Zibor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Zibor
_QuantLib.Zibor_swigregister(ZiborPtr)

class Bond(Instrument):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C BondPtr instance at %s>" % (self.this,)
    def settlementDate(*args): return _QuantLib.Bond_settlementDate(*args)
    def cleanPrice(*args): return _QuantLib.Bond_cleanPrice(*args)
    def dirtyPrice(*args): return _QuantLib.Bond_dirtyPrice(*args)
    def bondYield(*args): return _QuantLib.Bond_bondYield(*args)
    def accruedAmount(*args): return _QuantLib.Bond_accruedAmount(*args)
    def __del__(self, destroy=_QuantLib.delete_Bond):
        try:
            if self.thisown: destroy(self)
        except: pass

class BondPtr(Bond):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Bond
_QuantLib.Bond_swigregister(BondPtr)

class ZeroCouponBond(Bond):
    def __repr__(self):
        return "<C ZeroCouponBondPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ZeroCouponBond(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ZeroCouponBond):
        try:
            if self.thisown: destroy(self)
        except: pass

class ZeroCouponBondPtr(ZeroCouponBond):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ZeroCouponBond
_QuantLib.ZeroCouponBond_swigregister(ZeroCouponBondPtr)

class FixedCouponBond(Bond):
    def __repr__(self):
        return "<C FixedCouponBondPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FixedCouponBond(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FixedCouponBond):
        try:
            if self.thisown: destroy(self)
        except: pass

class FixedCouponBondPtr(FixedCouponBond):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FixedCouponBond
_QuantLib.FixedCouponBond_swigregister(FixedCouponBondPtr)

class FloatingRateBond(Bond):
    def __repr__(self):
        return "<C FloatingRateBondPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FloatingRateBond(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FloatingRateBond):
        try:
            if self.thisown: destroy(self)
        except: pass

class FloatingRateBondPtr(FloatingRateBond):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FloatingRateBond
_QuantLib.FloatingRateBond_swigregister(FloatingRateBondPtr)

class Exercise(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(Exercise)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.Exercise___deref__(*args)
    def __nonzero__(*args): return _QuantLib.Exercise___nonzero__(*args)
    def type(*args): return _QuantLib.Exercise_type(*args)
    def dates(*args): return _QuantLib.Exercise_dates(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Exercise(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Exercise):
        try:
            if self.thisown: destroy(self)
        except: pass

class ExercisePtr(Exercise):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Exercise
_QuantLib.Exercise_swigregister(ExercisePtr)

class EuropeanExercise(Exercise):
    def __repr__(self):
        return "<C EuropeanExercisePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_EuropeanExercise(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_EuropeanExercise):
        try:
            if self.thisown: destroy(self)
        except: pass

class EuropeanExercisePtr(EuropeanExercise):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = EuropeanExercise
_QuantLib.EuropeanExercise_swigregister(EuropeanExercisePtr)

class AmericanExercise(Exercise):
    def __repr__(self):
        return "<C AmericanExercisePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AmericanExercise(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AmericanExercise):
        try:
            if self.thisown: destroy(self)
        except: pass

class AmericanExercisePtr(AmericanExercise):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AmericanExercise
_QuantLib.AmericanExercise_swigregister(AmericanExercisePtr)

class BermudanExercise(Exercise):
    def __repr__(self):
        return "<C BermudanExercisePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BermudanExercise(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BermudanExercise):
        try:
            if self.thisown: destroy(self)
        except: pass

class BermudanExercisePtr(BermudanExercise):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BermudanExercise
_QuantLib.BermudanExercise_swigregister(BermudanExercisePtr)

class BlackVolTermStructure(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(BlackVolTermStructure)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.BlackVolTermStructure___deref__(*args)
    def __nonzero__(*args): return _QuantLib.BlackVolTermStructure___nonzero__(*args)
    def asObservable(*args): return _QuantLib.BlackVolTermStructure_asObservable(*args)
    def referenceDate(*args): return _QuantLib.BlackVolTermStructure_referenceDate(*args)
    def dayCounter(*args): return _QuantLib.BlackVolTermStructure_dayCounter(*args)
    def calendar(*args): return _QuantLib.BlackVolTermStructure_calendar(*args)
    def maxDate(*args): return _QuantLib.BlackVolTermStructure_maxDate(*args)
    def maxTime(*args): return _QuantLib.BlackVolTermStructure_maxTime(*args)
    def minStrike(*args): return _QuantLib.BlackVolTermStructure_minStrike(*args)
    def maxStrike(*args): return _QuantLib.BlackVolTermStructure_maxStrike(*args)
    def blackVol(*args): return _QuantLib.BlackVolTermStructure_blackVol(*args)
    def blackVariance(*args): return _QuantLib.BlackVolTermStructure_blackVariance(*args)
    def blackForwardVol(*args): return _QuantLib.BlackVolTermStructure_blackForwardVol(*args)
    def blackForwardVariance(*args): return _QuantLib.BlackVolTermStructure_blackForwardVariance(*args)
    def enableExtrapolation(*args): return _QuantLib.BlackVolTermStructure_enableExtrapolation(*args)
    def disableExtrapolation(*args): return _QuantLib.BlackVolTermStructure_disableExtrapolation(*args)
    def allowsExtrapolation(*args): return _QuantLib.BlackVolTermStructure_allowsExtrapolation(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackVolTermStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackVolTermStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackVolTermStructurePtr(BlackVolTermStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackVolTermStructure
_QuantLib.BlackVolTermStructure_swigregister(BlackVolTermStructurePtr)

class BlackVolTermStructureHandle(object):
    def __repr__(self):
        return "<C Handle<(BlackVolTermStructure)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackVolTermStructureHandle(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __deref__(*args): return _QuantLib.BlackVolTermStructureHandle___deref__(*args)
    def linkTo(*args): return _QuantLib.BlackVolTermStructureHandle_linkTo(*args)
    def __nonzero__(*args): return _QuantLib.BlackVolTermStructureHandle___nonzero__(*args)
    def asObservable(*args): return _QuantLib.BlackVolTermStructureHandle_asObservable(*args)
    def referenceDate(*args): return _QuantLib.BlackVolTermStructureHandle_referenceDate(*args)
    def dayCounter(*args): return _QuantLib.BlackVolTermStructureHandle_dayCounter(*args)
    def calendar(*args): return _QuantLib.BlackVolTermStructureHandle_calendar(*args)
    def maxDate(*args): return _QuantLib.BlackVolTermStructureHandle_maxDate(*args)
    def maxTime(*args): return _QuantLib.BlackVolTermStructureHandle_maxTime(*args)
    def minStrike(*args): return _QuantLib.BlackVolTermStructureHandle_minStrike(*args)
    def maxStrike(*args): return _QuantLib.BlackVolTermStructureHandle_maxStrike(*args)
    def blackVol(*args): return _QuantLib.BlackVolTermStructureHandle_blackVol(*args)
    def blackVariance(*args): return _QuantLib.BlackVolTermStructureHandle_blackVariance(*args)
    def blackForwardVol(*args): return _QuantLib.BlackVolTermStructureHandle_blackForwardVol(*args)
    def blackForwardVariance(*args): return _QuantLib.BlackVolTermStructureHandle_blackForwardVariance(*args)
    def enableExtrapolation(*args): return _QuantLib.BlackVolTermStructureHandle_enableExtrapolation(*args)
    def disableExtrapolation(*args): return _QuantLib.BlackVolTermStructureHandle_disableExtrapolation(*args)
    def allowsExtrapolation(*args): return _QuantLib.BlackVolTermStructureHandle_allowsExtrapolation(*args)
    def __del__(self, destroy=_QuantLib.delete_BlackVolTermStructureHandle):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackVolTermStructureHandlePtr(BlackVolTermStructureHandle):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackVolTermStructureHandle
_QuantLib.BlackVolTermStructureHandle_swigregister(BlackVolTermStructureHandlePtr)

class LocalVolTermStructure(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(LocalVolTermStructure)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.LocalVolTermStructure___deref__(*args)
    def __nonzero__(*args): return _QuantLib.LocalVolTermStructure___nonzero__(*args)
    def asObservable(*args): return _QuantLib.LocalVolTermStructure_asObservable(*args)
    def referenceDate(*args): return _QuantLib.LocalVolTermStructure_referenceDate(*args)
    def dayCounter(*args): return _QuantLib.LocalVolTermStructure_dayCounter(*args)
    def calendar(*args): return _QuantLib.LocalVolTermStructure_calendar(*args)
    def maxDate(*args): return _QuantLib.LocalVolTermStructure_maxDate(*args)
    def maxTime(*args): return _QuantLib.LocalVolTermStructure_maxTime(*args)
    def minStrike(*args): return _QuantLib.LocalVolTermStructure_minStrike(*args)
    def maxStrike(*args): return _QuantLib.LocalVolTermStructure_maxStrike(*args)
    def localVol(*args): return _QuantLib.LocalVolTermStructure_localVol(*args)
    def enableExtrapolation(*args): return _QuantLib.LocalVolTermStructure_enableExtrapolation(*args)
    def disableExtrapolation(*args): return _QuantLib.LocalVolTermStructure_disableExtrapolation(*args)
    def allowsExtrapolation(*args): return _QuantLib.LocalVolTermStructure_allowsExtrapolation(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_LocalVolTermStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_LocalVolTermStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class LocalVolTermStructurePtr(LocalVolTermStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LocalVolTermStructure
_QuantLib.LocalVolTermStructure_swigregister(LocalVolTermStructurePtr)

class LocalVolTermStructureHandle(object):
    def __repr__(self):
        return "<C Handle<(LocalVolTermStructure)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LocalVolTermStructureHandle(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __deref__(*args): return _QuantLib.LocalVolTermStructureHandle___deref__(*args)
    def linkTo(*args): return _QuantLib.LocalVolTermStructureHandle_linkTo(*args)
    def __nonzero__(*args): return _QuantLib.LocalVolTermStructureHandle___nonzero__(*args)
    def asObservable(*args): return _QuantLib.LocalVolTermStructureHandle_asObservable(*args)
    def referenceDate(*args): return _QuantLib.LocalVolTermStructureHandle_referenceDate(*args)
    def dayCounter(*args): return _QuantLib.LocalVolTermStructureHandle_dayCounter(*args)
    def calendar(*args): return _QuantLib.LocalVolTermStructureHandle_calendar(*args)
    def maxDate(*args): return _QuantLib.LocalVolTermStructureHandle_maxDate(*args)
    def maxTime(*args): return _QuantLib.LocalVolTermStructureHandle_maxTime(*args)
    def minStrike(*args): return _QuantLib.LocalVolTermStructureHandle_minStrike(*args)
    def maxStrike(*args): return _QuantLib.LocalVolTermStructureHandle_maxStrike(*args)
    def localVol(*args): return _QuantLib.LocalVolTermStructureHandle_localVol(*args)
    def enableExtrapolation(*args): return _QuantLib.LocalVolTermStructureHandle_enableExtrapolation(*args)
    def disableExtrapolation(*args): return _QuantLib.LocalVolTermStructureHandle_disableExtrapolation(*args)
    def allowsExtrapolation(*args): return _QuantLib.LocalVolTermStructureHandle_allowsExtrapolation(*args)
    def __del__(self, destroy=_QuantLib.delete_LocalVolTermStructureHandle):
        try:
            if self.thisown: destroy(self)
        except: pass

class LocalVolTermStructureHandlePtr(LocalVolTermStructureHandle):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LocalVolTermStructureHandle
_QuantLib.LocalVolTermStructureHandle_swigregister(LocalVolTermStructureHandlePtr)

class BlackConstantVol(BlackVolTermStructure):
    def __repr__(self):
        return "<C BlackConstantVolPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackConstantVol(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackConstantVol):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackConstantVolPtr(BlackConstantVol):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackConstantVol
_QuantLib.BlackConstantVol_swigregister(BlackConstantVolPtr)

class BlackVarianceSurface(BlackVolTermStructure):
    def __repr__(self):
        return "<C BlackVarianceSurfacePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackVarianceSurface(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackVarianceSurface):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackVarianceSurfacePtr(BlackVarianceSurface):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackVarianceSurface
_QuantLib.BlackVarianceSurface_swigregister(BlackVarianceSurfacePtr)

class LocalConstantVol(LocalVolTermStructure):
    def __repr__(self):
        return "<C LocalConstantVolPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LocalConstantVol(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_LocalConstantVol):
        try:
            if self.thisown: destroy(self)
        except: pass

class LocalConstantVolPtr(LocalConstantVol):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LocalConstantVol
_QuantLib.LocalConstantVol_swigregister(LocalConstantVolPtr)

class StochasticProcess(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(StochasticProcess)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.StochasticProcess___deref__(*args)
    def __nonzero__(*args): return _QuantLib.StochasticProcess___nonzero__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_StochasticProcess(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_StochasticProcess):
        try:
            if self.thisown: destroy(self)
        except: pass

class StochasticProcessPtr(StochasticProcess):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = StochasticProcess
_QuantLib.StochasticProcess_swigregister(StochasticProcessPtr)

class BlackScholesProcess(StochasticProcess):
    def __repr__(self):
        return "<C BlackScholesProcessPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackScholesProcess(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackScholesProcess):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackScholesProcessPtr(BlackScholesProcess):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackScholesProcess
_QuantLib.BlackScholesProcess_swigregister(BlackScholesProcessPtr)

class Merton76Process(StochasticProcess):
    def __repr__(self):
        return "<C Merton76ProcessPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Merton76Process(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Merton76Process):
        try:
            if self.thisown: destroy(self)
        except: pass

class Merton76ProcessPtr(Merton76Process):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Merton76Process
_QuantLib.Merton76Process_swigregister(Merton76ProcessPtr)

class StochasticProcessVector(object):
    def __repr__(self):
        return "<C std::vector<(boost::shared_ptr<(StochasticProcess)>)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_StochasticProcessVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.StochasticProcessVector___len__(*args)
    def clear(*args): return _QuantLib.StochasticProcessVector_clear(*args)
    def append(*args): return _QuantLib.StochasticProcessVector_append(*args)
    def __nonzero__(*args): return _QuantLib.StochasticProcessVector___nonzero__(*args)
    def pop(*args): return _QuantLib.StochasticProcessVector_pop(*args)
    def __getitem__(*args): return _QuantLib.StochasticProcessVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.StochasticProcessVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.StochasticProcessVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.StochasticProcessVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.StochasticProcessVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.StochasticProcessVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_StochasticProcessVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class StochasticProcessVectorPtr(StochasticProcessVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = StochasticProcessVector
_QuantLib.StochasticProcessVector_swigregister(StochasticProcessVectorPtr)

class Payoff(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(Payoff)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.Payoff___deref__(*args)
    def __nonzero__(*args): return _QuantLib.Payoff___nonzero__(*args)
    def __call__(*args): return _QuantLib.Payoff___call__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Payoff(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Payoff):
        try:
            if self.thisown: destroy(self)
        except: pass

class PayoffPtr(Payoff):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Payoff
_QuantLib.Payoff_swigregister(PayoffPtr)

class VanillaOption(Instrument):
    def __repr__(self):
        return "<C VanillaOptionPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_VanillaOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def delta(*args): return _QuantLib.VanillaOption_delta(*args)
    def gamma(*args): return _QuantLib.VanillaOption_gamma(*args)
    def theta(*args): return _QuantLib.VanillaOption_theta(*args)
    def vega(*args): return _QuantLib.VanillaOption_vega(*args)
    def rho(*args): return _QuantLib.VanillaOption_rho(*args)
    def dividendRho(*args): return _QuantLib.VanillaOption_dividendRho(*args)
    def strikeSensitivity(*args): return _QuantLib.VanillaOption_strikeSensitivity(*args)
    def impliedVolatility(*args): return _QuantLib.VanillaOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_VanillaOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class VanillaOptionPtr(VanillaOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = VanillaOption
_QuantLib.VanillaOption_swigregister(VanillaOptionPtr)

class EuropeanOption(VanillaOption):
    def __repr__(self):
        return "<C EuropeanOptionPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_EuropeanOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_EuropeanOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class EuropeanOptionPtr(EuropeanOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = EuropeanOption
_QuantLib.EuropeanOption_swigregister(EuropeanOptionPtr)

class AnalyticEuropeanEngine(PricingEngine):
    def __repr__(self):
        return "<C AnalyticEuropeanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AnalyticEuropeanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AnalyticEuropeanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class AnalyticEuropeanEnginePtr(AnalyticEuropeanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AnalyticEuropeanEngine
_QuantLib.AnalyticEuropeanEngine_swigregister(AnalyticEuropeanEnginePtr)

class IntegralEngine(PricingEngine):
    def __repr__(self):
        return "<C IntegralEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_IntegralEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_IntegralEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class IntegralEnginePtr(IntegralEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = IntegralEngine
_QuantLib.IntegralEngine_swigregister(IntegralEnginePtr)

class FDEuropeanEngine(PricingEngine):
    def __repr__(self):
        return "<C FDEuropeanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FDEuropeanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FDEuropeanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class FDEuropeanEnginePtr(FDEuropeanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FDEuropeanEngine
_QuantLib.FDEuropeanEngine_swigregister(FDEuropeanEnginePtr)

class BinomialEuropeanEngine(PricingEngine):
    def __repr__(self):
        return "<C BinomialVanillaEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BinomialEuropeanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BinomialEuropeanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class BinomialEuropeanEnginePtr(BinomialEuropeanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BinomialEuropeanEngine
_QuantLib.BinomialEuropeanEngine_swigregister(BinomialEuropeanEnginePtr)

class MCEuropeanEngine(PricingEngine):
    def __repr__(self):
        return "<C MCEuropeanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args, **kwargs):
        newobj = _QuantLib.new_MCEuropeanEngine(*args, **kwargs)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_MCEuropeanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class MCEuropeanEnginePtr(MCEuropeanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MCEuropeanEngine
_QuantLib.MCEuropeanEngine_swigregister(MCEuropeanEnginePtr)

class FDAmericanEngine(PricingEngine):
    def __repr__(self):
        return "<C FDAmericanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FDAmericanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FDAmericanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class FDAmericanEnginePtr(FDAmericanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FDAmericanEngine
_QuantLib.FDAmericanEngine_swigregister(FDAmericanEnginePtr)

class FDShoutEngine(PricingEngine):
    def __repr__(self):
        return "<C FDShoutEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FDShoutEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FDShoutEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class FDShoutEnginePtr(FDShoutEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FDShoutEngine
_QuantLib.FDShoutEngine_swigregister(FDShoutEnginePtr)

class BaroneAdesiWhaleyEngine(PricingEngine):
    def __repr__(self):
        return "<C BaroneAdesiWhaleyApproximationEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BaroneAdesiWhaleyEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BaroneAdesiWhaleyEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class BaroneAdesiWhaleyEnginePtr(BaroneAdesiWhaleyEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BaroneAdesiWhaleyEngine
_QuantLib.BaroneAdesiWhaleyEngine_swigregister(BaroneAdesiWhaleyEnginePtr)

class BjerksundStenslandEngine(PricingEngine):
    def __repr__(self):
        return "<C BjerksundStenslandApproximationEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BjerksundStenslandEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BjerksundStenslandEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class BjerksundStenslandEnginePtr(BjerksundStenslandEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BjerksundStenslandEngine
_QuantLib.BjerksundStenslandEngine_swigregister(BjerksundStenslandEnginePtr)

class AnalyticDigitalAmericanEngine(PricingEngine):
    def __repr__(self):
        return "<C AnalyticDigitalAmericanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AnalyticDigitalAmericanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AnalyticDigitalAmericanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class AnalyticDigitalAmericanEnginePtr(AnalyticDigitalAmericanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AnalyticDigitalAmericanEngine
_QuantLib.AnalyticDigitalAmericanEngine_swigregister(AnalyticDigitalAmericanEnginePtr)

class DividendVanillaOption(Instrument):
    def __repr__(self):
        return "<C DividendVanillaOptionPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DividendVanillaOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def delta(*args): return _QuantLib.DividendVanillaOption_delta(*args)
    def gamma(*args): return _QuantLib.DividendVanillaOption_gamma(*args)
    def theta(*args): return _QuantLib.DividendVanillaOption_theta(*args)
    def vega(*args): return _QuantLib.DividendVanillaOption_vega(*args)
    def rho(*args): return _QuantLib.DividendVanillaOption_rho(*args)
    def dividendRho(*args): return _QuantLib.DividendVanillaOption_dividendRho(*args)
    def strikeSensitivity(*args): return _QuantLib.DividendVanillaOption_strikeSensitivity(*args)
    def impliedVolatility(*args): return _QuantLib.DividendVanillaOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_DividendVanillaOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class DividendVanillaOptionPtr(DividendVanillaOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DividendVanillaOption
_QuantLib.DividendVanillaOption_swigregister(DividendVanillaOptionPtr)

class AnalyticDividendEuropeanEngine(PricingEngine):
    def __repr__(self):
        return "<C AnalyticDividendEuropeanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AnalyticDividendEuropeanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AnalyticDividendEuropeanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class AnalyticDividendEuropeanEnginePtr(AnalyticDividendEuropeanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AnalyticDividendEuropeanEngine
_QuantLib.AnalyticDividendEuropeanEngine_swigregister(AnalyticDividendEuropeanEnginePtr)

class FDDividendEuropeanEngine(PricingEngine):
    def __repr__(self):
        return "<C FDDividendEuropeanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FDDividendEuropeanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FDDividendEuropeanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class FDDividendEuropeanEnginePtr(FDDividendEuropeanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FDDividendEuropeanEngine
_QuantLib.FDDividendEuropeanEngine_swigregister(FDDividendEuropeanEnginePtr)

class FDDividendAmericanEngine(PricingEngine):
    def __repr__(self):
        return "<C FDDividendAmericanEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FDDividendAmericanEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FDDividendAmericanEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class FDDividendAmericanEnginePtr(FDDividendAmericanEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FDDividendAmericanEngine
_QuantLib.FDDividendAmericanEngine_swigregister(FDDividendAmericanEnginePtr)

class BarrierOption(Instrument):
    def __repr__(self):
        return "<C BarrierOptionPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BarrierOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def errorEstimate(*args): return _QuantLib.BarrierOption_errorEstimate(*args)
    def delta(*args): return _QuantLib.BarrierOption_delta(*args)
    def gamma(*args): return _QuantLib.BarrierOption_gamma(*args)
    def theta(*args): return _QuantLib.BarrierOption_theta(*args)
    def vega(*args): return _QuantLib.BarrierOption_vega(*args)
    def rho(*args): return _QuantLib.BarrierOption_rho(*args)
    def dividendRho(*args): return _QuantLib.BarrierOption_dividendRho(*args)
    def strikeSensitivity(*args): return _QuantLib.BarrierOption_strikeSensitivity(*args)
    def impliedVolatility(*args): return _QuantLib.BarrierOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_BarrierOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class BarrierOptionPtr(BarrierOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BarrierOption
_QuantLib.BarrierOption_swigregister(BarrierOptionPtr)

class AnalyticBarrierEngine(PricingEngine):
    def __repr__(self):
        return "<C AnalyticBarrierEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AnalyticBarrierEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AnalyticBarrierEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class AnalyticBarrierEnginePtr(AnalyticBarrierEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AnalyticBarrierEngine
_QuantLib.AnalyticBarrierEngine_swigregister(AnalyticBarrierEnginePtr)

class Schedule(object):
    def __repr__(self):
        return "<C Schedule instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Schedule(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.Schedule___len__(*args)
    def isRegular(*args): return _QuantLib.Schedule_isRegular(*args)
    def __getitem__(*args): return _QuantLib.Schedule___getitem__(*args)
    def __del__(self, destroy=_QuantLib.delete_Schedule):
        try:
            if self.thisown: destroy(self)
        except: pass

class SchedulePtr(Schedule):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Schedule
_QuantLib.Schedule_swigregister(SchedulePtr)

class CashFlow(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(CashFlow)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.CashFlow___deref__(*args)
    def __nonzero__(*args): return _QuantLib.CashFlow___nonzero__(*args)
    def asObservable(*args): return _QuantLib.CashFlow_asObservable(*args)
    def amount(*args): return _QuantLib.CashFlow_amount(*args)
    def date(*args): return _QuantLib.CashFlow_date(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_CashFlow(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CashFlow):
        try:
            if self.thisown: destroy(self)
        except: pass

class CashFlowPtr(CashFlow):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CashFlow
_QuantLib.CashFlow_swigregister(CashFlowPtr)

class SimpleCashFlow(CashFlow):
    def __repr__(self):
        return "<C SimpleCashFlowPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SimpleCashFlow(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SimpleCashFlow):
        try:
            if self.thisown: destroy(self)
        except: pass

class SimpleCashFlowPtr(SimpleCashFlow):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SimpleCashFlow
_QuantLib.SimpleCashFlow_swigregister(SimpleCashFlowPtr)

class FixedRateCoupon(CashFlow):
    def __repr__(self):
        return "<C FixedRateCouponPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FixedRateCoupon(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FixedRateCoupon):
        try:
            if self.thisown: destroy(self)
        except: pass

class FixedRateCouponPtr(FixedRateCoupon):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FixedRateCoupon
_QuantLib.FixedRateCoupon_swigregister(FixedRateCouponPtr)

class ParCoupon(CashFlow):
    def __repr__(self):
        return "<C ParCouponPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ParCoupon(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def accrualStartDate(*args): return _QuantLib.ParCoupon_accrualStartDate(*args)
    def accrualEndDate(*args): return _QuantLib.ParCoupon_accrualEndDate(*args)
    def rate(*args): return _QuantLib.ParCoupon_rate(*args)
    def indexFixing(*args): return _QuantLib.ParCoupon_indexFixing(*args)
    def nominal(*args): return _QuantLib.ParCoupon_nominal(*args)
    def __del__(self, destroy=_QuantLib.delete_ParCoupon):
        try:
            if self.thisown: destroy(self)
        except: pass

class ParCouponPtr(ParCoupon):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ParCoupon
_QuantLib.ParCoupon_swigregister(ParCouponPtr)

class CashFlowVector(object):
    def __repr__(self):
        return "<C std::vector<(boost::shared_ptr<(CashFlow)>)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CashFlowVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.CashFlowVector___len__(*args)
    def clear(*args): return _QuantLib.CashFlowVector_clear(*args)
    def append(*args): return _QuantLib.CashFlowVector_append(*args)
    def __nonzero__(*args): return _QuantLib.CashFlowVector___nonzero__(*args)
    def pop(*args): return _QuantLib.CashFlowVector_pop(*args)
    def __getitem__(*args): return _QuantLib.CashFlowVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.CashFlowVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.CashFlowVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.CashFlowVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.CashFlowVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.CashFlowVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_CashFlowVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class CashFlowVectorPtr(CashFlowVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CashFlowVector
_QuantLib.CashFlowVector_swigregister(CashFlowVectorPtr)


FixedRateCouponVector = _QuantLib.FixedRateCouponVector

FloatingRateCouponVector = _QuantLib.FloatingRateCouponVector
class Cap(Instrument):
    def __repr__(self):
        return "<C CapPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Cap(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Cap):
        try:
            if self.thisown: destroy(self)
        except: pass

class CapPtr(Cap):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Cap
_QuantLib.Cap_swigregister(CapPtr)

class Floor(Instrument):
    def __repr__(self):
        return "<C FloorPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Floor(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Floor):
        try:
            if self.thisown: destroy(self)
        except: pass

class FloorPtr(Floor):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Floor
_QuantLib.Floor_swigregister(FloorPtr)

class Collar(Instrument):
    def __repr__(self):
        return "<C CollarPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Collar(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Collar):
        try:
            if self.thisown: destroy(self)
        except: pass

class CollarPtr(Collar):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Collar
_QuantLib.Collar_swigregister(CollarPtr)

class BlackCapFloorEngine(PricingEngine):
    def __repr__(self):
        return "<C BlackCapFloorEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackCapFloorEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackCapFloorEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackCapFloorEnginePtr(BlackCapFloorEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackCapFloorEngine
_QuantLib.BlackCapFloorEngine_swigregister(BlackCapFloorEnginePtr)

class CompoundForward(YieldTermStructure):
    def __repr__(self):
        return "<C CompoundForwardPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CompoundForward(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def dates(*args): return _QuantLib.CompoundForward_dates(*args)
    def __del__(self, destroy=_QuantLib.delete_CompoundForward):
        try:
            if self.thisown: destroy(self)
        except: pass

class CompoundForwardPtr(CompoundForward):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CompoundForward
_QuantLib.CompoundForward_swigregister(CompoundForwardPtr)

class DiscountCurve(YieldTermStructure):
    def __repr__(self):
        return "<C DiscountCurvePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DiscountCurve(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def dates(*args): return _QuantLib.DiscountCurve_dates(*args)
    def __del__(self, destroy=_QuantLib.delete_DiscountCurve):
        try:
            if self.thisown: destroy(self)
        except: pass

class DiscountCurvePtr(DiscountCurve):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DiscountCurve
_QuantLib.DiscountCurve_swigregister(DiscountCurvePtr)

class ExtendedDiscountCurve(DiscountCurve):
    def __repr__(self):
        return "<C ExtendedDiscountCurvePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ExtendedDiscountCurve(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ExtendedDiscountCurve):
        try:
            if self.thisown: destroy(self)
        except: pass

class ExtendedDiscountCurvePtr(ExtendedDiscountCurve):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ExtendedDiscountCurve
_QuantLib.ExtendedDiscountCurve_swigregister(ExtendedDiscountCurvePtr)

class NormalDistribution(object):
    def __repr__(self):
        return "<C NormalDistribution instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NormalDistribution(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.NormalDistribution___call__(*args)
    def derivative(*args): return _QuantLib.NormalDistribution_derivative(*args)
    def __del__(self, destroy=_QuantLib.delete_NormalDistribution):
        try:
            if self.thisown: destroy(self)
        except: pass

class NormalDistributionPtr(NormalDistribution):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NormalDistribution
_QuantLib.NormalDistribution_swigregister(NormalDistributionPtr)

class CumulativeNormalDistribution(object):
    def __repr__(self):
        return "<C CumulativeNormalDistribution instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CumulativeNormalDistribution(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.CumulativeNormalDistribution___call__(*args)
    def derivative(*args): return _QuantLib.CumulativeNormalDistribution_derivative(*args)
    def __del__(self, destroy=_QuantLib.delete_CumulativeNormalDistribution):
        try:
            if self.thisown: destroy(self)
        except: pass

class CumulativeNormalDistributionPtr(CumulativeNormalDistribution):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CumulativeNormalDistribution
_QuantLib.CumulativeNormalDistribution_swigregister(CumulativeNormalDistributionPtr)

class InverseCumulativeNormal(object):
    def __repr__(self):
        return "<C InverseCumulativeNormal instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InverseCumulativeNormal(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.InverseCumulativeNormal___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_InverseCumulativeNormal):
        try:
            if self.thisown: destroy(self)
        except: pass

class InverseCumulativeNormalPtr(InverseCumulativeNormal):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InverseCumulativeNormal
_QuantLib.InverseCumulativeNormal_swigregister(InverseCumulativeNormalPtr)

class MoroInverseCumulativeNormal(object):
    def __repr__(self):
        return "<C MoroInverseCumulativeNormal instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInverseCumulativeNormal(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.MoroInverseCumulativeNormal___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInverseCumulativeNormal):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInverseCumulativeNormalPtr(MoroInverseCumulativeNormal):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInverseCumulativeNormal
_QuantLib.MoroInverseCumulativeNormal_swigregister(MoroInverseCumulativeNormalPtr)

class Money(object):
    def __repr__(self):
        return "<C Money instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Money(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def currency(*args): return _QuantLib.Money_currency(*args)
    def value(*args): return _QuantLib.Money_value(*args)
    def rounded(*args): return _QuantLib.Money_rounded(*args)
    def __pos__(*args): return _QuantLib.Money___pos__(*args)
    def __neg__(*args): return _QuantLib.Money___neg__(*args)
    def __add__(*args): return _QuantLib.Money___add__(*args)
    def __sub__(*args): return _QuantLib.Money___sub__(*args)
    def __mul__(*args): return _QuantLib.Money___mul__(*args)
    def __div__(*args): return _QuantLib.Money___div__(*args)
    def __rmul__(*args): return _QuantLib.Money___rmul__(*args)
    def __cmp__(*args): return _QuantLib.Money___cmp__(*args)
    def __str__(*args): return _QuantLib.Money___str__(*args)
    NoConversion = _QuantLib.Money_NoConversion
    BaseCurrencyConversion = _QuantLib.Money_BaseCurrencyConversion
    AutomatedConversion = _QuantLib.Money_AutomatedConversion
    setConversionType = staticmethod(_QuantLib.Money_setConversionType)
    setBaseCurrency = staticmethod(_QuantLib.Money_setBaseCurrency)
    def __del__(self, destroy=_QuantLib.delete_Money):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoneyPtr(Money):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Money
_QuantLib.Money_swigregister(MoneyPtr)

Money_setConversionType = _QuantLib.Money_setConversionType

Money_setBaseCurrency = _QuantLib.Money_setBaseCurrency

class ExchangeRate(object):
    def __repr__(self):
        return "<C ExchangeRate instance at %s>" % (self.this,)
    Direct = _QuantLib.ExchangeRate_Direct
    Derived = _QuantLib.ExchangeRate_Derived
    def __init__(self, *args):
        newobj = _QuantLib.new_ExchangeRate(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def source(*args): return _QuantLib.ExchangeRate_source(*args)
    def target(*args): return _QuantLib.ExchangeRate_target(*args)
    def type(*args): return _QuantLib.ExchangeRate_type(*args)
    def rate(*args): return _QuantLib.ExchangeRate_rate(*args)
    def exchange(*args): return _QuantLib.ExchangeRate_exchange(*args)
    chain = staticmethod(_QuantLib.ExchangeRate_chain)
    def __del__(self, destroy=_QuantLib.delete_ExchangeRate):
        try:
            if self.thisown: destroy(self)
        except: pass

class ExchangeRatePtr(ExchangeRate):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ExchangeRate
_QuantLib.ExchangeRate_swigregister(ExchangeRatePtr)

ExchangeRate_chain = _QuantLib.ExchangeRate_chain

class ExchangeRateManager(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C ExchangeRateManager instance at %s>" % (self.this,)
    instance = staticmethod(_QuantLib.ExchangeRateManager_instance)
    def add(*args): return _QuantLib.ExchangeRateManager_add(*args)
    def lookup(*args): return _QuantLib.ExchangeRateManager_lookup(*args)
    def clear(*args): return _QuantLib.ExchangeRateManager_clear(*args)
    def __del__(self, destroy=_QuantLib.delete_ExchangeRateManager):
        try:
            if self.thisown: destroy(self)
        except: pass

class ExchangeRateManagerPtr(ExchangeRateManager):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ExchangeRateManager
_QuantLib.ExchangeRateManager_swigregister(ExchangeRateManagerPtr)

ExchangeRateManager_instance = _QuantLib.ExchangeRateManager_instance

class TimeGrid(DoubleVector):
    def __repr__(self):
        return "<C TimeGrid instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TimeGrid(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.TimeGrid___len__(*args)
    def __getitem__(*args): return _QuantLib.TimeGrid___getitem__(*args)
    def dt(*args): return _QuantLib.TimeGrid_dt(*args)
    def __del__(self, destroy=_QuantLib.delete_TimeGrid):
        try:
            if self.thisown: destroy(self)
        except: pass

class TimeGridPtr(TimeGrid):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TimeGrid
_QuantLib.TimeGrid_swigregister(TimeGridPtr)

class SegmentIntegral(object):
    def __repr__(self):
        return "<C SegmentIntegral instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SegmentIntegral(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.SegmentIntegral___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_SegmentIntegral):
        try:
            if self.thisown: destroy(self)
        except: pass

class SegmentIntegralPtr(SegmentIntegral):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SegmentIntegral
_QuantLib.SegmentIntegral_swigregister(SegmentIntegralPtr)

class TrapezoidIntegral(object):
    def __repr__(self):
        return "<C TrapezoidIntegral instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TrapezoidIntegral(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.TrapezoidIntegral___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_TrapezoidIntegral):
        try:
            if self.thisown: destroy(self)
        except: pass

class TrapezoidIntegralPtr(TrapezoidIntegral):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TrapezoidIntegral
_QuantLib.TrapezoidIntegral_swigregister(TrapezoidIntegralPtr)

class SimpsonIntegral(object):
    def __repr__(self):
        return "<C SimpsonIntegral instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SimpsonIntegral(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.SimpsonIntegral___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_SimpsonIntegral):
        try:
            if self.thisown: destroy(self)
        except: pass

class SimpsonIntegralPtr(SimpsonIntegral):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SimpsonIntegral
_QuantLib.SimpsonIntegral_swigregister(SimpsonIntegralPtr)

class KronrodIntegral(object):
    def __repr__(self):
        return "<C KronrodIntegral instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_KronrodIntegral(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __call__(*args): return _QuantLib.KronrodIntegral___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_KronrodIntegral):
        try:
            if self.thisown: destroy(self)
        except: pass

class KronrodIntegralPtr(KronrodIntegral):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = KronrodIntegral
_QuantLib.KronrodIntegral_swigregister(KronrodIntegralPtr)

class SampleNumber(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Sample<(Real)> instance at %s>" % (self.this,)
    def value(*args): return _QuantLib.SampleNumber_value(*args)
    def weight(*args): return _QuantLib.SampleNumber_weight(*args)
    def __del__(self, destroy=_QuantLib.delete_SampleNumber):
        try:
            if self.thisown: destroy(self)
        except: pass

class SampleNumberPtr(SampleNumber):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SampleNumber
_QuantLib.SampleNumber_swigregister(SampleNumberPtr)

class SampleArray(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Sample<(Array)> instance at %s>" % (self.this,)
    def value(*args): return _QuantLib.SampleArray_value(*args)
    def weight(*args): return _QuantLib.SampleArray_weight(*args)
    def __del__(self, destroy=_QuantLib.delete_SampleArray):
        try:
            if self.thisown: destroy(self)
        except: pass

class SampleArrayPtr(SampleArray):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SampleArray
_QuantLib.SampleArray_swigregister(SampleArrayPtr)

class LecuyerUniformRng(object):
    def __repr__(self):
        return "<C LecuyerUniformRng instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LecuyerUniformRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.LecuyerUniformRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_LecuyerUniformRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class LecuyerUniformRngPtr(LecuyerUniformRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LecuyerUniformRng
_QuantLib.LecuyerUniformRng_swigregister(LecuyerUniformRngPtr)

class KnuthUniformRng(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C KnuthUniformRng instance at %s>" % (self.this,)
    def __del__(self, destroy=_QuantLib.delete_KnuthUniformRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class KnuthUniformRngPtr(KnuthUniformRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = KnuthUniformRng
_QuantLib.KnuthUniformRng_swigregister(KnuthUniformRngPtr)

class MersenneTwisterUniformRng(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C MersenneTwisterUniformRng instance at %s>" % (self.this,)
    def __del__(self, destroy=_QuantLib.delete_MersenneTwisterUniformRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class MersenneTwisterUniformRngPtr(MersenneTwisterUniformRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MersenneTwisterUniformRng
_QuantLib.MersenneTwisterUniformRng_swigregister(MersenneTwisterUniformRngPtr)

class UniformRandomGenerator(object):
    def __repr__(self):
        return "<C UniformRandomGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_UniformRandomGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.UniformRandomGenerator_next(*args)
    def __del__(self, destroy=_QuantLib.delete_UniformRandomGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class UniformRandomGeneratorPtr(UniformRandomGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = UniformRandomGenerator
_QuantLib.UniformRandomGenerator_swigregister(UniformRandomGeneratorPtr)

class CentralLimitLecuyerGaussianRng(object):
    def __repr__(self):
        return "<C CLGaussianRng<(LecuyerUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CentralLimitLecuyerGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.CentralLimitLecuyerGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_CentralLimitLecuyerGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class CentralLimitLecuyerGaussianRngPtr(CentralLimitLecuyerGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CentralLimitLecuyerGaussianRng
_QuantLib.CentralLimitLecuyerGaussianRng_swigregister(CentralLimitLecuyerGaussianRngPtr)

class CentralLimitKnuthGaussianRng(object):
    def __repr__(self):
        return "<C CLGaussianRng<(KnuthUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CentralLimitKnuthGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.CentralLimitKnuthGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_CentralLimitKnuthGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class CentralLimitKnuthGaussianRngPtr(CentralLimitKnuthGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CentralLimitKnuthGaussianRng
_QuantLib.CentralLimitKnuthGaussianRng_swigregister(CentralLimitKnuthGaussianRngPtr)

class CentralLimitMersenneTwisterGaussianRng(object):
    def __repr__(self):
        return "<C CLGaussianRng<(MersenneTwisterUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CentralLimitMersenneTwisterGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.CentralLimitMersenneTwisterGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_CentralLimitMersenneTwisterGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class CentralLimitMersenneTwisterGaussianRngPtr(CentralLimitMersenneTwisterGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CentralLimitMersenneTwisterGaussianRng
_QuantLib.CentralLimitMersenneTwisterGaussianRng_swigregister(CentralLimitMersenneTwisterGaussianRngPtr)

class BoxMullerLecuyerGaussianRng(object):
    def __repr__(self):
        return "<C BoxMullerGaussianRng<(LecuyerUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BoxMullerLecuyerGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.BoxMullerLecuyerGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_BoxMullerLecuyerGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class BoxMullerLecuyerGaussianRngPtr(BoxMullerLecuyerGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BoxMullerLecuyerGaussianRng
_QuantLib.BoxMullerLecuyerGaussianRng_swigregister(BoxMullerLecuyerGaussianRngPtr)

class BoxMullerKnuthGaussianRng(object):
    def __repr__(self):
        return "<C BoxMullerGaussianRng<(KnuthUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BoxMullerKnuthGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.BoxMullerKnuthGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_BoxMullerKnuthGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class BoxMullerKnuthGaussianRngPtr(BoxMullerKnuthGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BoxMullerKnuthGaussianRng
_QuantLib.BoxMullerKnuthGaussianRng_swigregister(BoxMullerKnuthGaussianRngPtr)

class BoxMullerMersenneTwisterGaussianRng(object):
    def __repr__(self):
        return "<C BoxMullerGaussianRng<(MersenneTwisterUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BoxMullerMersenneTwisterGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.BoxMullerMersenneTwisterGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_BoxMullerMersenneTwisterGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class BoxMullerMersenneTwisterGaussianRngPtr(BoxMullerMersenneTwisterGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BoxMullerMersenneTwisterGaussianRng
_QuantLib.BoxMullerMersenneTwisterGaussianRng_swigregister(BoxMullerMersenneTwisterGaussianRngPtr)

class MoroInvCumulativeLecuyerGaussianRng(object):
    def __repr__(self):
        return "<C InverseCumulativeRng<(LecuyerUniformRng,MoroInverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInvCumulativeLecuyerGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.MoroInvCumulativeLecuyerGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInvCumulativeLecuyerGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInvCumulativeLecuyerGaussianRngPtr(MoroInvCumulativeLecuyerGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInvCumulativeLecuyerGaussianRng
_QuantLib.MoroInvCumulativeLecuyerGaussianRng_swigregister(MoroInvCumulativeLecuyerGaussianRngPtr)

class MoroInvCumulativeKnuthGaussianRng(object):
    def __repr__(self):
        return "<C InverseCumulativeRng<(KnuthUniformRng,MoroInverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInvCumulativeKnuthGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.MoroInvCumulativeKnuthGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInvCumulativeKnuthGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInvCumulativeKnuthGaussianRngPtr(MoroInvCumulativeKnuthGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInvCumulativeKnuthGaussianRng
_QuantLib.MoroInvCumulativeKnuthGaussianRng_swigregister(MoroInvCumulativeKnuthGaussianRngPtr)

class MoroInvCumulativeMersenneTwisterGaussianRng(object):
    def __repr__(self):
        return "<C InverseCumulativeRng<(MersenneTwisterUniformRng,MoroInverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInvCumulativeMersenneTwisterGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.MoroInvCumulativeMersenneTwisterGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInvCumulativeMersenneTwisterGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInvCumulativeMersenneTwisterGaussianRngPtr(MoroInvCumulativeMersenneTwisterGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInvCumulativeMersenneTwisterGaussianRng
_QuantLib.MoroInvCumulativeMersenneTwisterGaussianRng_swigregister(MoroInvCumulativeMersenneTwisterGaussianRngPtr)

class InvCumulativeLecuyerGaussianRng(object):
    def __repr__(self):
        return "<C InverseCumulativeRng<(LecuyerUniformRng,InverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InvCumulativeLecuyerGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.InvCumulativeLecuyerGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_InvCumulativeLecuyerGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class InvCumulativeLecuyerGaussianRngPtr(InvCumulativeLecuyerGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InvCumulativeLecuyerGaussianRng
_QuantLib.InvCumulativeLecuyerGaussianRng_swigregister(InvCumulativeLecuyerGaussianRngPtr)

class InvCumulativeKnuthGaussianRng(object):
    def __repr__(self):
        return "<C InverseCumulativeRng<(KnuthUniformRng,InverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InvCumulativeKnuthGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.InvCumulativeKnuthGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_InvCumulativeKnuthGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class InvCumulativeKnuthGaussianRngPtr(InvCumulativeKnuthGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InvCumulativeKnuthGaussianRng
_QuantLib.InvCumulativeKnuthGaussianRng_swigregister(InvCumulativeKnuthGaussianRngPtr)

class InvCumulativeMersenneTwisterGaussianRng(object):
    def __repr__(self):
        return "<C InverseCumulativeRng<(MersenneTwisterUniformRng,InverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InvCumulativeMersenneTwisterGaussianRng(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.InvCumulativeMersenneTwisterGaussianRng_next(*args)
    def __del__(self, destroy=_QuantLib.delete_InvCumulativeMersenneTwisterGaussianRng):
        try:
            if self.thisown: destroy(self)
        except: pass

class InvCumulativeMersenneTwisterGaussianRngPtr(InvCumulativeMersenneTwisterGaussianRng):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InvCumulativeMersenneTwisterGaussianRng
_QuantLib.InvCumulativeMersenneTwisterGaussianRng_swigregister(InvCumulativeMersenneTwisterGaussianRngPtr)

class GaussianRandomGenerator(object):
    def __repr__(self):
        return "<C GaussianRandomGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GaussianRandomGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.GaussianRandomGenerator_next(*args)
    def __del__(self, destroy=_QuantLib.delete_GaussianRandomGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class GaussianRandomGeneratorPtr(GaussianRandomGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GaussianRandomGenerator
_QuantLib.GaussianRandomGenerator_swigregister(GaussianRandomGeneratorPtr)

class HaltonRsg(object):
    def __repr__(self):
        return "<C HaltonRsg instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_HaltonRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.HaltonRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.HaltonRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_HaltonRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class HaltonRsgPtr(HaltonRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HaltonRsg
_QuantLib.HaltonRsg_swigregister(HaltonRsgPtr)

class SobolRsg(object):
    def __repr__(self):
        return "<C SobolRsg instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SobolRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.SobolRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.SobolRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_SobolRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class SobolRsgPtr(SobolRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SobolRsg
_QuantLib.SobolRsg_swigregister(SobolRsgPtr)

class LecuyerUniformRsg(object):
    def __repr__(self):
        return "<C RandomSequenceGenerator<(LecuyerUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_LecuyerUniformRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.LecuyerUniformRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.LecuyerUniformRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_LecuyerUniformRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class LecuyerUniformRsgPtr(LecuyerUniformRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = LecuyerUniformRsg
_QuantLib.LecuyerUniformRsg_swigregister(LecuyerUniformRsgPtr)

class KnuthUniformRsg(object):
    def __repr__(self):
        return "<C RandomSequenceGenerator<(KnuthUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_KnuthUniformRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.KnuthUniformRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.KnuthUniformRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_KnuthUniformRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class KnuthUniformRsgPtr(KnuthUniformRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = KnuthUniformRsg
_QuantLib.KnuthUniformRsg_swigregister(KnuthUniformRsgPtr)

class MersenneTwisterUniformRsg(object):
    def __repr__(self):
        return "<C RandomSequenceGenerator<(MersenneTwisterUniformRng)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MersenneTwisterUniformRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.MersenneTwisterUniformRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.MersenneTwisterUniformRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_MersenneTwisterUniformRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class MersenneTwisterUniformRsgPtr(MersenneTwisterUniformRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MersenneTwisterUniformRsg
_QuantLib.MersenneTwisterUniformRsg_swigregister(MersenneTwisterUniformRsgPtr)

class UniformRandomSequenceGenerator(object):
    def __repr__(self):
        return "<C UniformRandomSequenceGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_UniformRandomSequenceGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.UniformRandomSequenceGenerator_nextSequence(*args)
    def dimension(*args): return _QuantLib.UniformRandomSequenceGenerator_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_UniformRandomSequenceGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class UniformRandomSequenceGeneratorPtr(UniformRandomSequenceGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = UniformRandomSequenceGenerator
_QuantLib.UniformRandomSequenceGenerator_swigregister(UniformRandomSequenceGeneratorPtr)

class UniformLowDiscrepancySequenceGenerator(object):
    def __repr__(self):
        return "<C UniformLowDiscrepancySequenceGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_UniformLowDiscrepancySequenceGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.UniformLowDiscrepancySequenceGenerator_nextSequence(*args)
    def dimension(*args): return _QuantLib.UniformLowDiscrepancySequenceGenerator_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_UniformLowDiscrepancySequenceGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class UniformLowDiscrepancySequenceGeneratorPtr(UniformLowDiscrepancySequenceGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = UniformLowDiscrepancySequenceGenerator
_QuantLib.UniformLowDiscrepancySequenceGenerator_swigregister(UniformLowDiscrepancySequenceGeneratorPtr)

class MoroInvCumulativeLecuyerGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(RandomSequenceGenerator<(LecuyerUniformRng)>,MoroInverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInvCumulativeLecuyerGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.MoroInvCumulativeLecuyerGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.MoroInvCumulativeLecuyerGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInvCumulativeLecuyerGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInvCumulativeLecuyerGaussianRsgPtr(MoroInvCumulativeLecuyerGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInvCumulativeLecuyerGaussianRsg
_QuantLib.MoroInvCumulativeLecuyerGaussianRsg_swigregister(MoroInvCumulativeLecuyerGaussianRsgPtr)

class MoroInvCumulativeKnuthGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(RandomSequenceGenerator<(KnuthUniformRng)>,MoroInverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInvCumulativeKnuthGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.MoroInvCumulativeKnuthGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.MoroInvCumulativeKnuthGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInvCumulativeKnuthGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInvCumulativeKnuthGaussianRsgPtr(MoroInvCumulativeKnuthGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInvCumulativeKnuthGaussianRsg
_QuantLib.MoroInvCumulativeKnuthGaussianRsg_swigregister(MoroInvCumulativeKnuthGaussianRsgPtr)

class MoroInvCumulativeMersenneTwisterGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(RandomSequenceGenerator<(MersenneTwisterUniformRng)>,MoroInverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInvCumulativeMersenneTwisterGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.MoroInvCumulativeMersenneTwisterGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.MoroInvCumulativeMersenneTwisterGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInvCumulativeMersenneTwisterGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInvCumulativeMersenneTwisterGaussianRsgPtr(MoroInvCumulativeMersenneTwisterGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInvCumulativeMersenneTwisterGaussianRsg
_QuantLib.MoroInvCumulativeMersenneTwisterGaussianRsg_swigregister(MoroInvCumulativeMersenneTwisterGaussianRsgPtr)

class MoroInvCumulativeHaltonGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(HaltonRsg,MoroInverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MoroInvCumulativeHaltonGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.MoroInvCumulativeHaltonGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.MoroInvCumulativeHaltonGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_MoroInvCumulativeHaltonGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class MoroInvCumulativeHaltonGaussianRsgPtr(MoroInvCumulativeHaltonGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MoroInvCumulativeHaltonGaussianRsg
_QuantLib.MoroInvCumulativeHaltonGaussianRsg_swigregister(MoroInvCumulativeHaltonGaussianRsgPtr)

class InvCumulativeLecuyerGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(RandomSequenceGenerator<(LecuyerUniformRng)>,InverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InvCumulativeLecuyerGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.InvCumulativeLecuyerGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.InvCumulativeLecuyerGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_InvCumulativeLecuyerGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class InvCumulativeLecuyerGaussianRsgPtr(InvCumulativeLecuyerGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InvCumulativeLecuyerGaussianRsg
_QuantLib.InvCumulativeLecuyerGaussianRsg_swigregister(InvCumulativeLecuyerGaussianRsgPtr)

class InvCumulativeKnuthGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(RandomSequenceGenerator<(KnuthUniformRng)>,InverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InvCumulativeKnuthGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.InvCumulativeKnuthGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.InvCumulativeKnuthGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_InvCumulativeKnuthGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class InvCumulativeKnuthGaussianRsgPtr(InvCumulativeKnuthGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InvCumulativeKnuthGaussianRsg
_QuantLib.InvCumulativeKnuthGaussianRsg_swigregister(InvCumulativeKnuthGaussianRsgPtr)

class InvCumulativeMersenneTwisterGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(RandomSequenceGenerator<(MersenneTwisterUniformRng)>,InverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InvCumulativeMersenneTwisterGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.InvCumulativeMersenneTwisterGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.InvCumulativeMersenneTwisterGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_InvCumulativeMersenneTwisterGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class InvCumulativeMersenneTwisterGaussianRsgPtr(InvCumulativeMersenneTwisterGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InvCumulativeMersenneTwisterGaussianRsg
_QuantLib.InvCumulativeMersenneTwisterGaussianRsg_swigregister(InvCumulativeMersenneTwisterGaussianRsgPtr)

class InvCumulativeHaltonGaussianRsg(object):
    def __repr__(self):
        return "<C InverseCumulativeRsg<(HaltonRsg,InverseCumulativeNormal)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_InvCumulativeHaltonGaussianRsg(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.InvCumulativeHaltonGaussianRsg_nextSequence(*args)
    def dimension(*args): return _QuantLib.InvCumulativeHaltonGaussianRsg_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_InvCumulativeHaltonGaussianRsg):
        try:
            if self.thisown: destroy(self)
        except: pass

class InvCumulativeHaltonGaussianRsgPtr(InvCumulativeHaltonGaussianRsg):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = InvCumulativeHaltonGaussianRsg
_QuantLib.InvCumulativeHaltonGaussianRsg_swigregister(InvCumulativeHaltonGaussianRsgPtr)

class GaussianRandomSequenceGenerator(object):
    def __repr__(self):
        return "<C GaussianRandomSequenceGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GaussianRandomSequenceGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.GaussianRandomSequenceGenerator_nextSequence(*args)
    def dimension(*args): return _QuantLib.GaussianRandomSequenceGenerator_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_GaussianRandomSequenceGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class GaussianRandomSequenceGeneratorPtr(GaussianRandomSequenceGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GaussianRandomSequenceGenerator
_QuantLib.GaussianRandomSequenceGenerator_swigregister(GaussianRandomSequenceGeneratorPtr)

class GaussianLowDiscrepancySequenceGenerator(object):
    def __repr__(self):
        return "<C GaussianLowDiscrepancySequenceGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GaussianLowDiscrepancySequenceGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def nextSequence(*args): return _QuantLib.GaussianLowDiscrepancySequenceGenerator_nextSequence(*args)
    def dimension(*args): return _QuantLib.GaussianLowDiscrepancySequenceGenerator_dimension(*args)
    def __del__(self, destroy=_QuantLib.delete_GaussianLowDiscrepancySequenceGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class GaussianLowDiscrepancySequenceGeneratorPtr(GaussianLowDiscrepancySequenceGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GaussianLowDiscrepancySequenceGenerator
_QuantLib.GaussianLowDiscrepancySequenceGenerator_swigregister(GaussianLowDiscrepancySequenceGeneratorPtr)


getCovariance = _QuantLib.getCovariance
class Path(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Path instance at %s>" % (self.this,)
    def __len__(*args): return _QuantLib.Path___len__(*args)
    def drift(*args): return _QuantLib.Path_drift(*args)
    def diffusion(*args): return _QuantLib.Path_diffusion(*args)
    def __getitem__(*args): return _QuantLib.Path___getitem__(*args)
    def __del__(self, destroy=_QuantLib.delete_Path):
        try:
            if self.thisown: destroy(self)
        except: pass

class PathPtr(Path):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Path
_QuantLib.Path_swigregister(PathPtr)

class SamplePath(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Sample<(Path)> instance at %s>" % (self.this,)
    def value(*args): return _QuantLib.SamplePath_value(*args)
    def weight(*args): return _QuantLib.SamplePath_weight(*args)
    def __del__(self, destroy=_QuantLib.delete_SamplePath):
        try:
            if self.thisown: destroy(self)
        except: pass

class SamplePathPtr(SamplePath):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SamplePath
_QuantLib.SamplePath_swigregister(SamplePathPtr)

class GaussianPathGenerator(object):
    def __repr__(self):
        return "<C GaussianPathGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GaussianPathGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.GaussianPathGenerator_next(*args)
    def __del__(self, destroy=_QuantLib.delete_GaussianPathGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class GaussianPathGeneratorPtr(GaussianPathGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GaussianPathGenerator
_QuantLib.GaussianPathGenerator_swigregister(GaussianPathGeneratorPtr)

class MultiPath(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C MultiPath instance at %s>" % (self.this,)
    def __len__(*args): return _QuantLib.MultiPath___len__(*args)
    def assetNumber(*args): return _QuantLib.MultiPath_assetNumber(*args)
    def __getitem__(*args): return _QuantLib.MultiPath___getitem__(*args)
    def __del__(self, destroy=_QuantLib.delete_MultiPath):
        try:
            if self.thisown: destroy(self)
        except: pass

class MultiPathPtr(MultiPath):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MultiPath
_QuantLib.MultiPath_swigregister(MultiPathPtr)

class SampleMultiPath(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Sample<(MultiPath)> instance at %s>" % (self.this,)
    def value(*args): return _QuantLib.SampleMultiPath_value(*args)
    def weight(*args): return _QuantLib.SampleMultiPath_weight(*args)
    def __del__(self, destroy=_QuantLib.delete_SampleMultiPath):
        try:
            if self.thisown: destroy(self)
        except: pass

class SampleMultiPathPtr(SampleMultiPath):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SampleMultiPath
_QuantLib.SampleMultiPath_swigregister(SampleMultiPathPtr)

class GaussianMultiPathGenerator(object):
    def __repr__(self):
        return "<C GaussianMultiPathGenerator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_GaussianMultiPathGenerator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def next(*args): return _QuantLib.GaussianMultiPathGenerator_next(*args)
    def __del__(self, destroy=_QuantLib.delete_GaussianMultiPathGenerator):
        try:
            if self.thisown: destroy(self)
        except: pass

class GaussianMultiPathGeneratorPtr(GaussianMultiPathGenerator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = GaussianMultiPathGenerator
_QuantLib.GaussianMultiPathGenerator_swigregister(GaussianMultiPathGeneratorPtr)

class BoundaryCondition(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(BoundaryCondition)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.BoundaryCondition___deref__(*args)
    def __nonzero__(*args): return _QuantLib.BoundaryCondition___nonzero__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_BoundaryCondition(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BoundaryCondition):
        try:
            if self.thisown: destroy(self)
        except: pass

class BoundaryConditionPtr(BoundaryCondition):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BoundaryCondition
_QuantLib.BoundaryCondition_swigregister(BoundaryConditionPtr)

class NeumannBC(BoundaryCondition):
    def __repr__(self):
        return "<C NeumannBCPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NeumannBC(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NeumannBC):
        try:
            if self.thisown: destroy(self)
        except: pass

class NeumannBCPtr(NeumannBC):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NeumannBC
_QuantLib.NeumannBC_swigregister(NeumannBCPtr)

class DirichletBC(BoundaryCondition):
    def __repr__(self):
        return "<C DirichletBCPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DirichletBC(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DirichletBC):
        try:
            if self.thisown: destroy(self)
        except: pass

class DirichletBCPtr(DirichletBC):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DirichletBC
_QuantLib.DirichletBC_swigregister(DirichletBCPtr)

class TridiagonalOperator(object):
    def __repr__(self):
        return "<C TridiagonalOperator instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TridiagonalOperator(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def solveFor(*args): return _QuantLib.TridiagonalOperator_solveFor(*args)
    def applyTo(*args): return _QuantLib.TridiagonalOperator_applyTo(*args)
    def size(*args): return _QuantLib.TridiagonalOperator_size(*args)
    def setFirstRow(*args): return _QuantLib.TridiagonalOperator_setFirstRow(*args)
    def setMidRow(*args): return _QuantLib.TridiagonalOperator_setMidRow(*args)
    def setMidRows(*args): return _QuantLib.TridiagonalOperator_setMidRows(*args)
    def setLastRow(*args): return _QuantLib.TridiagonalOperator_setLastRow(*args)
    identity = staticmethod(_QuantLib.TridiagonalOperator_identity)
    def __add__(*args): return _QuantLib.TridiagonalOperator___add__(*args)
    def __sub__(*args): return _QuantLib.TridiagonalOperator___sub__(*args)
    def __mul__(*args): return _QuantLib.TridiagonalOperator___mul__(*args)
    def __div__(*args): return _QuantLib.TridiagonalOperator___div__(*args)
    def __iadd__(*args): return _QuantLib.TridiagonalOperator___iadd__(*args)
    def __isub__(*args): return _QuantLib.TridiagonalOperator___isub__(*args)
    def __imul__(*args): return _QuantLib.TridiagonalOperator___imul__(*args)
    def __rmul__(*args): return _QuantLib.TridiagonalOperator___rmul__(*args)
    def __idiv__(*args): return _QuantLib.TridiagonalOperator___idiv__(*args)
    def __del__(self, destroy=_QuantLib.delete_TridiagonalOperator):
        try:
            if self.thisown: destroy(self)
        except: pass

class TridiagonalOperatorPtr(TridiagonalOperator):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TridiagonalOperator
_QuantLib.TridiagonalOperator_swigregister(TridiagonalOperatorPtr)

TridiagonalOperator_identity = _QuantLib.TridiagonalOperator_identity

class DPlus(TridiagonalOperator):
    def __repr__(self):
        return "<C DPlus instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DPlus(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DPlus):
        try:
            if self.thisown: destroy(self)
        except: pass

class DPlusPtr(DPlus):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DPlus
_QuantLib.DPlus_swigregister(DPlusPtr)

class DMinus(TridiagonalOperator):
    def __repr__(self):
        return "<C DMinus instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DMinus(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DMinus):
        try:
            if self.thisown: destroy(self)
        except: pass

class DMinusPtr(DMinus):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DMinus
_QuantLib.DMinus_swigregister(DMinusPtr)

class DZero(TridiagonalOperator):
    def __repr__(self):
        return "<C DZero instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DZero(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DZero):
        try:
            if self.thisown: destroy(self)
        except: pass

class DZeroPtr(DZero):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DZero
_QuantLib.DZero_swigregister(DZeroPtr)

class DPlusDMinus(TridiagonalOperator):
    def __repr__(self):
        return "<C DPlusDMinus instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DPlusDMinus(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DPlusDMinus):
        try:
            if self.thisown: destroy(self)
        except: pass

class DPlusDMinusPtr(DPlusDMinus):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DPlusDMinus
_QuantLib.DPlusDMinus_swigregister(DPlusDMinusPtr)


valueAtCenter = _QuantLib.valueAtCenter

firstDerivativeAtCenter = _QuantLib.firstDerivativeAtCenter

secondDerivativeAtCenter = _QuantLib.secondDerivativeAtCenter

SymmetricEigenvalues = _QuantLib.SymmetricEigenvalues

SymmetricEigenvectors = _QuantLib.SymmetricEigenvectors
class Brent(object):
    def __repr__(self):
        return "<C Brent instance at %s>" % (self.this,)
    def setMaxEvaluations(*args): return _QuantLib.Brent_setMaxEvaluations(*args)
    def setLowerBound(*args): return _QuantLib.Brent_setLowerBound(*args)
    def setUpperBound(*args): return _QuantLib.Brent_setUpperBound(*args)
    def solve(*args): return _QuantLib.Brent_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Brent(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Brent):
        try:
            if self.thisown: destroy(self)
        except: pass

class BrentPtr(Brent):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Brent
_QuantLib.Brent_swigregister(BrentPtr)

class Bisection(object):
    def __repr__(self):
        return "<C Bisection instance at %s>" % (self.this,)
    def setMaxEvaluations(*args): return _QuantLib.Bisection_setMaxEvaluations(*args)
    def setLowerBound(*args): return _QuantLib.Bisection_setLowerBound(*args)
    def setUpperBound(*args): return _QuantLib.Bisection_setUpperBound(*args)
    def solve(*args): return _QuantLib.Bisection_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Bisection(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Bisection):
        try:
            if self.thisown: destroy(self)
        except: pass

class BisectionPtr(Bisection):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Bisection
_QuantLib.Bisection_swigregister(BisectionPtr)

class FalsePosition(object):
    def __repr__(self):
        return "<C FalsePosition instance at %s>" % (self.this,)
    def setMaxEvaluations(*args): return _QuantLib.FalsePosition_setMaxEvaluations(*args)
    def setLowerBound(*args): return _QuantLib.FalsePosition_setLowerBound(*args)
    def setUpperBound(*args): return _QuantLib.FalsePosition_setUpperBound(*args)
    def solve(*args): return _QuantLib.FalsePosition_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_FalsePosition(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FalsePosition):
        try:
            if self.thisown: destroy(self)
        except: pass

class FalsePositionPtr(FalsePosition):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FalsePosition
_QuantLib.FalsePosition_swigregister(FalsePositionPtr)

class Ridder(object):
    def __repr__(self):
        return "<C Ridder instance at %s>" % (self.this,)
    def setMaxEvaluations(*args): return _QuantLib.Ridder_setMaxEvaluations(*args)
    def setLowerBound(*args): return _QuantLib.Ridder_setLowerBound(*args)
    def setUpperBound(*args): return _QuantLib.Ridder_setUpperBound(*args)
    def solve(*args): return _QuantLib.Ridder_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Ridder(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Ridder):
        try:
            if self.thisown: destroy(self)
        except: pass

class RidderPtr(Ridder):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Ridder
_QuantLib.Ridder_swigregister(RidderPtr)

class Secant(object):
    def __repr__(self):
        return "<C Secant instance at %s>" % (self.this,)
    def setMaxEvaluations(*args): return _QuantLib.Secant_setMaxEvaluations(*args)
    def setLowerBound(*args): return _QuantLib.Secant_setLowerBound(*args)
    def setUpperBound(*args): return _QuantLib.Secant_setUpperBound(*args)
    def solve(*args): return _QuantLib.Secant_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Secant(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Secant):
        try:
            if self.thisown: destroy(self)
        except: pass

class SecantPtr(Secant):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Secant
_QuantLib.Secant_swigregister(SecantPtr)

class Newton(object):
    def __repr__(self):
        return "<C Newton instance at %s>" % (self.this,)
    def setMaxEvaluations(*args): return _QuantLib.Newton_setMaxEvaluations(*args)
    def setLowerBound(*args): return _QuantLib.Newton_setLowerBound(*args)
    def setUpperBound(*args): return _QuantLib.Newton_setUpperBound(*args)
    def solve(*args): return _QuantLib.Newton_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Newton(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Newton):
        try:
            if self.thisown: destroy(self)
        except: pass

class NewtonPtr(Newton):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Newton
_QuantLib.Newton_swigregister(NewtonPtr)

class NewtonSafe(object):
    def __repr__(self):
        return "<C NewtonSafe instance at %s>" % (self.this,)
    def setMaxEvaluations(*args): return _QuantLib.NewtonSafe_setMaxEvaluations(*args)
    def setLowerBound(*args): return _QuantLib.NewtonSafe_setLowerBound(*args)
    def setUpperBound(*args): return _QuantLib.NewtonSafe_setUpperBound(*args)
    def solve(*args): return _QuantLib.NewtonSafe_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_NewtonSafe(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NewtonSafe):
        try:
            if self.thisown: destroy(self)
        except: pass

class NewtonSafePtr(NewtonSafe):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NewtonSafe
_QuantLib.NewtonSafe_swigregister(NewtonSafePtr)

class Constraint(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Constraint instance at %s>" % (self.this,)
    def __del__(self, destroy=_QuantLib.delete_Constraint):
        try:
            if self.thisown: destroy(self)
        except: pass

class ConstraintPtr(Constraint):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Constraint
_QuantLib.Constraint_swigregister(ConstraintPtr)

class BoundaryConstraint(Constraint):
    def __repr__(self):
        return "<C BoundaryConstraint instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BoundaryConstraint(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BoundaryConstraint):
        try:
            if self.thisown: destroy(self)
        except: pass

class BoundaryConstraintPtr(BoundaryConstraint):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BoundaryConstraint
_QuantLib.BoundaryConstraint_swigregister(BoundaryConstraintPtr)

class NoConstraint(Constraint):
    def __repr__(self):
        return "<C NoConstraint instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_NoConstraint(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_NoConstraint):
        try:
            if self.thisown: destroy(self)
        except: pass

class NoConstraintPtr(NoConstraint):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = NoConstraint
_QuantLib.NoConstraint_swigregister(NoConstraintPtr)

class PositiveConstraint(Constraint):
    def __repr__(self):
        return "<C PositiveConstraint instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PositiveConstraint(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_PositiveConstraint):
        try:
            if self.thisown: destroy(self)
        except: pass

class PositiveConstraintPtr(PositiveConstraint):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PositiveConstraint
_QuantLib.PositiveConstraint_swigregister(PositiveConstraintPtr)

class EndCriteria(object):
    def __repr__(self):
        return "<C EndCriteria instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_EndCriteria(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def setPositiveOptimization(*args): return _QuantLib.EndCriteria_setPositiveOptimization(*args)
    def __call__(*args): return _QuantLib.EndCriteria___call__(*args)
    def __del__(self, destroy=_QuantLib.delete_EndCriteria):
        try:
            if self.thisown: destroy(self)
        except: pass

class EndCriteriaPtr(EndCriteria):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = EndCriteria
_QuantLib.EndCriteria_swigregister(EndCriteriaPtr)

class OptimizationMethod(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C OptimizationMethod instance at %s>" % (self.this,)
    def setInitialValue(*args): return _QuantLib.OptimizationMethod_setInitialValue(*args)
    def setEndCriteria(*args): return _QuantLib.OptimizationMethod_setEndCriteria(*args)
    def __del__(self, destroy=_QuantLib.delete_OptimizationMethod):
        try:
            if self.thisown: destroy(self)
        except: pass

class OptimizationMethodPtr(OptimizationMethod):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = OptimizationMethod
_QuantLib.OptimizationMethod_swigregister(OptimizationMethodPtr)

class ConjugateGradient(OptimizationMethod):
    def __repr__(self):
        return "<C ConjugateGradient instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_ConjugateGradient(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ConjugateGradient):
        try:
            if self.thisown: destroy(self)
        except: pass

class ConjugateGradientPtr(ConjugateGradient):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ConjugateGradient
_QuantLib.ConjugateGradient_swigregister(ConjugateGradientPtr)

class Simplex(OptimizationMethod):
    def __repr__(self):
        return "<C Simplex instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Simplex(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Simplex):
        try:
            if self.thisown: destroy(self)
        except: pass

class SimplexPtr(Simplex):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Simplex
_QuantLib.Simplex_swigregister(SimplexPtr)

class SteepestDescent(OptimizationMethod):
    def __repr__(self):
        return "<C SteepestDescent instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SteepestDescent(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SteepestDescent):
        try:
            if self.thisown: destroy(self)
        except: pass

class SteepestDescentPtr(SteepestDescent):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SteepestDescent
_QuantLib.SteepestDescent_swigregister(SteepestDescentPtr)

class Optimizer(object):
    def __repr__(self):
        return "<C Optimizer instance at %s>" % (self.this,)
    def solve(*args): return _QuantLib.Optimizer_solve(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Optimizer(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Optimizer):
        try:
            if self.thisown: destroy(self)
        except: pass

class OptimizerPtr(Optimizer):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Optimizer
_QuantLib.Optimizer_swigregister(OptimizerPtr)

class PlainVanillaPayoff(Payoff):
    def __repr__(self):
        return "<C PlainVanillaPayoffPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PlainVanillaPayoff(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_PlainVanillaPayoff):
        try:
            if self.thisown: destroy(self)
        except: pass

class PlainVanillaPayoffPtr(PlainVanillaPayoff):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PlainVanillaPayoff
_QuantLib.PlainVanillaPayoff_swigregister(PlainVanillaPayoffPtr)

class PercentageStrikePayoff(Payoff):
    def __repr__(self):
        return "<C PercentageStrikePayoffPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PercentageStrikePayoff(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_PercentageStrikePayoff):
        try:
            if self.thisown: destroy(self)
        except: pass

class PercentageStrikePayoffPtr(PercentageStrikePayoff):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PercentageStrikePayoff
_QuantLib.PercentageStrikePayoff_swigregister(PercentageStrikePayoffPtr)

class CashOrNothingPayoff(Payoff):
    def __repr__(self):
        return "<C CashOrNothingPayoffPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CashOrNothingPayoff(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CashOrNothingPayoff):
        try:
            if self.thisown: destroy(self)
        except: pass

class CashOrNothingPayoffPtr(CashOrNothingPayoff):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CashOrNothingPayoff
_QuantLib.CashOrNothingPayoff_swigregister(CashOrNothingPayoffPtr)

class AssetOrNothingPayoff(Payoff):
    def __repr__(self):
        return "<C AssetOrNothingPayoffPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AssetOrNothingPayoff(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AssetOrNothingPayoff):
        try:
            if self.thisown: destroy(self)
        except: pass

class AssetOrNothingPayoffPtr(AssetOrNothingPayoff):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AssetOrNothingPayoff
_QuantLib.AssetOrNothingPayoff_swigregister(AssetOrNothingPayoffPtr)

class SuperSharePayoff(Payoff):
    def __repr__(self):
        return "<C SuperSharePayoffPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SuperSharePayoff(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SuperSharePayoff):
        try:
            if self.thisown: destroy(self)
        except: pass

class SuperSharePayoffPtr(SuperSharePayoff):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SuperSharePayoff
_QuantLib.SuperSharePayoff_swigregister(SuperSharePayoffPtr)

class RateHelper(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(RateHelper)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.RateHelper___deref__(*args)
    def __nonzero__(*args): return _QuantLib.RateHelper___nonzero__(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_RateHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_RateHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class RateHelperPtr(RateHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = RateHelper
_QuantLib.RateHelper_swigregister(RateHelperPtr)

class DepositRateHelper(RateHelper):
    def __repr__(self):
        return "<C DepositRateHelperPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DepositRateHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_DepositRateHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class DepositRateHelperPtr(DepositRateHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DepositRateHelper
_QuantLib.DepositRateHelper_swigregister(DepositRateHelperPtr)

class FraRateHelper(RateHelper):
    def __repr__(self):
        return "<C FraRateHelperPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FraRateHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FraRateHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class FraRateHelperPtr(FraRateHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FraRateHelper
_QuantLib.FraRateHelper_swigregister(FraRateHelperPtr)

class FuturesRateHelper(RateHelper):
    def __repr__(self):
        return "<C FuturesRateHelperPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FuturesRateHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_FuturesRateHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class FuturesRateHelperPtr(FuturesRateHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FuturesRateHelper
_QuantLib.FuturesRateHelper_swigregister(FuturesRateHelperPtr)

class SwapRateHelper(RateHelper):
    def __repr__(self):
        return "<C SwapRateHelperPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SwapRateHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SwapRateHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class SwapRateHelperPtr(SwapRateHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SwapRateHelper
_QuantLib.SwapRateHelper_swigregister(SwapRateHelperPtr)

class RateHelperVector(object):
    def __repr__(self):
        return "<C std::vector<(boost::shared_ptr<(RateHelper)>)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_RateHelperVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.RateHelperVector___len__(*args)
    def clear(*args): return _QuantLib.RateHelperVector_clear(*args)
    def append(*args): return _QuantLib.RateHelperVector_append(*args)
    def __nonzero__(*args): return _QuantLib.RateHelperVector___nonzero__(*args)
    def pop(*args): return _QuantLib.RateHelperVector_pop(*args)
    def __getitem__(*args): return _QuantLib.RateHelperVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.RateHelperVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.RateHelperVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.RateHelperVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.RateHelperVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.RateHelperVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_RateHelperVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class RateHelperVectorPtr(RateHelperVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = RateHelperVector
_QuantLib.RateHelperVector_swigregister(RateHelperVectorPtr)

class PiecewiseFlatForward(YieldTermStructure):
    def __repr__(self):
        return "<C PiecewiseFlatForwardPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_PiecewiseFlatForward(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def dates(*args): return _QuantLib.PiecewiseFlatForward_dates(*args)
    def times(*args): return _QuantLib.PiecewiseFlatForward_times(*args)
    def __del__(self, destroy=_QuantLib.delete_PiecewiseFlatForward):
        try:
            if self.thisown: destroy(self)
        except: pass

class PiecewiseFlatForwardPtr(PiecewiseFlatForward):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = PiecewiseFlatForward
_QuantLib.PiecewiseFlatForward_swigregister(PiecewiseFlatForwardPtr)

class Settings(object):
    def __init__(self): raise RuntimeError, "No constructor defined"
    def __repr__(self):
        return "<C Settings instance at %s>" % (self.this,)
    instance = staticmethod(_QuantLib.Settings_instance)
    def getEvaluationDate(*args): return _QuantLib.Settings_getEvaluationDate(*args)
    def setEvaluationDate(*args): return _QuantLib.Settings_setEvaluationDate(*args)
    evaluationDate = property(getEvaluationDate,setEvaluationDate,None)

    def __del__(self, destroy=_QuantLib.delete_Settings):
        try:
            if self.thisown: destroy(self)
        except: pass

class SettingsPtr(Settings):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Settings
_QuantLib.Settings_swigregister(SettingsPtr)

Settings_instance = _QuantLib.Settings_instance

class CalibrationHelper(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(CalibrationHelper)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.CalibrationHelper___deref__(*args)
    def __nonzero__(*args): return _QuantLib.CalibrationHelper___nonzero__(*args)
    def setPricingEngine(*args): return _QuantLib.CalibrationHelper_setPricingEngine(*args)
    def marketValue(*args): return _QuantLib.CalibrationHelper_marketValue(*args)
    def modelValue(*args): return _QuantLib.CalibrationHelper_modelValue(*args)
    def impliedVolatility(*args): return _QuantLib.CalibrationHelper_impliedVolatility(*args)
    def blackPrice(*args): return _QuantLib.CalibrationHelper_blackPrice(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_CalibrationHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CalibrationHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class CalibrationHelperPtr(CalibrationHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CalibrationHelper
_QuantLib.CalibrationHelper_swigregister(CalibrationHelperPtr)

class SwaptionHelper(CalibrationHelper):
    def __repr__(self):
        return "<C SwaptionHelperPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SwaptionHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def times(*args): return _QuantLib.SwaptionHelper_times(*args)
    def __del__(self, destroy=_QuantLib.delete_SwaptionHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class SwaptionHelperPtr(SwaptionHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SwaptionHelper
_QuantLib.SwaptionHelper_swigregister(SwaptionHelperPtr)

class CapHelper(CalibrationHelper):
    def __repr__(self):
        return "<C CapHelperPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CapHelper(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def times(*args): return _QuantLib.CapHelper_times(*args)
    def __del__(self, destroy=_QuantLib.delete_CapHelper):
        try:
            if self.thisown: destroy(self)
        except: pass

class CapHelperPtr(CapHelper):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CapHelper
_QuantLib.CapHelper_swigregister(CapHelperPtr)

class CalibrationHelperVector(object):
    def __repr__(self):
        return "<C std::vector<(boost::shared_ptr<(CalibrationHelper)>)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CalibrationHelperVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.CalibrationHelperVector___len__(*args)
    def clear(*args): return _QuantLib.CalibrationHelperVector_clear(*args)
    def append(*args): return _QuantLib.CalibrationHelperVector_append(*args)
    def __nonzero__(*args): return _QuantLib.CalibrationHelperVector___nonzero__(*args)
    def pop(*args): return _QuantLib.CalibrationHelperVector_pop(*args)
    def __getitem__(*args): return _QuantLib.CalibrationHelperVector___getitem__(*args)
    def __getslice__(*args): return _QuantLib.CalibrationHelperVector___getslice__(*args)
    def __setitem__(*args): return _QuantLib.CalibrationHelperVector___setitem__(*args)
    def __setslice__(*args): return _QuantLib.CalibrationHelperVector___setslice__(*args)
    def __delitem__(*args): return _QuantLib.CalibrationHelperVector___delitem__(*args)
    def __delslice__(*args): return _QuantLib.CalibrationHelperVector___delslice__(*args)
    def __del__(self, destroy=_QuantLib.delete_CalibrationHelperVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class CalibrationHelperVectorPtr(CalibrationHelperVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CalibrationHelperVector
_QuantLib.CalibrationHelperVector_swigregister(CalibrationHelperVectorPtr)

class ShortRateModel(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(ShortRateModel)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.ShortRateModel___deref__(*args)
    def __nonzero__(*args): return _QuantLib.ShortRateModel___nonzero__(*args)
    def asObservable(*args): return _QuantLib.ShortRateModel_asObservable(*args)
    def params(*args): return _QuantLib.ShortRateModel_params(*args)
    def calibrate(*args): return _QuantLib.ShortRateModel_calibrate(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_ShortRateModel(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_ShortRateModel):
        try:
            if self.thisown: destroy(self)
        except: pass

class ShortRateModelPtr(ShortRateModel):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = ShortRateModel
_QuantLib.ShortRateModel_swigregister(ShortRateModelPtr)

class HullWhite(ShortRateModel):
    def __repr__(self):
        return "<C HullWhitePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_HullWhite(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_HullWhite):
        try:
            if self.thisown: destroy(self)
        except: pass

class HullWhitePtr(HullWhite):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = HullWhite
_QuantLib.HullWhite_swigregister(HullWhitePtr)

class BlackKarasinski(ShortRateModel):
    def __repr__(self):
        return "<C BlackKarasinskiPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackKarasinski(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackKarasinski):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackKarasinskiPtr(BlackKarasinski):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackKarasinski
_QuantLib.BlackKarasinski_swigregister(BlackKarasinskiPtr)

class JamshidianSwaptionEngine(PricingEngine):
    def __repr__(self):
        return "<C JamshidianSwaptionEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_JamshidianSwaptionEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_JamshidianSwaptionEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class JamshidianSwaptionEnginePtr(JamshidianSwaptionEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = JamshidianSwaptionEngine
_QuantLib.JamshidianSwaptionEngine_swigregister(JamshidianSwaptionEnginePtr)

class TreeSwaptionEngine(PricingEngine):
    def __repr__(self):
        return "<C TreeSwaptionEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TreeSwaptionEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_TreeSwaptionEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class TreeSwaptionEnginePtr(TreeSwaptionEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TreeSwaptionEngine
_QuantLib.TreeSwaptionEngine_swigregister(TreeSwaptionEnginePtr)

class AnalyticCapFloorEngine(PricingEngine):
    def __repr__(self):
        return "<C AnalyticCapFloorEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_AnalyticCapFloorEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_AnalyticCapFloorEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class AnalyticCapFloorEnginePtr(AnalyticCapFloorEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = AnalyticCapFloorEngine
_QuantLib.AnalyticCapFloorEngine_swigregister(AnalyticCapFloorEnginePtr)

class TreeCapFloorEngine(PricingEngine):
    def __repr__(self):
        return "<C TreeCapFloorEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TreeCapFloorEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_TreeCapFloorEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class TreeCapFloorEnginePtr(TreeCapFloorEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TreeCapFloorEngine
_QuantLib.TreeCapFloorEngine_swigregister(TreeCapFloorEnginePtr)

class Statistics(object):
    def __repr__(self):
        return "<C Statistics instance at %s>" % (self.this,)
    def samples(*args): return _QuantLib.Statistics_samples(*args)
    def weightSum(*args): return _QuantLib.Statistics_weightSum(*args)
    def mean(*args): return _QuantLib.Statistics_mean(*args)
    def variance(*args): return _QuantLib.Statistics_variance(*args)
    def standardDeviation(*args): return _QuantLib.Statistics_standardDeviation(*args)
    def errorEstimate(*args): return _QuantLib.Statistics_errorEstimate(*args)
    def skewness(*args): return _QuantLib.Statistics_skewness(*args)
    def kurtosis(*args): return _QuantLib.Statistics_kurtosis(*args)
    def min(*args): return _QuantLib.Statistics_min(*args)
    def max(*args): return _QuantLib.Statistics_max(*args)
    def reset(*args): return _QuantLib.Statistics_reset(*args)
    def add(*args): return _QuantLib.Statistics_add(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_Statistics(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Statistics):
        try:
            if self.thisown: destroy(self)
        except: pass

class StatisticsPtr(Statistics):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Statistics
_QuantLib.Statistics_swigregister(StatisticsPtr)

class RiskStatistics(Statistics):
    def __repr__(self):
        return "<C RiskStatistics instance at %s>" % (self.this,)
    def semiVariance(*args): return _QuantLib.RiskStatistics_semiVariance(*args)
    def semiDeviation(*args): return _QuantLib.RiskStatistics_semiDeviation(*args)
    def downsideVariance(*args): return _QuantLib.RiskStatistics_downsideVariance(*args)
    def downsideDeviation(*args): return _QuantLib.RiskStatistics_downsideDeviation(*args)
    def regret(*args): return _QuantLib.RiskStatistics_regret(*args)
    def potentialUpside(*args): return _QuantLib.RiskStatistics_potentialUpside(*args)
    def valueAtRisk(*args): return _QuantLib.RiskStatistics_valueAtRisk(*args)
    def expectedShortfall(*args): return _QuantLib.RiskStatistics_expectedShortfall(*args)
    def shortfall(*args): return _QuantLib.RiskStatistics_shortfall(*args)
    def averageShortfall(*args): return _QuantLib.RiskStatistics_averageShortfall(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_RiskStatistics(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_RiskStatistics):
        try:
            if self.thisown: destroy(self)
        except: pass

class RiskStatisticsPtr(RiskStatistics):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = RiskStatistics
_QuantLib.RiskStatistics_swigregister(RiskStatisticsPtr)

class MultipleStatistics(object):
    def __repr__(self):
        return "<C SequenceStatistics<(Statistics)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_MultipleStatistics(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def size(*args): return _QuantLib.MultipleStatistics_size(*args)
    def samples(*args): return _QuantLib.MultipleStatistics_samples(*args)
    def weightSum(*args): return _QuantLib.MultipleStatistics_weightSum(*args)
    def mean(*args): return _QuantLib.MultipleStatistics_mean(*args)
    def variance(*args): return _QuantLib.MultipleStatistics_variance(*args)
    def standardDeviation(*args): return _QuantLib.MultipleStatistics_standardDeviation(*args)
    def errorEstimate(*args): return _QuantLib.MultipleStatistics_errorEstimate(*args)
    def skewness(*args): return _QuantLib.MultipleStatistics_skewness(*args)
    def kurtosis(*args): return _QuantLib.MultipleStatistics_kurtosis(*args)
    def min(*args): return _QuantLib.MultipleStatistics_min(*args)
    def max(*args): return _QuantLib.MultipleStatistics_max(*args)
    def covariance(*args): return _QuantLib.MultipleStatistics_covariance(*args)
    def correlation(*args): return _QuantLib.MultipleStatistics_correlation(*args)
    def reset(*args): return _QuantLib.MultipleStatistics_reset(*args)
    def add(*args): return _QuantLib.MultipleStatistics_add(*args)
    def __del__(self, destroy=_QuantLib.delete_MultipleStatistics):
        try:
            if self.thisown: destroy(self)
        except: pass

class MultipleStatisticsPtr(MultipleStatistics):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = MultipleStatistics
_QuantLib.MultipleStatistics_swigregister(MultipleStatisticsPtr)

class TimeBasket(object):
    def __repr__(self):
        return "<C TimeBasket instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_TimeBasket(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __len__(*args): return _QuantLib.TimeBasket___len__(*args)
    def rebin(*args): return _QuantLib.TimeBasket_rebin(*args)
    def __getitem__(*args): return _QuantLib.TimeBasket___getitem__(*args)
    def __setitem__(*args): return _QuantLib.TimeBasket___setitem__(*args)
    def items(*args): return _QuantLib.TimeBasket_items(*args)
    def __contains__(*args): return _QuantLib.TimeBasket___contains__(*args)
    def __iter__(*args): return _QuantLib.TimeBasket___iter__(*args)
    def __del__(self, destroy=_QuantLib.delete_TimeBasket):
        try:
            if self.thisown: destroy(self)
        except: pass

class TimeBasketPtr(TimeBasket):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = TimeBasket
_QuantLib.TimeBasket_swigregister(TimeBasketPtr)

class Swap(Instrument):
    def __repr__(self):
        return "<C SwapPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Swap(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def startDate(*args): return _QuantLib.Swap_startDate(*args)
    def maturity(*args): return _QuantLib.Swap_maturity(*args)
    def firstLegBPS(*args): return _QuantLib.Swap_firstLegBPS(*args)
    def secondLegBPS(*args): return _QuantLib.Swap_secondLegBPS(*args)
    def sensitivity(*args): return _QuantLib.Swap_sensitivity(*args)
    def __del__(self, destroy=_QuantLib.delete_Swap):
        try:
            if self.thisown: destroy(self)
        except: pass

class SwapPtr(Swap):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Swap
_QuantLib.Swap_swigregister(SwapPtr)

class SimpleSwap(Swap):
    def __repr__(self):
        return "<C SimpleSwapPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SimpleSwap(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def fairRate(*args): return _QuantLib.SimpleSwap_fairRate(*args)
    def fairSpread(*args): return _QuantLib.SimpleSwap_fairSpread(*args)
    def fixedLegBPS(*args): return _QuantLib.SimpleSwap_fixedLegBPS(*args)
    def floatingLegBPS(*args): return _QuantLib.SimpleSwap_floatingLegBPS(*args)
    def __del__(self, destroy=_QuantLib.delete_SimpleSwap):
        try:
            if self.thisown: destroy(self)
        except: pass

class SimpleSwapPtr(SimpleSwap):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SimpleSwap
_QuantLib.SimpleSwap_swigregister(SimpleSwapPtr)

class Swaption(Instrument):
    def __repr__(self):
        return "<C SwaptionPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_Swaption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_Swaption):
        try:
            if self.thisown: destroy(self)
        except: pass

class SwaptionPtr(Swaption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = Swaption
_QuantLib.Swaption_swigregister(SwaptionPtr)

class BlackSwaptionEngine(PricingEngine):
    def __repr__(self):
        return "<C BlackSwaptionEnginePtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_BlackSwaptionEngine(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_BlackSwaptionEngine):
        try:
            if self.thisown: destroy(self)
        except: pass

class BlackSwaptionEnginePtr(BlackSwaptionEngine):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = BlackSwaptionEngine
_QuantLib.BlackSwaptionEngine_swigregister(BlackSwaptionEnginePtr)

class DiscreteGeometricASO(object):
    def __repr__(self):
        return "<C DiscreteGeometricASO instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_DiscreteGeometricASO(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.DiscreteGeometricASO_value(*args)
    def __del__(self, destroy=_QuantLib.delete_DiscreteGeometricASO):
        try:
            if self.thisown: destroy(self)
        except: pass

class DiscreteGeometricASOPtr(DiscreteGeometricASO):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = DiscreteGeometricASO
_QuantLib.DiscreteGeometricASO_swigregister(DiscreteGeometricASOPtr)

class FdEuropean(object):
    def __repr__(self):
        return "<C FdEuropean instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FdEuropean(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.FdEuropean_value(*args)
    def delta(*args): return _QuantLib.FdEuropean_delta(*args)
    def gamma(*args): return _QuantLib.FdEuropean_gamma(*args)
    def theta(*args): return _QuantLib.FdEuropean_theta(*args)
    def vega(*args): return _QuantLib.FdEuropean_vega(*args)
    def rho(*args): return _QuantLib.FdEuropean_rho(*args)
    def dividendRho(*args): return _QuantLib.FdEuropean_dividendRho(*args)
    def impliedVolatility(*args): return _QuantLib.FdEuropean_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_FdEuropean):
        try:
            if self.thisown: destroy(self)
        except: pass

class FdEuropeanPtr(FdEuropean):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FdEuropean
_QuantLib.FdEuropean_swigregister(FdEuropeanPtr)

class FdAmericanOption(object):
    def __repr__(self):
        return "<C FdAmericanOption instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FdAmericanOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.FdAmericanOption_value(*args)
    def delta(*args): return _QuantLib.FdAmericanOption_delta(*args)
    def gamma(*args): return _QuantLib.FdAmericanOption_gamma(*args)
    def theta(*args): return _QuantLib.FdAmericanOption_theta(*args)
    def vega(*args): return _QuantLib.FdAmericanOption_vega(*args)
    def rho(*args): return _QuantLib.FdAmericanOption_rho(*args)
    def dividendRho(*args): return _QuantLib.FdAmericanOption_dividendRho(*args)
    def impliedVolatility(*args): return _QuantLib.FdAmericanOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_FdAmericanOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class FdAmericanOptionPtr(FdAmericanOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FdAmericanOption
_QuantLib.FdAmericanOption_swigregister(FdAmericanOptionPtr)

class FdDividendAmericanOption(object):
    def __repr__(self):
        return "<C FdDividendAmericanOption instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FdDividendAmericanOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.FdDividendAmericanOption_value(*args)
    def delta(*args): return _QuantLib.FdDividendAmericanOption_delta(*args)
    def gamma(*args): return _QuantLib.FdDividendAmericanOption_gamma(*args)
    def theta(*args): return _QuantLib.FdDividendAmericanOption_theta(*args)
    def vega(*args): return _QuantLib.FdDividendAmericanOption_vega(*args)
    def rho(*args): return _QuantLib.FdDividendAmericanOption_rho(*args)
    def dividendRho(*args): return _QuantLib.FdDividendAmericanOption_dividendRho(*args)
    def impliedVolatility(*args): return _QuantLib.FdDividendAmericanOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_FdDividendAmericanOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class FdDividendAmericanOptionPtr(FdDividendAmericanOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FdDividendAmericanOption
_QuantLib.FdDividendAmericanOption_swigregister(FdDividendAmericanOptionPtr)

class FdShoutOption(object):
    def __repr__(self):
        return "<C FdShoutOption instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FdShoutOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.FdShoutOption_value(*args)
    def delta(*args): return _QuantLib.FdShoutOption_delta(*args)
    def gamma(*args): return _QuantLib.FdShoutOption_gamma(*args)
    def theta(*args): return _QuantLib.FdShoutOption_theta(*args)
    def vega(*args): return _QuantLib.FdShoutOption_vega(*args)
    def rho(*args): return _QuantLib.FdShoutOption_rho(*args)
    def dividendRho(*args): return _QuantLib.FdShoutOption_dividendRho(*args)
    def impliedVolatility(*args): return _QuantLib.FdShoutOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_FdShoutOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class FdShoutOptionPtr(FdShoutOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FdShoutOption
_QuantLib.FdShoutOption_swigregister(FdShoutOptionPtr)

class FdDividendShoutOption(object):
    def __repr__(self):
        return "<C FdDividendShoutOption instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FdDividendShoutOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.FdDividendShoutOption_value(*args)
    def delta(*args): return _QuantLib.FdDividendShoutOption_delta(*args)
    def gamma(*args): return _QuantLib.FdDividendShoutOption_gamma(*args)
    def theta(*args): return _QuantLib.FdDividendShoutOption_theta(*args)
    def vega(*args): return _QuantLib.FdDividendShoutOption_vega(*args)
    def rho(*args): return _QuantLib.FdDividendShoutOption_rho(*args)
    def dividendRho(*args): return _QuantLib.FdDividendShoutOption_dividendRho(*args)
    def impliedVolatility(*args): return _QuantLib.FdDividendShoutOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_FdDividendShoutOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class FdDividendShoutOptionPtr(FdDividendShoutOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FdDividendShoutOption
_QuantLib.FdDividendShoutOption_swigregister(FdDividendShoutOptionPtr)

class FdBermudanOption(object):
    def __repr__(self):
        return "<C FdBermudanOption instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_FdBermudanOption(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.FdBermudanOption_value(*args)
    def delta(*args): return _QuantLib.FdBermudanOption_delta(*args)
    def gamma(*args): return _QuantLib.FdBermudanOption_gamma(*args)
    def theta(*args): return _QuantLib.FdBermudanOption_theta(*args)
    def vega(*args): return _QuantLib.FdBermudanOption_vega(*args)
    def rho(*args): return _QuantLib.FdBermudanOption_rho(*args)
    def dividendRho(*args): return _QuantLib.FdBermudanOption_dividendRho(*args)
    def impliedVolatility(*args): return _QuantLib.FdBermudanOption_impliedVolatility(*args)
    def __del__(self, destroy=_QuantLib.delete_FdBermudanOption):
        try:
            if self.thisown: destroy(self)
        except: pass

class FdBermudanOptionPtr(FdBermudanOption):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = FdBermudanOption
_QuantLib.FdBermudanOption_swigregister(FdBermudanOptionPtr)

class McDiscreteArithmeticASO(object):
    def __repr__(self):
        return "<C McDiscreteArithmeticASO instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_McDiscreteArithmeticASO(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.McDiscreteArithmeticASO_value(*args)
    def valueWithSamples(*args): return _QuantLib.McDiscreteArithmeticASO_valueWithSamples(*args)
    def errorEstimate(*args): return _QuantLib.McDiscreteArithmeticASO_errorEstimate(*args)
    def __del__(self, destroy=_QuantLib.delete_McDiscreteArithmeticASO):
        try:
            if self.thisown: destroy(self)
        except: pass

class McDiscreteArithmeticASOPtr(McDiscreteArithmeticASO):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = McDiscreteArithmeticASO
_QuantLib.McDiscreteArithmeticASO_swigregister(McDiscreteArithmeticASOPtr)

class McMaxBasket(object):
    def __repr__(self):
        return "<C McMaxBasket instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_McMaxBasket(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.McMaxBasket_value(*args)
    def valueWithSamples(*args): return _QuantLib.McMaxBasket_valueWithSamples(*args)
    def errorEstimate(*args): return _QuantLib.McMaxBasket_errorEstimate(*args)
    def __del__(self, destroy=_QuantLib.delete_McMaxBasket):
        try:
            if self.thisown: destroy(self)
        except: pass

class McMaxBasketPtr(McMaxBasket):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = McMaxBasket
_QuantLib.McMaxBasket_swigregister(McMaxBasketPtr)

class McHimalaya(object):
    def __repr__(self):
        return "<C McHimalaya instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_McHimalaya(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.McHimalaya_value(*args)
    def valueWithSamples(*args): return _QuantLib.McHimalaya_valueWithSamples(*args)
    def errorEstimate(*args): return _QuantLib.McHimalaya_errorEstimate(*args)
    def __del__(self, destroy=_QuantLib.delete_McHimalaya):
        try:
            if self.thisown: destroy(self)
        except: pass

class McHimalayaPtr(McHimalaya):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = McHimalaya
_QuantLib.McHimalaya_swigregister(McHimalayaPtr)

class McEverest(object):
    def __repr__(self):
        return "<C McEverest instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_McEverest(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.McEverest_value(*args)
    def valueWithSamples(*args): return _QuantLib.McEverest_valueWithSamples(*args)
    def errorEstimate(*args): return _QuantLib.McEverest_errorEstimate(*args)
    def __del__(self, destroy=_QuantLib.delete_McEverest):
        try:
            if self.thisown: destroy(self)
        except: pass

class McEverestPtr(McEverest):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = McEverest
_QuantLib.McEverest_swigregister(McEverestPtr)

class McPagoda(object):
    def __repr__(self):
        return "<C McPagoda instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_McPagoda(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def value(*args): return _QuantLib.McPagoda_value(*args)
    def valueWithSamples(*args): return _QuantLib.McPagoda_valueWithSamples(*args)
    def errorEstimate(*args): return _QuantLib.McPagoda_errorEstimate(*args)
    def __del__(self, destroy=_QuantLib.delete_McPagoda):
        try:
            if self.thisown: destroy(self)
        except: pass

class McPagodaPtr(McPagoda):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = McPagoda
_QuantLib.McPagoda_swigregister(McPagodaPtr)

class SwaptionVolatilityStructure(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(SwaptionVolatilityStructure)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.SwaptionVolatilityStructure___deref__(*args)
    def __nonzero__(*args): return _QuantLib.SwaptionVolatilityStructure___nonzero__(*args)
    def asObservable(*args): return _QuantLib.SwaptionVolatilityStructure_asObservable(*args)
    def volatility(*args): return _QuantLib.SwaptionVolatilityStructure_volatility(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_SwaptionVolatilityStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SwaptionVolatilityStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class SwaptionVolatilityStructurePtr(SwaptionVolatilityStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SwaptionVolatilityStructure
_QuantLib.SwaptionVolatilityStructure_swigregister(SwaptionVolatilityStructurePtr)

class SwaptionVolatilityStructureHandle(object):
    def __repr__(self):
        return "<C Handle<(SwaptionVolatilityStructure)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SwaptionVolatilityStructureHandle(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __deref__(*args): return _QuantLib.SwaptionVolatilityStructureHandle___deref__(*args)
    def linkTo(*args): return _QuantLib.SwaptionVolatilityStructureHandle_linkTo(*args)
    def __nonzero__(*args): return _QuantLib.SwaptionVolatilityStructureHandle___nonzero__(*args)
    def asObservable(*args): return _QuantLib.SwaptionVolatilityStructureHandle_asObservable(*args)
    def volatility(*args): return _QuantLib.SwaptionVolatilityStructureHandle_volatility(*args)
    def __del__(self, destroy=_QuantLib.delete_SwaptionVolatilityStructureHandle):
        try:
            if self.thisown: destroy(self)
        except: pass

class SwaptionVolatilityStructureHandlePtr(SwaptionVolatilityStructureHandle):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SwaptionVolatilityStructureHandle
_QuantLib.SwaptionVolatilityStructureHandle_swigregister(SwaptionVolatilityStructureHandlePtr)

class SwaptionVolatilityMatrix(SwaptionVolatilityStructure):
    def __repr__(self):
        return "<C SwaptionVolatilityMatrixPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_SwaptionVolatilityMatrix(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_SwaptionVolatilityMatrix):
        try:
            if self.thisown: destroy(self)
        except: pass

class SwaptionVolatilityMatrixPtr(SwaptionVolatilityMatrix):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = SwaptionVolatilityMatrix
_QuantLib.SwaptionVolatilityMatrix_swigregister(SwaptionVolatilityMatrixPtr)

class CapVolatilityStructure(object):
    def __repr__(self):
        return "<C boost::shared_ptr<(CapVolatilityStructure)> instance at %s>" % (self.this,)
    def __deref__(*args): return _QuantLib.CapVolatilityStructure___deref__(*args)
    def __nonzero__(*args): return _QuantLib.CapVolatilityStructure___nonzero__(*args)
    def asObservable(*args): return _QuantLib.CapVolatilityStructure_asObservable(*args)
    def volatility(*args): return _QuantLib.CapVolatilityStructure_volatility(*args)
    def __init__(self, *args):
        newobj = _QuantLib.new_CapVolatilityStructure(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CapVolatilityStructure):
        try:
            if self.thisown: destroy(self)
        except: pass

class CapVolatilityStructurePtr(CapVolatilityStructure):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CapVolatilityStructure
_QuantLib.CapVolatilityStructure_swigregister(CapVolatilityStructurePtr)

class CapVolatilityStructureHandle(object):
    def __repr__(self):
        return "<C Handle<(CapVolatilityStructure)> instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CapVolatilityStructureHandle(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __deref__(*args): return _QuantLib.CapVolatilityStructureHandle___deref__(*args)
    def linkTo(*args): return _QuantLib.CapVolatilityStructureHandle_linkTo(*args)
    def __nonzero__(*args): return _QuantLib.CapVolatilityStructureHandle___nonzero__(*args)
    def asObservable(*args): return _QuantLib.CapVolatilityStructureHandle_asObservable(*args)
    def volatility(*args): return _QuantLib.CapVolatilityStructureHandle_volatility(*args)
    def __del__(self, destroy=_QuantLib.delete_CapVolatilityStructureHandle):
        try:
            if self.thisown: destroy(self)
        except: pass

class CapVolatilityStructureHandlePtr(CapVolatilityStructureHandle):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CapVolatilityStructureHandle
_QuantLib.CapVolatilityStructureHandle_swigregister(CapVolatilityStructureHandlePtr)

class CapVolatilityVector(CapVolatilityStructure):
    def __repr__(self):
        return "<C CapVolatilityVectorPtr instance at %s>" % (self.this,)
    def __init__(self, *args):
        newobj = _QuantLib.new_CapVolatilityVector(*args)
        self.this = newobj.this
        self.thisown = 1
        del newobj.thisown
    def __del__(self, destroy=_QuantLib.delete_CapVolatilityVector):
        try:
            if self.thisown: destroy(self)
        except: pass

class CapVolatilityVectorPtr(CapVolatilityVector):
    def __init__(self, this):
        self.this = this
        if not hasattr(self,"thisown"): self.thisown = 0
        self.__class__ = CapVolatilityVector
_QuantLib.CapVolatilityVector_swigregister(CapVolatilityVectorPtr)


