|  | //===-- OptionGroupOutputFile.cpp -------------------------------*- C++ -*-===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #include "lldb/Interpreter/OptionGroupOutputFile.h" | 
|  |  | 
|  | // C Includes | 
|  | // C++ Includes | 
|  | // Other libraries and framework includes | 
|  | // Project includes | 
|  | #include "lldb/Utility/Utils.h" | 
|  |  | 
|  | using namespace lldb; | 
|  | using namespace lldb_private; | 
|  |  | 
|  | OptionGroupOutputFile::OptionGroupOutputFile() : | 
|  | m_file (), | 
|  | m_append (false, false) | 
|  | { | 
|  | } | 
|  |  | 
|  | OptionGroupOutputFile::~OptionGroupOutputFile () | 
|  | { | 
|  | } | 
|  |  | 
|  | static const uint32_t SHORT_OPTION_APND = 0x61706e64;   // 'apnd' | 
|  |  | 
|  | static OptionDefinition | 
|  | g_option_table[] = | 
|  | { | 
|  | { LLDB_OPT_SET_1 , false, "outfile", 'o', OptionParser::eRequiredArgument, nullptr, nullptr, 0, eArgTypeFilename , "Specify a path for capturing command output."}, | 
|  | { LLDB_OPT_SET_1 , false, "append-outfile" , SHORT_OPTION_APND, | 
|  | OptionParser::eNoArgument, nullptr, nullptr, 0, eArgTypeNone , | 
|  | "Append to the file specified with '--outfile <path>'."}, | 
|  | }; | 
|  |  | 
|  | uint32_t | 
|  | OptionGroupOutputFile::GetNumDefinitions () | 
|  | { | 
|  | return llvm::array_lengthof(g_option_table); | 
|  | } | 
|  |  | 
|  | const OptionDefinition * | 
|  | OptionGroupOutputFile::GetDefinitions () | 
|  | { | 
|  | return g_option_table; | 
|  | } | 
|  |  | 
|  | Error | 
|  | OptionGroupOutputFile::SetOptionValue (CommandInterpreter &interpreter, | 
|  | uint32_t option_idx, | 
|  | const char *option_arg) | 
|  | { | 
|  | Error error; | 
|  | const int short_option = g_option_table[option_idx].short_option; | 
|  |  | 
|  | switch (short_option) | 
|  | { | 
|  | case 'o': | 
|  | error = m_file.SetValueFromString (option_arg); | 
|  | break; | 
|  |  | 
|  | case SHORT_OPTION_APND: | 
|  | m_append.SetCurrentValue(true); | 
|  | break; | 
|  |  | 
|  | default: | 
|  | error.SetErrorStringWithFormat ("unrecognized option '%c'", short_option); | 
|  | break; | 
|  | } | 
|  |  | 
|  | return error; | 
|  | } | 
|  |  | 
|  | void | 
|  | OptionGroupOutputFile::OptionParsingStarting (CommandInterpreter &interpreter) | 
|  | { | 
|  | m_file.Clear(); | 
|  | m_append.Clear(); | 
|  | } |