gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / gdb_regex.h
index 27a570a1f4097ee4c3c82aca790e59b88849e490..311cb3fd89dc1704f6dcf876dad3261765d2a082 100644 (file)
@@ -1,11 +1,11 @@
-/* Portable <regex.h>
-   Copyright 2000, 2001 Free Software Foundation, Inc.
+/* Portable <regex.h>.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef GDB_REGEX_H
-#define GDB_REGEX_H
+#define GDB_REGEX_H 1
 
 #ifdef USE_INCLUDED_REGEX
-#include "xregex.h"
+# include "xregex.h"
 #else
-#include <regex.h>
+/* Request 4.2 BSD regex functions.  */
+# define _REGEX_RE_COMP
+# include <regex.h>
 #endif
 
-#endif /* gdb_regex.h */
+/* A compiled regex.  This is mainly a wrapper around regex_t.  The
+   the constructor throws on regcomp error and the destructor is
+   responsible for calling regfree.  The former means that it's not
+   possible to create an instance of compiled_regex that isn't
+   compiled, hence the name.  */
+class compiled_regex
+{
+public:
+  /* Compile a regexp and throw an exception on error, including
+     MESSAGE.  REGEX and MESSAGE must not be NULL.  */
+  compiled_regex (const char *regex, int cflags,
+                 const char *message)
+    ATTRIBUTE_NONNULL (2) ATTRIBUTE_NONNULL (4);
+
+  ~compiled_regex ();
+
+  DISABLE_COPY_AND_ASSIGN (compiled_regex);
+
+  /* Wrapper around ::regexec.  */
+  int exec (const char *string,
+           size_t nmatch, regmatch_t pmatch[],
+           int eflags) const;
+
+  /* Wrapper around ::re_search.  (Not const because re_search's
+     regex_t parameter isn't either.)  */
+  int search (const char *string, int size, int startpos,
+             int range, struct re_registers *regs);
+
+private:
+  /* The compiled pattern.  */
+  regex_t m_pattern;
+};
+
+#endif /* not GDB_REGEX_H */
This page took 0.024403 seconds and 4 git commands to generate.