173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValue.h --------------------------------------*- 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 1073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#ifndef liblldb_OptionValue_h_ 1173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#define liblldb_OptionValue_h_ 1273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C Includes 1473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C++ Includes 1573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Other libraries and framework includes 1673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Project includes 1773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/lldb-defines.h" 1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Core/ConstString.h" 1973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Core/Error.h" 2073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2173844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonnamespace lldb_private { 2273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 2473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // OptionValue 2573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 2673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton class OptionValue 2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton public: 2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton typedef enum { 3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeInvalid = 0, 3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeArch, 3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeArgs, 3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeArray, 3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeBoolean, 3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeDictionary, 3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeEnum, 3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeFileSpec, 3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeFileSpecList, 3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeFormat, 4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypePathMap, 4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeProperties, 4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeRegex, 4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeSInt64, 4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeString, 4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeUInt64, 4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eTypeUUID 4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } Type; 4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton enum { 5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eDumpOptionName = (1u << 0), 5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eDumpOptionType = (1u << 1), 5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eDumpOptionValue = (1u << 2), 5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eDumpOptionDescription = (1u << 3), 5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eDumpOptionRaw = (1u << 4), 5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eDumpGroupValue = (eDumpOptionName | eDumpOptionType | eDumpOptionValue), 5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton eDumpGroupHelp = (eDumpOptionName | eDumpOptionType | eDumpOptionDescription) 5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton }; 5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValue () : 6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set (false) 6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValue (const OptionValue &rhs) : 6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set (rhs.m_value_was_set) 6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual ~OptionValue () 7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 7373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //----------------------------------------------------------------- 7473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Subclasses should override these functions 7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //----------------------------------------------------------------- 7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual Type 7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetType () const = 0; 7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // If this value is always hidden, the avoid showing any info on this 8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // value, just show the info for the child values. 8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton ValueIsTransparent () const 8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return GetType() == eTypeProperties; 8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual const char * 8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetTypeAsCString () const 8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return GetBuiltinTypeAsCString(GetType()); 9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 9273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton static const char * 9573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetBuiltinTypeAsCString (Type t); 9673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual void 9873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) = 0; 9973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual Error 10173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetValueFromCString (const char *value, VarSetOperationType op = eVarSetOperationAssign); 10273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 10473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Clear () = 0; 10573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual lldb::OptionValueSP 10773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DeepCopy () const = 0; 10873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual size_t 11073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton AutoComplete (CommandInterpreter &interpreter, 11173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *s, 11273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int match_start_point, 11373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int max_return_elements, 11473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool &word_complete, 11573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton StringList &matches); 11673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 11773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //----------------------------------------------------------------- 11873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Subclasses can override these functions 11973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //----------------------------------------------------------------- 12073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual lldb::OptionValueSP 12173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetSubValue (const ExecutionContext *exe_ctx, 12273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *name, 12373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool will_modify, 12473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Error &error) const 12573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 12673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton error.SetErrorStringWithFormat("'%s' is not a value subvalue", name); 12773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return lldb::OptionValueSP(); 12873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 12973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual Error 13173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetSubValue (const ExecutionContext *exe_ctx, 13273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton VarSetOperationType op, 13373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *name, 13473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *value); 13573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 13773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton IsAggregateValue () const 13873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 13973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return false; 14073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 14173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 14273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual ConstString 14373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetName() const 14473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 14573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return ConstString(); 14673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 14773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 14873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 14973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DumpQualifiedName (Stream &strm) const; 15073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //----------------------------------------------------------------- 15173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Subclasses should NOT override these functions as they use the 15273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // above functions to implement functionality 15373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //----------------------------------------------------------------- 15473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton uint32_t 15573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetTypeAsMask () 15673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 15773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return 1u << GetType(); 15873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 15973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 16073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton static uint32_t 16173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton ConvertTypeToMask (OptionValue::Type type) 16273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 16373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return 1u << type; 16473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 16573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 16673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton static OptionValue::Type 16773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton ConvertTypeMaskToType (uint32_t type_mask) 16873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 16973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // If only one bit is set, then return an appropriate enumeration 17073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton switch (type_mask) 17173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 17273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeArch: return eTypeArch; 17373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeArgs: return eTypeArgs; 17473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeArray: return eTypeArray; 17573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeBoolean: return eTypeBoolean; 17673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeDictionary: return eTypeDictionary; 17773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeEnum: return eTypeEnum; 17873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeFileSpec: return eTypeFileSpec; 17973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeFileSpecList: return eTypeFileSpecList; 18073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeFormat: return eTypeFormat; 18173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypePathMap: return eTypePathMap; 18273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeProperties: return eTypeProperties; 18373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeRegex: return eTypeRegex; 18473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeSInt64: return eTypeSInt64; 18573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeString: return eTypeString; 18673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeUInt64: return eTypeUInt64; 18773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case 1u << eTypeUUID: return eTypeUUID; 18873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 18973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Else return invalid 19073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return eTypeInvalid; 19173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 19273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 19373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton static lldb::OptionValueSP 19473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton CreateValueFromCStringForTypeMask (const char *value_cstr, 19573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton uint32_t type_mask, 19673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Error &error); 19773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 19873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Get this value as a uint64_t value if it is encoded as a boolean, 19973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // uint64_t or int64_t. Other types will cause "fail_value" to be 20073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // returned 20173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton uint64_t 20273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetUInt64Value (uint64_t fail_value, bool *success_ptr); 20373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 20473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueArch * 20573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsArch (); 20673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 20773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueArch * 20873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsArch () const; 20973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 21073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueArray * 21173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsArray (); 21273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 21373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueArray * 21473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsArray () const; 21573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 21673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueArgs * 21773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsArgs (); 21873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 21973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueArgs * 22073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsArgs () const; 22173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 22273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueBoolean * 22373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsBoolean (); 22473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 22573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueBoolean * 22673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsBoolean () const; 22773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 22873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueDictionary * 22973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsDictionary (); 23073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 23173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueDictionary * 23273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsDictionary () const; 23373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 23473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueEnumeration * 23573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsEnumeration (); 23673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 23773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueEnumeration * 23873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsEnumeration () const; 23973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 24073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueFileSpec * 24173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsFileSpec (); 24273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 24373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueFileSpec * 24473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsFileSpec () const; 24573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 24673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueFileSpecList * 24773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsFileSpecList (); 24873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 24973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueFileSpecList * 25073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsFileSpecList () const; 25173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 25273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueFormat * 25373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsFormat (); 25473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 25573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueFormat * 25673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsFormat () const; 25773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 25873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValuePathMappings * 25973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsPathMappings (); 26073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 26173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValuePathMappings * 26273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsPathMappings () const; 26373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 26473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueProperties * 26573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsProperties (); 26673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 26773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueProperties * 26873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsProperties () const; 26973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 27073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueRegex * 27173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsRegex (); 27273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 27373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueRegex * 27473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsRegex () const; 27573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 27673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueSInt64 * 27773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsSInt64 (); 27873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 27973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueSInt64 * 28073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsSInt64 () const; 28173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 28273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueString * 28373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsString (); 28473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 28573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueString * 28673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsString () const; 28773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 28873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueUInt64 * 28973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsUInt64 (); 29073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 29173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueUInt64 * 29273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsUInt64 () const; 29373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 29473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueUUID * 29573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsUUID (); 29673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 29773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const OptionValueUUID * 29873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetAsUUID () const; 29973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 30073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 30173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetBooleanValue (bool fail_value = false) const; 30273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 30373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 30473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetBooleanValue (bool new_value); 30573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 30673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int64_t 30773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetEnumerationValue (int64_t fail_value = -1) const; 30873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 30973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 31073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetEnumerationValue (int64_t value); 31173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 31273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton FileSpec 31373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetFileSpecValue () const; 31473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 31573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 31673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetFileSpecValue (const FileSpec &file_spec); 31773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 31873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton FileSpecList 31973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetFileSpecListValue () const; 32073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 32173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton lldb::Format 32273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetFormatValue (lldb::Format fail_value = lldb::eFormatDefault) const; 32373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 32473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 32573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetFormatValue (lldb::Format new_value); 32673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 32773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const RegularExpression * 32873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetRegexValue () const; 32973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 33073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int64_t 33173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetSInt64Value (int64_t fail_value = 0) const; 33273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 33373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 33473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetSInt64Value (int64_t new_value); 33573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 33673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char * 33773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetStringValue (const char *fail_value = NULL) const; 33873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 33973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 34073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetStringValue (const char *new_value); 34173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 34273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton uint64_t 34373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetUInt64Value (uint64_t fail_value = 0) const; 34473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 34573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 34673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetUInt64Value (uint64_t new_value); 34773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 34873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton UUID 34973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetUUIDValue () const; 35073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 35173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 35273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetUUIDValue (const UUID &uuid); 35373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 35473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 35573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionWasSet () const 35673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 35773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return m_value_was_set; 35873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 35973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 36073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton void 36173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetOptionWasSet () 36273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 36373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set = true; 36473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 36573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 36673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton void 36773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetParent (const lldb::OptionValueSP &parent_sp) 36873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 36973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_parent_wp = parent_sp; 37073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 37173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton protected: 37273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton lldb::OptionValueWP m_parent_wp; 37373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool m_value_was_set; // This can be used to see if a value has been set 37473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // by a call to SetValueFromCString(). It is often 37573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // handy to know if an option value was set from 37673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // the command line or as a setting, versus if we 37773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // just have the default value that was already 37873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // populated in the option value. 37973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 38073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton }; 38173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 38273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} // namespace lldb_private 38373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 38473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#endif // liblldb_OptionValue_h_ 385