#ifndef __ZXCVBN__FREQUENCY_LISTS_HPP #define __ZXCVBN__FREQUENCY_LISTS_HPP #include <cstdint> #include <memory> #include <string_view> #include <vector> #include "base/files/memory_mapped_file.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/abseil-cpp/absl/types/variant.h" namespace zxcvbn { rank_t; // Stores words from a set of dictionaries (originally ordered by word // frequency) in a sorted flat array. // Lookups run in roughly logarithmic time and, when a match is found, return // the position of the word in the original dictionary. // This data structure is optimized for memory efficiency over lookup speed. // It does not contain any pointers and its format is target-independent, so it // could theoretically directly be mapped from disk. // // Since this data structure sorts words alphabetically, the lookup code could // be extended to also answer the question "are there any entries that start // with the given prefix", which should permit speeding up dictionary_match(). // That isn't implemented yet though. class RankedDicts { … }; void SetRankedDicts(RankedDicts dicts); RankedDicts& default_ranked_dicts(); } // namespace zxcvbn #endif