1 //===-- OptionGroupFile.h ---------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_OptionGroupFile_h_ 11 #define liblldb_OptionGroupFile_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/Interpreter/OptionValueFileSpec.h" 18 #include "lldb/Interpreter/OptionValueFileSpecList.h" 19 #include "lldb/Interpreter/Options.h" 20 21 namespace lldb_private { 22 23 //------------------------------------------------------------------------- 24 // OptionGroupFile 25 //------------------------------------------------------------------------- 26 27 class OptionGroupFile : public OptionGroup { 28 public: 29 OptionGroupFile(uint32_t usage_mask, bool required, const char *long_option, 30 int short_option, uint32_t completion_type, 31 lldb::CommandArgumentType argument_type, 32 const char *usage_text); 33 34 ~OptionGroupFile() override; 35 36 llvm::ArrayRef<OptionDefinition> GetDefinitions() override { 37 return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1); 38 } 39 40 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, 41 ExecutionContext *execution_context) override; 42 Status SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; 43 44 void OptionParsingStarting(ExecutionContext *execution_context) override; 45 46 OptionValueFileSpec &GetOptionValue() { return m_file; } 47 48 const OptionValueFileSpec &GetOptionValue() const { return m_file; } 49 50 protected: 51 OptionValueFileSpec m_file; 52 OptionDefinition m_option_definition; 53 }; 54 55 //------------------------------------------------------------------------- 56 // OptionGroupFileList 57 //------------------------------------------------------------------------- 58 59 class OptionGroupFileList : public OptionGroup { 60 public: 61 OptionGroupFileList(uint32_t usage_mask, bool required, 62 const char *long_option, int short_option, 63 uint32_t completion_type, 64 lldb::CommandArgumentType argument_type, 65 const char *usage_text); 66 67 ~OptionGroupFileList() override; 68 69 llvm::ArrayRef<OptionDefinition> GetDefinitions() override { 70 return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1); 71 } 72 73 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, 74 ExecutionContext *execution_context) override; 75 Status SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; 76 77 void OptionParsingStarting(ExecutionContext *execution_context) override; 78 79 OptionValueFileSpecList &GetOptionValue() { return m_file_list; } 80 81 const OptionValueFileSpecList &GetOptionValue() const { return m_file_list; } 82 83 protected: 84 OptionValueFileSpecList m_file_list; 85 OptionDefinition m_option_definition; 86 }; 87 88 } // namespace lldb_private 89 90 #endif // liblldb_OptionGroupFile_h_ 91