OptionValueChar.cpp revision 278332
1278332Semaste//===-- OptionValueChar.cpp -------------------------------------*- C++ -*-===// 2278332Semaste// 3278332Semaste// The LLVM Compiler Infrastructure 4278332Semaste// 5278332Semaste// This file is distributed under the University of Illinois Open Source 6278332Semaste// License. See LICENSE.TXT for details. 7278332Semaste// 8278332Semaste//===----------------------------------------------------------------------===// 9278332Semaste 10278332Semaste#include "lldb/Interpreter/OptionValueChar.h" 11278332Semaste 12278332Semaste// C Includes 13278332Semaste// C++ Includes 14278332Semaste// Other libraries and framework includes 15278332Semaste// Project includes 16278332Semaste#include "lldb/Core/Stream.h" 17278332Semaste#include "lldb/Core/StringList.h" 18278332Semaste#include "lldb/Interpreter/Args.h" 19278332Semaste#include "llvm/ADT/STLExtras.h" 20278332Semaste 21278332Semasteusing namespace lldb; 22278332Semasteusing namespace lldb_private; 23278332Semaste 24278332Semastevoid 25278332SemasteOptionValueChar::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 26278332Semaste{ 27278332Semaste if (dump_mask & eDumpOptionType) 28278332Semaste strm.Printf ("(%s)", GetTypeAsCString ()); 29278332Semaste 30278332Semaste if (dump_mask & eDumpOptionValue) 31278332Semaste { 32278332Semaste if (dump_mask & eDumpOptionType) 33278332Semaste strm.PutCString (" = "); 34278332Semaste if (m_current_value != '\0') 35278332Semaste strm.PutChar(m_current_value); 36278332Semaste else 37278332Semaste strm.PutCString("(null)"); 38278332Semaste } 39278332Semaste} 40278332Semaste 41278332SemasteError 42278332SemasteOptionValueChar::SetValueFromCString (const char *value_cstr, 43278332Semaste VarSetOperationType op) 44278332Semaste{ 45278332Semaste Error error; 46278332Semaste switch (op) 47278332Semaste { 48278332Semaste case eVarSetOperationClear: 49278332Semaste Clear(); 50278332Semaste break; 51278332Semaste 52278332Semaste case eVarSetOperationReplace: 53278332Semaste case eVarSetOperationAssign: 54278332Semaste { 55278332Semaste bool success = false; 56278332Semaste char char_value = Args::StringToChar(value_cstr, '\0', &success); 57278332Semaste if (success) 58278332Semaste { 59278332Semaste m_current_value = char_value; 60278332Semaste m_value_was_set = true; 61278332Semaste } 62278332Semaste else 63278332Semaste error.SetErrorStringWithFormat("'%s' cannot be longer than 1 character", value_cstr); 64278332Semaste } 65278332Semaste break; 66278332Semaste 67278332Semaste default: 68278332Semaste error = OptionValue::SetValueFromCString (value_cstr, op); 69278332Semaste break; 70278332Semaste } 71278332Semaste return error; 72278332Semaste} 73278332Semaste 74278332Semastelldb::OptionValueSP 75278332SemasteOptionValueChar::DeepCopy () const 76278332Semaste{ 77278332Semaste return OptionValueSP(new OptionValueChar(*this)); 78278332Semaste} 79278332Semaste 80278332Semaste 81