TNB Library
TnbStaticMap.h
[詳解]
1#pragma once
11#include "TnbDef.h"
12
13
14
15//TNB Library
16namespace TNB
17{
18
19
20
50template<typename TYP, typename VAL = LPCTSTR>
52{
53public:
54
55 TYP key;
56 VAL val;
57
67 template<typename TYPS>
68 static bool Get(TYP& _key, VAL& _val, INDEX index, const TYPS& ts)
69 {
70 const CStaticMapT* P = ts; //正しい ts を指定していないとここでエラー。
72 if ( index < sizeof(ts) / sizeof(CStaticMapT) )
73 {
74 _key = ts[index].key;
75 _val = ts[index].val;
76 return true;
77 }
78 return false;
79 }
80
89 template<typename TYPS>
90 static VAL Find(const TYP& key, const TYPS& ts, const VAL& def = VAL())
91 {
92 const CStaticMapT* P = ts; //正しい ts を指定していないとここでエラー。
94 loop ( i, sizeof(ts) / sizeof(CStaticMapT) )
95 {
96 if ( ts[i].key == key )
97 {
98 return ts[i].val;
99 }
100 }
101 return def;
102 }
103
112 template<typename TYPS>
113 static VAL FindString(const TYP& key, const TYPS& ts, const VAL& def = VAL())
114 {
115 const CStaticMapT* P = ts; //正しい ts を指定していないとここでエラー。
116 loop ( i, sizeof(ts) / sizeof(CStaticMapT) )
117 {
118 if ( STRLIB::Compare(ts[i].key, key) == 0 )
119 {
120 return ts[i].val;
121 }
122 }
123 return def;
124 }
125
134 template<typename TYPS>
135 static TYP FindKey(const VAL& val, const TYPS& ts, const TYP& def = TYP())
136 {
137 const CStaticMapT* P = ts; //正しい ts を指定していないとここでエラー。
139 loop ( i, sizeof(ts) / sizeof(CStaticMapT) )
140 {
141 if ( ts[i].val == val )
142 {
143 return ts[i].key;
144 }
145 }
146 return def;
147 }
148};
149
150
151
152}; // TNB
TNBライブラリの定義ヘッダ
#define loop(VAR, CNT)
loop構文.
Definition: TnbDef.h:343
静的簡易マップクラス.
Definition: TnbStaticMap.h:52
static VAL FindString(const TYP &key, const TYPS &ts, const VAL &def=VAL())
[検索] 値検索
Definition: TnbStaticMap.h:113
static TYP FindKey(const VAL &val, const TYPS &ts, const TYP &def=TYP())
[検索] キー検索
Definition: TnbStaticMap.h:135
static VAL Find(const TYP &key, const TYPS &ts, const VAL &def=VAL())
[検索] 値検索
Definition: TnbStaticMap.h:90
static bool Get(TYP &_key, VAL &_val, INDEX index, const TYPS &ts)
[取得] 取得
Definition: TnbStaticMap.h:68
int Compare(LPCSTR P1, LPCSTR P2, INT_PTR len=-1, DWORD dwCmpFlags=0)
[比較] 文字列比較(ASCII/SJIS用)
Definition: TnbStrLib.h:135
void IgnoreUnusedValue(const T &value)
[宣言] 参照しない値宣言.
Definition: TnbDef.h:434
TNB Library
Definition: TnbDoxyTitle.txt:2