Home | History | Annotate | Download | only in Interpreter
      1 //===-- OptionValueBoolean.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_OptionValueBoolean_h_
     11 #define liblldb_OptionValueBoolean_h_
     12 
     13 // C Includes
     14 // C++ Includes
     15 // Other libraries and framework includes
     16 // Project includes
     17 #include "lldb/Interpreter/OptionValue.h"
     18 
     19 namespace lldb_private {
     20 
     21 class OptionValueBoolean : public OptionValue
     22 {
     23 public:
     24     OptionValueBoolean (bool value) :
     25         OptionValue(),
     26         m_current_value (value),
     27         m_default_value (value)
     28     {
     29     }
     30     OptionValueBoolean (bool current_value,
     31                         bool default_value) :
     32         OptionValue(),
     33         m_current_value (current_value),
     34         m_default_value (default_value)
     35     {
     36     }
     37 
     38     virtual
     39     ~OptionValueBoolean()
     40     {
     41     }
     42 
     43     //---------------------------------------------------------------------
     44     // Virtual subclass pure virtual overrides
     45     //---------------------------------------------------------------------
     46 
     47     virtual OptionValue::Type
     48     GetType () const
     49     {
     50         return eTypeBoolean;
     51     }
     52 
     53     virtual void
     54     DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
     55 
     56     virtual Error
     57     SetValueFromCString (const char *value,
     58                          VarSetOperationType op = eVarSetOperationAssign);
     59 
     60     virtual bool
     61     Clear ()
     62     {
     63         m_current_value = m_default_value;
     64         m_value_was_set = false;
     65         return true;
     66     }
     67 
     68     virtual size_t
     69     AutoComplete (CommandInterpreter &interpreter,
     70                   const char *s,
     71                   int match_start_point,
     72                   int max_return_elements,
     73                   bool &word_complete,
     74                   StringList &matches);
     75 
     76     //---------------------------------------------------------------------
     77     // Subclass specific functions
     78     //---------------------------------------------------------------------
     79 
     80     //------------------------------------------------------------------
     81     /// Convert to bool operator.
     82     ///
     83     /// This allows code to check a OptionValueBoolean in conditions.
     84     ///
     85     /// @code
     86     /// OptionValueBoolean bool_value(...);
     87     /// if (bool_value)
     88     /// { ...
     89     /// @endcode
     90     ///
     91     /// @return
     92     ///     /b True this object contains a valid namespace decl, \b
     93     ///     false otherwise.
     94     //------------------------------------------------------------------
     95     operator bool() const
     96     {
     97         return m_current_value;
     98     }
     99 
    100     const bool &
    101     operator = (bool b)
    102     {
    103         m_current_value = b;
    104         return m_current_value;
    105     }
    106 
    107     bool
    108     GetCurrentValue() const
    109     {
    110         return m_current_value;
    111     }
    112 
    113     bool
    114     GetDefaultValue() const
    115     {
    116         return m_default_value;
    117     }
    118 
    119     void
    120     SetCurrentValue (bool value)
    121     {
    122         m_current_value = value;
    123     }
    124 
    125     void
    126     SetDefaultValue (bool value)
    127     {
    128         m_default_value = value;
    129     }
    130 
    131     virtual lldb::OptionValueSP
    132     DeepCopy () const;
    133 
    134 protected:
    135     bool m_current_value;
    136     bool m_default_value;
    137 };
    138 
    139 } // namespace lldb_private
    140 
    141 #endif  // liblldb_OptionValueBoolean_h_
    142