1 //===-- Property.h ----------------------------------------------*- 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 #ifndef liblldb_Property_h_ 11 #define liblldb_Property_h_ 12 13 // C Includes 14 // C++ Includes 15 #include <string> 16 17 // Other libraries and framework includes 18 // Project includes 19 #include "lldb/lldb-defines.h" 20 #include "lldb/Core/ConstString.h" 21 #include "lldb/Core/Flags.h" 22 #include "lldb/Interpreter/OptionValue.h" 23 24 namespace lldb_private { 25 26 // A structure that can be used to create a global table for all properties. 27 // Property class instances can be constructed using one of these. 28 struct PropertyDefinition 29 { 30 const char *name; 31 OptionValue::Type type; 32 bool global; 33 uintptr_t default_uint_value; 34 const char *default_cstr_value; 35 OptionEnumValueElement *enum_values; 36 const char *description; 37 }; 38 39 class Property 40 { 41 public: 42 Property (const PropertyDefinition &definition); 43 44 Property (const ConstString &name, 45 const ConstString &desc, 46 bool is_global, 47 const lldb::OptionValueSP &value_sp); 48 49 const ConstString & GetName()50 GetName() const 51 { 52 return m_name; 53 } 54 55 const char * GetDescription()56 GetDescription () const 57 { 58 return m_description.GetCString(); 59 } 60 61 const lldb::OptionValueSP & GetValue()62 GetValue() const 63 { 64 return m_value_sp; 65 } 66 67 void SetOptionValue(const lldb::OptionValueSP & value_sp)68 SetOptionValue (const lldb::OptionValueSP &value_sp) 69 { 70 m_value_sp = value_sp; 71 } 72 73 74 bool IsValid()75 IsValid() const 76 { 77 return (bool)m_value_sp; 78 } 79 80 bool IsGlobal()81 IsGlobal () const 82 { 83 return m_is_global; 84 } 85 86 void 87 Dump (const ExecutionContext *exe_ctx, 88 Stream &strm, 89 uint32_t dump_mask) const; 90 91 bool 92 DumpQualifiedName(Stream &strm) const; 93 94 void 95 DumpDescription (CommandInterpreter &interpreter, 96 Stream &strm, 97 uint32_t output_width, 98 bool display_qualified_name) const; 99 100 protected: 101 ConstString m_name; 102 ConstString m_description; 103 lldb::OptionValueSP m_value_sp; 104 bool m_is_global; 105 }; 106 107 } // namespace lldb_private 108 109 #endif // liblldb_Property_h_ 110