From 97875eb62d2d1e05f836f0dcb7661698e0c49d84 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Tue, 26 Oct 2021 16:32:17 +0200 Subject: [PATCH] Pass info objects instead of single arguments --- .../codegenerator/codewriter/cpp/Writer.cpp | 6 ++-- .../codewriter/cpp/generator/Generator.cpp | 30 +++++++++---------- .../codewriter/cpp/generator/Generator.h | 8 +++-- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp index 25d16c3b6..751ee665e 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp @@ -147,7 +147,7 @@ namespace armarx::aron::codegenerator::cpp { c->addInclude(info.include); } - CppMethodPtr convert = generator.toSpecializedDataWriterMethod(info.returnType, info.methodName, info.writerClassType, info.enforceConversion); + CppMethodPtr convert = generator.toSpecializedDataWriterMethod(info); c->addMethod(convert); } @@ -158,7 +158,7 @@ namespace armarx::aron::codegenerator::cpp { c->addInclude(info.include); } - CppMethodPtr convert = generator.toSpecializedDataReaderMethod(info.argumentType, info.methodName, info.readerClassType, info.enforceConversion); + CppMethodPtr convert = generator.toSpecializedDataReaderMethod(info); c->addMethod(convert); } @@ -169,7 +169,7 @@ namespace armarx::aron::codegenerator::cpp { c->addInclude(info.include); } - CppMethodPtr convert = generator.toSpecializedTypeWriterMethod(info.returnType, info.methodName, info.writerClassType, info.enforceConversion); + CppMethodPtr convert = generator.toSpecializedTypeWriterMethod(info); c->addMethod(convert); } diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp index f858cb12d..89801e0fc 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp @@ -203,39 +203,39 @@ namespace armarx::aron::codegenerator::cpp return m; } - CppMethodPtr Generator::toSpecializedDataWriterMethod(const std::string& returnname, const std::string& methodname, const std::string& writerName, const std::string& enforceConversion) const + CppMethodPtr Generator::toSpecializedDataWriterMethod(const WriterInfo& info) const { std::stringstream doc; - doc << "@brief specializedDataWrite() - This method returns a new data from the member data types using a writer implementation. \n"; + doc << "@brief " << info.methodName << "() - This method returns a new data from the member data types using a writer implementation. \n"; doc << "@return - the result of the writer implementation"; - CppMethodPtr m = CppMethodPtr(new CppMethod(returnname + " " + methodname + "() const", doc.str())); - m->addLine(writerName + " writer;"); - m->addLine("return " + enforceConversion + "(this->write(writer));"); + CppMethodPtr m = CppMethodPtr(new CppMethod(info.returnType + " " + info.methodName + "() const", doc.str())); + m->addLine(info.writerClassType + " writer;"); + m->addLine("return " + info.enforceConversion + "(this->write(writer));"); return m; } - CppMethodPtr Generator::toSpecializedDataReaderMethod(const std::string& argumentname, const std::string& methodname, const std::string& readerName, const std::string& enforceConversion) const + CppMethodPtr Generator::toSpecializedDataReaderMethod(const ReaderInfo& info) const { std::stringstream doc; - doc << "@brief specializedDataRead() - This method sets the struct members to new values given in a reader implementation. \n"; + doc << "@brief " << info.methodName << " - This method sets the struct members to new values given in a reader implementation. \n"; doc << "@return - nothing"; - CppMethodPtr m = CppMethodPtr(new CppMethod("void " + methodname + "(const " + argumentname + "& input)", doc.str())); - m->addLine(readerName + " reader;"); - m->addLine("this->read<"+readerName+"::InputType>(reader, "+enforceConversion+"(input));"); + CppMethodPtr m = CppMethodPtr(new CppMethod("void " + info.methodName + "(const " + info.argumentType + "& input)", doc.str())); + m->addLine(info.readerClassType + " reader;"); + m->addLine("this->read<" + info.readerClassType + "::InputType>(reader, " + info.enforceConversion + "(input));"); return m; } - CppMethodPtr Generator::toSpecializedTypeWriterMethod(const std::string& returnname, const std::string& methodname, const std::string& writerName, const std::string& enforceConversion) const { std::stringstream doc; - doc << "@brief specializedTypeWrite() - This method returns a new type from the member data types using a writer implementation. \n"; + CppMethodPtr Generator::toSpecializedTypeWriterMethod(const WriterInfo& info) const + doc << "@brief " << info.methodName << "() - This method returns a new type from the member data types using a writer implementation. \n"; doc << "@return - the result of the writer implementation"; - CppMethodPtr m = CppMethodPtr(new CppMethod("static " + returnname + " " + methodname + "()", doc.str())); - m->addLine(writerName + " writer;"); - m->addLine("return " + enforceConversion + "(writeType(writer));"); + CppMethodPtr m = CppMethodPtr(new CppMethod("static " + info.returnType + " " + info.methodName + "()", doc.str())); + m->addLine(info.writerClassType + " writer;"); + m->addLine("return " + info.enforceConversion + "(writeType(writer));"); return m; } diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h index 906df641b..dddc73d51 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h +++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h @@ -26,6 +26,8 @@ #include <RobotAPI/interface/aron.h> #include <RobotAPI/libraries/aron/core/Exception.h> #include <RobotAPI/libraries/aron/core/type/variant/Variant.h> +#include <RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h> +#include <RobotAPI/libraries/aron/core/codegenerator/helper/WriterInfo.h> #include <ArmarXCore/libraries/cppgen/CppBlock.h> #include <ArmarXCore/libraries/cppgen/CppField.h> @@ -107,9 +109,9 @@ namespace armarx::aron::codegenerator::cpp std::string getCoreCppTypename() const; std::string getFullCppTypename() const; - CppMethodPtr toSpecializedDataWriterMethod(const std::string&, const std::string&, const std::string&, const std::string& enforceType = "") const; - CppMethodPtr toSpecializedDataReaderMethod(const std::string&, const std::string&, const std::string&, const std::string& enforceType = "") const; - CppMethodPtr toSpecializedTypeWriterMethod(const std::string&, const std::string&, const std::string&, const std::string& enforceType = "") const; + CppMethodPtr toSpecializedDataWriterMethod(const WriterInfo& info) const; + CppMethodPtr toSpecializedDataReaderMethod(const ReaderInfo& info) const; + CppMethodPtr toSpecializedTypeWriterMethod(const WriterInfo& info) const; // virtual override definitions virtual std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const; -- GitLab