10b57cec5SDimitry Andric //===-- OptionGroupFile.h ---------------------------------------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #ifndef LLDB_INTERPRETER_OPTIONGROUPFILE_H
100b57cec5SDimitry Andric #define LLDB_INTERPRETER_OPTIONGROUPFILE_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "lldb/Interpreter/OptionValueFileSpec.h"
130b57cec5SDimitry Andric #include "lldb/Interpreter/OptionValueFileSpecList.h"
140b57cec5SDimitry Andric #include "lldb/Interpreter/Options.h"
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric namespace lldb_private {
170b57cec5SDimitry Andric 
180b57cec5SDimitry Andric // OptionGroupFile
190b57cec5SDimitry Andric 
200b57cec5SDimitry Andric class OptionGroupFile : public OptionGroup {
210b57cec5SDimitry Andric public:
220b57cec5SDimitry Andric   OptionGroupFile(uint32_t usage_mask, bool required, const char *long_option,
230b57cec5SDimitry Andric                   int short_option, uint32_t completion_type,
240b57cec5SDimitry Andric                   lldb::CommandArgumentType argument_type,
250b57cec5SDimitry Andric                   const char *usage_text);
260b57cec5SDimitry Andric 
270b57cec5SDimitry Andric   ~OptionGroupFile() override = default;
280b57cec5SDimitry Andric 
GetDefinitions()290b57cec5SDimitry Andric   llvm::ArrayRef<OptionDefinition> GetDefinitions() override {
300b57cec5SDimitry Andric     return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1);
310b57cec5SDimitry Andric   }
320b57cec5SDimitry Andric 
330b57cec5SDimitry Andric   Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
340b57cec5SDimitry Andric                         ExecutionContext *execution_context) override;
350b57cec5SDimitry Andric 
360b57cec5SDimitry Andric   void OptionParsingStarting(ExecutionContext *execution_context) override;
370b57cec5SDimitry Andric 
GetOptionValue()380b57cec5SDimitry Andric   OptionValueFileSpec &GetOptionValue() { return m_file; }
390b57cec5SDimitry Andric 
GetOptionValue()400b57cec5SDimitry Andric   const OptionValueFileSpec &GetOptionValue() const { return m_file; }
410b57cec5SDimitry Andric 
420b57cec5SDimitry Andric protected:
430b57cec5SDimitry Andric   OptionValueFileSpec m_file;
440b57cec5SDimitry Andric   OptionDefinition m_option_definition;
450b57cec5SDimitry Andric };
460b57cec5SDimitry Andric 
470b57cec5SDimitry Andric // OptionGroupFileList
480b57cec5SDimitry Andric 
490b57cec5SDimitry Andric class OptionGroupFileList : public OptionGroup {
500b57cec5SDimitry Andric public:
510b57cec5SDimitry Andric   OptionGroupFileList(uint32_t usage_mask, bool required,
520b57cec5SDimitry Andric                       const char *long_option, int short_option,
530b57cec5SDimitry Andric                       uint32_t completion_type,
540b57cec5SDimitry Andric                       lldb::CommandArgumentType argument_type,
550b57cec5SDimitry Andric                       const char *usage_text);
560b57cec5SDimitry Andric 
570b57cec5SDimitry Andric   ~OptionGroupFileList() override;
580b57cec5SDimitry Andric 
GetDefinitions()590b57cec5SDimitry Andric   llvm::ArrayRef<OptionDefinition> GetDefinitions() override {
600b57cec5SDimitry Andric     return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1);
610b57cec5SDimitry Andric   }
620b57cec5SDimitry Andric 
630b57cec5SDimitry Andric   Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
640b57cec5SDimitry Andric                         ExecutionContext *execution_context) override;
650b57cec5SDimitry Andric 
660b57cec5SDimitry Andric   void OptionParsingStarting(ExecutionContext *execution_context) override;
670b57cec5SDimitry Andric 
GetOptionValue()680b57cec5SDimitry Andric   OptionValueFileSpecList &GetOptionValue() { return m_file_list; }
690b57cec5SDimitry Andric 
GetOptionValue()700b57cec5SDimitry Andric   const OptionValueFileSpecList &GetOptionValue() const { return m_file_list; }
710b57cec5SDimitry Andric 
720b57cec5SDimitry Andric protected:
730b57cec5SDimitry Andric   OptionValueFileSpecList m_file_list;
740b57cec5SDimitry Andric   OptionDefinition m_option_definition;
750b57cec5SDimitry Andric };
760b57cec5SDimitry Andric 
770b57cec5SDimitry Andric } // namespace lldb_private
780b57cec5SDimitry Andric 
790b57cec5SDimitry Andric #endif // LLDB_INTERPRETER_OPTIONGROUPFILE_H
800b57cec5SDimitry Andric