#include "stdafx.h"
#include "ZOrder.h"

void FCZOrder::Begin (FCZOrderIterator& i) const
{
	i.pvvObj = &m_vvZOrder;
	for (i.iV2 = m_vvZOrder.begin(); i.iV2 != m_vvZOrder.end(); i.iV2++)
	{
		if (!(*i.iV2)->empty())
		{
			i.iV1 = (*i.iV2)->begin();
			break;
		}
	}
} // FCZOrder::Begin.

void FCZOrder::Rbegin (FCZOrderReverseIterator& i) const
{
	i.pvvObj = &m_vvZOrder;
	for (i.iV2 = m_vvZOrder.rbegin(); i.iV2 != m_vvZOrder.rend(); i.iV2++)
	{
		if (!(*i.iV2)->empty())
		{
			i.iV1 = (*i.iV2)->rbegin();
			break;
		}
	}
} // FCZOrder::Rbegin.

BOOL FCZOrder::IsEmpty () const
{
	ConstObjDynabaseVPV::const_iterator	iV2;
	for (iV2 = m_vvZOrder.begin(); iV2 != m_vvZOrder.end(); iV2++)
	{
		if (!(*iV2)->empty()) return FALSE;
	}
	return TRUE;
} // FCZOrder::IsEmpty.

DWORD FCZOrder::Size () const
{
	DWORD dwCount = 0;
	ConstObjDynabaseVPV::const_iterator	iV2;
	for (iV2 = m_vvZOrder.begin(); iV2 != m_vvZOrder.end(); iV2++)
	{
		dwCount += (*iV2)->size();
	}
	return dwCount;
} // FCZOrder::Size.

FCObjDynabase* FCZOrder::Front () const
{
	ConstObjDynabaseVPV::const_iterator	iV2;
	for (iV2 = m_vvZOrder.begin(); iV2 != m_vvZOrder.end(); iV2++)
	{
		if (!(*iV2)->empty()) return (*iV2)->front();
	}
	return NULL;
} // FCZOrder::Front.

void FCZOrder::GetAllOrder (ObjDynabaseVector& vObj) const
{
	ConstObjDynabaseVPV::const_iterator iV2;
	for (iV2 = m_vvZOrder.begin(); iV2 != m_vvZOrder.end(); iV2++)
	{
		vObj.insert(vObj.end(), (*iV2)->begin(), (*iV2)->end());
	}
} // FCZOrder::GetAllOrder.

void FCZOrder::PushBack (const ObjDynabaseVector* vObj)
{
	m_vvZOrder.push_back(vObj);
} // FCZOrder::PushBack.
