/*////////////////////////////////////////////////////////////////////*/
/**/
/* SectorList.h: interface for the CPA_SectorList class.*/
/**/
/*////////////////////////////////////////////////////////////////////*/
/* Author: Silviu Simen  01 september 1998*/
/*////////////////////////////////////////////////////////////////////*/
 
#if !defined(CPA_SECTORLIST_H)
#define CPA_SECTORLIST_H
 
/****************************************/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/****************************************/
 
#include "acp_base.h"
#include "itf/CPASObj.hpp"
#include "itf/cpalistb.hpp"
 
 
/* this one is for possibly use of HIE_tdxHandleToSuperObject */
/* instead of CPA_SuperObject **/
#define SECTOR_TYPE CPA_SuperObject *
 
/*////////////////////////////////////////////////////////////////////*/
/**/
/* interface of the CPA_ListBySector class.*/
/**/
/*////////////////////////////////////////////////////////////////////*/
/* Author: Silviu Simen  01 september 1998*/
/*////////////////////////////////////////////////////////////////////*/
 
class CPA_ListOfObjectsInSectors 
{
public:
 
	CPA_BaseObjectList	m_lstObjectList;
	SECTOR_TYPE			m_pSector;
};
 
class CPA_ListOfObjectsInSectorsByType 
{
public:
 
	CPA_BaseObjectList	m_lstObjectList;
	SECTOR_TYPE			m_pSector;
	unsigned long		m_ulType;
};
 
 
class CPA_EXPORT CPA_ListBySector
{
private:
 
	POSITION									m_pos;	/* for get first / next sector*/
    CPA_List<CPA_ListOfObjectsInSectors>		m_lstList;
	CPA_List<CPA_ListOfObjectsInSectorsByType>	m_lstTypeList;
 
public:
 
	CPA_ListBySector();
	virtual ~CPA_ListBySector();
 
	void fn_vCleanAllListsOfSectors (void);
 
	void AddElement			(CPA_SuperObject * pObject, SECTOR_TYPE pSector);
	BOOL RemoveElement		(CPA_SuperObject * pObject);
	BOOL UpdateElement		(CPA_SuperObject * pObject, SECTOR_TYPE pNewSector);
 
	CPA_BaseObjectList * GetListOfSector		(SECTOR_TYPE pSector);
	CPA_BaseObjectList * GetListOfSectorByType	(SECTOR_TYPE pSector,unsigned long ulType);
	CPA_BaseObjectList * GetListOfSectorByName	(CString csName);
};
 
 
#endif
