/********************************************************************************
*	ファイル名：Section.h														*
*	用　　　途：セクションクラス定義											*
*	備　　　考：																*
*	履　　　歴：																*
********************************************************************************/
/****************************
*	 コンパイル環境設定		*
****************************/
#pragma	once
/****************************
*	インクルードファイル	*
****************************/
#include "Profile.h"
/****************************
*		 マクロ定数			*
****************************/
/****************************
*		 構造体定義			*
****************************/
/****************************
*		 クラス定義			*
****************************/
typedef CArray<CProfile, CProfile> CProfileArray;

class CSection : public CObject
{
public:
							CSection(LPCTSTR szSection = 0);
							CSection(CSection &section);
	virtual				   ~CSection();
			
			CString			GetName() const;
			void			SetName(LPCTSTR szName);
	
			BOOL			Match(LPCTSTR szSection);
			INT_PTR			LookUp(LPCTSTR szKey, CString *strVal = 0);
			INT_PTR			LookUp(LPCTSTR szSection, LPCTSTR szKey, CString *strVal = 0);

			BOOL			Add(LPCTSTR szKey, LPCTSTR szVal);
			void			SetAt(INT_PTR nIndex, LPCTSTR szKey, LPCTSTR szVal);
			BOOL			GetAt(INT_PTR nIndex, CString *spKey, CString *spVal) const;

			CSection&		operator=(const CSection &section);
			CString			operator[](LPCTSTR szKey);
			CString			operator[](INT_PTR nIndex);

			void			RemoveAt(INT_PTR nIndex);
			void			RemoveAt(LPCTSTR szKey);
			void			RemoveAll();

			INT_PTR			GetCount() const;
protected:
			void			Copy(const CSection &section);

protected:
			CString			m_strSection;
			CProfileArray	m_Profile;
};

/****************************
*		 関数　宣言			*
****************************/
/****************************
*		 変数　宣言			*
****************************/
