1307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton//===-- OptionGroupString.h ------------------------------------*- C++ -*-===//
2307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton//
3307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton//                     The LLVM Compiler Infrastructure
4307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton//
5307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton// This file is distributed under the University of Illinois Open Source
6307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton// License. See LICENSE.TXT for details.
7307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton//
8307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton//===----------------------------------------------------------------------===//
9307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
10307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton#ifndef liblldb_OptionGroupString_h_
11307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton#define liblldb_OptionGroupString_h_
12307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
13307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton// C Includes
14307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton// C++ Includes
15307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton// Other libraries and framework includes
16307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton// Project includes
17307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton#include "lldb/Interpreter/Options.h"
18307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton#include "lldb/Interpreter/OptionValueString.h"
19307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
20307c7fdc58d19f734991a176db972cc61d9ada16Greg Claytonnamespace lldb_private {
21307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    //-------------------------------------------------------------------------
22307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    // OptionGroupString
23307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    //-------------------------------------------------------------------------
24307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
25307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    class OptionGroupString : public OptionGroup
26307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    {
27307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    public:
28307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
29307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        OptionGroupString (uint32_t usage_mask,
30307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                           bool required,
31307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                           const char *long_option,
326475c42148a8ea1ca86e5db465db7eca742d897dGreg Clayton                           int short_option,
33307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                           uint32_t completion_type,
34307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                           lldb::CommandArgumentType argument_type,
35307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                           const char *usage_text,
36307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                           const char *default_value);
37307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
38307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        virtual
39307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        ~OptionGroupString ();
40307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
41307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
42307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        virtual uint32_t
43307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        GetNumDefinitions ()
44307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        {
45307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton            return 1;
46307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        }
47307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
48307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        virtual const OptionDefinition*
49307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        GetDefinitions ()
50307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        {
51307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton            return &m_option_definition;
52307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        }
53307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
54307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        virtual Error
55307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        SetOptionValue (CommandInterpreter &interpreter,
56307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                        uint32_t option_idx,
57307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton                        const char *option_value);
58307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
59307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        virtual void
60307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        OptionParsingStarting (CommandInterpreter &interpreter);
61307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
62307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        OptionValueString &
63307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        GetOptionValue ()
64307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        {
65307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton            return m_value;
66307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        }
67307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
68307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        const OptionValueString &
69307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        GetOptionValue () const
70307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        {
71307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton            return m_value;
72307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        }
73307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
74307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    protected:
75307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        OptionValueString m_value;
76307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton        OptionDefinition m_option_definition;
77307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
78307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton    };
79307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
80307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton} // namespace lldb_private
81307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton
82307c7fdc58d19f734991a176db972cc61d9ada16Greg Clayton#endif  // liblldb_OptionGroupString_h_
83