Pass category name to category_metadata()

This commit is contained in:
Marcus Holland-Moritz 2023-07-18 18:40:04 +02:00
parent 465f8e090c
commit e08bbb5e94
7 changed files with 21 additions and 10 deletions

View File

@ -52,7 +52,8 @@ class categorizer {
virtual std::span<std::string_view const> categories() const = 0;
virtual bool is_single_fragment() const = 0;
virtual folly::dynamic category_metadata(fragment_category c) const = 0;
virtual folly::dynamic category_metadata(std::string_view category_name,
fragment_category c) const = 0;
};
class random_access_categorizer : public categorizer {

View File

@ -64,6 +64,8 @@ class inode_fragments {
bool empty() const { return fragments_.empty(); }
void clear() { fragments_.clear(); }
explicit operator bool() const { return !empty(); }
std::ostream&

View File

@ -245,9 +245,9 @@ std::string_view categorizer_manager_<LoggerPolicy>::category_name(
template <typename LoggerPolicy>
folly::dynamic categorizer_manager_<LoggerPolicy>::category_metadata(
fragment_category c) const {
auto categorizer =
DWARFS_NOTHROW(categorizers_.at(categories_.at(c.value()).second));
return categorizer->category_metadata(c);
auto cat = DWARFS_NOTHROW(categories_.at(c.value()));
auto categorizer = DWARFS_NOTHROW(categorizers_.at(cat.second));
return categorizer->category_metadata(cat.first, c);
}
categorizer_manager::categorizer_manager(logger& lgr)

View File

@ -64,7 +64,8 @@ class binary_categorizer_ final : public binary_categorizer_base {
bool is_single_fragment() const override { return false; }
folly::dynamic category_metadata(fragment_category) const override {
folly::dynamic
category_metadata(std::string_view, fragment_category) const override {
return folly::dynamic();
}

View File

@ -159,7 +159,8 @@ class incompressible_categorizer_ final : public sequential_categorizer {
bool is_single_fragment() const override { return true; }
folly::dynamic category_metadata(fragment_category) const override {
folly::dynamic
category_metadata(std::string_view, fragment_category) const override {
return folly::dynamic();
}

View File

@ -149,7 +149,8 @@ class libmagic_categorizer_ final : public libmagic_categorizer_base {
bool is_single_fragment() const override { return true; }
folly::dynamic category_metadata(fragment_category) const override {
folly::dynamic
category_metadata(std::string_view, fragment_category) const override {
return folly::dynamic();
}

View File

@ -130,9 +130,14 @@ class pcmaudio_categorizer_ final : public pcmaudio_categorizer_base {
bool is_single_fragment() const override { return false; }
folly::dynamic category_metadata(fragment_category c) const override {
DWARFS_CHECK(c.has_subcategory(), "expected pcmaudio to have subcategory");
return meta_.rlock()->lookup(c.subcategory());
folly::dynamic category_metadata(std::string_view category_name,
fragment_category c) const override {
if (category_name == PCMAUDIO_CATEGORY) {
DWARFS_CHECK(c.has_subcategory(),
"expected PCMAUDIO to have subcategory");
return meta_.rlock()->lookup(c.subcategory());
}
return folly::dynamic();
}
private: