SUMMARY
Remove MIUtilParse once https://reviews.llvm.org/D23882 is accepted.
From:
https://reviews.llvm.org/file/data/e4yr2fu3vndsceyt6xv7/PHID-FILE-pgisidny2ro3tylncbpm/D23883.diff
Index: tools/lldb-mi/CMakeLists.txt
===================================================================
--- tools/lldb-mi/CMakeLists.txt
+++ tools/lldb-mi/CMakeLists.txt
@@ -65,7 +65,6 @@
MIDriverBase.cpp
MIDriverMain.cpp
MIDriverMgr.cpp
- MIUtilParse.cpp
MIUtilDateTimeStd.cpp
MIUtilDebug.cpp
MIUtilFileStd.cpp
Index: tools/lldb-mi/MIUtilParse.h
===================================================================
--- tools/lldb-mi/MIUtilParse.h
+++ /dev/null
@@ -1,93 +0,0 @@
-//===-- MIUtilParse.h ------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#pragma once
-
-// Third party headers:
-#include "../lib/Support/regex_impl.h"
-
-// In-house headers:
-#include "MIUtilString.h"
-
-namespace MIUtilParse
-{
-
-//++ ============================================================================
-// Details: MI common code utility class. Used to parse the output
-// returned from lldb commands using regex.
-//--
-class CRegexParser
-{
- public:
- // Helper class for keeping track of regex matches.
- class Match
- {
- friend CRegexParser;
- public:
- /* ctor */ explicit Match(size_t nmatches)
- : m_matchStrs(nmatches), m_maxMatches(nmatches)
- {
- }
- size_t
- GetMatchCount() const
- {
- return m_matchStrs.size();
- }
- CMIUtilString
- GetMatchAtIndex(size_t i) const
- {
- if (m_matchStrs.size() > i)
- return m_matchStrs[i];
- return CMIUtilString();
- }
- private:
- CMIUtilString::VecString_t m_matchStrs;
- const size_t m_maxMatches;
- };
-
- // Methods:
- // Compile the regular expression.
- /* ctor */ explicit CRegexParser(const char *regexStr);
-
- // Free the memory used by the regular expression.
- /* dtor */ ~CRegexParser();
-
- // No copies
- CRegexParser(const CRegexParser&) = delete;
- void operator=(CRegexParser&) = delete;
-
- // Return the match at the index.
- int
- GetMatchCount(const Match& match) const
- {
- if (m_isValid)
- return match.GetMatchCount();
- return 0;
- }
-
- bool
- IsValid() const
- {
- return m_isValid;
- }
-
- // Match the input against the regular expression. Return an error
- // if the number of matches is less than minMatches. If the default
- // minMatches value of 0 is passed, an error will be returned if
- // the number of matches is less than the maxMatches value used to
- // initialize Match.
- bool
- Execute(const char *input, Match& match, size_t minMatches = 0);
-
- private:
- llvm_regex_t m_emma;
- const bool m_isValid;
-};
-
-}
Index: tools/lldb-mi/MIUtilParse.cpp
===================================================================
--- tools/lldb-mi/MIUtilParse.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-//===-- MIUtilParse.cpp ----------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// Third party headers:
-#include <memory>
-
-// In-house headers:
-#include "MIUtilParse.h"
-
-//++ ------------------------------------------------------------------------------------
-// Details: CRegexParser constructor.
-// Type: Method.
-// Args: regexStr - Pointer to the regular expression to compile.
-// Return: None.
-// Throws: None.
-//--
-MIUtilParse::CRegexParser::CRegexParser(const char *regexStr)
- : m_isValid(llvm_regcomp(&m_emma, regexStr, REG_EXTENDED) == 0)
-{
-}
-
-//++ ------------------------------------------------------------------------------------
-// Details: CRegexParser destructor.
-// Type: Method.
-// Args: None.
-// Return: None.
-// Throws: None.
-//--
-MIUtilParse::CRegexParser::~CRegexParser()
-{
- // Free up memory held within regex.
- if (m_isValid)
- llvm_regfree(&m_emma);
-}
-
-//++ ------------------------------------------------------------------------------------
-// Details: CRegexParser regex executer.
-// Match the input against the regular expression. Return an error
-// if the number of matches is less than minMatches. If the default
-// minMatches value of 0 is passed, an error will be returned if
-// the number of matches is less than the maxMatches value used to
-// initialize Match.
-// Type: Method.
-// Args: input (R) - Pointer to UTF8 text data to be parsed.
-// match (RW) - Reference to Match class.
-// minMatches (R) - Minimum number of regex matches expected.
-// Return: bool - True = minimum matches were met,
-// false = minimum matches were not met or regex failed.
-// Throws: None.
-//--
-bool
-MIUtilParse::CRegexParser::Execute(const char *input, Match& match, size_t minMatches)
-{
- if (!m_isValid)
- return false;
-
- std::unique_ptr<llvm_regmatch_t[]> matches(new llvm_regmatch_t[match.m_maxMatches]); // Array of matches
-
- if (llvm_regexec(&m_emma, input, match.m_maxMatches, matches.get(), 0) != 0)
- return false;
-
- size_t i;
- for (i = 0; i < match.m_maxMatches && matches[i].rm_so >= 0; i++)
- {
- const int n = matches[i].rm_eo - matches[i].rm_so;
- match.m_matchStrs[i].assign(input + matches[i].rm_so, n);
- }
- return i >= minMatches;
-}