/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.model.volatility.surface;
/**
* @param <S> Type of the arguments
* @param <T> Return type of the function
*/
public interface BlackVolatilitySurfaceVisitor<S, T> {
T visitDelta(final BlackVolatilitySurfaceDelta surface, final S data);
T visitStrike(final BlackVolatilitySurfaceStrike surface, final S data);
T visitMoneyness(final BlackVolatilitySurfaceMoneyness surface, final S data);
T visitLogMoneyness(final BlackVolatilitySurfaceLogMoneyness surface, final S data);
T visitDelta(final BlackVolatilitySurfaceDelta surface);
T visitStrike(final BlackVolatilitySurfaceStrike surface);
T visitMoneyness(final BlackVolatilitySurfaceMoneyness surface);
T visitLogMoneyness(final BlackVolatilitySurfaceLogMoneyness surface);
}