/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.ircurve.strips;
/**
* Visitor interface for curve nodes.
* @param <T> The return type for the visitor
*/
public interface CurveNodeVisitor<T> {
/**
* Visits a {@link BillNode}.
* @param node A bill node
* @return The return value
*/
T visitBillNode(BillNode node);
/**
* Visits a {@link BondNode}.
* @param node A bond node
* @return The return value
*/
T visitBondNode(BondNode node);
/**
* Visits a {@link CalendarSwapNode}.
* @param node A calendar swap node
* @return The return value
*/
T visitCalendarSwapNode(CalendarSwapNode node);
/**
* Visits a {@link CashNode}.
* @param node A cash node
* @return The return value
*/
T visitCashNode(CashNode node);
/**
* Visits a {@link ContinuouslyCompoundedRateNode}.
* @param node A continuously compounded rate node
* @return The return value
*/
T visitContinuouslyCompoundedRateNode(ContinuouslyCompoundedRateNode node);
/**
* Visits a {@link PeriodicallyCompoundedRateNode}.
* @param node A periodically compounded rate node
* @return The return value
*/
T visitPeriodicallyCompoundedRateNode(PeriodicallyCompoundedRateNode node);
/**
* Visits a {@link CreditSpreadNode}.
* @param node A credit spread node
* @return The return value
*/
T visitCreditSpreadNode(CreditSpreadNode node);
/**
* Visits a {@link DeliverableSwapFutureNode}.
* @param node A deliverable swap future node
* @return The return value
*/
T visitDeliverableSwapFutureNode(DeliverableSwapFutureNode node);
/**
* Visits a {@link DiscountFactorNode}.
* @param node A discount factor node
* @return The return value
*/
T visitDiscountFactorNode(DiscountFactorNode node);
/**
* Visits a {@link FRANode}.
* @param node A FRA node
* @return The return value
*/
T visitFRANode(FRANode node);
/**
* Visits a {@link FXForwardNode}.
* @param node A FX forward node
* @return The return value
*/
T visitFXForwardNode(FXForwardNode node);
/**
* Visits a {@link FXSwapNode}.
* @param node A FX swap node
* @return the return value
*/
T visitFXSwapNode(FXSwapNode node);
/**
* Visits a {@link RollDateFRANode}.
* @param node An IMM FRA node
* @return The return value
*/
T visitRollDateFRANode(RollDateFRANode node);
/**
* Visits a {@link RollDateSwapNode}.
* @param node An IMM swap node
* @return The return value
*/
T visitRollDateSwapNode(RollDateSwapNode node);
/**
* Visits a {@link RateFutureNode}.
* @param node A rate future node
* @return The return value
*/
T visitRateFutureNode(RateFutureNode node);
/**
* Visits a {@link SwapNode}.
* @param node A swap node
* @return The return value
*/
T visitSwapNode(SwapNode node);
/**
* Visits a {@link ThreeLegBasisSwapNode}
* @param node A three-leg basis swap node
* @return The return value
*/
T visitThreeLegBasisSwapNode(ThreeLegBasisSwapNode node);
/**
* Visits a {@link ZeroCouponInflationNode}.
* @param node A zero-coupon inflation node
* @return The return value
*/
T visitZeroCouponInflationNode(ZeroCouponInflationNode node);
}