1254721Semaste//===-- OptionValueRegex.cpp ------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#include "lldb/Interpreter/OptionValueRegex.h" 11254721Semaste 12254721Semaste// C Includes 13254721Semaste// C++ Includes 14254721Semaste// Other libraries and framework includes 15254721Semaste// Project includes 16254721Semaste#include "lldb/Core/Stream.h" 17254721Semaste 18254721Semasteusing namespace lldb; 19254721Semasteusing namespace lldb_private; 20254721Semaste 21254721Semastevoid 22254721SemasteOptionValueRegex::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 23254721Semaste{ 24254721Semaste if (dump_mask & eDumpOptionType) 25254721Semaste strm.Printf ("(%s)", GetTypeAsCString ()); 26254721Semaste if (dump_mask & eDumpOptionValue) 27254721Semaste { 28254721Semaste if (dump_mask & eDumpOptionType) 29254721Semaste strm.PutCString (" = "); 30254721Semaste if (m_regex.IsValid()) 31254721Semaste { 32254721Semaste const char *regex_text = m_regex.GetText(); 33254721Semaste if (regex_text && regex_text[0]) 34254721Semaste strm.Printf ("%s", regex_text); 35254721Semaste } 36254721Semaste else 37254721Semaste { 38254721Semaste 39254721Semaste } 40254721Semaste } 41254721Semaste} 42254721Semaste 43254721SemasteError 44254721SemasteOptionValueRegex::SetValueFromCString (const char *value_cstr, 45254721Semaste VarSetOperationType op) 46254721Semaste{ 47254721Semaste Error error; 48254721Semaste switch (op) 49254721Semaste { 50254721Semaste case eVarSetOperationInvalid: 51254721Semaste case eVarSetOperationInsertBefore: 52254721Semaste case eVarSetOperationInsertAfter: 53254721Semaste case eVarSetOperationRemove: 54254721Semaste case eVarSetOperationAppend: 55254721Semaste error = OptionValue::SetValueFromCString (value_cstr, op); 56254721Semaste break; 57254721Semaste 58254721Semaste case eVarSetOperationClear: 59254721Semaste Clear(); 60254721Semaste break; 61254721Semaste 62254721Semaste case eVarSetOperationReplace: 63254721Semaste case eVarSetOperationAssign: 64254721Semaste if (m_regex.Compile (value_cstr, m_regex.GetCompileFlags())) 65254721Semaste { 66254721Semaste m_value_was_set = true; 67254721Semaste } 68254721Semaste else 69254721Semaste { 70254721Semaste char regex_error[1024]; 71254721Semaste if (m_regex.GetErrorAsCString(regex_error, sizeof(regex_error))) 72254721Semaste error.SetErrorString (regex_error); 73254721Semaste else 74254721Semaste error.SetErrorStringWithFormat ("regex error %u", m_regex.GetErrorCode()); 75254721Semaste } 76254721Semaste break; 77254721Semaste } 78254721Semaste return error; 79254721Semaste} 80254721Semaste 81254721Semaste 82254721Semastelldb::OptionValueSP 83254721SemasteOptionValueRegex::DeepCopy () const 84254721Semaste{ 85254721Semaste return OptionValueSP(new OptionValueRegex(m_regex.GetText(), m_regex.GetCompileFlags())); 86254721Semaste} 87