From: Vsevolod Stakhov Date: Sat, 13 Aug 2022 19:16:36 +0000 (+0100) Subject: [Project] Allow to extract augmentation values X-Git-Tag: 3.3~77 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c256285b71ca1ce9fed556992d301026f8c40a6f;p=thirdparty%2Frspamd.git [Project] Allow to extract augmentation values --- 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