KeyとValueをペアで登録することができます。
追加、削除、検索、列挙ができます。
内部にイテレータを保有していますので、スレッドセーフではありません。複数のスレッドから同一インスタンスを呼び出さないでください。
スレッドセーフにするためには、このクラスを継承して、SeekTo関数とGet関数をオーバーライドしてください。CEHTTPソースファイル内のMyContentType.hが参考になるでしょう。
|key1|\0|value1|\0|key2|\0|value2|...|keyN|\0|valueN|\0|\0|
・終端は|\0|\0|
・valueが\0も許可する
|key1|\0|\0|key2|...
・Keyが\0は許可しない
MyHash |
---|
+GetBuffer : const void* |
+GetLength() : int |
+SeekToFirst() : char* |
+SeekToKey(in char* pszKey) : char* |
+SeekToKeyI(in char* pszKey) : char* |
+GetCurrentKey() : char* |
+ GetCurrentValue() char* |
+ SeekNext() char* |
+ Clear() void |
+ Set(in char* pszKey, in char* pszValue ) : int |
+ Del(in char* pszKey) : int |
+ GetValue(in char* pszKey ) char* |
+ GetValueI(in char* pszKey) : char* |
アロケートしているメモリのポインタを返します。
Set関数やDel関数などで、このポインタは無効となります。
クラスがアロケートしているメモリポインタの長さを返します。
内部イテレータを先頭にセットします。
与えられたキー文字列を探し、対応するバリュー文字列を返します。
キー文字列がない場合NULLを返します。
与えられたキー文字列を探し、対応するバリュー文字列を返します。
キー文字列がない場合NULLを返します。
この関数は大文字小文字を区別しません。
マルチバイト文字列を考慮していませんので、その場合の動作は不定です。
イテレータが指している現在のキー文字列を返します。
内部イテレータが指している現在のバリュー文字列を返します。
内部イテレータを一つ進めます。
最終端にある場合、NULLを返します。
内部で確保しているメモリを開放します。
キー文字列とバリュー文字列をセットします。
キー文字列が既にセットされていた場合、値を上書きします。
この場合、内部メモリの再配置が行われますのでGetValue()で取得したポインタは無効となります。
この関数は大文字小文字を区別します。
指定されたキー文字列とその対応するバリュー文字列を削除します。
削除はメモリの再配置が発生します。
この場合、内部メモリの再配置が行われますのでGetValue()で取得したポインタは無効となります。
指定されたキー文字列を検索し、対応するバリュー文字列を返します。
指定されたキー文字列を検索し、対応するバリュー文字列を返します。
この関数は大文字小文字を区別しません。