Use clipp for arg parsing

This commit is contained in:
2020-05-30 11:09:00 +02:00
parent 8b85e428f1
commit 3bb2cc17e9
4 changed files with 7045 additions and 5 deletions

7024
include/clipp.hpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -8,12 +8,14 @@
class Wassembler class Wassembler
{ {
private: private:
Configuration config;
Execute::VirtualMachine vm; Execute::VirtualMachine vm;
bool LoadLinesFromFile(std::string const & filePath, std::vector<std::string> & lines) const; bool LoadLinesFromFile(std::string const & filePath, std::vector<std::string> & lines) const;
bool LoadTokens(std::vector<std::string> const & lines, std::vector<Token::Token> & tokens) const; bool LoadTokens(std::vector<std::string> const & lines, std::vector<Token::Token> & tokens) const;
public: public:
void SetMemorySize(unsigned const size);
bool LoadFromFile(std::string const & filePath); bool LoadFromFile(std::string const & filePath);
void Run(); void Run();

View File

@@ -1,16 +1,27 @@
#include <clipp.hpp>
#include <cstdio> #include <cstdio>
#include <iostream>
#include <wassembler.hpp> #include <wassembler.hpp>
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
if (argc != 2) std::string inputFile;
unsigned memorySize = 1024;
auto cli = (
clipp::value("input wasm file").set(inputFile),
clipp::option("-m", "--memory-size") & clipp::value("memory size", memorySize)
);
if (!clipp::parse(argc, argv, cli))
{ {
std::printf("Usage: %s [filename.wasm]\n", argv[0]); std::cout << clipp::make_man_page(cli, argv[0]);
return 1; return 1;
} }
Wassembler wassembler; Wassembler wassembler;
if (!wassembler.LoadFromFile(argv[1])) wassembler.SetMemorySize(memorySize);
if (!wassembler.LoadFromFile(inputFile))
{ {
exit(1); exit(1);
} }

View File

@@ -79,6 +79,11 @@ bool Wassembler::LoadTokens(std::vector<std::string> const & lines, std::vector<
return !(syntaxError || tokenizationError); return !(syntaxError || tokenizationError);
} }
void Wassembler::SetMemorySize(unsigned const size)
{
config.memorySize = size;
}
bool Wassembler::LoadFromFile(std::string const & filePath) bool Wassembler::LoadFromFile(std::string const & filePath)
{ {
std::vector<std::string> lines; std::vector<std::string> lines;
@@ -108,8 +113,6 @@ bool Wassembler::LoadFromFile(std::string const & filePath)
} }
vm.LoadCode(std::move(codePtr)); vm.LoadCode(std::move(codePtr));
Configuration config;
vm.LoadConfiguration(config); vm.LoadConfiguration(config);
return true; return true;