1309568Sglebius//===-- OptionValuePathMappings.h -------------------------------*- C++ -*-===//
2309568Sglebius//
3309568Sglebius//                     The LLVM Compiler Infrastructure
4309568Sglebius//
5309568Sglebius// This file is distributed under the University of Illinois Open Source
6309568Sglebius// License. See LICENSE.TXT for details.
7309568Sglebius//
8309568Sglebius//===----------------------------------------------------------------------===//
9309568Sglebius
10309568Sglebius#ifndef liblldb_OptionValuePathMappings_h_
11309568Sglebius#define liblldb_OptionValuePathMappings_h_
12309568Sglebius
13309568Sglebius// C Includes
14309568Sglebius// C++ Includes
15309568Sglebius// Other libraries and framework includes
16309568Sglebius// Project includes
17309568Sglebius#include "lldb/Target/PathMappingList.h"
18309568Sglebius#include "lldb/Interpreter/OptionValue.h"
19309568Sglebius
20309568Sglebiusnamespace lldb_private {
21309568Sglebius
22309568Sglebiusclass OptionValuePathMappings : public OptionValue
23309568Sglebius{
24309568Sglebiuspublic:
25309568Sglebius    OptionValuePathMappings (bool notify_changes) :
26309568Sglebius        OptionValue(),
27309568Sglebius        m_path_mappings (),
28309568Sglebius        m_notify_changes (notify_changes)
29309568Sglebius    {
30309568Sglebius    }
31309568Sglebius
32309568Sglebius    virtual
33309568Sglebius    ~OptionValuePathMappings()
34309568Sglebius    {
35309568Sglebius    }
36309568Sglebius
37309568Sglebius    //---------------------------------------------------------------------
38309568Sglebius    // Virtual subclass pure virtual overrides
39309568Sglebius    //---------------------------------------------------------------------
40309568Sglebius
41309568Sglebius    virtual OptionValue::Type
42309568Sglebius    GetType () const
43309568Sglebius    {
44309568Sglebius        return eTypePathMap;
45309568Sglebius    }
46309568Sglebius
47309568Sglebius    virtual void
48309568Sglebius    DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
49
50    virtual Error
51    SetValueFromCString (const char *value,
52                         VarSetOperationType op = eVarSetOperationAssign);
53
54    virtual bool
55    Clear ()
56    {
57        m_path_mappings.Clear(m_notify_changes);
58        m_value_was_set = false;
59        return true;
60    }
61
62    virtual lldb::OptionValueSP
63    DeepCopy () const;
64
65    virtual bool
66    IsAggregateValue () const
67    {
68        return true;
69    }
70
71    //---------------------------------------------------------------------
72    // Subclass specific functions
73    //---------------------------------------------------------------------
74
75    PathMappingList &
76    GetCurrentValue()
77    {
78        return m_path_mappings;
79    }
80
81    const PathMappingList &
82    GetCurrentValue() const
83    {
84        return m_path_mappings;
85    }
86
87protected:
88    PathMappingList m_path_mappings;
89    bool m_notify_changes;
90};
91
92} // namespace lldb_private
93
94#endif  // liblldb_OptionValuePathMappings_h_
95