Home | History | Annotate | Download | only in Interpreter
      1 //===-- OptionValueUInt64.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_OptionValueUInt64_h_
     11 #define liblldb_OptionValueUInt64_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 OptionValueUInt64 : public OptionValue
     22 {
     23 public:
     24     OptionValueUInt64 () :
     25         OptionValue(),
     26         m_current_value (0),
     27         m_default_value (0)
     28     {
     29     }
     30 
     31     OptionValueUInt64 (uint64_t value) :
     32         OptionValue(),
     33         m_current_value (value),
     34         m_default_value (value)
     35     {
     36     }
     37 
     38     OptionValueUInt64 (uint64_t current_value,
     39                        uint64_t default_value) :
     40         OptionValue(),
     41         m_current_value (current_value),
     42         m_default_value (default_value)
     43     {
     44     }
     45 
     46     virtual
     47     ~OptionValueUInt64()
     48     {
     49     }
     50 
     51     //---------------------------------------------------------------------
     52     // Decode a uint64_t from "value_cstr" return a OptionValueUInt64 object
     53     // inside of a lldb::OptionValueSP object if all goes well. If the
     54     // string isn't a uint64_t value or any other error occurs, return an
     55     // empty lldb::OptionValueSP and fill error in with the correct stuff.
     56     //---------------------------------------------------------------------
     57     static lldb::OptionValueSP
     58     Create (const char *value_cstr, Error &error);
     59     //---------------------------------------------------------------------
     60     // Virtual subclass pure virtual overrides
     61     //---------------------------------------------------------------------
     62 
     63     virtual OptionValue::Type
     64     GetType () const
     65     {
     66         return eTypeUInt64;
     67     }
     68 
     69     virtual void
     70     DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
     71 
     72     virtual Error
     73     SetValueFromCString (const char *value,
     74                          VarSetOperationType op = eVarSetOperationAssign);
     75 
     76     virtual bool
     77     Clear ()
     78     {
     79         m_current_value = m_default_value;
     80         m_value_was_set = false;
     81         return true;
     82     }
     83 
     84     virtual lldb::OptionValueSP
     85     DeepCopy () const;
     86 
     87     //---------------------------------------------------------------------
     88     // Subclass specific functions
     89     //---------------------------------------------------------------------
     90 
     91     const uint64_t &
     92     operator = (uint64_t value)
     93     {
     94         m_current_value = value;
     95         return m_current_value;
     96     }
     97 
     98     operator uint64_t () const
     99     {
    100         return m_current_value;
    101     }
    102 
    103     uint64_t
    104     GetCurrentValue() const
    105     {
    106         return m_current_value;
    107     }
    108 
    109     uint64_t
    110     GetDefaultValue() const
    111     {
    112         return m_default_value;
    113     }
    114 
    115     void
    116     SetCurrentValue (uint64_t value)
    117     {
    118         m_current_value = value;
    119     }
    120 
    121     void
    122     SetDefaultValue (uint64_t value)
    123     {
    124         m_default_value = value;
    125     }
    126 
    127 protected:
    128     uint64_t m_current_value;
    129     uint64_t m_default_value;
    130 };
    131 
    132 } // namespace lldb_private
    133 
    134 #endif  // liblldb_OptionValueUInt64_h_
    135