173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValueFormat.cpp -----------------------------------*- C++ -*-===// 273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// The LLVM Compiler Infrastructure 473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// This file is distributed under the University of Illinois Open Source 673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// License. See LICENSE.TXT for details. 773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===----------------------------------------------------------------------===// 973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea#include "lldb/lldb-python.h" 11d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea 1273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValueFormat.h" 1373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C Includes 1573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C++ Includes 1673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Other libraries and framework includes 1773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Project includes 1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Core/Stream.h" 19f509c5ec066599a3399fced39ea36996184939e8Enrico Granata#include "lldb/DataFormatters/FormatManager.h" 2073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/Args.h" 2173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2273844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonusing namespace lldb; 2373844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonusing namespace lldb_private; 2473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2573844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonvoid 2673844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonOptionValueFormat::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_mask & eDumpOptionType) 2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.Printf ("(%s)", GetTypeAsCString ()); 3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_mask & eDumpOptionValue) 3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_mask & eDumpOptionType) 3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.PutCString (" = "); 3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.PutCString (FormatManager::GetFormatAsCString (m_current_value)); 3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3873844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonError 3973844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonOptionValueFormat::SetValueFromCString (const char *value_cstr, VarSetOperationType op) 4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Error error; 4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton switch (op) 4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationClear: 4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Clear(); 4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationReplace: 4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationAssign: 5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Format new_format; 5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton error = Args::StringToFormat (value_cstr, new_format, NULL); 5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (error.Success()) 5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set = true; 5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_current_value = new_format; 5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationInsertBefore: 6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationInsertAfter: 6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationRemove: 6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationAppend: 6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationInvalid: 6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton error = OptionValue::SetValueFromCString (value_cstr, op); 6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return error; 7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7373844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonlldb::OptionValueSP 7473844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonOptionValueFormat::DeepCopy () const 7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return OptionValueSP(new OptionValueFormat(*this)); 7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 79