#include "SliceValuatorTwoCurrency.h"

//===================================================================================================================
// General Valuator
//===================================================================================================================
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

gelib::d_cube& SliceValuatorTwoCurrency::get_valuations()
{
	return m_Vk;
}

gelib::d_cube const& SliceValuatorTwoCurrency::roll_back_european_payoff(SliceValuator* impl)
{
	return static_cast<SliceValuatorTwoCurrency*>(impl)->roll_back_european_payoff();
}

bool SliceValuatorTwoCurrency::storing_values()
{
	return m_storing_values;
}

gelib::d_cube& SliceValuatorTwoCurrency::get_valuations(SliceValuatorTwoCurrency* impl)
{
	return impl->get_valuations();
}

gelib::d_vector const& SliceValuatorTwoCurrency::get_grid_x_larrow(SliceValuatorTwoCurrency* impl)
{
	return static_cast<SliceValuatorTwoCurrencyAtTi*>(impl)->get_grid_x_larrow();
}

gelib::d_vector const& SliceValuatorTwoCurrency::get_grid_y_larrow(SliceValuatorTwoCurrency* impl)
{
	return static_cast<SliceValuatorTwoCurrencyAtTi*>(impl)->get_grid_y_larrow();
}

gelib::d_vector const& SliceValuatorTwoCurrency::get_grid_z_larrow(SliceValuatorTwoCurrency* impl)
{
	return static_cast<SliceValuatorTwoCurrencyAtTi*>(impl)->get_grid_z_larrow();
}

gelib::d_vector const & SliceValuatorTwoCurrency::get_grid_x(SliceValuatorTwoCurrency* impl)
{
	return *impl->m_dom_process->get_grid();
}

gelib::d_vector const & SliceValuatorTwoCurrency::get_grid_y(SliceValuatorTwoCurrency* impl)
{
	return *impl->m_fx_process->get_grid();
}

gelib::d_vector const & SliceValuatorTwoCurrency::get_grid_z(SliceValuatorTwoCurrency* impl)
{
	return *impl->m_for_process->get_grid();
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//===================================================================================================================
// Valuator at timeslice Ti with i > 0
//===================================================================================================================
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


gelib::d_vector const & SliceValuatorTwoCurrencyAtTi::get_grid_x_larrow() const
{
	return m_x_larrow_k;
}

gelib::d_vector const & SliceValuatorTwoCurrencyAtTi::get_grid_y_larrow() const
{
	return m_y_larrow_k;
}

gelib::d_vector const & SliceValuatorTwoCurrencyAtTi::get_grid_z_larrow() const
{
	return m_z_larrow_k;
}