1//===-- OptionGroupFile.h ---------------------------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#ifndef liblldb_OptionGroupFile_h_ 10#define liblldb_OptionGroupFile_h_ 11 12#include "lldb/Interpreter/OptionValueFileSpec.h" 13#include "lldb/Interpreter/OptionValueFileSpecList.h" 14#include "lldb/Interpreter/Options.h" 15 16namespace lldb_private { 17 18// OptionGroupFile 19 20class OptionGroupFile : public OptionGroup { 21public: 22 OptionGroupFile(uint32_t usage_mask, bool required, const char *long_option, 23 int short_option, uint32_t completion_type, 24 lldb::CommandArgumentType argument_type, 25 const char *usage_text); 26 27 ~OptionGroupFile() override; 28 29 llvm::ArrayRef<OptionDefinition> GetDefinitions() override { 30 return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1); 31 } 32 33 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, 34 ExecutionContext *execution_context) override; 35 Status SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; 36 37 void OptionParsingStarting(ExecutionContext *execution_context) override; 38 39 OptionValueFileSpec &GetOptionValue() { return m_file; } 40 41 const OptionValueFileSpec &GetOptionValue() const { return m_file; } 42 43protected: 44 OptionValueFileSpec m_file; 45 OptionDefinition m_option_definition; 46}; 47 48// OptionGroupFileList 49 50class OptionGroupFileList : public OptionGroup { 51public: 52 OptionGroupFileList(uint32_t usage_mask, bool required, 53 const char *long_option, int short_option, 54 uint32_t completion_type, 55 lldb::CommandArgumentType argument_type, 56 const char *usage_text); 57 58 ~OptionGroupFileList() override; 59 60 llvm::ArrayRef<OptionDefinition> GetDefinitions() override { 61 return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1); 62 } 63 64 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, 65 ExecutionContext *execution_context) override; 66 Status SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; 67 68 void OptionParsingStarting(ExecutionContext *execution_context) override; 69 70 OptionValueFileSpecList &GetOptionValue() { return m_file_list; } 71 72 const OptionValueFileSpecList &GetOptionValue() const { return m_file_list; } 73 74protected: 75 OptionValueFileSpecList m_file_list; 76 OptionDefinition m_option_definition; 77}; 78 79} // namespace lldb_private 80 81#endif // liblldb_OptionGroupFile_h_ 82