1 //===-- RegularExpression.cpp -----------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "lldb/Utility/RegularExpression.h" 10 11 #include <string> 12 13 using namespace lldb_private; 14 15 RegularExpression::RegularExpression(llvm::StringRef str) { Compile(str); } 16 17 RegularExpression::RegularExpression(const RegularExpression &rhs) 18 : RegularExpression() { 19 Compile(rhs.GetText()); 20 } 21 22 bool RegularExpression::Compile(llvm::StringRef str) { 23 m_regex_text = str; 24 m_regex = llvm::Regex(str); 25 return IsValid(); 26 } 27 28 bool RegularExpression::Execute( 29 llvm::StringRef str, 30 llvm::SmallVectorImpl<llvm::StringRef> *matches) const { 31 return m_regex.match(str, matches); 32 } 33 34 bool RegularExpression::IsValid() const { 35 std::string discarded; 36 return m_regex.isValid(discarded); 37 } 38 39 llvm::StringRef RegularExpression::GetText() const { return m_regex_text; } 40 41 llvm::Error RegularExpression::GetError() const { 42 std::string error; 43 if (!m_regex.isValid(error)) 44 return llvm::make_error<llvm::StringError>(llvm::inconvertibleErrorCode(), 45 error); 46 return llvm::Error::success(); 47 } 48