Home | History | Annotate | Download | only in Interpreter
      1 //===-- OptionValueSInt64.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_OptionValueSInt64_h_
     11 #define liblldb_OptionValueSInt64_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 OptionValueSInt64 : public OptionValue
     22 {
     23 public:
     24     OptionValueSInt64 () :
     25         OptionValue(),
     26         m_current_value (0),
     27         m_default_value (0),
     28         m_min_value (INT64_MIN),
     29         m_max_value (INT64_MAX)
     30     {
     31     }
     32 
     33     OptionValueSInt64 (int64_t value) :
     34         OptionValue(),
     35         m_current_value (value),
     36         m_default_value (value),
     37         m_min_value (INT64_MIN),
     38         m_max_value (INT64_MAX)
     39     {
     40     }
     41 
     42     OptionValueSInt64 (int64_t current_value,
     43                        int64_t default_value) :
     44         OptionValue(),
     45         m_current_value (current_value),
     46         m_default_value (default_value),
     47         m_min_value (INT64_MIN),
     48         m_max_value (INT64_MAX)
     49     {
     50     }
     51 
     52     OptionValueSInt64 (const OptionValueSInt64 &rhs) :
     53         OptionValue(rhs),
     54         m_current_value (rhs.m_current_value),
     55         m_default_value (rhs.m_default_value),
     56         m_min_value (rhs.m_min_value),
     57         m_max_value (rhs.m_max_value)
     58     {
     59     }
     60 
     61     virtual
     62     ~OptionValueSInt64()
     63     {
     64     }
     65 
     66     //---------------------------------------------------------------------
     67     // Virtual subclass pure virtual overrides
     68     //---------------------------------------------------------------------
     69 
     70     virtual OptionValue::Type
     71     GetType () const
     72     {
     73         return eTypeSInt64;
     74     }
     75 
     76     virtual void
     77     DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
     78 
     79     virtual Error
     80     SetValueFromCString (const char *value,
     81                          VarSetOperationType op = eVarSetOperationAssign);
     82 
     83     virtual bool
     84     Clear ()
     85     {
     86         m_current_value = m_default_value;
     87         m_value_was_set = false;
     88         return true;
     89     }
     90 
     91     virtual lldb::OptionValueSP
     92     DeepCopy () const;
     93 
     94     //---------------------------------------------------------------------
     95     // Subclass specific functions
     96     //---------------------------------------------------------------------
     97 
     98     const int64_t &
     99     operator = (int64_t value)
    100     {
    101         m_current_value = value;
    102         return m_current_value;
    103     }
    104 
    105     int64_t
    106     GetCurrentValue() const
    107     {
    108         return m_current_value;
    109     }
    110 
    111     int64_t
    112     GetDefaultValue() const
    113     {
    114         return m_default_value;
    115     }
    116 
    117     bool
    118     SetCurrentValue (int64_t value)
    119     {
    120         if (value >= m_min_value && value <= m_max_value)
    121         {
    122             m_current_value = value;
    123             return true;
    124         }
    125         return false;
    126     }
    127 
    128     bool
    129     SetDefaultValue (int64_t value)
    130     {
    131         if (value >= m_min_value && value <= m_max_value)
    132         {
    133             m_default_value = value;
    134             return true;
    135         }
    136         return false;
    137     }
    138 
    139     void
    140     SetMinimumValue (int64_t v)
    141     {
    142         m_min_value = v;
    143     }
    144 
    145     int64_t
    146     GetMinimumValue () const
    147     {
    148         return m_min_value;
    149     }
    150 
    151     void
    152     SetMaximumValue (int64_t v)
    153     {
    154         m_max_value = v;
    155     }
    156 
    157     int64_t
    158     GetMaximumValue () const
    159     {
    160         return m_max_value;
    161     }
    162 
    163 protected:
    164     int64_t m_current_value;
    165     int64_t m_default_value;
    166     int64_t m_min_value;
    167     int64_t m_max_value;
    168 };
    169 
    170 } // namespace lldb_private
    171 
    172 #endif  // liblldb_OptionValueSInt64_h_
    173