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 #include "lldb/Interpreter/OptionValueFileSpec.h" 14 #include "lldb/Interpreter/OptionValueFileSpecList.h" 15 #include "lldb/Interpreter/Options.h" 16 17 namespace lldb_private { 18 19 //------------------------------------------------------------------------- 20 // OptionGroupFile 21 //------------------------------------------------------------------------- 22 23 class OptionGroupFile : public OptionGroup { 24 public: 25 OptionGroupFile(uint32_t usage_mask, bool required, const char *long_option, 26 int short_option, uint32_t completion_type, 27 lldb::CommandArgumentType argument_type, 28 const char *usage_text); 29 30 ~OptionGroupFile() override; 31 GetDefinitions()32 llvm::ArrayRef<OptionDefinition> GetDefinitions() override { 33 return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1); 34 } 35 36 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, 37 ExecutionContext *execution_context) override; 38 Status SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; 39 40 void OptionParsingStarting(ExecutionContext *execution_context) override; 41 GetOptionValue()42 OptionValueFileSpec &GetOptionValue() { return m_file; } 43 GetOptionValue()44 const OptionValueFileSpec &GetOptionValue() const { return m_file; } 45 46 protected: 47 OptionValueFileSpec m_file; 48 OptionDefinition m_option_definition; 49 }; 50 51 //------------------------------------------------------------------------- 52 // OptionGroupFileList 53 //------------------------------------------------------------------------- 54 55 class OptionGroupFileList : public OptionGroup { 56 public: 57 OptionGroupFileList(uint32_t usage_mask, bool required, 58 const char *long_option, int short_option, 59 uint32_t completion_type, 60 lldb::CommandArgumentType argument_type, 61 const char *usage_text); 62 63 ~OptionGroupFileList() override; 64 GetDefinitions()65 llvm::ArrayRef<OptionDefinition> GetDefinitions() override { 66 return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1); 67 } 68 69 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, 70 ExecutionContext *execution_context) override; 71 Status SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; 72 73 void OptionParsingStarting(ExecutionContext *execution_context) override; 74 GetOptionValue()75 OptionValueFileSpecList &GetOptionValue() { return m_file_list; } 76 GetOptionValue()77 const OptionValueFileSpecList &GetOptionValue() const { return m_file_list; } 78 79 protected: 80 OptionValueFileSpecList m_file_list; 81 OptionDefinition m_option_definition; 82 }; 83 84 } // namespace lldb_private 85 86 #endif // liblldb_OptionGroupFile_h_ 87