173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValueFormat.h -------------------------------------*- C++ -*-===//
273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//
373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//                     The LLVM Compiler Infrastructure
473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//
573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// This file is distributed under the University of Illinois Open Source
673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// License. See LICENSE.TXT for details.
773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//
873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===----------------------------------------------------------------------===//
973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
1073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#ifndef liblldb_OptionValueFormat_h_
1173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#define liblldb_OptionValueFormat_h_
1273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
1373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C Includes
1473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C++ Includes
1573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Other libraries and framework includes
1673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Project includes
1773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValue.h"
1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
1973844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonnamespace lldb_private {
2073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
2173844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonclass OptionValueFormat : public OptionValue
2273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{
2373844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonpublic:
2473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    OptionValueFormat (lldb::Format value) :
2573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        OptionValue(),
2673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value (value),
2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_default_value (value)
2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    OptionValueFormat (lldb::Format current_value,
3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton                       lldb::Format default_value) :
3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        OptionValue(),
3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value (current_value),
3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_default_value (default_value)
3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual
4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    ~OptionValueFormat()
4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    // Virtual subclass pure virtual overrides
4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual OptionValue::Type
4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    GetType () const
5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return eTypeFormat;
5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual void
5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual Error
5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    SetValueFromCString (const char *value,
5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton                         VarSetOperationType op = eVarSetOperationAssign);
6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual bool
6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    Clear ()
6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value = m_default_value;
6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_value_was_set = false;
6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return true;
6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual lldb::OptionValueSP
7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    DeepCopy () const;
7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
7373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    // Subclass specific functions
7473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    lldb::Format
7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    GetCurrentValue() const
7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return m_current_value;
8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    lldb::Format
8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    GetDefaultValue() const
8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return m_default_value;
8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    void
8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    SetCurrentValue (lldb::Format value)
9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value = value;
9273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
9473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    void
9573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    SetDefaultValue (lldb::Format value)
9673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
9773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_default_value = value;
9873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
9973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
10073844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonprotected:
10173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    lldb::Format m_current_value;
10273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    lldb::Format m_default_value;
10373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton};
10473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
10573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} // namespace lldb_private
10673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
10773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#endif  // liblldb_OptionValueFormat_h_
108