173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- Property.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/Property.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/UserSettingsController.h" 1973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/Args.h" 2073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/CommandInterpreter.h" 2173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValues.h" 2273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2373844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonusing namespace lldb; 2473844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonusing namespace lldb_private; 2573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2673844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonProperty::Property (const PropertyDefinition &definition) : 2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_name (definition.name), 2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_description (definition.description), 2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp (), 3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_is_global (definition.global) 3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton switch (definition.type) 3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeInvalid: 3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeProperties: 3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeArch: 3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is not used 3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" as a string value that represents the default string value for the architecture/triple 4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueArch(definition.default_cstr_value)); 4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeArgs: 4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is always a OptionValue::Type 4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueArgs()); 4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeArray: 4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is always a OptionValue::Type 5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueArray(OptionValue::ConvertTypeToMask((OptionValue::Type)definition.default_uint_value))); 5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeBoolean: 5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is the default boolean value if 5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" is NULL, otherwise interpret 5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" as a string value that represents the default 5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // value. 5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (definition.default_cstr_value) 5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueBoolean(Args::StringToBoolean (definition.default_cstr_value, false, NULL))); 6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton else 6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueBoolean(definition.default_uint_value != 0)); 6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeDictionary: 6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is always a OptionValue::Type 6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueDictionary(OptionValue::ConvertTypeToMask((OptionValue::Type)definition.default_uint_value))); 6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeEnum: 7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is the default enumeration value if 7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" is NULL, otherwise interpret 7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" as a string value that represents the default 7373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // value. 7473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueEnumeration *enum_value = new OptionValueEnumeration(definition.enum_values, definition.default_uint_value); 7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (enum_value); 7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (definition.default_cstr_value) 7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (enum_value->SetValueFromCString(definition.default_cstr_value).Success()) 8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton enum_value->SetDefaultValue(enum_value->GetCurrentValue()); 8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Call Clear() since we don't want the value to appear as 8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // having been set since we called SetValueFromCString() above. 8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Clear will set the current value to the default and clear 8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // the boolean that says that the value has been set. 8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton enum_value->Clear(); 8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeFileSpec: 9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" represents if the "definition.default_cstr_value" should 9473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // be resolved or not 9573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueFileSpec(FileSpec(definition.default_cstr_value, definition.default_uint_value != 0))); 9673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 9773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeFileSpecList: 9973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is not used for a OptionValue::eTypeFileSpecList 10073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueFileSpecList()); 10173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 10273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeFormat: 10473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is the default format enumeration value if 10573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" is NULL, otherwise interpret 10673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" as a string value that represents the default 10773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // value. 10873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 10973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Format new_format = eFormatInvalid; 11073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (definition.default_cstr_value) 11173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Args::StringToFormat (definition.default_cstr_value, new_format, NULL); 11273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton else 11373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton new_format = (Format)definition.default_uint_value; 11473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueFormat(new_format)); 11573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 11673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 11773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 11873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypePathMap: 11973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" tells us if notifications should occur for 12073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // path mappings 12173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValuePathMappings(definition.default_uint_value != 0)); 12273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 12373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 12473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeRegex: 12573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is used to the regular expression flags 12673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" the default regular expression value 12773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // value. 12873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueRegex(definition.default_cstr_value, definition.default_uint_value)); 12973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 13073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeSInt64: 13273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is the default integer value if 13373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" is NULL, otherwise interpret 13473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" as a string value that represents the default 13573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // value. 13673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueSInt64(definition.default_cstr_value ? Args::StringToSInt64 (definition.default_cstr_value) : definition.default_uint_value)); 13773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 13873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeUInt64: 14073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is the default unsigned integer value if 14173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" is NULL, otherwise interpret 14273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" as a string value that represents the default 14373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // value. 14473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueUInt64(definition.default_cstr_value ? Args::StringToUInt64 (definition.default_cstr_value) : definition.default_uint_value)); 14573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 14673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 14773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeUUID: 14873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_uint_value" is not used for a OptionValue::eTypeUUID 14973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" can contain a default UUID value 15073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 15173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton UUID uuid; 15273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (definition.default_cstr_value) 153437b5bccea45a5981edbbbeb4e23424aec4ce774Greg Clayton uuid.SetFromCString (definition.default_cstr_value); 15473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp.reset (new OptionValueUUID(uuid)); 15573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 15673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 15773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 15873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case OptionValue::eTypeString: 1593b1afc6cc5689b749a48a1506f17ca593b1cda42Greg Clayton // "definition.default_uint_value" can contain the string option flags OR'ed together 16073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // "definition.default_cstr_value" can contain a default string value 1613b1afc6cc5689b749a48a1506f17ca593b1cda42Greg Clayton { 1623b1afc6cc5689b749a48a1506f17ca593b1cda42Greg Clayton OptionValueString *string_value = new OptionValueString(definition.default_cstr_value); 1633b1afc6cc5689b749a48a1506f17ca593b1cda42Greg Clayton if (definition.default_uint_value != 0) 1643b1afc6cc5689b749a48a1506f17ca593b1cda42Greg Clayton string_value->GetOptions().Reset(definition.default_uint_value); 1653b1afc6cc5689b749a48a1506f17ca593b1cda42Greg Clayton m_value_sp.reset (string_value); 1663b1afc6cc5689b749a48a1506f17ca593b1cda42Greg Clayton } 16773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 16873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 16973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 17073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 17173844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonProperty::Property (const ConstString &name, 17273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const ConstString &desc, 17373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool is_global, 17473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const lldb::OptionValueSP &value_sp) : 17573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_name (name), 17673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_description (desc), 17773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp (value_sp), 17873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_is_global (is_global) 17973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 18073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 18173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 18273844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonbool 18373844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonProperty::DumpQualifiedName(Stream &strm) const 18473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 18573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (m_name) 18673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 18773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (m_value_sp->DumpQualifiedName(strm)) 18873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.PutChar('.'); 18973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm << m_name; 19073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return true; 19173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 19273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return false; 19373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 19473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 19573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 19673844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonvoid 19773844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonProperty::Dump (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) const 19873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 19973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (m_value_sp) 20073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 20173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const bool dump_desc = dump_mask & OptionValue::eDumpOptionDescription; 20273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const bool transparent = m_value_sp->ValueIsTransparent (); 20373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_desc || !transparent) 20473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 20573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if ((dump_mask & OptionValue::eDumpOptionName) && m_name) 20673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 20773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DumpQualifiedName(strm); 20873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_mask & ~OptionValue::eDumpOptionName) 20973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.PutChar(' '); 21073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 21173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 21273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_desc) 21373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 21473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *desc = GetDescription(); 21573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (desc) 21673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.Printf ("-- %s", desc); 21773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 21873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (transparent && (dump_mask == (OptionValue::eDumpOptionName | OptionValue::eDumpOptionDescription))) 21973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.EOL(); 22073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 22173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_sp->DumpValue(exe_ctx, strm, dump_mask); 22273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 22373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 22473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 22573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 22673844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonvoid 22773844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonProperty::DumpDescription (CommandInterpreter &interpreter, 22873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Stream &strm, 22973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton uint32_t output_width, 23073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool display_qualified_name) const 23173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 23273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (m_value_sp) 23373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 23473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *desc = GetDescription(); 23573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 23673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (desc) 23773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 23873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton StreamString qualified_name; 23973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueProperties *sub_properties = m_value_sp->GetAsProperties(); 24073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (sub_properties) 24173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 24273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.EOL(); 24373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 24473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (m_value_sp->DumpQualifiedName(qualified_name)) 24573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.Printf("'%s' variables:\n\n", qualified_name.GetString().c_str()); 24673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton sub_properties->DumpAllDescriptions(interpreter, strm); 24773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 24873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton else 24973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 25073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (desc) 25173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 25273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (display_qualified_name) 25373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 25473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton StreamString qualified_name; 25573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DumpQualifiedName(qualified_name); 25673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton interpreter.OutputFormattedHelpText (strm, 25773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton qualified_name.GetString().c_str(), 25873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton "--", 25973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton desc, 26073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton output_width); 26173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 26273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton else 26373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 26473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton interpreter.OutputFormattedHelpText (strm, 26573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_name.GetCString(), 26673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton "--", 26773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton desc, 26873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton output_width); 26973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 27073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 27173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 27273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 27373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 27473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 27573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 276