From c256285b71ca1ce9fed556992d301026f8c40a6f Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 13 Aug 2022 20:16:36 +0100 Subject: [PATCH] [Project] Allow to extract augmentation values --- src/libserver/symcache/symcache_item.cxx | 15 +++++++++++++++ src/libserver/symcache/symcache_item.hxx | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/libserver/symcache/symcache_item.cxx b/src/libserver/symcache/symcache_item.cxx index c41d3d68c7..57a0a66951 100644 --- a/src/libserver/symcache/symcache_item.cxx +++ b/src/libserver/symcache/symcache_item.cxx @@ -500,6 +500,21 @@ cache_item::get_augmentation_weight() const -> int }); } +auto cache_item::get_numeric_augmentation(std::string_view name) const -> std::optional +{ + const auto augmentation_value_maybe = rspamd::find_map(this->augmentations, name); + + if (augmentation_value_maybe.has_value()) { + const auto &augmentation = augmentation_value_maybe.value().get(); + + if (std::holds_alternative(augmentation.value)) { + return std::get(augmentation.value); + } + } + + return std::nullopt; +} + auto virtual_item::get_parent(const symcache &cache) const -> const cache_item * { diff --git a/src/libserver/symcache/symcache_item.hxx b/src/libserver/symcache/symcache_item.hxx index 31706058b5..67c0960f35 100644 --- a/src/libserver/symcache/symcache_item.hxx +++ b/src/libserver/symcache/symcache_item.hxx @@ -417,6 +417,20 @@ public: */ auto get_augmentation_weight() const -> int; + /** + * Returns numeric augmentation value + * @param name + * @return + */ + auto get_numeric_augmentation(std::string_view name) const -> std::optional; + + /** + * Returns string augmentation value + * @param name + * @return + */ + auto get_string_augmentation(std::string_view name) const -> std::optional; + /** * Add a virtual symbol as a child of some normal symbol * @param ptr -- 2.47.3