OptionValueChar.cpp revision 278332
1//===-- OptionValueChar.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/OptionValueChar.h" 11 12// C Includes 13// C++ Includes 14// Other libraries and framework includes 15// Project includes 16#include "lldb/Core/Stream.h" 17#include "lldb/Core/StringList.h" 18#include "lldb/Interpreter/Args.h" 19#include "llvm/ADT/STLExtras.h" 20 21using namespace lldb; 22using namespace lldb_private; 23 24void 25OptionValueChar::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 26{ 27 if (dump_mask & eDumpOptionType) 28 strm.Printf ("(%s)", GetTypeAsCString ()); 29 30 if (dump_mask & eDumpOptionValue) 31 { 32 if (dump_mask & eDumpOptionType) 33 strm.PutCString (" = "); 34 if (m_current_value != '\0') 35 strm.PutChar(m_current_value); 36 else 37 strm.PutCString("(null)"); 38 } 39} 40 41Error 42OptionValueChar::SetValueFromCString (const char *value_cstr, 43 VarSetOperationType op) 44{ 45 Error error; 46 switch (op) 47 { 48 case eVarSetOperationClear: 49 Clear(); 50 break; 51 52 case eVarSetOperationReplace: 53 case eVarSetOperationAssign: 54 { 55 bool success = false; 56 char char_value = Args::StringToChar(value_cstr, '\0', &success); 57 if (success) 58 { 59 m_current_value = char_value; 60 m_value_was_set = true; 61 } 62 else 63 error.SetErrorStringWithFormat("'%s' cannot be longer than 1 character", value_cstr); 64 } 65 break; 66 67 default: 68 error = OptionValue::SetValueFromCString (value_cstr, op); 69 break; 70 } 71 return error; 72} 73 74lldb::OptionValueSP 75OptionValueChar::DeepCopy () const 76{ 77 return OptionValueSP(new OptionValueChar(*this)); 78} 79 80 81