From a280bfa0b1b5642c26329b626eb03e99f92bc6a2 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Tue, 30 Jun 2020 12:47:54 -0700 Subject: [PATCH] Deprecate attr_tag in a different way, rename to AttrTag --- src/Attr.cc | 36 ++++---------------- src/Attr.h | 96 +++++++++++++++++++++++++++-------------------------- src/ID.cc | 12 ++----- src/ID.h | 16 ++------- src/Type.h | 20 ++--------- src/Val.cc | 4 +-- src/Val.h | 16 ++------- src/Var.cc | 2 +- src/parse.y | 2 +- 9 files changed, 67 insertions(+), 137 deletions(-) diff --git a/src/Attr.cc b/src/Attr.cc index 859ddaa720..67bd7d7b37 100644 --- a/src/Attr.cc +++ b/src/Attr.cc @@ -11,7 +11,7 @@ namespace zeek::detail { -const char* attr_name(attr_tag t) +const char* attr_name(AttrTag t) { static const char* attr_names[int(NUM_ATTRS)] = { "&optional", "&default", "&redef", @@ -25,29 +25,18 @@ const char* attr_name(attr_tag t) return attr_names[int(t)]; } -Attr::Attr(attr_tag t, IntrusivePtr e) +Attr::Attr(AttrTag t, IntrusivePtr e) : expr(std::move(e)) { tag = t; SetLocationInfo(&start_location, &end_location); } -Attr::Attr(attr_tag t) +Attr::Attr(AttrTag t) : Attr(t, nullptr) { } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -Attr::Attr(::attr_tag t, IntrusivePtr e) : Attr(static_cast(t), e) - { - } - -Attr::Attr(::attr_tag t) : Attr(static_cast(t)) - { - } -#pragma GCC diagnostic pop - Attr::~Attr() = default; void Attr::SetAttrExpr(IntrusivePtr e) @@ -228,7 +217,7 @@ void Attributes::AddAttrs(Attributes* a) Unref(a); } -Attr* Attributes::FindAttr(attr_tag t) const +Attr* Attributes::FindAttr(AttrTag t) const { for ( const auto& a : attrs ) if ( a->Tag() == t ) @@ -237,7 +226,7 @@ Attr* Attributes::FindAttr(attr_tag t) const return nullptr; } -const IntrusivePtr& Attributes::Find(attr_tag t) const +const IntrusivePtr& Attributes::Find(AttrTag t) const { for ( const auto& a : attrs ) if ( a->Tag() == t ) @@ -246,7 +235,7 @@ const IntrusivePtr& Attributes::Find(attr_tag t) const return Attr::nil; } -void Attributes::RemoveAttr(attr_tag t) +void Attributes::RemoveAttr(AttrTag t) { for ( auto it = attrs.begin(); it != attrs.end(); ) { @@ -257,19 +246,6 @@ void Attributes::RemoveAttr(attr_tag t) } } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -Attr* Attributes::FindAttr(::attr_tag t) const - { - return FindAttr(static_cast(t)); - } - -void Attributes::RemoveAttr(::attr_tag t) - { - RemoveAttr(static_cast(t)); - } -#pragma GCC diagnostic pop - void Attributes::Describe(ODesc* d) const { if ( attrs.empty() ) diff --git a/src/Attr.h b/src/Attr.h index 39c333447a..e23d3c7d9d 100644 --- a/src/Attr.h +++ b/src/Attr.h @@ -14,31 +14,9 @@ ZEEK_FORWARD_DECLARE_NAMESPACED(Expr, zeek::detail); // modify expressions or supply metadata on types, and the kind that // are extra metadata on every variable instance. -enum [[deprecated("Remove in v4.1. Use zeek::detail::attr_tag instead.")]] attr_tag { - ATTR_OPTIONAL, - ATTR_DEFAULT, - ATTR_REDEF, - ATTR_ADD_FUNC, - ATTR_DEL_FUNC, - ATTR_EXPIRE_FUNC, - ATTR_EXPIRE_READ, - ATTR_EXPIRE_WRITE, - ATTR_EXPIRE_CREATE, - ATTR_RAW_OUTPUT, - ATTR_PRIORITY, - ATTR_GROUP, - ATTR_LOG, - ATTR_ERROR_HANDLER, - ATTR_TYPE_COLUMN, // for input framework - ATTR_TRACKED, // hidden attribute, tracked by NotifierRegistry - ATTR_ON_CHANGE, // for table change tracking - ATTR_DEPRECATED, - NUM_ATTRS // this item should always be last -}; - namespace zeek::detail { -enum attr_tag { +enum AttrTag { ATTR_OPTIONAL, ATTR_DEFAULT, ATTR_REDEF, @@ -64,21 +42,12 @@ class Attr final : public BroObj { public: static inline const IntrusivePtr nil; - Attr(attr_tag t, IntrusivePtr e); - explicit Attr(attr_tag t); - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in v4.1. Use version that takes zeek::detail::attr_tag.")]] - Attr(::attr_tag t, IntrusivePtr e); - - [[deprecated("Remove in v4.1. Use version that takes zeek::detail::attr_tag.")]] - explicit Attr(::attr_tag t); -#pragma GCC diagnostic pop + Attr(AttrTag t, IntrusivePtr e); + explicit Attr(AttrTag t); ~Attr() override; - attr_tag Tag() const { return tag; } + AttrTag Tag() const { return tag; } [[deprecated("Remove in v4.1. Use GetExpr().")]] zeek::detail::Expr* AttrExpr() const { return expr.get(); } @@ -108,7 +77,7 @@ public: protected: void AddTag(ODesc* d) const; - attr_tag tag; + AttrTag tag; IntrusivePtr expr; }; @@ -130,19 +99,11 @@ public: void AddAttrs(Attributes* a); // Unref's 'a' when done [[deprecated("Remove in v4.1. Use Find().")]] - Attr* FindAttr(attr_tag t) const; + Attr* FindAttr(AttrTag t) const; - const IntrusivePtr& Find(attr_tag t) const; + const IntrusivePtr& Find(AttrTag t) const; - void RemoveAttr(attr_tag t); - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in v4.1. Use version that takes zeek::detail::attr_tag.")]] - Attr* FindAttr(::attr_tag t) const; - [[deprecated("Remove in v4.1. Use version that takes zeek::detail::attr_tag.")]] - void RemoveAttr(::attr_tag t); -#pragma GCC diagnostic pop + void RemoveAttr(AttrTag t); void Describe(ODesc* d) const override; void DescribeReST(ODesc* d, bool shorten = false) const; @@ -165,3 +126,44 @@ protected: using Attr [[deprecated("Remove in v4.1. Use zeek::detail::Attr instead.")]] = zeek::detail::Attr; using Attributes [[deprecated("Remove in v4.1. Use zeek::detail::Attr instead.")]] = zeek::detail::Attributes; + +using AttrTag [[deprecated("Remove in v4.1. Use zeek::detail::AttrTag instead.")]] = zeek::detail::AttrTag; + +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_OPTIONAL instead.")]] +constexpr auto ATTR_OPTIONAL = zeek::detail::ATTR_OPTIONAL; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_DEFAULT instead.")]] +constexpr auto ATTR_DEFAULT = zeek::detail::ATTR_DEFAULT; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_REDEF instead.")]] +constexpr auto ATTR_REDEF = zeek::detail::ATTR_REDEF; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_ADD_FUNC instead.")]] +constexpr auto ATTR_ADD_FUNC = zeek::detail::ATTR_ADD_FUNC; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_DEL_FUNC instead.")]] +constexpr auto ATTR_DEL_FUNC = zeek::detail::ATTR_DEL_FUNC; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_EXPIRE_FUNC instead.")]] +constexpr auto ATTR_EXPIRE_FUNC = zeek::detail::ATTR_EXPIRE_FUNC; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_EXPIRE_READ instead.")]] +constexpr auto ATTR_EXPIRE_READ = zeek::detail::ATTR_EXPIRE_READ; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_EXPIRE_WRITE instead.")]] +constexpr auto ATTR_EXPIRE_WRITE = zeek::detail::ATTR_EXPIRE_WRITE; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_EXPIRE_CREATE instead.")]] +constexpr auto ATTR_EXPIRE_CREATE = zeek::detail::ATTR_EXPIRE_CREATE; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_RAW_OUTPUT instead.")]] +constexpr auto ATTR_RAW_OUTPUT = zeek::detail::ATTR_RAW_OUTPUT; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_PRIORITY instead.")]] +constexpr auto ATTR_PRIORITY = zeek::detail::ATTR_PRIORITY; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_GROUP instead.")]] +constexpr auto ATTR_GROUP = zeek::detail::ATTR_GROUP; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_LOG instead.")]] +constexpr auto ATTR_LOG = zeek::detail::ATTR_LOG; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_ERROR_HANDLER instead.")]] +constexpr auto ATTR_ERROR_HANDLER = zeek::detail::ATTR_ERROR_HANDLER; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_TYPE_COLUMN instead.")]] +constexpr auto ATTR_TYPE_COLUMN = zeek::detail::ATTR_TYPE_COLUMN; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_TRACKED instead.")]] +constexpr auto ATTR_TRACKED = zeek::detail::ATTR_TRACKED; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_ON_CHANGE instead.")]] +constexpr auto ATTR_ON_CHANGE = zeek::detail::ATTR_ON_CHANGE; +[[deprecated("Remove in v4.1. Use zeek::detail::ATTR_DEPRECATED instead.")]] +constexpr auto ATTR_DEPRECATED = zeek::detail::ATTR_DEPRECATED; +[[deprecated("Remove in v4.1. Use zeek::detail::NUM_ATTRS instead.")]] +constexpr auto NUM_ATTRS = zeek::detail::NUM_ATTRS; diff --git a/src/ID.cc b/src/ID.cc index 3d6bcab64c..bfcff13867 100644 --- a/src/ID.cc +++ b/src/ID.cc @@ -287,7 +287,7 @@ void ID::UpdateValAttrs() } } -const IntrusivePtr& ID::GetAttr(attr_tag t) const +const IntrusivePtr& ID::GetAttr(AttrTag t) const { return attrs ? attrs->Find(t) : Attr::nil; } @@ -337,20 +337,12 @@ void ID::AddAttrs(IntrusivePtr a) UpdateValAttrs(); } -void ID::RemoveAttr(attr_tag a) +void ID::RemoveAttr(AttrTag a) { if ( attrs ) attrs->RemoveAttr(a); } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -void ID::RemoveAttr(::attr_tag a) - { - RemoveAttr(static_cast(a)); - } -#pragma GCC diagnostic pop - void ID::SetOption() { if ( is_option ) diff --git a/src/ID.h b/src/ID.h index 1726f8c727..705da74cac 100644 --- a/src/ID.h +++ b/src/ID.h @@ -124,12 +124,7 @@ public: void SetAttrs(IntrusivePtr attr); void AddAttrs(IntrusivePtr attr); - void RemoveAttr(attr_tag a); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in v4.1. Use version that takes zeek::detail::attr_tag")]] - void RemoveAttr(::attr_tag a); -#pragma GCC diagnostic pop + void RemoveAttr(zeek::detail::AttrTag a); void UpdateValAttrs(); const IntrusivePtr& GetAttrs() const @@ -138,14 +133,7 @@ public: [[deprecated("Remove in 4.1. Use GetAttrs().")]] Attributes* Attrs() const { return attrs.get(); } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in 4.1. Use GetAttr().")]] - Attr* FindAttr(::attr_tag t) const - { return GetAttr(static_cast(t)).get(); } -#pragma GCC diagnostic pop - - const IntrusivePtr& GetAttr(zeek::detail::attr_tag t) const; + const IntrusivePtr& GetAttr(zeek::detail::AttrTag t) const; bool IsDeprecated() const; diff --git a/src/Type.h b/src/Type.h index c123eb397c..b534f59892 100644 --- a/src/Type.h +++ b/src/Type.h @@ -638,14 +638,7 @@ public: TypeDecl(const TypeDecl& other); ~TypeDecl(); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in v4.1. Use GetAttr().")]] - const zeek::detail::Attr* FindAttr(::attr_tag a) const - { return attrs ? attrs->Find(static_cast(a)).get() : nullptr; } -#pragma GCC diagnostic pop - - const IntrusivePtr& GetAttr(zeek::detail::attr_tag a) const + const IntrusivePtr& GetAttr(zeek::detail::AttrTag a) const { return attrs ? attrs->Find(a) : zeek::detail::Attr::nil; } void DescribeReST(ODesc* d, bool roles_only = false) const; @@ -746,21 +739,12 @@ public: return decl && decl->GetAttr(zeek::detail::ATTR_DEPRECATED) != nullptr; } - bool FieldHasAttr(int field, zeek::detail::attr_tag at) const + bool FieldHasAttr(int field, zeek::detail::AttrTag at) const { const TypeDecl* decl = FieldDecl(field); return decl && decl->GetAttr(at) != nullptr; } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in v4.1. Use version that takes zeek::detail::attr_tag.")]] - bool FieldHasAttr(int field, ::attr_tag at) const - { - return FieldHasAttr(field, static_cast(at)); - } -#pragma GCC diagnostic pop - std::string GetFieldDeprecationWarning(int field, bool has_check) const; protected: diff --git a/src/Val.cc b/src/Val.cc index 7d0fbe610f..0f27a3dece 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -1481,7 +1481,7 @@ void TableVal::SetAttrs(IntrusivePtr a) change_func = cf->GetExpr(); } -void TableVal::CheckExpireAttr(zeek::detail::attr_tag at) +void TableVal::CheckExpireAttr(zeek::detail::AttrTag at) { const auto& a = attrs->Find(at); @@ -2194,7 +2194,7 @@ ListVal* TableVal::ConvertToPureList() const return ToPureListVal().release(); } -const IntrusivePtr& TableVal::GetAttr(zeek::detail::attr_tag t) const +const IntrusivePtr& TableVal::GetAttr(zeek::detail::AttrTag t) const { return attrs ? attrs->Find(t) : zeek::detail::Attr::nil; } diff --git a/src/Val.h b/src/Val.h index d76d36d25a..d9504fcb44 100644 --- a/src/Val.h +++ b/src/Val.h @@ -957,14 +957,7 @@ public: void SetAttrs(IntrusivePtr attrs); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in v4.1. Use GetAttr().")]] - Attr* FindAttr(::attr_tag t) const - { return GetAttr(static_cast(t)).get(); } -#pragma GCC diagnostic pop - - const IntrusivePtr& GetAttr(zeek::detail::attr_tag t) const; + const IntrusivePtr& GetAttr(zeek::detail::AttrTag t) const; [[deprecated("Remove in v4.1. Use GetAttrs().")]] zeek::detail::Attributes* Attrs() { return attrs.get(); } @@ -1035,12 +1028,7 @@ protected: ParseTimeTableState DumpTableState(); void RebuildTable(ParseTimeTableState ptts); - void CheckExpireAttr(zeek::detail::attr_tag at); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [[deprecated("Remove in v4.1. Use version that takes zeek::detail::attr_tag.")]] - void CheckExpireAttr(::attr_tag at); -#pragma GCC diagnostic pop + void CheckExpireAttr(zeek::detail::AttrTag at); bool ExpandCompoundAndInit(ListVal* lv, int k, IntrusivePtr new_val); bool CheckAndAssign(IntrusivePtr index, IntrusivePtr new_val); diff --git a/src/Var.cc b/src/Var.cc index b3305cf2fa..c1e6cbb783 100644 --- a/src/Var.cc +++ b/src/Var.cc @@ -415,7 +415,7 @@ static void transfer_arg_defaults(zeek::RecordType* args, zeek::RecordType* recv } static zeek::detail::Attr* find_attr(const std::vector>* al, - zeek::detail::attr_tag tag) + zeek::detail::AttrTag tag) { if ( ! al ) return nullptr; diff --git a/src/parse.y b/src/parse.y index d4781a7ef4..d38cf38d31 100644 --- a/src/parse.y +++ b/src/parse.y @@ -251,7 +251,7 @@ static bool expr_is_table_type_name(const zeek::detail::Expr* expr) zeek::detail::case_list* case_l; zeek::detail::Attr* attr; std::vector>* attr_l; - zeek::detail::attr_tag attrtag; + zeek::detail::AttrTag attrtag; } %%