3 #ifndef INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_ 4 #define INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_ 12 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 13 #undef NLIB_VIS_PUBLIC 14 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 24 NLIB_MOVE_MEMBER_HELPER_1(
Trie, prv_);
26 TriePrivate* tmp = rhs.prv_;
27 rhs.prv_ = this->prv_;
31 typedef bool (*MatchCallback)(
const char* first,
const char* last, uint32_t nodeid,
33 void Match(
const char* cstr, MatchCallback callback,
void* user_obj = NULL) NLIB_NOEXCEPT {
34 this->Match(cstr,
nlib_strlen(cstr), callback, user_obj);
36 void Match(
const void* data,
size_t n, MatchCallback callback,
void* user_obj)
NLIB_NOEXCEPT;
37 void Match(
const void* data,
size_t n, MatchCallback callback) NLIB_NOEXCEPT {
38 Match(data, n, callback, NULL);
40 void MatchBackward(
const void* data,
size_t n, MatchCallback callback,
42 void MatchBackward(
const void* data,
size_t n, MatchCallback callback) NLIB_NOEXCEPT {
43 MatchBackward(data, n, callback, NULL);
45 errno_t GetCommonPrefixWords(
const void* prefix,
size_t n,
52 NLIB_VIS_HIDDEN int Match_(
const void* data,
const unsigned char* p, uint32_t pos,
53 MatchCallback callback,
void* user_obj,
bool isfwd)
NLIB_NOEXCEPT;
72 return AddWords(str, strlen(str));
76 struct TrieBuilderPrivate;
77 TrieBuilderPrivate* prv_;
84 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 85 #undef NLIB_VIS_PUBLIC 86 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 89 #endif // INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_
rank/select操作をベースとした基本的なクラスが定義されています。
LOUDSを構築したり、LOUDSにアクセスしたりするためのクラスが定義されています。
void swap(Trie &rhs) noexcept
オブジェクトの内容をスワップします。
Trie() noexcept
コンストラクタです。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
void Match(const char *cstr, MatchCallback callback, void *user_obj=NULL) noexcept
文字列を検査してTrieに登録されている文字列を検出します。
C文字列のベクタをreallocベースで実装しています。
bool AddWords(const char *str) noexcept
検出対象の文字列の集合が入った配列から文字列を追加します。文字列の区切りは改行(CRLFかLF)である必要が...
TrieBuilder() noexcept
コンストラクタです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
ストリーム(OutputStream)にバイナリを書き込むクラスです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
ストリーム(InputStream)からバイナリを読み込むクラスです。
PODを要素に持つベクタをreallocベースで実装しています。