30#include <unordered_map>
34#include "pw_result/result.h"
35#include "pw_span/span.h"
36#include "pw_stream/stream.h"
37#include "pw_tokenizer/internal/decode.h"
38#include "pw_tokenizer/token_database.h"
40namespace pw::tokenizer {
47using DomainTokenEntriesMap = std::unordered_map<
49 std::unordered_map<uint32_t, std::vector<TokenizedStringEntry>>>;
56 const span<const TokenizedStringEntry>& entries,
57 const span<const std::byte>& arguments);
62 bool ok()
const {
return matches_.size() == 1 && matches_[0].ok(); }
65 const std::vector<DecodedFormatString>&
matches()
const {
return matches_; }
67 const uint32_t& token()
const {
return token_; }
81 std::vector<DecodedFormatString> matches_;
97 std::unordered_map<uint32_t, std::vector<TokenizedStringEntry>>>&&
99 : database_(std::move(database)) {}
115 static Result<Detokenizer>
FromCsv(std::string_view csv);
128 return Detokenize(encoded.data(), encoded.size());
133 return Detokenize(span(
static_cast<const std::byte*
>(encoded), size_bytes));
154 unsigned max_passes = 3)
const;
159 std::string_view text)
const {
177 const span<const std::byte>& optionally_tokenized_data);
179 const DomainTokenEntriesMap& database()
const {
return database_; }
182 DomainTokenEntriesMap database_;
Definition: detokenize.h:53
const std::vector< DecodedFormatString > & matches() const
Returns the strings that matched the token, with the best matches first.
Definition: detokenize.h:65
std::string BestString() const
bool ok() const
True if there was only one valid match and it decoded successfully.
Definition: detokenize.h:62
std::string BestStringWithErrors() const
Definition: detokenize.h:86
DetokenizedString Detokenize(const span< const uint8_t > &encoded) const
Overload of Detokenize for span<const uint8_t>.
Definition: detokenize.h:122
DetokenizedString Detokenize(std::string_view encoded) const
Overload of Detokenize for std::string_view.
Definition: detokenize.h:127
static Result< Detokenizer > FromElfFile(stream::SeekableReader &stream)
static Result< Detokenizer > FromCsv(std::string_view csv)
Constructs a detokenizer from a parsed CSV database.
std::string DetokenizeBase64(std::string_view text) const
Definition: detokenize.h:158
DetokenizedString DetokenizeBase64Message(std::string_view text) const
static Result< Detokenizer > FromElfSection(span< const uint8_t > elf_section)
Overload of FromElfSection for a uint8_t span.
Definition: detokenize.h:106
Detokenizer(const TokenDatabase &database)
Detokenizer(std::unordered_map< std::string, std::unordered_map< uint32_t, std::vector< TokenizedStringEntry > > > &&database)
Constructs a detokenizer by directly passing the parsed database.
Definition: detokenize.h:94
std::string DetokenizeText(std::string_view text, unsigned max_passes=3) const
DetokenizedString Detokenize(const void *encoded, size_t size_bytes) const
Overload of Detokenize for a pointer and length.
Definition: detokenize.h:132
static Result< Detokenizer > FromElfSection(span< const std::byte > elf_section)
DetokenizedString Detokenize(const span< const std::byte > &encoded) const
std::string DecodeOptionallyTokenizedData(const span< const std::byte > &optionally_tokenized_data)
Definition: token_database.h:75
std::pair< FormatString, uint32_t > TokenizedStringEntry
Token database entry.
Definition: detokenize.h:46