1 //===-- OptionValueFormat.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/OptionValueLanguage.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/DataFormatters/FormatManager.h" 18 #include "lldb/Interpreter/Args.h" 19 #include "lldb/Target/Language.h" 20 21 using namespace lldb; 22 using namespace lldb_private; 23 24 void 25 OptionValueLanguage::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 26 { 27 if (dump_mask & eDumpOptionType) 28 strm.Printf ("(%s)", GetTypeAsCString ()); 29 if (dump_mask & eDumpOptionValue) 30 { 31 if (dump_mask & eDumpOptionType) 32 strm.PutCString (" = "); 33 strm.PutCString (Language::GetNameForLanguageType(m_current_value)); 34 } 35 } 36 37 Error 38 OptionValueLanguage::SetValueFromString (llvm::StringRef value, VarSetOperationType op) 39 { 40 Error error; 41 switch (op) 42 { 43 case eVarSetOperationClear: 44 Clear(); 45 break; 46 47 case eVarSetOperationReplace: 48 case eVarSetOperationAssign: 49 { 50 ConstString lang_name(value.trim()); 51 LanguageType new_type = Language::GetLanguageTypeFromString(lang_name.GetCString()); 52 if (new_type) 53 { 54 m_value_was_set = true; 55 m_current_value = new_type; 56 } 57 else 58 { 59 StreamString error_strm; 60 error_strm.Printf("invalid language type '%s', ", value.str().c_str()); 61 error_strm.Printf("valid values are:\n"); 62 Language::PrintAllLanguages(error_strm, " ", "\n"); 63 error.SetErrorString(error_strm.GetData()); 64 } 65 } 66 break; 67 68 case eVarSetOperationInsertBefore: 69 case eVarSetOperationInsertAfter: 70 case eVarSetOperationRemove: 71 case eVarSetOperationAppend: 72 case eVarSetOperationInvalid: 73 error = OptionValue::SetValueFromString(value, op); 74 break; 75 } 76 return error; 77 } 78 79 80 lldb::OptionValueSP 81 OptionValueLanguage::DeepCopy () const 82 { 83 return OptionValueSP(new OptionValueLanguage(*this)); 84 } 85 86