173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValueFileSpecList.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_OptionValueFileSpecList_h_
1173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#define liblldb_OptionValueFileSpecList_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/Core/FileSpecList.h"
1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValue.h"
1973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
2073844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonnamespace lldb_private {
2173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
2273844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonclass OptionValueFileSpecList : public OptionValue
2373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{
2473844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonpublic:
2573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    OptionValueFileSpecList () :
2673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        OptionValue(),
2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value ()
2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    OptionValueFileSpecList (const FileSpecList &current_value) :
3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        OptionValue(),
3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value (current_value)
3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual
3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    ~OptionValueFileSpecList()
4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    // Virtual subclass pure virtual overrides
4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual OptionValue::Type
4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    GetType () const
4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return eTypeFileSpecList;
5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual void
5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual Error
5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    SetValueFromCString (const char *value,
5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton                         VarSetOperationType op = eVarSetOperationAssign);
5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual bool
6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    Clear ()
6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value.Clear();
6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_value_was_set = false;
6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return true;
6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual lldb::OptionValueSP
6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    DeepCopy () const;
7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    virtual bool
7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    IsAggregateValue () const
7373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
7473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return true;
7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    // Subclass specific functions
7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    //---------------------------------------------------------------------
8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    FileSpecList &
8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    GetCurrentValue()
8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return m_current_value;
8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    const FileSpecList &
8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    GetCurrentValue() const
8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        return m_current_value;
9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
9273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    void
9473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    SetCurrentValue (const FileSpecList &value)
9573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    {
9673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton        m_current_value = value;
9773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    }
9873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
9973844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonprotected:
10073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton    FileSpecList m_current_value;
10173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton};
10273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
10373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} // namespace lldb_private
10473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton
10573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#endif  // liblldb_OptionValueFileSpecList_h_
106