OptionGroupFile.h revision 73844aa19a7360b662e2be710fc3c969d6c86606
1//===-- OptionGroupFile.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_OptionGroupFile_h_
11#define liblldb_OptionGroupFile_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Interpreter/Options.h"
18#include "lldb/Interpreter/OptionValueFileSpec.h"
19#include "lldb/Interpreter/OptionValueFileSpecList.h"
20
21namespace lldb_private {
22
23//-------------------------------------------------------------------------
24// OptionGroupFile
25//-------------------------------------------------------------------------
26
27class OptionGroupFile : public OptionGroup
28{
29public:
30
31    OptionGroupFile (uint32_t usage_mask,
32                     bool required,
33                     const char *long_option,
34                     char short_option,
35                     uint32_t completion_type,
36                     lldb::CommandArgumentType argument_type,
37                     const char *usage_text);
38
39    virtual
40    ~OptionGroupFile ();
41
42
43    virtual uint32_t
44    GetNumDefinitions ()
45    {
46        return 1;
47    }
48
49    virtual const OptionDefinition*
50    GetDefinitions ()
51    {
52        return &m_option_definition;
53    }
54
55    virtual Error
56    SetOptionValue (CommandInterpreter &interpreter,
57                    uint32_t option_idx,
58                    const char *option_value);
59
60    virtual void
61    OptionParsingStarting (CommandInterpreter &interpreter);
62
63    OptionValueFileSpec &
64    GetOptionValue ()
65    {
66        return m_file;
67    }
68
69    const OptionValueFileSpec &
70    GetOptionValue () const
71    {
72        return m_file;
73    }
74
75protected:
76    OptionValueFileSpec m_file;
77    OptionDefinition m_option_definition;
78
79};
80
81//-------------------------------------------------------------------------
82// OptionGroupFileList
83//-------------------------------------------------------------------------
84
85class OptionGroupFileList : public OptionGroup
86{
87public:
88
89    OptionGroupFileList (uint32_t usage_mask,
90                         bool required,
91                         const char *long_option,
92                         char short_option,
93                         uint32_t completion_type,
94                         lldb::CommandArgumentType argument_type,
95                         const char *usage_text);
96
97    virtual
98    ~OptionGroupFileList ();
99
100
101    virtual uint32_t
102    GetNumDefinitions ()
103    {
104        return 1;
105    }
106
107    virtual const OptionDefinition*
108    GetDefinitions ()
109    {
110        return &m_option_definition;
111    }
112
113    virtual Error
114    SetOptionValue (CommandInterpreter &interpreter,
115                    uint32_t option_idx,
116                    const char *option_value);
117
118    virtual void
119    OptionParsingStarting (CommandInterpreter &interpreter);
120
121
122    OptionValueFileSpecList &
123    GetOptionValue ()
124    {
125        return m_file_list;
126    }
127
128    const OptionValueFileSpecList &
129    GetOptionValue () const
130    {
131        return m_file_list;
132    }
133
134protected:
135    OptionValueFileSpecList m_file_list;
136    OptionDefinition m_option_definition;
137
138};
139
140} // namespace lldb_private
141
142#endif  // liblldb_OptionGroupFile_h_
143