kv_create_key_from_uri()
#include <kvstore.h>
kv_error_t
kv_create_key_from_uri(kv_store_t *store,
kv_key_t **key,
const char *uri)
URIに基づいてkey/valueストアにキーを作成します。この構造によって使用されるリソースを解放するには、kv_release_key()を使用します。
この関数は、kv_create_key_from_uri_copy()とは異なり、関数に渡されたURI文字列の内容をコピーしません。したがって、この関数によって作成されたkv_key_t
構造が解放されるまでは、これらのURI文字列を解放または変更しないようにする必要があります。
ここで使用するキー・パス文字列のフォーマットは、URIとURLを使用するように設計されています。これは、汎用目的の文字列識別子として使用することを目的としています。キー・パス・コンポーネントは、スラッシュ(/)デリミタで区切られます。メジャー・パスとマイナー・パスを区切るには、特殊なスラッシュ・ハイフン・スラッシュ形式のデリミタ(/-/)を使用します。URIパスに使用できない文字は、URI構文(%XX (XXは16進数))を使用してエンコードされます。この文字列の先頭には常にスラッシュが付き、URI相対パスとして扱われないようにします。次に例をいくつか示します。
-
/SingleComponentMajorPath
-
/MajorPathPart1/MajorPathPart2/-/MinorPathPart1/MinorPathPart2
-
/HasEncodedSlash:%2F,Zero:%00,AndSpace:%20
例1は、使用可能な最も単純なパスを示しています。先頭のスラッシュは常に必要であることに注意してください。
例2は、メジャー・パスとマイナー・パスの間の/-/セパレータを使用する方法を示します。単なるハイフンであるパス・コンポーネントがキーに含まれる場合、このキーはそのデリミタと区別するために、%2D
としてエンコードされます。たとえば、/major/%2d/path/-/minor/%2d/path
のようになります。
例3は、パス・コンポーネントで使用できない文字のエンコーディングを示しています。URIの互換性のためにエンコードされる文字は、ASCIIスペースおよびその他のUnicodeセパレータ、ASCIIおよびUnicode制御文字、および15種類のASCII文字(" # % / < > ? [ \ ] ^ ` { | })です。ハイフン(-)は、前述のとおり、パス・コンポーネントの唯一の文字である場合にもエンコードされます。
キー・パス・コンポーネントでは任意のUnicode文字を使用できますが、実際には、Webユーザー・エージェント、プロキシなどですべての文字が許容されるわけではないため、制御文字を含めると問題が発生する可能性があります。エンコードはされますが、パス・コンポーネントにスラッシュを埋め込むことにも問題がある可能性があります。URIを処理する他のソフトウェアと互換性のある文字を使用する責任はアプリケーションにあります。
パラメータ
-
store
storeパラメータは、キーが使用されるストアに対するハンドルです。ストア・ハンドルは、kv_open_store()を使用して取得されます。
-
key
keyパラメータは、割り当てられたキーへのポインタのコピー先であるメモリーを参照します。
-
uri
uriパラメータは、文字列として記述されるフル・キー・パス(メジャー・コンポーネントとマイナー・コンポーネントの両方)です。文字列のフォーマット方法については、このページの先頭にある説明を参照してください。
ここで使用される文字列はコピーされないことに注意してください。このメモリーを使用する構造が解放されるまでは、メモリーを解放または変更しないでください。
関連項目