Home | History | Annotate | Download | only in Interpreter
      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 &
     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