/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */

#include "livestatus/column.hpp"

using namespace icinga;

Column::Column(ValueAccessor valueAccessor, ObjectAccessor objectAccessor)
	: m_ValueAccessor(std::move(valueAccessor)), m_ObjectAccessor(std::move(objectAccessor))
{ }

Value Column::ExtractValue(const Value& urow, LivestatusGroupByType groupByType, const Object::Ptr& groupByObject) const
{
	Value row;

	if (m_ObjectAccessor)
		row = m_ObjectAccessor(urow, groupByType, groupByObject);
	else
		row = urow;

	return m_ValueAccessor(row);
}