blob: d48fcc4a75a05c47f99b5a1053439220caae7554 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_URL_FORMATTER_TOP_DOMAINS_TRIE_ENTRY_H_
#define COMPONENTS_URL_FORMATTER_TOP_DOMAINS_TRIE_ENTRY_H_
#include <string>
#include <vector>
#include "net/tools/huffman_trie/huffman/huffman_builder.h"
#include "net/tools/huffman_trie/trie_entry.h"
namespace url_formatter {
namespace top_domains {
struct TopDomainEntry {
std::string skeleton;
std::string top_domain;
};
class TopDomainTrieEntry : public net::huffman_trie::TrieEntry {
public:
explicit TopDomainTrieEntry(
const net::huffman_trie::HuffmanRepresentationTable& huffman_table,
net::huffman_trie::HuffmanBuilder* huffman_builder,
TopDomainEntry* entry);
~TopDomainTrieEntry() override;
// huffman_trie::TrieEntry:
std::string name() const override;
bool WriteEntry(net::huffman_trie::TrieBitBuffer* writer) const override;
private:
const net::huffman_trie::HuffmanRepresentationTable& huffman_table_;
net::huffman_trie::HuffmanBuilder* huffman_builder_;
TopDomainEntry* entry_;
};
using TopDomainEntries = std::vector<std::unique_ptr<TopDomainEntry>>;
} // namespace top_domains
} // namespace url_formatter
#endif // COMPONENTS_URL_FORMATTER_TOP_DOMAINS_TRIE_ENTRY_H_