Add command line parsing to UICommon.

This commit is contained in:
Ryan Houdek 2016-01-17 05:11:43 -06:00 committed by Léo Lam
parent 77c7fa836f
commit f61363a791
5 changed files with 77 additions and 3 deletions

View File

@ -91,7 +91,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(WXLIBS ${WXLIBS} dl)
endif()
list(APPEND LIBS core uicommon)
list(APPEND LIBS core uicommon cpp-optparse)
if(APPLE)
if(wxWidgets_FOUND)

View File

@ -1,8 +1,9 @@
set(SRCS Disassembler.cpp
set(SRCS CommandLineParse.cpp
Disassembler.cpp
UICommon.cpp
USBUtils.cpp)
set(LIBS common)
set(LIBS common cpp-optparse)
if(LIBUSB_FOUND)
set(LIBS ${LIBS} ${LIBUSB_LIBRARIES})
endif()

View File

@ -0,0 +1,48 @@
// Copyright 2017 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include <OptionParser.h>
#include "Common/Common.h"
#include "UICommon/CommandLineParse.h"
namespace CommandLineParse
{
std::unique_ptr<optparse::OptionParser> CreateParser(ParserOptions options)
{
auto parser = std::make_unique<optparse::OptionParser>();
parser->usage("usage: %prog [options]... [FILE]...").version(scm_rev_str);
parser->add_option("--version").action("version").help("Print version and exit");
parser->add_option("-u", "--user").action("store").help("User folder path");
parser->add_option("-m", "--movie").action("store").help("Play a movie file");
parser->add_option("-e", "--exec")
.action("store")
.metavar("<file>")
.type("string")
.help("Load the specified file");
if (options == ParserOptions::IncludeGUIOptions)
{
parser->add_option("-d", "--debugger").action("store_true").help("Opens the debuger");
parser->add_option("-l", "--logger").action("store_true").help("Opens the logger");
parser->add_option("-b", "--batch").action("store_true").help("Exit Dolphin with emulation");
parser->add_option("-c", "--confirm").action("store_true").help("Set Confirm on Stop");
}
// XXX: These two are setting configuration options
parser->add_option("-v", "--video_backend").action("store").help("Specify a video backend");
parser->add_option("-a", "--audio_emulation")
.choices({"HLE", "LLE"})
.help("Choose audio emulation from [%choices]");
return parser;
}
optparse::Values& ParseArguments(optparse::OptionParser* parser, int argc, char** argv)
{
return parser->parse_args(argc, argv);
}
}

View File

@ -0,0 +1,23 @@
// Copyright 2017 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include <memory>
namespace optparse
{
class OptionParser;
class Values;
}
namespace CommandLineParse
{
enum class ParserOptions
{
IncludeGUIOptions,
OmitGUIOptions,
};
std::unique_ptr<optparse::OptionParser> CreateParser(ParserOptions options);
optparse::Values& ParseArguments(optparse::OptionParser* parser, int argc, char** argv);
}

View File

@ -53,6 +53,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="CommandLineParse.cpp" />
<ClCompile Include="UICommon.cpp" />
<ClCompile Include="Disassembler.cpp" />
<ClCompile Include="USBUtils.cpp">
@ -60,6 +61,7 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CommandLineParse.h" />
<ClInclude Include="UICommon.h" />
<ClInclude Include="Disassembler.h" />
<ClInclude Include="USBUtils.h" />