diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1530978 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.o \ No newline at end of file diff --git a/Makefile b/Makefile index 400b043..4e13a65 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -OBJS = Build/main.o tinyxml2/tinyxml2.o +OBJS = Build/main.o Build/XmlParser.o tinyxml2/libtinyxml2.a SOURCE = Src/main.cpp tinyxml2/tinyxml2.cpp -INCLUDE = -I tinyxml2 -I cxxopts/include +INCLUDE = -I tinyxml2 -I cxxopts/include -I Src OUT = svd2cpp CC = g++ FLAGS = -g -c -Wall @@ -12,7 +12,11 @@ Build/main.o: Src/main.cpp mkdir -p Build $(CC) $(FLAGS) Src/main.cpp $(INCLUDE) -o Build/main.o -tinyxml2/tinyxml2.o: +Build/XmlParser.o: Src/XmlParser.cpp + mkdir -p Build + $(CC) $(FLAGS) Src/XmlParser.cpp $(INCLUDE) -o Build/XmlParser.o + +tinyxml2/libtinyxml2.a: $(MAKE) -C tinyxml2/ staticlib diff --git a/Src/XmlParser.cpp b/Src/XmlParser.cpp new file mode 100644 index 0000000..c44ded7 --- /dev/null +++ b/Src/XmlParser.cpp @@ -0,0 +1,6 @@ +#include +#include + +XmlParser::XmlParser(const std::string& inputFile){ + std::cout << inputFile; +} \ No newline at end of file diff --git a/Src/XmlParser.hpp b/Src/XmlParser.hpp new file mode 100644 index 0000000..ccd5545 --- /dev/null +++ b/Src/XmlParser.hpp @@ -0,0 +1,14 @@ +#ifndef XML_PARSER +#define XML_PARSER + +#include +#include + +struct XmlParser{ + XmlParser(const std::string& inputFile); + +private: + +}; + +#endif \ No newline at end of file diff --git a/Src/main.cpp b/Src/main.cpp index d5d2b36..a2378be 100644 --- a/Src/main.cpp +++ b/Src/main.cpp @@ -1,6 +1,32 @@ -#include +#include #include +#include -int main(){ - +int main(int argc, char** argv){ + // Create and configure options for the program + cxxopts::Options options("svd2cpp", "Parser from svd files to C++ header"); + options.add_options() + ("i, input", "File to be parsed", cxxopts::value()) + ("o, output", "OutputFile", cxxopts::value()); + std::string inputFile, outputFile; + try + { + auto result = options.parse(argc, argv); + if(result.count("input") != 1){ + std::cout << "Missing input file!" << std::endl; + return 1; + } + if(result.count("output") != 1){ + std::cout << "Missing output file!" << std::endl; + return 1; + } + inputFile = result["input"].as(); + outputFile = result["output"].as(); + std::cout << "Input: " << inputFile << "\tOutput: " << outputFile << std::endl; + } + catch(cxxopts::OptionException& ex){ + std::cout << ex.what() << std::endl; + return -1; + } + XmlParser xmlParser(inputFile); } \ No newline at end of file