Home | History | Annotate | Download | only in Core
      1 //====-- UserSettingsController.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_UserSettingsController_h_
     11 #define liblldb_UserSettingsController_h_
     12 
     13 // C Includes
     14 // C++ Includes
     15 
     16 #include <string>
     17 #include <vector>
     18 
     19 // Other libraries and framework includes
     20 // Project includes
     21 
     22 #include "lldb/lldb-private.h"
     23 #include "lldb/Core/ConstString.h"
     24 #include "lldb/Core/StringList.h"
     25 #include "lldb/Core/Stream.h"
     26 #include "lldb/Core/StreamString.h"
     27 #include "lldb/Host/Mutex.h"
     28 #include "lldb/Interpreter/OptionValue.h"
     29 
     30 namespace lldb_private {
     31 
     32 class Properties
     33 {
     34 public:
     35     Properties () :
     36         m_collection_sp ()
     37     {
     38     }
     39 
     40     Properties (const lldb::OptionValuePropertiesSP &collection_sp) :
     41         m_collection_sp (collection_sp)
     42     {
     43     }
     44 
     45     virtual
     46     ~Properties()
     47     {
     48     }
     49 
     50     virtual lldb::OptionValuePropertiesSP
     51     GetValueProperties () const
     52     {
     53         // This function is virtual in case subclasses want to lazily
     54         // implement creating the properties.
     55         return m_collection_sp;
     56     }
     57 
     58     virtual lldb::OptionValueSP
     59     GetPropertyValue (const ExecutionContext *exe_ctx,
     60                       const char *property_path,
     61                       bool will_modify,
     62                       Error &error) const;
     63 
     64     virtual Error
     65     SetPropertyValue (const ExecutionContext *exe_ctx,
     66                       VarSetOperationType op,
     67                       const char *property_path,
     68                       const char *value);
     69 
     70     virtual Error
     71     DumpPropertyValue (const ExecutionContext *exe_ctx,
     72                        Stream &strm,
     73                        const char *property_path,
     74                        uint32_t dump_mask);
     75 
     76     virtual void
     77     DumpAllPropertyValues (const ExecutionContext *exe_ctx,
     78                            Stream &strm,
     79                            uint32_t dump_mask);
     80 
     81     virtual void
     82     DumpAllDescriptions (CommandInterpreter &interpreter,
     83                          Stream &strm) const;
     84 
     85     size_t
     86     Apropos (const char *keyword,
     87              std::vector<const Property *> &matching_properties) const;
     88 
     89     lldb::OptionValuePropertiesSP
     90     GetSubProperty (const ExecutionContext *exe_ctx,
     91                     const ConstString &name);
     92 protected:
     93     lldb::OptionValuePropertiesSP m_collection_sp;
     94 };
     95 
     96 } // namespace lldb_private
     97 
     98 #endif // liblldb_UserSettingsController_h_
     99