16 #ifndef INCLUDE_NN_NLIB_SUCCINCT_AHOCORASICK_H_ 17 #define INCLUDE_NN_NLIB_SUCCINCT_AHOCORASICK_H_ 19 #include "nn/nlib/Swap.h" 23 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 24 #undef NLIB_VIS_PUBLIC 25 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 33 static const size_t LABEL_WIDTH = 8;
34 static const int LABEL_MASK = (1 << LABEL_WIDTH) - 1;
35 static const int NUMLABEL_PER_BYTE = 8 / LABEL_WIDTH;
42 AhoCorasickPrivate* tmp = prv_;
46 typedef bool (*MatchCallback)(
const char* first,
const char* last, uint32_t nodeid,
49 this->Match(doc,
nlib_strlen(doc), callback, userobj);
52 this->Match(doc,
nlib_strlen(doc), callback,
nullptr);
54 void Match(
const void* data,
size_t n, MatchCallback callback,
56 void Match(
const void* data,
size_t n, MatchCallback callback) NLIB_NOEXCEPT {
57 Match(data, n, callback,
nullptr);
61 void MemSize(
size_t* len_store,
size_t* goto_arc,
size_t* report_arc,
68 struct AhoCorasickPrivate;
69 AhoCorasickPrivate* prv_;
77 NLIB_DEFINE_STD_SWAP(::nlib_ns::succinct::AhoCorasick)
79 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 80 #undef NLIB_VIS_PUBLIC 81 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 84 #endif // INCLUDE_NN_NLIB_SUCCINCT_AHOCORASICK_H_ rank/select操作をベースとした基本的なクラスが定義されています。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
~AhoCorasick() noexcept
デストラクタです。
void Match(const char *doc, MatchCallback callback, void *userobj) noexcept
文字列を検査して検出対象の文字列を検出します。
void swap(AhoCorasick &rhs) noexcept
オブジェクトの内容をスワップします。
void Match(const char *doc, MatchCallback callback) noexcept
Match(doc, callback, NULL)を実行します。
constexpr AhoCorasick() noexcept
デフォルトコンストラクタです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
void Match(const void *data, size_t n, MatchCallback callback) noexcept
Match(data, n, callback, NULL)を実行します。
ストリーム(OutputStream)にバイナリを書き込むクラスです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
ストリーム(InputStream)からバイナリを読み込むクラスです。
括弧木を構築したり、括弧木にアクセスしたりするためのクラスが定義されています。
AC法で用いるインデックス(オートマトン)を作成します。