173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValueDictionary.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_OptionValueDictionary_h_ 1173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#define liblldb_OptionValueDictionary_h_ 1273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C Includes 1473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C++ Includes 1573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include <map> 1673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Other libraries and framework includes 1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Project includes 1973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValue.h" 2073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2173844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonnamespace lldb_private { 2273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2373844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonclass OptionValueDictionary : public OptionValue 2473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 2573844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonpublic: 2673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueDictionary (uint32_t type_mask = UINT32_MAX, bool raw_value_dump = true) : 2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValue(), 2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_type_mask (type_mask), 2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_values (), 3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_raw_value_dump (raw_value_dump) 3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual 3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton ~OptionValueDictionary() 3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Virtual subclass pure virtual overrides 4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual OptionValue::Type 4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetType () const 4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return eTypeDictionary; 4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual void 5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask); 5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual Error 5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetValueFromCString (const char *value, 5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton VarSetOperationType op = eVarSetOperationAssign); 5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Clear () 5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_values.clear(); 6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set = false; 6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return true; 6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual lldb::OptionValueSP 6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DeepCopy () const; 6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton IsAggregateValue () const 6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return true; 7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 7473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton IsHomogenous() const 7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return ConvertTypeMaskToType (m_type_mask) != eTypeInvalid; 7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Subclass specific functions 8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 8336da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton size_t 8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetNumValues() const 8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return m_values.size(); 8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton lldb::OptionValueSP 9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetValueForKey (const ConstString &key) const; 9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual lldb::OptionValueSP 9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetSubValue (const ExecutionContext *exe_ctx, 9473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *name, 9573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool will_modify, 9673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Error &error) const; 9773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual Error 9973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetSubValue (const ExecutionContext *exe_ctx, 10073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton VarSetOperationType op, 10173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *name, 10273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *value); 10373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 10573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // String value getters and setters 10673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 10773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char * 10873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetStringValueForKey (const ConstString &key); 10973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 11073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 11173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetStringValueForKey (const ConstString &key, 11273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *value, 11373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool can_replace = true); 11473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 11573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 11673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 11773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetValueForKey (const ConstString &key, 11873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const lldb::OptionValueSP &value_sp, 11973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool can_replace = true); 12073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 12173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 12273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DeleteValueForKey (const ConstString &key); 12373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 12473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton size_t 12573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetArgs (Args &args) const; 12673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 12773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Error 12873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetArgs (const Args &args, VarSetOperationType op); 12973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13073844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonprotected: 13173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton typedef std::map<ConstString, lldb::OptionValueSP> collection; 13273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton uint32_t m_type_mask; 13373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton collection m_values; 13473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool m_raw_value_dump; 13573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton}; 13673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} // namespace lldb_private 13873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#endif // liblldb_OptionValueDictionary_h_ 140