1e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//===-- OptionGroupUInt64.h ------------------------------------*- C++ -*-===//
2e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//
3e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//                     The LLVM Compiler Infrastructure
4e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//
5e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// This file is distributed under the University of Illinois Open Source
6e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// License. See LICENSE.TXT for details.
7e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//
8e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//===----------------------------------------------------------------------===//
9e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
10e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton#ifndef liblldb_OptionGroupUInt64_h_
11e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton#define liblldb_OptionGroupUInt64_h_
12e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
13e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// C Includes
14e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// C++ Includes
15e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// Other libraries and framework includes
16e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// Project includes
17e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton#include "lldb/Interpreter/Options.h"
1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValueUInt64.h"
19e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
20e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytonnamespace lldb_private {
21e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    //-------------------------------------------------------------------------
22e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    // OptionGroupUInt64
23e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    //-------------------------------------------------------------------------
24e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
25e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    class OptionGroupUInt64 : public OptionGroup
26e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    {
27e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    public:
28e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
29e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        OptionGroupUInt64 (uint32_t usage_mask,
30e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                           bool required,
31e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                           const char *long_option,
326475c42148a8ea1ca86e5db465db7eca742d897dGreg Clayton                           int short_option,
33e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                           uint32_t completion_type,
34e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                           lldb::CommandArgumentType argument_type,
35e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                           const char *usage_text,
36e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                           uint64_t default_value);
37e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
38e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        virtual
39e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        ~OptionGroupUInt64 ();
40e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
41e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
42e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        virtual uint32_t
43e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        GetNumDefinitions ()
44e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        {
45e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton            return 1;
46e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        }
47e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
48e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        virtual const OptionDefinition*
49e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        GetDefinitions ()
50e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        {
51e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton            return &m_option_definition;
52e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        }
53e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
54e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        virtual Error
55e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        SetOptionValue (CommandInterpreter &interpreter,
56e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                        uint32_t option_idx,
57e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton                        const char *option_value);
58e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
59e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        virtual void
60e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        OptionParsingStarting (CommandInterpreter &interpreter);
61e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
62e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        OptionValueUInt64 &
63e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        GetOptionValue ()
64e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        {
65e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton            return m_value;
66e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        }
67e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
68e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        const OptionValueUInt64 &
69e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        GetOptionValue () const
70e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        {
71e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton            return m_value;
72e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        }
73e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
74e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    protected:
75e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        OptionValueUInt64 m_value;
76e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        OptionDefinition m_option_definition;
77e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
78e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    };
79e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
80e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton} // namespace lldb_private
81e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
82e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton#endif  // liblldb_OptionGroupUInt64_h_
83