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_3(
Trie, m_Louds, m_IsTerminal, m_Labels);
26 m_Louds.swap(rhs.m_Louds);
27 m_IsTerminal.swap(rhs.m_IsTerminal);
28 m_Labels.swap(rhs.m_Labels);
34 typedef bool (*MatchCallback)(
const char* first,
const char* last, uint32_t nodeid,
37 this->Match(cstr,
nlib_strlen(cstr), callback, user_obj);
39 NLIB_VIS_PUBLIC void Match(
const void* data,
size_t n, MatchCallback callback,
41 NLIB_VIS_PUBLIC void MatchBackward(const
void* data,
size_t n, MatchCallback callback,
42 void* user_obj = NULL) NLIB_NOEXCEPT;
45 void Reset() NLIB_NOEXCEPT {
54 NLIB_VIS_HIDDEN int Match_(
const void* data,
const unsigned char* p, uint32_t pos,
55 MatchCallback callback,
void* user_obj,
bool isfwd)
NLIB_NOEXCEPT;
59 detail::BitVector32 m_IsTerminal;
60 detail::PlainArray32<unsigned char> m_Labels;
73 NLIB_VIS_PUBLIC bool AddWords(const
char* str,
size_t len) NLIB_NOEXCEPT;
74 bool AddWords(const
char* str) NLIB_NOEXCEPT {
75 return AddWords(str, strlen(str));
86 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS)
87 #undef NLIB_VIS_PUBLIC
88 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT
91 #endif // INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
rank/select操作をベースとした基本的なクラスが定義されています。
LOUDSを構築したり、LOUDSにアクセスしたりするためのクラスが定義されています。
void swap(Trie &rhs) noexcept
オブジェクトの内容をスワップします。
Trie() noexcept
コンストラクタです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
void Match(const char *cstr, MatchCallback callback, void *user_obj=NULL) noexcept
文字列を検査してTrieに登録されている文字列を検出します。
~TrieBuilder() noexcept
デストラクタです。
C文字列のベクタをreallocベースで実装しています。
std::unique_ptrに相当するクラスが定義されています。
bool Init() noexcept
オブジェクトの内容をリセットします。
TrieBuilder() noexcept
コンストラクタです。
~Trie() noexcept
デストラクタです。
各種操作を で行うことができるコンパクトなツリー構造です。
ストリーム(OutputStream)にバイナリを書き込むクラスです。
ストリーム(InputStream)からバイナリを読み込むクラスです。
PODを要素に持つベクタをreallocベースで実装しています。