Framework for calculation on demand and result caching. More...
#include <ql/patterns/lazyobject.hpp>
Inherits Observable, and Observer.
Inherited by AbcdAtmVolCurve, Basket, CalibrationHelper, CapFloorTermVolCurve, CapFloorTermVolSurface, CmsMarket, EurodollarFuturesImpliedStdDevQuote, Fdm1DimSolver, Fdm2dBlackScholesSolver, Fdm2DimSolver, Fdm3DimSolver, FdmBatesSolver, FdmBlackScholesSolver, FdmExtOUJumpSolver, FdmG2Solver, FdmHestonHullWhiteSolver, FdmHestonSolver, FdmHullWhiteSolver, FdmKlugeExtOUSolver< N >, FdmNdimSolver< N >, FdmSimple2dBSSolver, FdmSimple2dExtOUSolver, FdmSimple3dExtOUJumpSolver, FittedBondDiscountCurve, FlatForward, ForwardSwapQuote, Gaussian1dModel, HestonSLVFDMModel, HestonSLVMCModel, ImpliedStdDevQuote, Instrument, InterpolatedSmileSection< Interpolator >, LocalVolRNDCalculator, NoArbSabrInterpolatedSmileSection, OneFactorCopula, PiecewiseDefaultCurve< Traits, Interpolator, Bootstrap >, PiecewiseYieldCurve< Traits, Interpolator, Bootstrap >, PiecewiseYoYInflationCurve< Interpolator, Bootstrap, Traits >, PiecewiseYoYOptionletVolatilityCurve< Interpolator, Bootstrap, Traits >, PiecewiseZeroInflationCurve< Interpolator, Bootstrap, Traits >, RandomLM< derivedRandomLM, copulaPolicy, USNG > [virtual]
, RendistatoCalculator [private]
, SabrInterpolatedSmileSection, StrippedOptionletAdapter, StrippedOptionletBase, SviInterpolatedSmileSection, SwaptionVolatilityDiscrete, ZabrInterpolatedSmileSection< Evaluation >, RandomLM< RandomDefaultLM, copulaPolicy, USNG > [virtual]
, and RandomLM< RandomLossLM, copulaPolicy, USNG > [virtual]
.
Public Member Functions | |
Observer interface | |
void | update () |
![]() | |
Observable (const Observable &) | |
Observable & | operator= (const Observable &) |
void | notifyObservers () |
![]() | |
Observer (const Observer &) | |
Observer & | operator= (const Observer &) |
std::pair< iterator, bool > | registerWith (const boost::shared_ptr< Observable > &) |
void | registerWithObservables (const boost::shared_ptr< Observer > &) |
Size | unregisterWith (const boost::shared_ptr< Observable > &) |
void | unregisterWithAll () |
Protected Attributes | |
bool | calculated_ |
bool | frozen_ |
Calculations | |
These methods do not modify the structure of the object and are therefore declared as | |
void | recalculate () |
void | freeze () |
void | unfreeze () |
virtual void | calculate () const |
virtual void | performCalculations () const =0 |
Additional Inherited Members | |
![]() | |
typedef std::set< boost::shared_ptr< Observable > > | set_type |
typedef set_type::iterator | iterator |
Framework for calculation on demand and result caching.
|
virtual |
This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.
Implements Observer.
Reimplemented in PiecewiseYieldCurve< Traits, Interpolator, Bootstrap >, PiecewiseDefaultCurve< Traits, Interpolator, Bootstrap >, FittedBondDiscountCurve, RandomLM< RandomDefaultLM, copulaPolicy, USNG >, RandomLM< RandomLossLM, copulaPolicy, USNG >, PiecewiseYoYInflationCurve< Interpolator, Bootstrap, Traits >, CapFloorTermVolCurve, CapFloorTermVolSurface, PiecewiseZeroInflationCurve< Interpolator, Bootstrap, Traits >, FlatForward, StrippedOptionletAdapter, CmsMarket, and ForwardSwapQuote.
void recalculate | ( | ) |
This method force the recalculation of any results which would otherwise be cached. It is not declared as const
since it needs to call the non-const
notifyObservers method.
void freeze | ( | ) |
This method constrains the object to return the presently cached results on successive invocations, even if arguments upon which they depend should change.
void unfreeze | ( | ) |
This method reverts the effect of the freeze method, thus re-enabling recalculations.
|
protectedvirtual |
This method performs all needed calculations by calling the performCalculations method.
Reimplemented in Instrument.
|
protectedpure virtual |
This method must implement any calculations which must be (re)done in order to calculate the desired results.
Implemented in MarkovFunctional, Gaussian1dModel, SwaptionVolatilityMatrix, Gsr, FixedRateBondForward, Forward, RandomLM< derivedRandomLM, copulaPolicy, USNG >, RandomLM< RandomDefaultLM, copulaPolicy, USNG >, RandomLM< RandomLossLM, copulaPolicy, USNG >, Instrument, CapFloorTermVolCurve, CapFloorTermVolSurface, SwaptionVolatilityCube, RiskyBond, AbcdAtmVolCurve, ConvertibleBond, OptionletStripper1, CompositeInstrument, EnergyVanillaSwap, HestonSLVMCModel, EnergyBasisSwap, StrippedOptionletAdapter, HestonModelHelper, CalibrationHelper, OptionletStripper2, ForwardSwapQuote, EurodollarFuturesImpliedStdDevQuote, ImpliedStdDevQuote, EnergyFuture, and Stock.