/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security.hibernate.option;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.financial.security.option.PayoffStyleVisitor;
/**
* Payoff style of the option.
*/
public enum OptionPayoffStyle {
/** Asset or Nothing */
ASSET_OR_NOTHING,
/** Asymmetric powered */
ASYMMETRIC_POWERED,
/** Barrier */
BARRIER,
/** Capped Powered*/
CAPPED_POWERED,
/** Cash-or-Nothing*/
CASH_OR_NOTHING,
/** Extreme spread*/
EXTREME_SPREAD,
/** Fade-in */
FADE_IN,
/** Fixed-strike lookback*/
FIXED_STRIKE_LOOKBACK,
/** Floating-strike lookback*/
FLOATING_STRIKE_LOOKBACK,
/** Gap */
GAP,
/** Powered */
POWERED,
/** Simple chooser */
SIMPLE_CHOOSER,
/** Supershare */
SUPERSHARE,
/** Vanilla */
VANILLA;
public <T> T accept(final PayoffStyleVisitor<T> visitor) {
switch (this) {
case ASSET_OR_NOTHING:
return visitor.visitAssetOrNothingPayoffStyle(null);
case ASYMMETRIC_POWERED:
return visitor.visitAsymmetricPoweredPayoffStyle(null);
case BARRIER:
return visitor.visitBarrierPayoffStyle(null);
case CAPPED_POWERED:
return visitor.visitCappedPoweredPayoffStyle(null);
case CASH_OR_NOTHING:
return visitor.visitCashOrNothingPayoffStyle(null);
case EXTREME_SPREAD:
return visitor.visitExtremeSpreadPayoffStyle(null);
case FADE_IN:
return visitor.visitFadeInPayoffStyle(null);
case FIXED_STRIKE_LOOKBACK:
return visitor.visitFixedStrikeLookbackPayoffStyle(null);
case FLOATING_STRIKE_LOOKBACK:
return visitor.visitFloatingStrikeLookbackPayoffStyle(null);
case GAP:
return visitor.visitGapPayoffStyle(null);
case POWERED:
return visitor.visitPoweredPayoffStyle(null);
case SIMPLE_CHOOSER:
return visitor.visitSimpleChooserPayoffStyle(null);
case SUPERSHARE:
return visitor.visitSupersharePayoffStyle(null);
case VANILLA:
return visitor.visitVanillaPayoffStyle(null);
default:
throw new OpenGammaRuntimeException("unexpected enum value " + this);
}
}
}