#pragma once
#include "workspaceaccess.h"
#include "WorkspaceListAccess.h"

class CWorkspaceStringList :
	public CWorkspaceAccess
{
public:
	CWorkspaceStringList(CString listName);
	CWorkspaceStringList(CWorkspaceAccess &other, CString listName);
	virtual ~CWorkspaceStringList(void);

	//!	CWorkspaceAccess 設定
	void operator = (CWorkspaceAccess &other) {	CWorkspaceAccess::operator=(other); }

	//////////////////////////////////////////////////////////////////////////////
	//	取得
	//////////////////////////////////////////////////////////////////////////////
	//!	個数の取得
	int GetItemCount();

	//!	アイテムの取得
	CString GetItem(int index);

	//!	アイテムの設定
	void SetItem(int index, CString str);

	//!	アイテムを追加
	void AddNewItem(CString str, int checkExist = FALSE, int noCase = FALSE);

	//!	アイテムの削除
	void DeleteItem(int index);

	//!	まとめて追加
	void AddList(CStringArray &list, int checkExist = FALSE, int noCase = FALSE);

	//!	まとめて取得
	void GetList(CStringArray &list);

	//////////////////////////////////////////////////////////////////////////////
	//	検索
	//////////////////////////////////////////////////////////////////////////////
	//!	検索
	int FindIndex(CString str, int noCase = FALSE, int pathCompare = FALSE);

protected:
	/////////////////////////////////////////////////////////////////////////////
	//	メンバ変数
	/////////////////////////////////////////////////////////////////////////////
	//!	名前
	CString			m_listName;
};


/*!
	CWorkspaceStringList
*/
/*
template<class STATIC_NAME>
class CWorkspaceNamedStringList : public CWorkspaceStringList
{
public:
	CWorkspaceNamedStringList()
		: CWorkspaceStringList(STATIC_NAME().m_name) {};
	CWorkspaceNamedStringList(CWorkspaceAccess &other)
		 : CWorkspaceStringList(other, STATIC_NAME().m_name) {};

	//!	CWorkspaceAccess 設定
	void operator = (CWorkspaceAccess &other) {	CWorkspaceListAccess::operator=(other); }
};
*/