26#include "SerializableDict.hpp"
39 virtual ~MarisaDict()
override;
44 size_t len)
const override;
47 size_t len)
const override;
50 const char* word,
size_t len)
const override;
52 virtual LexiconPtr
GetLexicon()
const override;
57 size_t len)
const override;
66 bool EnumerateKeys(
const std::function<
void(
const char*,
size_t)>& cb)
const;
68 virtual void SerializeToFile(FILE* fp)
const override;
73 static MarisaDictPtr NewFromDict(
const Dict& thatDict);
75 static MarisaDictPtr NewFromFile(FILE* fp);
77 static MarisaDictPtr NewFromBuffer(
const char* data,
size_t size);
80 bool IsLexiconReconstructed()
const {
81 return lexiconReconstructed.load(std::memory_order_acquire);
87 void LoadFromMappedBuffer();
88 void ReconstructLexicon()
const;
90 mutable size_t maxLength;
91 mutable LexiconPtr lexicon;
92 mutable std::mutex lexiconMutex;
93 mutable std::atomic<bool> lexiconReconstructed;
94 LexiconPtr valuesLexicon;
97 std::unique_ptr<MarisaInternal> internal;
Abstract class of dictionary.
Definition Dict.hpp:63
virtual Optional< const DictEntry * > MatchPrefix(const char *word, size_t len) const override
Matches the longest matched prefix of a word.
Definition MarisaDict.cpp:70
virtual Optional< const DictEntry * > Match(const char *word, size_t len) const override
Matches a word exactly and returns the DictEntry or Optional::Null().
Definition MarisaDict.cpp:54
virtual LexiconPtr GetLexicon() const override
Returns all entries in the dictionary.
Definition MarisaDict.cpp:101
virtual std::vector< const DictEntry * > MatchAllPrefixes(const char *word, size_t len) const override
Returns all matched prefixes of a word, sorted by the length (desc).
Definition MarisaDict.cpp:87
virtual size_t KeyMaxLength() const override
Returns the length of the longest key in the dictionary.
Definition MarisaDict.cpp:49
virtual bool SupportsFastPrefixMatch() const override
Returns true if this dict can handle prefix queries directly without PrefixMatch building a lookup ta...
Definition MarisaDict.hpp:54
A class that wraps type T into a nullable type.
Definition Optional.hpp:26
Serializable dictionary interface.
Definition SerializableDict.hpp:32
Result of a PrefixMatch fast-path lookup.
Definition Dict.hpp:52