OptionValueChar.cpp revision 321369
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/Interpreter/Args.h" 17#include "lldb/Utility/Stream.h" 18#include "lldb/Utility/StringList.h" 19#include "llvm/ADT/STLExtras.h" 20 21using namespace lldb; 22using namespace lldb_private; 23 24void OptionValueChar::DumpValue(const ExecutionContext *exe_ctx, Stream &strm, 25 uint32_t dump_mask) { 26 if (dump_mask & eDumpOptionType) 27 strm.Printf("(%s)", GetTypeAsCString()); 28 29 if (dump_mask & eDumpOptionValue) { 30 if (dump_mask & eDumpOptionType) 31 strm.PutCString(" = "); 32 if (m_current_value != '\0') 33 strm.PutChar(m_current_value); 34 else 35 strm.PutCString("(null)"); 36 } 37} 38 39Status OptionValueChar::SetValueFromString(llvm::StringRef value, 40 VarSetOperationType op) { 41 Status error; 42 switch (op) { 43 case eVarSetOperationClear: 44 Clear(); 45 break; 46 47 case eVarSetOperationReplace: 48 case eVarSetOperationAssign: { 49 bool success = false; 50 char char_value = Args::StringToChar(value, '\0', &success); 51 if (success) { 52 m_current_value = char_value; 53 m_value_was_set = true; 54 } else 55 error.SetErrorStringWithFormat("'%s' cannot be longer than 1 character", 56 value.str().c_str()); 57 } break; 58 59 default: 60 error = OptionValue::SetValueFromString(value, op); 61 break; 62 } 63 return error; 64} 65 66lldb::OptionValueSP OptionValueChar::DeepCopy() const { 67 return OptionValueSP(new OptionValueChar(*this)); 68} 69