メインページ   名前空間一覧   クラス階層   アルファベット順一覧   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

クラス テンプレートKSCL::CConstants< i_MapId > の解説

・整数値マッピングを実現するクラスです。. より詳しく...

すべてのメンバ一覧

静的公開メンバ

void Set (const int p_iId, const std::string &p_rcStr) throw ( std::logic_error )
 ・ID とその文字列をセットします。. より詳しく...

std::string Get (const int p_iId)
 ・ID からその文字列を取得します。. より詳しく...


非公開型

typedef std::map< int, std::string > type_int_string_map
 マップの型定義。. より詳しく...

enum  E_CODE { E_THIS_MAP_ID = i_MapId }
 i_MapId の再定義。. より詳しく...


非公開メンバ

 CConstants ()
 ・コンストラクタ。. より詳しく...

 CConstants (CConstants &)
 ・コピーコンストラクタ。. より詳しく...


静的非公開メンバ

type_int_string_mapGetRef ()
 ・このクラスが持つマップへの参照を返します。. より詳しく...


解説

template<int i_MapId>
class KSCL::CConstants< i_MapId >

・整数値マッピングを実現するクラスです。.

 たとえば、 GetLastError() で取得したエラーコードを文字列として出力したい場合に、 それぞれのコードを case で調べて文字列リテラルとして出力するのは現実的ではありません。 こういう場合には外部ファイルにエラーコードとその文字列を置いておく方法もありますが、 エラーコードを外に出したくない場合もあります。
 その場合にこのクラスを使用します。

 実際にはこのクラスを直接は使用せず、 KSCL_CONSTANTS_SET() と KSCL_CONSTANTS_GET() を使用します。
 まず、整数値マップの ID を用意します。

	const int ERROR_MAP = 100;
	
 マッピングはこのマップ ID ごとに行われます。
 次に、どこかの関数でまとめてエラーコードを登録します。
	KSCL_CONSTANTS_SET( ERROR_ACCESS_DENIED, ERROR_MAP );
	
 これで、 ERROR_ACCESS_DENIED という整数値から "ERROR_ACCESS_DENIED" という文字列が 取得できるようになりました。
 登録後は、他のどこからでも参照することができます。
	std::string cStr
		= KSCL_CONSTANTS_GET( GetLastError(), ERROR_MAP );
	
 もし GetLastError() で ERROR_ACCESS_DENIED が返ってきていれば、 cStr には "ERROR_ACCESS_DENIED" が入っているというわけです。
 このマッピングを使用することで、エラー処理等が非常に簡単になります。エラーコードの登録も 正規表現を使った置換等で一括して行えると思うので簡単です。
 ただし、登録はひとつの値に対して文字列ひとつになります。 KSCL_CONSTANTS_SET() で、前に登録した 値を再度登録しようとすると std::logic_error が投げられます。ご注意ください。
 使用例については CConstantsRegister クラスもご覧ください。特に、このクラスを利用することで、 Win32 API エラーコード、 WinSock エラーコード、構造化例外コード、ウィンドウメッセージの マッピングを最初から利用することができます。
引数:
i_MapId  マッピング用のマップ ID 。登録はこのマップ ID ごとに行われます。


メンバ型定義の解説

template<int i_MapId>
typedef std::map< int, std::string > KSCL::CConstants< i_MapId >::type_int_string_map [private]
 

マップの型定義。.


メンバ列挙型の解説

template<int i_MapId>
enum KSCL::CConstants::E_CODE [private]
 

i_MapId の再定義。.

 各メンバ関数から i_MapId を参照するためです。

列挙型値:
E_THIS_MAP_ID  i_MapId と同じ。


コンストラクタとデストラクタの解説

template<int i_MapId>
KSCL::CConstants< i_MapId >::CConstants   [inline, private]
 

・コンストラクタ。.

 使用しないよう private で封印されています。

template<int i_MapId>
KSCL::CConstants< i_MapId >::CConstants CConstants< i_MapId > &    [inline, private]
 

・コピーコンストラクタ。.

 使用しないよう private で封印されています。


メンバ関数の解説

template<int i_MapId>
type_int_string_map& KSCL::CConstants< i_MapId >::GetRef   [inline, static, private]
 

・このクラスが持つマップへの参照を返します。.

 このメンバ関数の中に持っているマップへの参照を返します。
 つまり static メンバ変数代わりです。

戻り値:
マップへの参照。非 const なので書き込みOK。

template<int i_MapId>
void KSCL::CConstants< i_MapId >::Set const int    p_iId,
const std::string &    p_rcStr
throw ( std::logic_error ) [inline, static]
 

・ID とその文字列をセットします。.

 実際には KSCL_CONSTANTS_SET() を使用してください。

引数:
p_iId  キーにする ID 。
p_rcStr  キーから取得する文字列。

template<int i_MapId>
std::string KSCL::CConstants< i_MapId >::Get const int    p_iId [inline, static]
 

・ID からその文字列を取得します。.

 実際には KSCL_CONSTANTS_GET() を使用してください。

戻り値:
キーから取得した文字列。
引数:
p_iId  キーにする ID 。


KSCL(KAB-studioClassLibrary)に対してThu Jun 12 09:55:37 2003に生成されました。 doxygen1.2.15