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