class MyHash 仕様書

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*

 


const void* GetBuffer();

アロケートしているメモリのポインタを返します。
Set関数やDel関数などで、このポインタは無効となります。

int GetLength();

クラスがアロケートしているメモリポインタの長さを返します。

char* SeekToFirst();

内部イテレータを先頭にセットします。

char* SeekToKey(char* pszKey);

与えられたキー文字列を探し、対応するバリュー文字列を返します。
キー文字列がない場合NULLを返します。

char* SeekToKeyI(char* pszKey);

与えられたキー文字列を探し、対応するバリュー文字列を返します。
キー文字列がない場合NULLを返します。
この関数は大文字小文字を区別しません。

マルチバイト文字列を考慮していませんので、その場合の動作は不定です。

char* GetCurrentKey();

イテレータが指している現在のキー文字列を返します。

char* GetCurrentValue();

内部イテレータが指している現在のバリュー文字列を返します。

char* SeekNext();

内部イテレータを一つ進めます。
最終端にある場合、NULLを返します。

void Clear();

内部で確保しているメモリを開放します。

int Set( char* pszKey, char* pszValue );

キー文字列とバリュー文字列をセットします。
キー文字列が既にセットされていた場合、値を上書きします。
この場合、内部メモリの再配置が行われますのでGetValue()で取得したポインタは無効となります。
この関数は大文字小文字を区別します。

int Del( char* pszKey );

指定されたキー文字列とその対応するバリュー文字列を削除します。
削除はメモリの再配置が発生します。
この場合、内部メモリの再配置が行われますのでGetValue()で取得したポインタは無効となります。

char* GetValue( char* pszKey );

指定されたキー文字列を検索し、対応するバリュー文字列を返します。

char* GetValueI(char* pszKey);

指定されたキー文字列を検索し、対応するバリュー文字列を返します。
この関数は大文字小文字を区別しません。


yu-ishi@ya2.so-net.ne.jp
Copyright (C) 2003 IshiSoft Allrights reserved.