1//===-- OptionValueFileSpecList.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_OptionValueFileSpecList_h_
11#define liblldb_OptionValueFileSpecList_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Core/FileSpecList.h"
18#include "lldb/Interpreter/OptionValue.h"
19
20namespace lldb_private {
21
22class OptionValueFileSpecList : public OptionValue
23{
24public:
25    OptionValueFileSpecList () :
26        OptionValue(),
27        m_current_value ()
28    {
29    }
30
31    OptionValueFileSpecList (const FileSpecList &current_value) :
32        OptionValue(),
33        m_current_value (current_value)
34    {
35    }
36
37
38    virtual
39    ~OptionValueFileSpecList()
40    {
41    }
42
43    //---------------------------------------------------------------------
44    // Virtual subclass pure virtual overrides
45    //---------------------------------------------------------------------
46
47    virtual OptionValue::Type
48    GetType () const
49    {
50        return eTypeFileSpecList;
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.Clear();
64        m_value_was_set = false;
65        return true;
66    }
67
68    virtual lldb::OptionValueSP
69    DeepCopy () const;
70
71    virtual bool
72    IsAggregateValue () const
73    {
74        return true;
75    }
76
77    //---------------------------------------------------------------------
78    // Subclass specific functions
79    //---------------------------------------------------------------------
80
81    FileSpecList &
82    GetCurrentValue()
83    {
84        return m_current_value;
85    }
86
87    const FileSpecList &
88    GetCurrentValue() const
89    {
90        return m_current_value;
91    }
92
93    void
94    SetCurrentValue (const FileSpecList &value)
95    {
96        m_current_value = value;
97    }
98
99protected:
100    FileSpecList m_current_value;
101};
102
103} // namespace lldb_private
104
105#endif  // liblldb_OptionValueFileSpecList_h_
106