/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.render;
import com.opengamma.analytics.financial.greeks.GreekResultCollection;
import com.opengamma.analytics.financial.model.interestrate.curve.YieldAndDiscountCurve;
import com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface;
/**
* Visitor pattern visitor.
*
* @param <T> the type being visited
*/
public interface RenderVisitor<T> {
/**
* Visit yield / discount curve.
* @param curve the curve, not null
* @return the visitor type
*/
T visitYieldAndDiscountCurve(YieldAndDiscountCurve curve);
/**
* Visit volatility surface.
* @param volatilitySurface the surface, not null
* @return the visitor type
*/
T visitVolatilitySurface(VolatilitySurface volatilitySurface);
/**
* Visit discount curves.
* @param greekResultCollection the greek results, not null
* @return the visitor type
*/
T visitGreekResultCollection(GreekResultCollection greekResultCollection);
}