LOUDSを利用したTrieの実装です。
[詳解]
#include "nn/nlib/succinct/Trie.h"
|
typedef bool(* | MatchCallback) (const char *first, const char *last, uint32_t nodeid, void *user_obj) |
| ユーザー定義のコールバック関数です。 [詳解]
|
|
|
void | Match (const char *cstr, MatchCallback callback, void *user_obj=NULL) noexcept |
| 文字列を検査してTrieに登録されている文字列を検出します。 [詳解]
|
|
void | Match (const void *data, size_t n, MatchCallback callback, void *user_obj=NULL) noexcept |
| データを走査して検出対象のパターンを検出します。 [詳解]
|
|
void | MatchBackward (const void *data, size_t n, MatchCallback callback, void *user_obj=NULL) noexcept |
| データを後ろ向きに走査して検出対象のパターンを検出します。 [詳解]
|
|
errno_t | GetCommonPrefixWords (const void *prefix, size_t n, ReallocCstringVec *vec) noexcept |
| 共通のプレフィックスを持つデータを辞書順にリストアップします。 [詳解]
|
|
void | Reset () noexcept |
| オブジェクトをコンストラクタが呼ばれた直後の状態にします。
|
|
|
| Trie () noexcept |
| コンストラクタです。
|
|
| ~Trie () noexcept |
| デストラクタです。
|
|
Trie & | assign (Trie &rhs, move_tag) |
| swap を利用したムーブにより代入します。
|
|
| Trie (Trie &rhs, move_tag) |
| swap を利用したムーブによりオブジェクトを構築します。
|
|
| Trie (Trie &&rhs) |
| ムーブコンストラクタです。C++11の利用時に有効です。
|
|
Trie & | operator= (Trie &&rhs) |
| ムーブ代入演算子です。C++11の利用時に有効です。
|
|
void | swap (Trie &rhs) noexcept |
| オブジェクトの内容をスワップします。
|
|
bool | Init () noexcept |
| オブジェクトの内容をリセットします。 [詳解]
|
|
|
bool | Export (BinaryWriter *w) const noexcept |
| オブジェクトを(ファイルに)書き出します。 [詳解]
|
|
bool | Import (BinaryReader *r) noexcept |
| 書き出されたオブジェクトを読み出します。 [詳解]
|
|
LOUDSを利用したTrieの実装です。
- 説明
- コンパクトなデータサイズでTrieを利用することができます。
TrieBuilder
で作成するか、Import()
メソッドでインポートして利用します。
Trie.h の 20 行目に定義があります。
nn::nlib::succinct::Trie::MatchCallback |
ユーザー定義のコールバック関数です。
- 引数
-
[in] | first | 検出語の先頭(後ろ向きサーチの場合は最後尾)を指すポインタ |
[in] | last | 検出語の直後(後ろ向きサーチの場合は直前)を指すポインタ |
[in] | nodeid | 検出した語のID(連続値ではない) |
[in,out] | user_obj | ユーザー指定オブジェクトへのポインタ |
- 戻り値
true
の場合は引き続き解析を続ける。false
の場合は処理を打ち切り
- 説明
- 文字列(パターン)を検出した場合に呼び出されます。 ユーザーはそれに対応した処理を記述します。
Trie.h の 34 行目に定義があります。
オブジェクトを(ファイルに)書き出します。
- 引数
-
- 戻り値
- 成功した場合は
true
- 説明
- 書きだしたデータは
Import()
関数で読みだして復元することができます。 また、データは常にリトルエンディアンで書き出されます。
nn::nlib::succinct::Trie::GetCommonPrefixWords |
( |
const void * |
prefix, |
|
|
size_t |
n, |
|
|
ReallocCstringVec * |
vec |
|
) |
| |
|
noexcept |
共通のプレフィックスを持つデータを辞書順にリストアップします。
- 引数
-
[in] | prefix | プレフィックスへのポインタ |
[in] | n | プレフィックスの長さ |
[out] | vec | prefix をプレフィックスとして持つ文字列が格納されるベクタ |
- 戻り値
0
ならば成功
書き出されたオブジェクトを読み出します。
- 引数
-
- 戻り値
- インポートが成功した場合は
true
nn::nlib::succinct::Trie::Init |
( |
| ) |
|
|
inlinenoexcept |
オブジェクトの内容をリセットします。
- 戻り値
true
を返します。
Trie.h の 30 行目に定義があります。
nn::nlib::succinct::Trie::Match |
( |
const char * |
cstr, |
|
|
MatchCallback |
callback, |
|
|
void * |
user_obj = NULL |
|
) |
| |
|
inlinenoexcept |
文字列を検査してTrieに登録されている文字列を検出します。
- 引数
-
[in] | cstr | ヌル終端する文字列 |
[in] | callback | 語が検出された場合に呼び出されるコールバック関数 |
[in,out] | user_obj | ユーザー指定オブジェクトへのポインタ |
Trie.h の 36 行目に定義があります。
nn::nlib::succinct::Trie::Match |
( |
const void * |
data, |
|
|
size_t |
n, |
|
|
MatchCallback |
callback, |
|
|
void * |
user_obj = NULL |
|
) |
| |
|
noexcept |
データを走査して検出対象のパターンを検出します。
- 引数
-
[in] | data | 検査対象のデータの先頭へのポインタ |
[in] | n | データサイズ |
[in] | callback | パターンが検出された場合に呼び出されるコールバック関数 |
[in,out] | user_obj | ユーザー指定オブジェクトへのポインタ |
nn::nlib::succinct::Trie::MatchBackward |
( |
const void * |
data, |
|
|
size_t |
n, |
|
|
MatchCallback |
callback, |
|
|
void * |
user_obj = NULL |
|
) |
| |
|
noexcept |
データを後ろ向きに走査して検出対象のパターンを検出します。
- 引数
-
[in] | data | 検査対象のデータの最後尾へのポインタ |
[in] | n | データサイズ |
[in] | callback | パターンが検出された場合に呼び出されるコールバック関数 |
[in,out] | user_obj | ユーザー指定オブジェクトへのポインタ |
このクラス詳解は次のファイルから抽出されました: