1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//===-- OptionGroupBoolean.h ------------------------------------*- C++ -*-===//
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//                     The LLVM Compiler Infrastructure
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// License. See LICENSE.TXT for details.
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//===----------------------------------------------------------------------===//
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef liblldb_OptionGroupBoolean_h_
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define liblldb_OptionGroupBoolean_h_
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// C Includes
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// C++ Includes
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Other libraries and framework includes
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Project includes
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "lldb/Interpreter/Options.h"
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "lldb/Interpreter/OptionValueBoolean.h"
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace lldb_private {
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    //-------------------------------------------------------------------------
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // OptionGroupBoolean
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    //-------------------------------------------------------------------------
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    class OptionGroupBoolean : public OptionGroup
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    {
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    public:
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)         // When 'no_argument_toggle_default' is true, then setting the option
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)         // value does NOT require an argument, it sets the boolean value to the
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)         // inverse of the default value
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        OptionGroupBoolean (uint32_t usage_mask,
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            bool required,
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            const char *long_option,
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            int short_option,
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            const char *usage_text,
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            bool default_value,
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            bool no_argument_toggle_default);
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        virtual
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        ~OptionGroupBoolean ();
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        virtual uint32_t
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        GetNumDefinitions ()
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        {
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            return 1;
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        }
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        virtual const OptionDefinition*
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        GetDefinitions ()
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        {
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            return &m_option_definition;
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        virtual Error
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        SetOptionValue (CommandInterpreter &interpreter,
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                        uint32_t option_idx,
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                        const char *option_value);
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        virtual void
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        OptionParsingStarting (CommandInterpreter &interpreter);
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        OptionValueBoolean &
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        GetOptionValue ()
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        {
66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            return m_value;
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        }
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        const OptionValueBoolean &
70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        GetOptionValue () const
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        {
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            return m_value;
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        }
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    protected:
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        OptionValueBoolean m_value;
775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        OptionDefinition m_option_definition;
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    };
805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace lldb_private
825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // liblldb_OptionGroupBoolean_h_
845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)