1//===-- OptionValueRegex.cpp ------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "lldb/Interpreter/OptionValueRegex.h" 11 12// C Includes 13// C++ Includes 14// Other libraries and framework includes 15// Project includes 16#include "lldb/Core/Stream.h" 17 18using namespace lldb; 19using namespace lldb_private; 20 21void 22OptionValueRegex::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 23{ 24 if (dump_mask & eDumpOptionType) 25 strm.Printf ("(%s)", GetTypeAsCString ()); 26 if (dump_mask & eDumpOptionValue) 27 { 28 if (dump_mask & eDumpOptionType) 29 strm.PutCString (" = "); 30 if (m_regex.IsValid()) 31 { 32 const char *regex_text = m_regex.GetText(); 33 if (regex_text && regex_text[0]) 34 strm.Printf ("%s", regex_text); 35 } 36 else 37 { 38 39 } 40 } 41} 42 43Error 44OptionValueRegex::SetValueFromCString (const char *value_cstr, 45 VarSetOperationType op) 46{ 47 Error error; 48 switch (op) 49 { 50 case eVarSetOperationInvalid: 51 case eVarSetOperationInsertBefore: 52 case eVarSetOperationInsertAfter: 53 case eVarSetOperationRemove: 54 case eVarSetOperationAppend: 55 error = OptionValue::SetValueFromCString (value_cstr, op); 56 break; 57 58 case eVarSetOperationClear: 59 Clear(); 60 break; 61 62 case eVarSetOperationReplace: 63 case eVarSetOperationAssign: 64 if (m_regex.Compile (value_cstr, m_regex.GetCompileFlags())) 65 { 66 m_value_was_set = true; 67 } 68 else 69 { 70 char regex_error[1024]; 71 if (m_regex.GetErrorAsCString(regex_error, sizeof(regex_error))) 72 error.SetErrorString (regex_error); 73 else 74 error.SetErrorStringWithFormat ("regex error %u", m_regex.GetErrorCode()); 75 } 76 break; 77 } 78 return error; 79} 80 81 82lldb::OptionValueSP 83OptionValueRegex::DeepCopy () const 84{ 85 return OptionValueSP(new OptionValueRegex(m_regex.GetText(), m_regex.GetCompileFlags())); 86} 87