// generic object base class for item SelArray from a list.

#include "stdafx.h"
#include "resource.h"
#include "SelArray.h"

IMPLEMENT_SERIAL(CSelArray,CSelectable,1|VERSIONABLE_SCHEMA);

#define new DEBUG_NEW

CSelArray::CSelArray()
{

}

CSelArray::~CSelArray()
{
	for(int loop=0;loop<m_aChildren.GetSize();loop++)
		delete m_aChildren[loop];
}

void CSelArray::Serialize(CArchive &ar)
{
	CSelectable::Serialize(ar);
	m_aChildren.Serialize(ar);
}

CSelectable *CSelArray::Add(CSelectable *pSelectable)
{
	m_aChildren.Add(pSelectable);
	return pSelectable;
}

BOOL CSelArray::Delete(LPCSTR pName)
{
	for(int loop=0;loop<m_aChildren.GetSize();loop++)
	{
		if(Get(loop)->GetName().CompareNoCase(pName)==0)
		{
			delete Get(loop);
			m_aChildren.RemoveAt(loop);
			return TRUE;
		}
	}
	return FALSE;
}

CSelectable *CSelArray::Get(LPCSTR pName)
{
	CString sName;
	for(int loop=0;loop<m_aChildren.GetSize();loop++)
	{
 		sName = Get(loop)->GetName();
		if(sName.CompareNoCase(pName)==0)
			return Get(loop);
	}
	if(strcmpi(pName,"Default")==0);
		return NULL;
	return Get("Default");
}

CSelectable *CSelArray::Get(int nPos)
{
	ASSERT(nPos<m_aChildren.GetSize());
	return (CSelectable *)m_aChildren.GetAt(nPos);
}

int CSelArray::GetSize()
{
	return m_aChildren.GetSize();
}