15ffd83dbSDimitry Andric //===-- OptionGroupFile.cpp -----------------------------------------------===//
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 #include "lldb/Interpreter/OptionGroupFile.h"
100b57cec5SDimitry Andric 
110b57cec5SDimitry Andric #include "lldb/Host/OptionParser.h"
120b57cec5SDimitry Andric 
130b57cec5SDimitry Andric using namespace lldb;
140b57cec5SDimitry Andric using namespace lldb_private;
150b57cec5SDimitry Andric 
OptionGroupFile(uint32_t usage_mask,bool required,const char * long_option,int short_option,uint32_t completion_type,lldb::CommandArgumentType argument_type,const char * usage_text)160b57cec5SDimitry Andric OptionGroupFile::OptionGroupFile(uint32_t usage_mask, bool required,
170b57cec5SDimitry Andric                                  const char *long_option, int short_option,
180b57cec5SDimitry Andric                                  uint32_t completion_type,
190b57cec5SDimitry Andric                                  lldb::CommandArgumentType argument_type,
20*5f7ddb14SDimitry Andric                                  const char *usage_text) {
210b57cec5SDimitry Andric   m_option_definition.usage_mask = usage_mask;
220b57cec5SDimitry Andric   m_option_definition.required = required;
230b57cec5SDimitry Andric   m_option_definition.long_option = long_option;
240b57cec5SDimitry Andric   m_option_definition.short_option = short_option;
250b57cec5SDimitry Andric   m_option_definition.validator = nullptr;
260b57cec5SDimitry Andric   m_option_definition.option_has_arg = OptionParser::eRequiredArgument;
270b57cec5SDimitry Andric   m_option_definition.enum_values = {};
280b57cec5SDimitry Andric   m_option_definition.completion_type = completion_type;
290b57cec5SDimitry Andric   m_option_definition.argument_type = argument_type;
300b57cec5SDimitry Andric   m_option_definition.usage_text = usage_text;
310b57cec5SDimitry Andric }
320b57cec5SDimitry Andric 
SetOptionValue(uint32_t option_idx,llvm::StringRef option_arg,ExecutionContext * execution_context)330b57cec5SDimitry Andric Status OptionGroupFile::SetOptionValue(uint32_t option_idx,
340b57cec5SDimitry Andric                                        llvm::StringRef option_arg,
350b57cec5SDimitry Andric                                        ExecutionContext *execution_context) {
360b57cec5SDimitry Andric   Status error(m_file.SetValueFromString(option_arg));
370b57cec5SDimitry Andric   return error;
380b57cec5SDimitry Andric }
390b57cec5SDimitry Andric 
OptionParsingStarting(ExecutionContext * execution_context)400b57cec5SDimitry Andric void OptionGroupFile::OptionParsingStarting(
410b57cec5SDimitry Andric     ExecutionContext *execution_context) {
420b57cec5SDimitry Andric   m_file.Clear();
430b57cec5SDimitry Andric }
440b57cec5SDimitry Andric 
OptionGroupFileList(uint32_t usage_mask,bool required,const char * long_option,int short_option,uint32_t completion_type,lldb::CommandArgumentType argument_type,const char * usage_text)450b57cec5SDimitry Andric OptionGroupFileList::OptionGroupFileList(
460b57cec5SDimitry Andric     uint32_t usage_mask, bool required, const char *long_option,
470b57cec5SDimitry Andric     int short_option, uint32_t completion_type,
480b57cec5SDimitry Andric     lldb::CommandArgumentType argument_type, const char *usage_text)
490b57cec5SDimitry Andric     : m_file_list() {
500b57cec5SDimitry Andric   m_option_definition.usage_mask = usage_mask;
510b57cec5SDimitry Andric   m_option_definition.required = required;
520b57cec5SDimitry Andric   m_option_definition.long_option = long_option;
530b57cec5SDimitry Andric   m_option_definition.short_option = short_option;
540b57cec5SDimitry Andric   m_option_definition.validator = nullptr;
550b57cec5SDimitry Andric   m_option_definition.option_has_arg = OptionParser::eRequiredArgument;
560b57cec5SDimitry Andric   m_option_definition.enum_values = {};
570b57cec5SDimitry Andric   m_option_definition.completion_type = completion_type;
580b57cec5SDimitry Andric   m_option_definition.argument_type = argument_type;
590b57cec5SDimitry Andric   m_option_definition.usage_text = usage_text;
600b57cec5SDimitry Andric }
610b57cec5SDimitry Andric 
62*5f7ddb14SDimitry Andric OptionGroupFileList::~OptionGroupFileList() = default;
630b57cec5SDimitry Andric 
640b57cec5SDimitry Andric Status
SetOptionValue(uint32_t option_idx,llvm::StringRef option_value,ExecutionContext * execution_context)650b57cec5SDimitry Andric OptionGroupFileList::SetOptionValue(uint32_t option_idx,
660b57cec5SDimitry Andric                                     llvm::StringRef option_value,
670b57cec5SDimitry Andric                                     ExecutionContext *execution_context) {
680b57cec5SDimitry Andric   Status error(m_file_list.SetValueFromString(option_value));
690b57cec5SDimitry Andric   return error;
700b57cec5SDimitry Andric }
710b57cec5SDimitry Andric 
OptionParsingStarting(ExecutionContext * execution_context)720b57cec5SDimitry Andric void OptionGroupFileList::OptionParsingStarting(
730b57cec5SDimitry Andric     ExecutionContext *execution_context) {
740b57cec5SDimitry Andric   m_file_list.Clear();
750b57cec5SDimitry Andric }
76