From b725f59e786ab01947ff58311a53c395d3db626e Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 25 Oct 2017 17:41:19 +0200 Subject: [PATCH] Rename moc -> generator --- CMakeLists.txt | 2 +- {moc => generator}/CMakeLists.txt | 2 +- {moc => generator}/LICENSE | 0 {moc => generator}/README.md | 0 .../clangversionabstraction.cpp | 0 {moc => generator}/clangversionabstraction.h | 0 {moc => generator}/codefactory.cpp | 0 {moc => generator}/codefactory.h | 0 {moc => generator}/codegenerator.cpp | 0 {moc => generator}/codegenerator.h | 0 {moc => generator}/consumer.cpp | 0 {moc => generator}/consumer.h | 0 {moc => generator}/frontendaction.cpp | 0 {moc => generator}/frontendaction.h | 0 {moc => generator}/main.cpp | 210 +++++++++--------- {moc => generator}/testfiles/some_structs.h | 0 .../some_structs_json_serialization.h | 0 {moc => generator}/tests/cppunit.cpp | 0 {moc => generator}/tests/overall.cpp | 0 {moc => generator}/visitor.cpp | 0 {moc => generator}/visitor.h | 0 lib/cmake/modules/ReflectionGenerator.cmake | 2 +- 22 files changed, 108 insertions(+), 108 deletions(-) rename {moc => generator}/CMakeLists.txt (95%) rename {moc => generator}/LICENSE (100%) rename {moc => generator}/README.md (100%) rename {moc => generator}/clangversionabstraction.cpp (100%) rename {moc => generator}/clangversionabstraction.h (100%) rename {moc => generator}/codefactory.cpp (100%) rename {moc => generator}/codefactory.h (100%) rename {moc => generator}/codegenerator.cpp (100%) rename {moc => generator}/codegenerator.h (100%) rename {moc => generator}/consumer.cpp (100%) rename {moc => generator}/consumer.h (100%) rename {moc => generator}/frontendaction.cpp (100%) rename {moc => generator}/frontendaction.h (100%) rename {moc => generator}/main.cpp (97%) rename {moc => generator}/testfiles/some_structs.h (100%) rename {moc => generator}/testfiles/some_structs_json_serialization.h (100%) rename {moc => generator}/tests/cppunit.cpp (100%) rename {moc => generator}/tests/overall.cpp (100%) rename {moc => generator}/visitor.cpp (100%) rename {moc => generator}/visitor.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index ef64bd7..ceadcf9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,4 +33,4 @@ add_subdirectory(lib) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/cmake/modules" "${CMAKE_MODULE_PATH}") # add code generator -add_subdirectory(moc) +add_subdirectory(generator) diff --git a/moc/CMakeLists.txt b/generator/CMakeLists.txt similarity index 95% rename from moc/CMakeLists.txt rename to generator/CMakeLists.txt index c1e4f4c..7305a41 100644 --- a/moc/CMakeLists.txt +++ b/generator/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) # metadata -set(META_PROJECT_NAME reflective_rapidjson_moc) +set(META_PROJECT_NAME reflective_rapidjson_generator) set(META_PROJECT_TYPE application) set(LINK_TESTS_AGAINST_APP_TARGET ON) diff --git a/moc/LICENSE b/generator/LICENSE similarity index 100% rename from moc/LICENSE rename to generator/LICENSE diff --git a/moc/README.md b/generator/README.md similarity index 100% rename from moc/README.md rename to generator/README.md diff --git a/moc/clangversionabstraction.cpp b/generator/clangversionabstraction.cpp similarity index 100% rename from moc/clangversionabstraction.cpp rename to generator/clangversionabstraction.cpp diff --git a/moc/clangversionabstraction.h b/generator/clangversionabstraction.h similarity index 100% rename from moc/clangversionabstraction.h rename to generator/clangversionabstraction.h diff --git a/moc/codefactory.cpp b/generator/codefactory.cpp similarity index 100% rename from moc/codefactory.cpp rename to generator/codefactory.cpp diff --git a/moc/codefactory.h b/generator/codefactory.h similarity index 100% rename from moc/codefactory.h rename to generator/codefactory.h diff --git a/moc/codegenerator.cpp b/generator/codegenerator.cpp similarity index 100% rename from moc/codegenerator.cpp rename to generator/codegenerator.cpp diff --git a/moc/codegenerator.h b/generator/codegenerator.h similarity index 100% rename from moc/codegenerator.h rename to generator/codegenerator.h diff --git a/moc/consumer.cpp b/generator/consumer.cpp similarity index 100% rename from moc/consumer.cpp rename to generator/consumer.cpp diff --git a/moc/consumer.h b/generator/consumer.h similarity index 100% rename from moc/consumer.h rename to generator/consumer.h diff --git a/moc/frontendaction.cpp b/generator/frontendaction.cpp similarity index 100% rename from moc/frontendaction.cpp rename to generator/frontendaction.cpp diff --git a/moc/frontendaction.h b/generator/frontendaction.h similarity index 100% rename from moc/frontendaction.h rename to generator/frontendaction.h diff --git a/moc/main.cpp b/generator/main.cpp similarity index 97% rename from moc/main.cpp rename to generator/main.cpp index cd9d308..436efbf 100644 --- a/moc/main.cpp +++ b/generator/main.cpp @@ -1,105 +1,105 @@ -#include "./codefactory.h" - -#include "resources/config.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -using namespace std; -using namespace ApplicationUtilities; -using namespace EscapeCodes; -using namespace IoUtilities; -using namespace ReflectiveRapidJSON; - -int main(int argc, char *argv[]) -{ - SET_APPLICATION_INFO; - CMD_UTILS_CONVERT_ARGS_TO_UTF8; - - // setup argument parser - ArgumentParser parser; - ConfigValueArgument inputFileArg("input-file", 'i', "specifies the input file", { "path" }); - inputFileArg.setRequired(true); - ConfigValueArgument outputFileArg("output-file", 'o', "specifies the output file", { "path" }); - Argument generatorsArg("generators", 'g', "specifies the generators (by default all generators are enabled)"); - generatorsArg.setValueNames({ "json" }); - generatorsArg.setPreDefinedCompletionValues("json"); - generatorsArg.setRequiredValueCount(Argument::varValueCount); - generatorsArg.setCombinable(true); - ConfigValueArgument clangOptionsArg("clang-opt", 'c', "specifies an argument to be passed to Clang", { "option" }); - HelpArgument helpArg(parser); - NoColorArgument noColorArg; - parser.setMainArguments({ &inputFileArg, &outputFileArg, &generatorsArg, &clangOptionsArg, &noColorArg, &helpArg }); - - // parse arguments - parser.parseArgsOrExit(argc, argv); - if (helpArg.isPresent()) { - return 0; - } - - // setup output stream - ostream *os = nullptr; - try { - ofstream outputFile; - if (outputFileArg.isPresent()) { - outputFile.exceptions(ios_base::badbit | ios_base::failbit); - outputFile.open(outputFileArg.values(0).front(), ios_base::out | ios_base::trunc | ios_base::binary); - os = &outputFile; - } else { - os = &cout; - } - - // configure code generator - vector defaultClangOptions; - CodeFactory factory( - parser.executable(), inputFileArg.values(0), clangOptionsArg.isPresent() ? clangOptionsArg.values(0) : defaultClangOptions, *os); - // add only specified generators if the --generator argument is present - if (generatorsArg.isPresent()) { - // find and construct generators by name - for (const char *generatorName : generatorsArg.values(0)) { - if (!strcmp(generatorName, "json")) { - factory.addGenerator(); - } else { - cerr << Phrases::Error << "The specified generator \"" << generatorName << "\" does not exist." << Phrases::EndFlush; - return -5; - } - } - } else { - // add default generators - factory.addGenerator(); - } - - // read AST elements from input files - if (!factory.readAST()) { - cerr << Phrases::Error << "Errors occured when parsing the input file." << Phrases::EndFlush; - return -2; - } - - // run the code generator - if (!factory.generate()) { - cerr << Phrases::Error << "Errors occured when during code generation." << Phrases::EndFlush; - return -3; - } - - } catch (...) { - catchIoFailure(); - const char *errorMessage; - if (os) { - errorMessage = os->fail() || os->bad() ? "An IO error occured when writing to the output stream." : "An IO error occured."; - } else { - errorMessage = "An IO error when opening output stream."; - } - cerr << Phrases::Error << errorMessage << Phrases::EndFlush; - return -4; - } - - return 0; -} +#include "./codefactory.h" + +#include "resources/config.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +using namespace std; +using namespace ApplicationUtilities; +using namespace EscapeCodes; +using namespace IoUtilities; +using namespace ReflectiveRapidJSON; + +int main(int argc, char *argv[]) +{ + SET_APPLICATION_INFO; + CMD_UTILS_CONVERT_ARGS_TO_UTF8; + + // setup argument parser + ArgumentParser parser; + ConfigValueArgument inputFileArg("input-file", 'i', "specifies the input file", { "path" }); + inputFileArg.setRequired(true); + ConfigValueArgument outputFileArg("output-file", 'o', "specifies the output file", { "path" }); + Argument generatorsArg("generators", 'g', "specifies the generators (by default all generators are enabled)"); + generatorsArg.setValueNames({ "json" }); + generatorsArg.setPreDefinedCompletionValues("json"); + generatorsArg.setRequiredValueCount(Argument::varValueCount); + generatorsArg.setCombinable(true); + ConfigValueArgument clangOptionsArg("clang-opt", 'c', "specifies an argument to be passed to Clang", { "option" }); + HelpArgument helpArg(parser); + NoColorArgument noColorArg; + parser.setMainArguments({ &inputFileArg, &outputFileArg, &generatorsArg, &clangOptionsArg, &noColorArg, &helpArg }); + + // parse arguments + parser.parseArgsOrExit(argc, argv); + if (helpArg.isPresent()) { + return 0; + } + + // setup output stream + ostream *os = nullptr; + try { + ofstream outputFile; + if (outputFileArg.isPresent()) { + outputFile.exceptions(ios_base::badbit | ios_base::failbit); + outputFile.open(outputFileArg.values(0).front(), ios_base::out | ios_base::trunc | ios_base::binary); + os = &outputFile; + } else { + os = &cout; + } + + // configure code generator + vector defaultClangOptions; + CodeFactory factory( + parser.executable(), inputFileArg.values(0), clangOptionsArg.isPresent() ? clangOptionsArg.values(0) : defaultClangOptions, *os); + // add only specified generators if the --generator argument is present + if (generatorsArg.isPresent()) { + // find and construct generators by name + for (const char *generatorName : generatorsArg.values(0)) { + if (!strcmp(generatorName, "json")) { + factory.addGenerator(); + } else { + cerr << Phrases::Error << "The specified generator \"" << generatorName << "\" does not exist." << Phrases::EndFlush; + return -5; + } + } + } else { + // add default generators + factory.addGenerator(); + } + + // read AST elements from input files + if (!factory.readAST()) { + cerr << Phrases::Error << "Errors occured when parsing the input file." << Phrases::EndFlush; + return -2; + } + + // run the code generator + if (!factory.generate()) { + cerr << Phrases::Error << "Errors occured when during code generation." << Phrases::EndFlush; + return -3; + } + + } catch (...) { + catchIoFailure(); + const char *errorMessage; + if (os) { + errorMessage = os->fail() || os->bad() ? "An IO error occured when writing to the output stream." : "An IO error occured."; + } else { + errorMessage = "An IO error when opening output stream."; + } + cerr << Phrases::Error << errorMessage << Phrases::EndFlush; + return -4; + } + + return 0; +} diff --git a/moc/testfiles/some_structs.h b/generator/testfiles/some_structs.h similarity index 100% rename from moc/testfiles/some_structs.h rename to generator/testfiles/some_structs.h diff --git a/moc/testfiles/some_structs_json_serialization.h b/generator/testfiles/some_structs_json_serialization.h similarity index 100% rename from moc/testfiles/some_structs_json_serialization.h rename to generator/testfiles/some_structs_json_serialization.h diff --git a/moc/tests/cppunit.cpp b/generator/tests/cppunit.cpp similarity index 100% rename from moc/tests/cppunit.cpp rename to generator/tests/cppunit.cpp diff --git a/moc/tests/overall.cpp b/generator/tests/overall.cpp similarity index 100% rename from moc/tests/overall.cpp rename to generator/tests/overall.cpp diff --git a/moc/visitor.cpp b/generator/visitor.cpp similarity index 100% rename from moc/visitor.cpp rename to generator/visitor.cpp diff --git a/moc/visitor.h b/generator/visitor.h similarity index 100% rename from moc/visitor.h rename to generator/visitor.h diff --git a/lib/cmake/modules/ReflectionGenerator.cmake b/lib/cmake/modules/ReflectionGenerator.cmake index a27e15d..df43211 100644 --- a/lib/cmake/modules/ReflectionGenerator.cmake +++ b/lib/cmake/modules/ReflectionGenerator.cmake @@ -7,7 +7,7 @@ endif() set(REFLECTION_GENERATOR_MODULE_LOADED YES) # find code generator -set(REFLECTION_GENERATOR_EXECUTABLE reflective_rapidjson_moc) +set(REFLECTION_GENERATOR_EXECUTABLE reflective_rapidjson_generator) if(CMAKE_CROSSCOMPILING OR NOT TARGET "${REFLECTION_GENERATOR_EXECUTABLE}") # find "reflective_rapidjson_moc" from path find_program(REFLECTION_GENERATOR_EXECUTABLE "${REFLECTION_GENERATOR_EXECUTABLE}")