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 24namespace 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 & 50 GetName() const 51 { 52 return m_name; 53 } 54 55 const char * 56 GetDescription () const 57 { 58 return m_description.GetCString(); 59 } 60 61 const lldb::OptionValueSP & 62 GetValue() const 63 { 64 return m_value_sp; 65 } 66 67 void 68 SetOptionValue (const lldb::OptionValueSP &value_sp) 69 { 70 m_value_sp = value_sp; 71 } 72 73 74 bool 75 IsValid() const 76 { 77 return (bool)m_value_sp; 78 } 79 80 bool 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