157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//===-- OptionGroupOutputFile.h -------------------------------*- C++ -*-===//
257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//
357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//                     The LLVM Compiler Infrastructure
457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//
557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton// This file is distributed under the University of Illinois Open Source
657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton// License. See LICENSE.TXT for details.
757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//
857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//===----------------------------------------------------------------------===//
957b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
1057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton#ifndef liblldb_OptionGroupOutputFile_h_
1157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton#define liblldb_OptionGroupOutputFile_h_
1257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
1357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton// C Includes
1457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton// C++ Includes
1557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton// Other libraries and framework includes
1657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton// Project includes
1757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton#include "lldb/Interpreter/Options.h"
1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValueBoolean.h"
1973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValueFileSpec.h"
2057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
2157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytonnamespace lldb_private {
2257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//-------------------------------------------------------------------------
2357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton// OptionGroupOutputFile
2457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton//-------------------------------------------------------------------------
2557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
2657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytonclass OptionGroupOutputFile : public OptionGroup
2757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton{
2857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytonpublic:
2957b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
3057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    OptionGroupOutputFile ();
3157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
3257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    virtual
3357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    ~OptionGroupOutputFile ();
3457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
3557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
3657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    virtual uint32_t
3757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    GetNumDefinitions ();
3857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
3957b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    virtual const OptionDefinition*
4057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    GetDefinitions ();
4157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
4257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    virtual Error
4357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    SetOptionValue (CommandInterpreter &interpreter,
4457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton                    uint32_t option_idx,
4557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton                    const char *option_value);
4657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
4757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    virtual void
4857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    OptionParsingStarting (CommandInterpreter &interpreter);
4957b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
5057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    const OptionValueFileSpec &
5157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    GetFile ()
5257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    {
5357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton        return m_file;
5457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    }
5557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
5657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    const OptionValueBoolean &
5757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    GetAppend ()
5857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    {
5957b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton        return m_append;
6057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    }
61902b5beee960a8861867f06588c12ac6eb55eb9dGreg Clayton
62902b5beee960a8861867f06588c12ac6eb55eb9dGreg Clayton    bool
63902b5beee960a8861867f06588c12ac6eb55eb9dGreg Clayton    AnyOptionWasSet () const
64902b5beee960a8861867f06588c12ac6eb55eb9dGreg Clayton    {
65902b5beee960a8861867f06588c12ac6eb55eb9dGreg Clayton        return m_file.OptionWasSet() || m_append.OptionWasSet();
66902b5beee960a8861867f06588c12ac6eb55eb9dGreg Clayton    }
6757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
6857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytonprotected:
6957b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    OptionValueFileSpec m_file;
7057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton    OptionValueBoolean m_append;
7157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
7257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton};
7357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
7457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton} // namespace lldb_private
7557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton
7657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton#endif  // liblldb_OptionGroupOutputFile_h_
77