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,77 +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,74 +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 - -// 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 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; -}