public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
From: Matthias Maennich <maennich@google.com>
To: Giuliano Procida <gprocida@google.com>
Cc: libabigail@sourceware.org, dodji@seketeli.org, kernel-team@android.com
Subject: Re: [PATCH v3 01/21] Move regex definitions to own files.
Date: Mon, 27 Apr 2020 12:52:15 +0200	[thread overview]
Message-ID: <20200427105215.GA159704@google.com> (raw)
In-Reply-To: <20200424092132.150547-2-gprocida@google.com>

On Fri, Apr 24, 2020 at 10:21:12AM +0100, Giuliano Procida wrote:
>As a prelude to adding wrapper and helper functions for regex
>functionality, it makes sense to move the existing regex code (the
>shared pointer type and its specialised deleter) to their own files.
>
>This patch does this and also moves various entities into a new
>namespace, abigail::regex. It removes the file abg-sptr-utils.cc which
>only contained regex things.
>
>There are no behavioural changes.
>
>	* include/Makefile.am: Add abg-regex.h.
>	* src/Makefile.am: Remove abg-sptr-utils.h, add abg-regex.cc
>	* include/abg-sptr-utils.h (regex_t_sptr): Remove this
>	typedef, from namespace abigail::sptr_utils.
>	(regex_t_deleter): Remove this struct, from namespace
>	abigail::sptr_utils. (build_sptr): Remove these template
>	specialisations, in duplicate, for regex_t_sptr.
>	* include/abg-regex.h: New file, introduces namespace
>	abigail::regex. (regex_t_sptr): Add this typedef, to namespace
>	abigail::regex. (regex_t_deleter): Add this struct, to
>	namespace abigail::regex. (build_sptr): Add these template
>	specialisations for regex_t_sptr
>	* src/abg-sptr-utils.cc: Remove this file.
>	* src/abg-regex.cc: Add new file with contents effectively
>	the same as abg-sptr-utils.cc.
>	* src/abg-corpus-priv.h: Update regex_t_sptr namespace
>	qualification.
>	* src/abg-corpus.cc: Ditto.
>	* src/abg-suppression-priv.h: Ditto.
>	* src/abg-suppression.cc: Ditto.
>
>Signed-off-by: Giuliano Procida <gprocida@google.com>
>---
> include/Makefile.am                     |   3 +-
> include/abg-regex.h                     |  83 ++++++++++++++
> include/abg-sptr-utils.h                |  49 ---------
> src/Makefile.am                         |   2 +-
> src/abg-corpus-priv.h                   |   3 +-
> src/abg-corpus.cc                       |   2 +-
> src/{abg-sptr-utils.cc => abg-regex.cc} |  19 ++--
> src/abg-suppression-priv.h              | 137 ++++++++++++------------
> src/abg-suppression.cc                  |  73 ++++++-------
> 9 files changed, 198 insertions(+), 173 deletions(-)
> create mode 100644 include/abg-regex.h
> rename src/{abg-sptr-utils.cc => abg-regex.cc} (84%)
>
>diff --git a/include/Makefile.am b/include/Makefile.am
>index ae97f674..b5475252 100644
>--- a/include/Makefile.am
>+++ b/include/Makefile.am
>@@ -24,6 +24,7 @@ abg-cxx-compat.h	\
> abg-version.h		\
> abg-viz-common.h	\
> abg-viz-dot.h		\
>-abg-viz-svg.h		
>+abg-viz-svg.h		\
>+abg-regex.h
>
> EXTRA_DIST = abg-version.h.in
>diff --git a/include/abg-regex.h b/include/abg-regex.h
>new file mode 100644
>index 00000000..84c386a9
>--- /dev/null
>+++ b/include/abg-regex.h
>@@ -0,0 +1,83 @@
>+// -*- mode: C++ -*-
>+//
>+// Copyright (C) 2013-2020 Red Hat, Inc.
>+//
>+// This file is part of the GNU Application Binary Interface Generic
>+// Analysis and Instrumentation Library (libabigail).  This library is
>+// free software; you can redistribute it and/or modify it under the
>+// terms of the GNU Lesser General Public License as published by the
>+// Free Software Foundation; either version 3, or (at your option) any
>+// later version.
>+
>+// This library is distributed in the hope that it will be useful, but
>+// WITHOUT ANY WARRANTY; without even the implied warranty of
>+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>+// General Lesser Public License for more details.
>+
>+// You should have received a copy of the GNU Lesser General Public
>+// License along with this program; see the file COPYING-LGPLV3.  If
>+// not, see <http://www.gnu.org/licenses/>.
>+
>+/// @file
>+///
>+/// Wrappers around regex types and functions.
>+
>+#ifndef __ABG_REGEX_H__
>+#define __ABG_REGEX_H__
>+
>+#include <regex.h>
>+
>+#include "abg-cxx-compat.h"
>+#include "abg-sptr-utils.h"
>+
>+namespace abigail
>+{
>+
>+/// Namespace for regex types and functions.
>+namespace regex
>+{
>+
>+/// A convenience typedef for a shared pointer of regex_t.
>+typedef abg_compat::shared_ptr<regex_t> regex_t_sptr;
>+
>+/// A delete functor for a shared_ptr of regex_t.
>+struct regex_t_deleter
>+{
>+  /// The operator called to de-allocate the pointer to regex_t
>+  /// embedded in a shared_ptr<regex_t>
>+  ///
>+  /// @param r the pointer to regex_t to de-allocate.
>+  void
>+  operator()(::regex_t* r)
>+  {
>+    regfree(r);
>+    delete r;
>+  }
>+};//end struct regex_deleter
>+
>+}// end namespace regex
>+
>+/// Specialization of sptr_utils::build_sptr for regex_t.
>+///
>+/// This is used to wrap a pointer to regex_t into a
>+/// shared_ptr<regex_t>.
>+///
>+/// @param p the bare pointer to regex_t to wrap into a shared_ptr<regex_t>.
>+///
>+/// @return the shared_ptr<regex_t> that wraps @p p.
>+template<>
>+regex::regex_t_sptr
>+sptr_utils::build_sptr<regex_t>(regex_t *p);
>+
>+/// Specialization of sptr_utils::build_sptr for regex_t.
>+///
>+/// This creates a pointer to regex_t and wraps it into a shared_ptr<regex_t>.
>+///
>+/// @return the shared_ptr<regex_t> wrapping the newly created regex_t*
>+template<>
>+regex::regex_t_sptr
>+sptr_utils::build_sptr<regex_t>();
>+
>+}// end namespace abigail
>+
>+#endif //__ABG_REGEX_H__
>diff --git a/include/abg-sptr-utils.h b/include/abg-sptr-utils.h
>index 0adedbb3..9737fe5f 100644
>--- a/include/abg-sptr-utils.h
>+++ b/include/abg-sptr-utils.h
>@@ -78,19 +78,6 @@ typedef shared_ptr<xmlChar> xml_char_sptr;
> template<>
> xml_char_sptr build_sptr<xmlChar>(xmlChar *p);
>
>-/// A convenience typedef for a shared pointer of regex_t.
>-typedef shared_ptr<regex_t> regex_t_sptr;
>-
>-/// Specialization of sptr_utils::build_sptr for regex_t.
>-template<>
>-regex_t_sptr
>-build_sptr<regex_t>(regex_t *p);
>-
>-/// Specialization of sptr_utils::build_sptr for regex_t.
>-template<>
>-regex_t_sptr
>-build_sptr<regex_t>();
>-
> /// A deleter for shared pointers that ... doesn't delete the object
> /// managed by the shared pointer.
> struct noop_deleter
>@@ -101,42 +88,6 @@ struct noop_deleter
>   {}
> };
>
>-/// A delete functor for a shared_ptr of regex_t.
>-struct regex_t_deleter
>-{
>-  /// The operator called to de-allocate the pointer to regex_t
>-  /// embedded in a shared_ptr<regex_t>
>-  ///
>-  /// @param r the pointer to regex_t to de-allocate.
>-  void
>-  operator()(::regex_t* r)
>-  {
>-    regfree(r);
>-    delete r;
>-  }
>-};//end struct regex_deleter
>-
>-/// Specialization of sptr_utils::build_sptr for regex_t.
>-///
>-/// This is used to wrap a pointer to regex_t into a
>-/// shared_ptr<regex_t>.
>-///
>-/// @param p the bare pointer to regex_t to wrap into a shared_ptr<regex_t>.
>-///
>-/// @return the shared_ptr<regex_t> that wraps @p p.
>-template<>
>-regex_t_sptr
>-build_sptr<regex_t>(regex_t *p);
>-
>-/// Specialization of sptr_utils::build_sptr for regex_t.
>-///
>-/// This creates a pointer to regex_t and wraps it into a shared_ptr<regex_t>.
>-///
>-/// @return the shared_ptr<regex_t> wrapping the newly created regex_t*
>-template<>
>-regex_t_sptr
>-build_sptr<regex_t>();
>-
> }// end namespace sptr_utils
> }// end namespace abigail
>
>diff --git a/src/Makefile.am b/src/Makefile.am
>index fafab853..1153a5f8 100644
>--- a/src/Makefile.am
>+++ b/src/Makefile.am
>@@ -13,7 +13,6 @@ endif
>
> libabigail_la_SOURCES =			\
> abg-internal.h				\
>-abg-sptr-utils.cc			\
> abg-traverse.cc				\
> abg-ir-priv.h				\
> abg-ir.cc				\
>@@ -41,6 +40,7 @@ abg-workers.cc				\
> abg-tools-utils.cc			\
> abg-elf-helpers.h			\
> abg-elf-helpers.cc			\
>+abg-regex.cc				\
> $(CXX11_SOURCES)
>
> libabigail_la_LIBADD = $(DEPS_LIBS)
>diff --git a/src/abg-corpus-priv.h b/src/abg-corpus-priv.h
>index 4cb2e43c..e65f7c8f 100644
>--- a/src/abg-corpus-priv.h
>+++ b/src/abg-corpus-priv.h
>@@ -30,6 +30,7 @@
> #define __ABG_CORPUS_PRIV_H__
>
> #include "abg-sptr-utils.h"
>+#include "abg-regex.h"
> #include "abg-internal.h"

While it was not before, please sort those includes.

>
> namespace abigail
>@@ -42,7 +43,7 @@ namespace sptr_utils
> namespace ir
> {
>
>-using sptr_utils::regex_t_sptr;
>+using regex::regex_t_sptr;
>
> /// A convenience typedef for std::vector<regex_t_sptr>.
> typedef vector<regex_t_sptr> regex_t_sptrs_type;
>diff --git a/src/abg-corpus.cc b/src/abg-corpus.cc
>index 12f44fd1..2e9f304d 100644
>--- a/src/abg-corpus.cc
>+++ b/src/abg-corpus.cc
>@@ -67,7 +67,7 @@ using zip_utils::open_archive;
> using zip_utils::open_file_in_archive;
> #endif // WITH_ZIP_ARCHIVE
>
>-using sptr_utils::regex_t_sptr;
>+using regex::regex_t_sptr;
>
> /// Constructor of @ref corpus::exported_decls_builder.
> ///
>diff --git a/src/abg-sptr-utils.cc b/src/abg-regex.cc
>similarity index 84%
>rename from src/abg-sptr-utils.cc
>rename to src/abg-regex.cc
>index 2a6739a8..13f5841d 100644
>--- a/src/abg-sptr-utils.cc
>+++ b/src/abg-regex.cc
>@@ -24,13 +24,11 @@
> ///
>
> #include "abg-sptr-utils.h"
>+#include "abg-regex.h"

Sort.

>
> namespace abigail
> {
>
>-namespace sptr_utils
>-{
>-
> /// Specialization of sptr_utils::build_sptr for regex_t.
> ///
> /// This is used to wrap a pointer to regex_t into a
>@@ -40,9 +38,9 @@ namespace sptr_utils
> ///
> /// @return the shared_ptr<regex_t> that wraps @p p.
> template<>
>-regex_t_sptr
>-build_sptr<regex_t>(regex_t *p)
>-{return regex_t_sptr(p, regex_t_deleter());}
>+regex::regex_t_sptr
>+sptr_utils::build_sptr<regex_t>(regex_t *p)
>+{return regex::regex_t_sptr(p, regex::regex_t_deleter());}
>
> /// Specialization of sptr_utils::build_sptr for regex_t.
> ///
>@@ -50,9 +48,8 @@ build_sptr<regex_t>(regex_t *p)
> ///
> /// @return the shared_ptr<regex_t> wrapping the newly created regex_t*
> template<>
>-regex_t_sptr
>-build_sptr<regex_t>()
>-{return build_sptr(new regex_t);}
>+regex::regex_t_sptr
>+sptr_utils::build_sptr<regex_t>()
>+{return sptr_utils::build_sptr(new regex_t);}
>
>-}
>-}
>+}//end namespace abigail
>diff --git a/src/abg-suppression-priv.h b/src/abg-suppression-priv.h
>index 1a9a7207..c37ceff6 100644
>--- a/src/abg-suppression-priv.h
>+++ b/src/abg-suppression-priv.h
>@@ -31,6 +31,7 @@
> #include "abg-fwd.h"
> #include "abg-suppression.h"
> #include "abg-sptr-utils.h"
>+#include "abg-regex.h"

Sort includes alphabetical.

With the above fixed:
Reviewed-by: Matthias Maennich <maennich@google.com>

Cheers,
Matthias
>
> namespace abigail
> {
>@@ -47,13 +48,13 @@ class suppression_base::priv
>   bool					drops_artifact_;
>   string				label_;
>   string				file_name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	file_name_regex_;
>+  mutable regex::regex_t_sptr		file_name_regex_;
>   string				file_name_not_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	file_name_not_regex_;
>+  mutable regex::regex_t_sptr		file_name_not_regex_;
>   string				soname_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	soname_regex_;
>+  mutable regex::regex_t_sptr		soname_regex_;
>   string				soname_not_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	soname_not_regex_;
>+  mutable regex::regex_t_sptr		soname_not_regex_;
>
> public:
>   priv()
>@@ -87,14 +88,14 @@ public:
>   ///
>   /// If the 'file_name_regex' property of @ref suppression_base is
>   /// empty then this method returns nil.
>-  const sptr_utils::regex_t_sptr&
>+  const regex::regex_t_sptr&
>   get_file_name_regex() const
>   {
>     if (!file_name_regex_)
>       {
> 	if (!file_name_regex_str_.empty())
> 	  {
>-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	    if (regcomp(r.get(),
> 			file_name_regex_str_.c_str(),
> 			REG_EXTENDED) == 0)
>@@ -112,14 +113,14 @@ public:
>   ///
>   /// If the 'file_name_not_regex' property of @ref suppression_base
>   /// is empty then this method returns nil.
>-  const sptr_utils::regex_t_sptr&
>+  const regex::regex_t_sptr&
>   get_file_name_not_regex() const
>   {
>     if (!file_name_not_regex_)
>       {
> 	if (!file_name_not_regex_str_.empty())
> 	  {
>-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	    if (regcomp(r.get(),
> 			file_name_not_regex_str_.c_str(),
> 			REG_EXTENDED) == 0)
>@@ -137,14 +138,14 @@ public:
>   ///
>   /// If the 'soname_regex' property of @ref suppression_base is empty
>   /// then this method returns nil.
>-  const sptr_utils::regex_t_sptr&
>+  const regex::regex_t_sptr&
>   get_soname_regex() const
>   {
>     if (!soname_regex_)
>       {
> 	if (!soname_regex_str_.empty())
> 	  {
>-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	    if (regcomp(r.get(),
> 			soname_regex_str_.c_str(),
> 			REG_EXTENDED) == 0)
>@@ -162,14 +163,14 @@ public:
>   ///
>   /// If the 'soname_not_regex' property of @ref suppression_base is
>   /// empty then this method returns nil.
>-  const sptr_utils::regex_t_sptr&
>+  const regex::regex_t_sptr&
>   get_soname_not_regex() const
>   {
>     if (!soname_not_regex_)
>       {
> 	if (!soname_not_regex_str_.empty())
> 	  {
>-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	    if (regcomp(r.get(),
> 			soname_not_regex_str_.c_str(),
> 			REG_EXTENDED) == 0)
>@@ -192,14 +193,14 @@ public:
>   matches_soname(const string& soname) const
>   {
>     bool has_regexp = false;
>-    if (sptr_utils::regex_t_sptr regexp = get_soname_regex())
>+    if (regex::regex_t_sptr regexp = get_soname_regex())
>       {
> 	has_regexp = true;
> 	if (regexec(regexp.get(), soname.c_str(), 0, NULL, 0) != 0)
> 	  return false;
>       }
>
>-    if (sptr_utils::regex_t_sptr regexp = get_soname_not_regex())
>+    if (regex::regex_t_sptr regexp = get_soname_not_regex())
>       {
> 	has_regexp = true;
> 	if (regexec(regexp.get(), soname.c_str(), 0, NULL, 0) == 0)
>@@ -227,7 +228,7 @@ public:
>   {
>     bool has_regexp = false;
>
>-    if (sptr_utils::regex_t_sptr regexp = get_file_name_regex())
>+    if (regex::regex_t_sptr regexp = get_file_name_regex())
>       {
> 	has_regexp = true;
> 	if (regexec(regexp.get(), binary_name.c_str(),
>@@ -235,7 +236,7 @@ public:
> 	  return false;
>       }
>
>-    if (sptr_utils::regex_t_sptr regexp = get_file_name_not_regex())
>+    if (regex::regex_t_sptr regexp = get_file_name_not_regex())
>       {
> 	has_regexp = true;
> 	if (regexec(regexp.get(), binary_name.c_str(),
>@@ -263,7 +264,7 @@ class function_suppression::parameter_spec::priv
>   size_t				index_;
>   string				type_name_;
>   string				type_name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	type_name_regex_;
>+  mutable regex::regex_t_sptr		type_name_regex_;
>
>   priv()
>     : index_()
>@@ -277,12 +278,12 @@ class function_suppression::parameter_spec::priv
>     : index_(i), type_name_(tn), type_name_regex_str_(tn_regex)
>   {}
>
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_type_name_regex() const
>   {
>     if (!type_name_regex_ && !type_name_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    type_name_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -302,21 +303,21 @@ struct function_suppression::priv
>   change_kind				change_kind_;
>   string				name_;
>   string				name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	name_regex_;
>+  mutable regex::regex_t_sptr		name_regex_;
>   string				name_not_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	name_not_regex_;
>+  mutable regex::regex_t_sptr		name_not_regex_;
>   string				return_type_name_;
>   string				return_type_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	return_type_regex_;
>+  mutable regex::regex_t_sptr		return_type_regex_;
>   parameter_specs_type			parm_specs_;
>   string				symbol_name_;
>   string				symbol_name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	symbol_name_regex_;
>+  mutable regex::regex_t_sptr		symbol_name_regex_;
>   string				symbol_name_not_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	symbol_name_not_regex_;
>+  mutable regex::regex_t_sptr		symbol_name_not_regex_;
>   string				symbol_version_;
>   string				symbol_version_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	symbol_version_regex_;
>+  mutable regex::regex_t_sptr		symbol_version_regex_;
>   bool					allow_other_aliases_;
>
>   priv():
>@@ -356,12 +357,12 @@ struct function_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// function_suppression::priv::name_regex_str_..
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_name_regex() const
>   {
>     if (!name_regex_ && !name_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    name_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -379,12 +380,12 @@ struct function_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// function_suppression::priv::name_not_regex_str_..
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_name_not_regex() const
>   {
>     if (!name_not_regex_ && !name_not_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    name_not_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -402,12 +403,12 @@ struct function_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// function_suppression::priv::return_type_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_return_type_regex() const
>   {
>     if (!return_type_regex_ && !return_type_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    return_type_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -425,12 +426,12 @@ struct function_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// function_suppression::priv::symbol_name_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_symbol_name_regex() const
>   {
>     if (!symbol_name_regex_ && !symbol_name_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    symbol_name_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -448,12 +449,12 @@ struct function_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// function_suppression::priv::symbol_name_not_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_symbol_name_not_regex() const
>   {
>     if (!symbol_name_not_regex_ && !symbol_name_not_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    symbol_name_not_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -471,12 +472,12 @@ struct function_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// function_suppression::priv::symbol_version_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_symbol_version_regex() const
>   {
>     if (!symbol_version_regex_ && ! symbol_version_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    symbol_version_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -561,20 +562,20 @@ struct variable_suppression::priv
>   change_kind				change_kind_;
>   string				name_;
>   string				name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	name_regex_;
>+  mutable regex::regex_t_sptr		name_regex_;
>   string				name_not_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	name_not_regex_;
>+  mutable regex::regex_t_sptr		name_not_regex_;
>   string				symbol_name_;
>   string				symbol_name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	symbol_name_regex_;
>+  mutable regex::regex_t_sptr		symbol_name_regex_;
>   string				symbol_name_not_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	symbol_name_not_regex_;
>+  mutable regex::regex_t_sptr		symbol_name_not_regex_;
>   string				symbol_version_;
>   string				symbol_version_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	symbol_version_regex_;
>+  mutable regex::regex_t_sptr		symbol_version_regex_;
>   string				type_name_;
>   string				type_name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	type_name_regex_;
>+  mutable regex::regex_t_sptr		type_name_regex_;
>
>   priv(const string& name,
>        const string& name_regex_str,
>@@ -604,12 +605,12 @@ struct variable_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// variable_suppression::priv::name_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_name_regex() const
>   {
>     if (!name_regex_ && !name_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    name_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -627,12 +628,12 @@ struct variable_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// variable_suppression::priv::name_not_regex_str_..
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_name_not_regex() const
>   {
>     if (!name_not_regex_ && !name_not_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    name_not_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -650,12 +651,12 @@ struct variable_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// variable_suppression::priv::symbol_name_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_symbol_name_regex() const
>   {
>     if (!symbol_name_regex_ && !symbol_name_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    symbol_name_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -673,12 +674,12 @@ struct variable_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// variable_suppression::priv::symbol_name_not_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_symbol_name_not_regex() const
>   {
>     if (!symbol_name_not_regex_ && !symbol_name_not_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(), symbol_name_not_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
> 	  symbol_name_not_regex_ = r;
>@@ -695,12 +696,12 @@ struct variable_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// variable_suppression::priv::symbol_version_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_symbol_version_regex()  const
>   {
>     if (!symbol_version_regex_ && !symbol_version_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    symbol_version_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -718,12 +719,12 @@ struct variable_suppression::priv
>   ///
>   /// @return a pointer to the regular expression object of
>   /// variable_suppression::priv::type_name_regex_str_.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_type_name_regex() const
>   {
>     if (!type_name_regex_ && !type_name_regex_str_.empty())
>       {
>-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	if (regcomp(r.get(),
> 		    type_name_regex_str_.c_str(),
> 		    REG_EXTENDED) == 0)
>@@ -766,18 +767,18 @@ variable_is_suppressed(const ReadContextType&	ctxt,
> class type_suppression::priv
> {
>   string				type_name_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	type_name_regex_;
>+  mutable regex::regex_t_sptr		type_name_regex_;
>   string				type_name_;
>   string				type_name_not_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	type_name_not_regex_;
>+  mutable regex::regex_t_sptr		type_name_not_regex_;
>   bool					consider_type_kind_;
>   type_suppression::type_kind		type_kind_;
>   bool					consider_reach_kind_;
>   type_suppression::reach_kind		reach_kind_;
>   type_suppression::insertion_ranges	insertion_ranges_;
>-  unordered_set<string>		source_locations_to_keep_;
>+  unordered_set<string>			source_locations_to_keep_;
>   string				source_location_to_keep_regex_str_;
>-  mutable sptr_utils::regex_t_sptr	source_location_to_keep_regex_;
>+  mutable regex::regex_t_sptr		source_location_to_keep_regex_;
>   mutable vector<string>		changed_enumerator_names_;
>
>   priv();
>@@ -805,14 +806,14 @@ public:
>   ///
>   /// If the 'type_name_regex' property of @ref type_suppression is
>   /// empty then this method returns nil.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_type_name_regex() const
>   {
>     if (!type_name_regex_)
>       {
> 	if (!type_name_regex_str_.empty())
> 	  {
>-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	    if (regcomp(r.get(),
> 			type_name_regex_str_.c_str(),
> 			REG_EXTENDED) == 0)
>@@ -826,7 +827,7 @@ public:
>   ///
>   /// @param r the new type_name_regex object.
>   void
>-  set_type_name_regex(sptr_utils::regex_t_sptr r)
>+  set_type_name_regex(regex::regex_t_sptr r)
>   {type_name_regex_ = r;}
>
>   /// Get the regular expression object associated to the
>@@ -837,14 +838,14 @@ public:
>   ///
>   /// If the 'type_name_not_regex' property of @ref type_suppression is
>   /// empty then this method returns nil.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_type_name_not_regex() const
>   {
>     if (!type_name_not_regex_)
>       {
> 	if (!type_name_not_regex_str_.empty())
> 	  {
>-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	    if (regcomp(r.get(),
> 			type_name_not_regex_str_.c_str(),
> 			REG_EXTENDED) == 0)
>@@ -858,7 +859,7 @@ public:
>   ///
>   /// @param r the new type_name_not_regex object.
>   void
>-  set_type_name_not_regex(sptr_utils::regex_t_sptr r)
>+  set_type_name_not_regex(regex::regex_t_sptr r)
>   {type_name_not_regex_ = r;}
>
>   /// Getter for the string that denotes the 'type_name_not_regex'
>@@ -882,14 +883,14 @@ public:
>   /// Getter for the source_location_to_keep_regex object.
>   ///
>   /// This function builds the regex if it's not yet built.
>-  const sptr_utils::regex_t_sptr
>+  const regex::regex_t_sptr
>   get_source_location_to_keep_regex() const
>   {
>     if (!source_location_to_keep_regex_)
>       {
> 	if (!source_location_to_keep_regex_str_.empty())
> 	  {
>-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
>+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
> 	    if (regcomp(r.get(),
> 			source_location_to_keep_regex_str_.c_str(),
> 			REG_EXTENDED) == 0)
>@@ -903,7 +904,7 @@ public:
>   ///
>   /// @param r the new regex object.
>   void
>-  set_source_location_to_keep_regex(sptr_utils::regex_t_sptr r)
>+  set_source_location_to_keep_regex(regex::regex_t_sptr r)
>   {source_location_to_keep_regex_ = r;}
>
>   friend class type_suppression;
>diff --git a/src/abg-suppression.cc b/src/abg-suppression.cc
>index d3ccb63c..f26c9208 100644
>--- a/src/abg-suppression.cc
>+++ b/src/abg-suppression.cc
>@@ -49,6 +49,7 @@ namespace suppr
> {
>
> using abg_compat::dynamic_pointer_cast;
>+using regex::regex_t_sptr;
>
> // <suppression_base stuff>
>
>@@ -990,7 +991,7 @@ suppression_matches_type_name(const type_suppression&	s,
> 	  // If the qualified name of the considered type doesn't match
> 	  // the regular expression of the type name, then this
> 	  // suppression doesn't apply.
>-	  if (const sptr_utils::regex_t_sptr& type_name_regex =
>+	  if (const regex_t_sptr& type_name_regex =
> 	      s.priv_->get_type_name_regex())
> 	    {
> 	      if (regexec(type_name_regex.get(),
>@@ -999,7 +1000,7 @@ suppression_matches_type_name(const type_suppression&	s,
> 		return false;
> 	    }
>
>-	  if (const sptr_utils::regex_t_sptr type_name_not_regex =
>+	  if (const regex_t_sptr type_name_not_regex =
> 	      s.priv_->get_type_name_not_regex())
> 	    {
> 	      if (regexec(type_name_not_regex.get(),
>@@ -1050,8 +1051,7 @@ suppression_matches_type_location(const type_suppression&	s,
>       unsigned loc_line = 0, loc_column = 0;
>       loc.expand(loc_path, loc_line, loc_column);
>
>-      if (sptr_utils::regex_t_sptr regexp =
>-	  s.priv_->get_source_location_to_keep_regex())
>+      if (regex_t_sptr regexp = s.priv_->get_source_location_to_keep_regex())
> 	if (regexec(regexp.get(), loc_path.c_str(), 0, NULL, 0) == 0)
> 	  return false;
>
>@@ -2500,7 +2500,7 @@ function_suppression::suppresses_function(const function_decl* fn,
>     }
>
>   // check if the "name_regexp" property matches.
>-  const sptr_utils::regex_t_sptr name_regex = priv_->get_name_regex();
>+  const regex_t_sptr name_regex = priv_->get_name_regex();
>   if (name_regex)
>     {
>       if (regexec(name_regex.get(),
>@@ -2535,7 +2535,7 @@ function_suppression::suppresses_function(const function_decl* fn,
>     }
>
>   // check if the "name_not_regexp" property matches.
>-  const sptr_utils::regex_t_sptr name_not_regex = priv_->get_name_not_regex();
>+  const regex_t_sptr name_not_regex = priv_->get_name_not_regex();
>   if (name_not_regex)
>     {
>       if (regexec(name_not_regex.get(),
>@@ -2585,8 +2585,7 @@ function_suppression::suppresses_function(const function_decl* fn,
>     }
>   else
>     {
>-      const sptr_utils::regex_t_sptr return_type_regex =
>-	priv_->get_return_type_regex();
>+      const regex_t_sptr return_type_regex = priv_->get_return_type_regex();
>       if (return_type_regex
> 	  && (regexec(return_type_regex.get(),
> 		      fn_return_type_name.c_str(),
>@@ -2626,15 +2625,14 @@ function_suppression::suppresses_function(const function_decl* fn,
>     }
>   else if (sym)
>     {
>-      const sptr_utils::regex_t_sptr symbol_name_regex =
>-	priv_->get_symbol_name_regex();
>+      const regex_t_sptr symbol_name_regex = priv_->get_symbol_name_regex();
>       if (symbol_name_regex
> 	  && (regexec(symbol_name_regex.get(),
> 		      fn_sym_name.c_str(),
> 		      0, NULL, 0) != 0))
> 	return false;
>
>-      const sptr_utils::regex_t_sptr symbol_name_not_regex =
>+      const regex_t_sptr symbol_name_not_regex =
> 	priv_->get_symbol_name_not_regex();
>       if (symbol_name_not_regex
> 	  && (regexec(symbol_name_not_regex.get(),
>@@ -2678,7 +2676,7 @@ function_suppression::suppresses_function(const function_decl* fn,
>     }
>   else if (sym)
>     {
>-      const sptr_utils::regex_t_sptr symbol_version_regex =
>+      const regex_t_sptr symbol_version_regex =
> 	priv_->get_symbol_version_regex();
>       if (symbol_version_regex
> 	  && (regexec(symbol_version_regex.get(),
>@@ -2720,7 +2718,7 @@ function_suppression::suppresses_function(const function_decl* fn,
> 	    }
> 	  else
> 	    {
>-	      const sptr_utils::regex_t_sptr parm_type_name_regex =
>+	      const regex_t_sptr parm_type_name_regex =
> 		(*p)->priv_->get_type_name_regex();
> 	      if (parm_type_name_regex)
> 		{
>@@ -2813,8 +2811,7 @@ function_suppression::suppresses_function_symbol(const elf_symbol* sym,
>     }
>   else if (!get_symbol_name_regex_str().empty())
>     {
>-      const sptr_utils::regex_t_sptr symbol_name_regex =
>-	priv_->get_symbol_name_regex();
>+      const regex_t_sptr symbol_name_regex = priv_->get_symbol_name_regex();
>       if (symbol_name_regex
> 	  && (regexec(symbol_name_regex.get(),
> 		      sym_name.c_str(),
>@@ -2832,7 +2829,7 @@ function_suppression::suppresses_function_symbol(const elf_symbol* sym,
>     }
>   else if (!get_symbol_version_regex_str().empty())
>     {
>-      const sptr_utils::regex_t_sptr symbol_version_regex =
>+      const regex_t_sptr symbol_version_regex =
> 	priv_->get_symbol_version_regex();
>       if (symbol_version_regex
> 	  && (regexec(symbol_version_regex.get(),
>@@ -2927,12 +2924,12 @@ bool
> suppression_matches_function_name(const suppr::function_suppression& s,
> 				  const string& fn_name)
> {
>-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_regex())
>+  if (regex_t_sptr regexp = s.priv_->get_name_regex())
>     {
>       if (regexec(regexp.get(), fn_name.c_str(), 0, NULL, 0) != 0)
> 	return false;
>     }
>-  else if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_not_regex())
>+  else if (regex_t_sptr regexp = s.priv_->get_name_not_regex())
>     {
>       if (regexec(regexp.get(), fn_name.c_str(), 0, NULL, 0) == 0)
> 	return false;
>@@ -2963,12 +2960,12 @@ bool
> suppression_matches_function_sym_name(const suppr::function_suppression& s,
> 				      const string& fn_linkage_name)
> {
>-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
>+  if (regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
>     {
>       if (regexec(regexp.get(), fn_linkage_name.c_str(), 0, NULL, 0) != 0)
> 	return false;
>     }
>-  else if (sptr_utils::regex_t_sptr regexp = s.priv_->get_symbol_name_not_regex())
>+  else if (regex_t_sptr regexp = s.priv_->get_symbol_name_not_regex())
>     {
>       if (regexec(regexp.get(), fn_linkage_name.c_str(), 0, NULL, 0) == 0)
> 	return false;
>@@ -2996,12 +2993,12 @@ bool
> suppression_matches_variable_name(const suppr::variable_suppression& s,
> 				  const string& var_name)
> {
>-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_regex())
>+  if (regex_t_sptr regexp = s.priv_->get_name_regex())
>     {
>       if (regexec(regexp.get(), var_name.c_str(), 0, NULL, 0) != 0)
> 	return false;
>     }
>-  else if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_not_regex())
>+  else if (regex_t_sptr regexp = s.priv_->get_name_not_regex())
>     {
>       if (regexec(regexp.get(), var_name.c_str(), 0, NULL, 0) == 0)
> 	return false;
>@@ -3030,12 +3027,12 @@ bool
> suppression_matches_variable_sym_name(const suppr::variable_suppression& s,
> 				      const string& var_linkage_name)
> {
>-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
>+  if (regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
>     {
>       if (regexec(regexp.get(), var_linkage_name.c_str(), 0, NULL, 0) != 0)
> 	return false;
>     }
>-  else if (sptr_utils::regex_t_sptr regexp =
>+  else if (regex_t_sptr regexp =
> 	   s.priv_->get_symbol_name_not_regex())
>     {
>       if (regexec(regexp.get(), var_linkage_name.c_str(), 0, NULL, 0) == 0)
>@@ -3065,7 +3062,7 @@ bool
> suppression_matches_type(const suppr::type_suppression& s,
> 			 const string& type_name)
> {
>-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_type_name_regex())
>+  if (regex_t_sptr regexp = s.priv_->get_type_name_regex())
>     {
>       if (regexec(regexp.get(), type_name.c_str(), 0, NULL, 0) != 0)
> 	return false;
>@@ -3780,14 +3777,13 @@ variable_suppression::suppresses_variable(const var_decl* var,
>       // "name_regex" and "name_not_regex" properties match
>       if (get_name().empty())
> 	{
>-	  const sptr_utils::regex_t_sptr name_regex = priv_->get_name_regex();
>+	  const regex_t_sptr name_regex = priv_->get_name_regex();
> 	  if (name_regex
> 	      && (regexec(name_regex.get(), var_name.c_str(),
> 			  0, NULL, 0) != 0))
> 	    return false;
>
>-	  const sptr_utils::regex_t_sptr name_not_regex =
>-	    priv_->get_name_not_regex();
>+	  const regex_t_sptr name_not_regex = priv_->get_name_not_regex();
> 	  if (name_not_regex
> 	      && (regexec(name_not_regex.get(), var_name.c_str(),
> 			  0, NULL, 0) == 0))
>@@ -3805,14 +3801,13 @@ variable_suppression::suppresses_variable(const var_decl* var,
>     }
>   else
>     {
>-      const sptr_utils::regex_t_sptr sym_name_regex =
>-	priv_->get_symbol_name_regex();
>+      const regex_t_sptr sym_name_regex = priv_->get_symbol_name_regex();
>       if (sym_name_regex
> 	  && (regexec(sym_name_regex.get(), var_sym_name.c_str(),
> 		      0, NULL, 0) != 0))
> 	return false;
>
>-      const sptr_utils::regex_t_sptr sym_name_not_regex =
>+      const regex_t_sptr sym_name_not_regex =
> 	priv_->get_symbol_name_not_regex();
>       if (sym_name_not_regex
> 	  && (regexec(sym_name_not_regex.get(), var_sym_name.c_str(),
>@@ -3830,7 +3825,7 @@ variable_suppression::suppresses_variable(const var_decl* var,
>     }
>   else
>     {
>-      const sptr_utils::regex_t_sptr symbol_version_regex =
>+      const regex_t_sptr symbol_version_regex =
> 	priv_->get_symbol_version_regex();
>       if (symbol_version_regex
> 	  && (regexec(symbol_version_regex.get(),
>@@ -3852,8 +3847,7 @@ variable_suppression::suppresses_variable(const var_decl* var,
>     {
>       if (get_type_name().empty())
> 	{
>-	  const sptr_utils::regex_t_sptr type_name_regex =
>-	    priv_->get_type_name_regex();
>+	  const regex_t_sptr type_name_regex = priv_->get_type_name_regex();
> 	  if (type_name_regex
> 	      && (regexec(type_name_regex.get(), var_type_name.c_str(),
> 			  0, NULL, 0) != 0))
>@@ -3946,8 +3940,7 @@ variable_suppression::suppresses_variable_symbol(const elf_symbol* sym,
>     }
>   else if (!get_symbol_name_regex_str().empty())
>     {
>-      const sptr_utils::regex_t_sptr sym_name_regex =
>-	priv_->get_symbol_name_regex();
>+      const regex_t_sptr sym_name_regex = priv_->get_symbol_name_regex();
>       if (sym_name_regex
> 	  && (regexec(sym_name_regex.get(), sym_name.c_str(),
> 		      0, NULL, 0) != 0))
>@@ -3965,7 +3958,7 @@ variable_suppression::suppresses_variable_symbol(const elf_symbol* sym,
>     }
>   else if (!get_symbol_version_regex_str().empty())
>     {
>-      const sptr_utils::regex_t_sptr symbol_version_regex =
>+      const regex_t_sptr symbol_version_regex =
> 	priv_->get_symbol_version_regex();
>       if (symbol_version_regex
> 	  && (regexec(symbol_version_regex.get(),
>@@ -4275,16 +4268,14 @@ file_suppression::suppresses_file(const string& file_path)
>
>   bool has_regexp = false;
>
>-  if (sptr_utils::regex_t_sptr regexp =
>-      suppression_base::priv_->get_file_name_regex())
>+  if (regex_t_sptr regexp = suppression_base::priv_->get_file_name_regex())
>     {
>       has_regexp = true;
>       if (regexec(regexp.get(), fname.c_str(), 0, NULL, 0) != 0)
> 	return false;
>     }
>
>-  if (sptr_utils::regex_t_sptr regexp =
>-      suppression_base::priv_->get_file_name_not_regex())
>+  if (regex_t_sptr regexp = suppression_base::priv_->get_file_name_not_regex())
>     {
>       has_regexp = true;
>       if (regexec(regexp.get(), fname.c_str(), 0, NULL, 0) == 0)
>-- 
>2.26.2.303.gf8c07b1a785-goog
>

  reply	other threads:[~2020-04-27 10:52 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-23 15:44 [PATCH 00/21] Simplify regex and suppression parsing Giuliano Procida
2020-04-23 15:44 ` [PATCH 01/21] Move regex definitions to own files Giuliano Procida
2020-04-23 15:44 ` [PATCH 02/21] Move libxml bits out of abg-sptr-utils.h Giuliano Procida
2020-04-23 15:44 ` [PATCH 03/21] Simplify generation of symbol whitelist regex Giuliano Procida
2020-04-23 15:44 ` [PATCH 04/21] Escape names used in symbol whitelisting regex Giuliano Procida
2020-04-23 15:44 ` [PATCH 05/21] abg-suppression.cc: More uniform variable naming Giuliano Procida
2020-04-23 15:44 ` [PATCH 06/21] diff suppression: Fix handling of change kinds Giuliano Procida
2020-04-23 15:44 ` [PATCH 07/21] Add POSIX regex wrapper functions Giuliano Procida
2020-04-23 18:07   ` [PATCH v2 " Giuliano Procida
2020-04-23 15:44 ` [PATCH 08/21] Use regex::compile wrapper instead of regcomp Giuliano Procida
2020-04-23 15:44 ` [PATCH 09/21] Use regex::match wrapper instead of regexec Giuliano Procida
2020-04-23 18:02   ` [PATCH v2 " Giuliano Procida
2020-04-23 15:44 ` [PATCH 10/21] Refactor read_parameter_spec_from_string logic Giuliano Procida
2020-04-23 15:44 ` [PATCH 11/21] Compile suppression regexes earlier Giuliano Procida
2020-04-23 15:44 ` [PATCH 12/21] Reduce direct access to suppression priv_ members Giuliano Procida
2020-04-23 15:44 ` [PATCH 13/21] Move match methods from priv to suppression_base Giuliano Procida
2020-04-23 15:44 ` [PATCH 14/21] Remove suppression types' priv class methods Giuliano Procida
2020-04-23 15:44 ` [PATCH 15/21] abg-suppression.cc: More consistent regex matching Giuliano Procida
2020-04-23 15:44 ` [PATCH 16/21] abg-tools-utils.cc: Assert generated regexes OK Giuliano Procida
2020-04-23 15:44 ` [PATCH 17/21] Refactor suppression property string parsing Giuliano Procida
2020-04-23 15:44 ` [PATCH 18/21] Refactor suppression property regex parsing Giuliano Procida
2020-04-23 15:44 ` [PATCH 19/21] Warn if user-supplied regexes fail to compile Giuliano Procida
2020-04-23 18:04   ` [PATCH v2 " Giuliano Procida
2020-04-23 15:44 ` [PATCH 20/21] Default construct suppression types Giuliano Procida
2020-04-23 15:44 ` [PATCH 21/21] Remove unused suppression type priv constructors Giuliano Procida
2020-04-23 18:11 ` [PATCH 00/21] Simplify regex and suppression parsing Giuliano Procida
2020-04-24  8:54   ` Giuliano Procida
2020-04-24  9:21 ` [PATCH v3 00/21]Simplify " Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 01/21] Move regex definitions to own files Giuliano Procida
2020-04-27 10:52     ` Matthias Maennich [this message]
2020-04-29 14:19       ` Dodji Seketeli
2020-04-29 14:35         ` Giuliano Procida
2020-05-04  9:19     ` Dodji Seketeli
2020-04-24  9:21   ` [PATCH v3 02/21] Move libxml bits out of abg-sptr-utils.h Giuliano Procida
2020-04-27 10:53     ` Matthias Maennich
2020-04-29 14:30     ` Dodji Seketeli
2020-05-04  9:20     ` Dodji Seketeli
2020-04-24  9:21   ` [PATCH v3 03/21] Simplify generation of symbol whitelist regex Giuliano Procida
2020-04-27 11:01     ` Matthias Maennich
2020-04-27 15:31       ` Giuliano Procida
2020-05-04  9:20     ` Dodji Seketeli
2020-04-24  9:21   ` [PATCH v3 04/21] Escape names used in symbol whitelisting regex Giuliano Procida
2020-04-27 11:14     ` Matthias Maennich
2020-04-27 15:37       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 05/21] abg-suppression.cc: More uniform variable naming Giuliano Procida
2020-04-27 11:17     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 06/21] diff suppression: Fix handling of change kinds Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 07/21] Add POSIX regex wrapper functions Giuliano Procida
2020-04-27 11:23     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 08/21] Use regex::compile wrapper instead of regcomp Giuliano Procida
2020-04-27 11:34     ` Matthias Maennich
2020-04-27 16:01       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 09/21] Use regex::match wrapper instead of regexec Giuliano Procida
2020-04-27 11:38     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 10/21] Refactor read_parameter_spec_from_string logic Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 11/21] Compile suppression regexes earlier Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 12/21] Reduce direct access to suppression priv_ members Giuliano Procida
2020-04-27 11:54     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 13/21] Move match methods from priv to suppression_base Giuliano Procida
2020-04-27 11:55     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 14/21] Remove suppression types' priv class methods Giuliano Procida
2020-04-27 11:57     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 15/21] abg-suppression.cc: More consistent regex matching Giuliano Procida
2020-04-27 12:07     ` Matthias Maennich
2020-04-27 16:18       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 16/21] abg-tools-utils.cc: Assert generated regexes OK Giuliano Procida
2020-04-27 12:08     ` Matthias Maennich
2020-04-27 16:21       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 17/21] Refactor suppression property string parsing Giuliano Procida
2020-04-27 12:17     ` Matthias Maennich
2020-04-27 16:42       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 18/21] Refactor suppression property regex parsing Giuliano Procida
2020-04-27 14:55     ` Matthias Maennich
2020-04-27 16:59       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 19/21] Warn if user-supplied regexes fail to compile Giuliano Procida
2020-04-27 15:36     ` Matthias Maennich
2020-05-01  8:49       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 20/21] Default construct suppression types Giuliano Procida
2020-04-27 15:40     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 21/21] Remove unused suppression type priv constructors Giuliano Procida
2020-04-27 15:41     ` Matthias Maennich
2020-05-04 12:34   ` [PATCH v4 00/15] Simplify regex and suppression parsing Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 01/15] Tidy #includes in a few files Giuliano Procida
2020-05-04 12:49       ` Matthias Maennich
2020-05-11 13:24       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 02/15] Document ^_^ regex in generate_from_strings Giuliano Procida
2020-05-04 12:49       ` Matthias Maennich
2020-05-11 13:32       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 03/15] Escape names used in symbol whitelisting regex Giuliano Procida
2020-05-04 12:57       ` Matthias Maennich
2020-05-04 16:45         ` [PATCH v5 " Giuliano Procida
2020-05-11 13:59           ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 04/15] abg-suppression.cc: More uniform variable naming Giuliano Procida
2020-05-11 14:04       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 05/15] diff suppression: Fix handling of change kinds Giuliano Procida
2020-05-04 13:04       ` Matthias Maennich
2020-05-11 14:15       ` Dodji Seketeli
2020-05-11 15:47         ` Giuliano Procida
2020-05-11 17:53           ` Dodji Seketeli
2020-05-12  9:54             ` Giuliano Procida
2020-05-12 10:14               ` [PATCH v5 05/15] Tidy checks for sufficient suppression properties Giuliano Procida
2020-05-12 16:11                 ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 06/15] Add POSIX regex wrapper functions Giuliano Procida
2020-05-11 16:37       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 07/15] Use regex::compile wrapper instead of regcomp Giuliano Procida
2020-05-11 16:38       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 08/15] Use regex::match wrapper instead of regexec Giuliano Procida
2020-05-12 16:35       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 09/15] Refactor read_parameter_spec_from_string logic Giuliano Procida
2020-05-13  7:51       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 10/15] Compile suppression regexes earlier Giuliano Procida
2020-05-04 13:14       ` Matthias Maennich
2020-05-13  8:07       ` Dodji Seketeli
2020-05-13 15:36         ` Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 11/15] Reduce direct access to suppression priv_ members Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 12/15] Move match methods from priv to suppression_base Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 13/15] Remove suppression type priv class methods Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 14/15] abg-suppression.cc: More consistent regex matching Giuliano Procida
2020-05-04 13:17       ` Matthias Maennich
2020-05-04 12:34     ` [PATCH v4 15/15] abg-tools-utils.cc: Assert generated regexes OK Giuliano Procida

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200427105215.GA159704@google.com \
    --to=maennich@google.com \
    --cc=dodji@seketeli.org \
    --cc=gprocida@google.com \
    --cc=kernel-team@android.com \
    --cc=libabigail@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).