Skip to content
Snippets Groups Projects
Commit e869278a authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add static AronClass::FromAron(data)

parent 97875eb6
1 merge request!198Refactor/new arch armem
...@@ -71,6 +71,7 @@ namespace armarx::aron::codegenerator ...@@ -71,6 +71,7 @@ namespace armarx::aron::codegenerator
std::string producerName; std::string producerName;
std::vector<codegenerator::WriterInfo> dataWriters; std::vector<codegenerator::WriterInfo> dataWriters;
std::vector<codegenerator::ReaderInfo> dataReaders; std::vector<codegenerator::ReaderInfo> dataReaders;
std::vector<codegenerator::StaticReaderInfo> staticDataReaders;
std::vector<codegenerator::WriterInfo> initialTypeWriters; std::vector<codegenerator::WriterInfo> initialTypeWriters;
std::vector<std::string> additionalIncludes; std::vector<std::string> additionalIncludes;
}; };
......
...@@ -78,7 +78,16 @@ namespace armarx::aron::codegenerator::cpp ...@@ -78,7 +78,16 @@ namespace armarx::aron::codegenerator::cpp
void Writer::addSpecificReaderMethods() void Writer::addSpecificReaderMethods()
{ {
// The toAron Serializer is visible by default // The static FromAron Deserializer
{
codegenerator::StaticReaderInfo fromAron;
fromAron.methodName = "FromAron";
fromAron.argumentType = "armarx::aron::data::DictPtr";
fromAron.returnType = OWN_TYPE_NAME;
staticDataReaders.push_back(fromAron);
}
// The fromAron Deserializer is visible by default
{ {
codegenerator::ReaderInfo fromAron; codegenerator::ReaderInfo fromAron;
fromAron.methodName = "fromAron"; fromAron.methodName = "fromAron";
...@@ -151,6 +160,13 @@ namespace armarx::aron::codegenerator::cpp ...@@ -151,6 +160,13 @@ namespace armarx::aron::codegenerator::cpp
c->addMethod(convert); c->addMethod(convert);
} }
// Add methods to set the member variables
for (const codegenerator::StaticReaderInfo& info : staticDataReaders)
{
CppMethodPtr convert = generator.toSpecializedStaticDataReaderMethod(info);
c->addMethod(convert);
}
// Add methods to set the member variables // Add methods to set the member variables
for (const codegenerator::ReaderInfo& info : dataReaders) for (const codegenerator::ReaderInfo& info : dataReaders)
{ {
...@@ -257,6 +273,8 @@ namespace armarx::aron::codegenerator::cpp ...@@ -257,6 +273,8 @@ namespace armarx::aron::codegenerator::cpp
c->addInclude("<map>"); c->addInclude("<map>");
c->addInclude("<RobotAPI/interface/aron.h>"); c->addInclude("<RobotAPI/interface/aron.h>");
c->addPublicField(std::string("using ") + OWN_TYPE_NAME + " = " + cppTypename + ";");
// ctor // ctor
c->addCtor(gen.toCtor(c->getName())); c->addCtor(gen.toCtor(c->getName()));
......
...@@ -63,5 +63,7 @@ namespace armarx::aron::codegenerator::cpp ...@@ -63,5 +63,7 @@ namespace armarx::aron::codegenerator::cpp
void setupMemberFields(CppClassPtr&, const std::map<std::string, std::string>& doc_members, const generator::IntEnumClass&) const; void setupMemberFields(CppClassPtr&, const std::map<std::string, std::string>& doc_members, const generator::IntEnumClass&) const;
private: private:
static const constexpr char* OWN_TYPE_NAME = "This";
}; };
} }
...@@ -227,9 +227,22 @@ namespace armarx::aron::codegenerator::cpp ...@@ -227,9 +227,22 @@ namespace armarx::aron::codegenerator::cpp
return m; return m;
} }
CppMethodPtr Generator::toSpecializedStaticDataReaderMethod(const StaticReaderInfo& info) const
{ {
std::stringstream doc; std::stringstream doc;
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("static " + info.returnType + " " + info.methodName + "(const " + info.argumentType + "& input)", doc.str()));
m->addLine("This t;");
m->addLine("t.fromAron(input);");
m->addLine("return t;");
return m;
}
CppMethodPtr Generator::toSpecializedTypeWriterMethod(const WriterInfo& info) const CppMethodPtr Generator::toSpecializedTypeWriterMethod(const WriterInfo& info) const
{
std::stringstream doc;
doc << "@brief " << info.methodName << "() - This method returns a new type from the member data types using a writer implementation. \n"; 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"; doc << "@return - the result of the writer implementation";
......
...@@ -111,6 +111,7 @@ namespace armarx::aron::codegenerator::cpp ...@@ -111,6 +111,7 @@ namespace armarx::aron::codegenerator::cpp
CppMethodPtr toSpecializedDataWriterMethod(const WriterInfo& info) const; CppMethodPtr toSpecializedDataWriterMethod(const WriterInfo& info) const;
CppMethodPtr toSpecializedDataReaderMethod(const ReaderInfo& info) const; CppMethodPtr toSpecializedDataReaderMethod(const ReaderInfo& info) const;
CppMethodPtr toSpecializedStaticDataReaderMethod(const StaticReaderInfo& info) const;
CppMethodPtr toSpecializedTypeWriterMethod(const WriterInfo& info) const; CppMethodPtr toSpecializedTypeWriterMethod(const WriterInfo& info) const;
// virtual override definitions // virtual override definitions
......
...@@ -37,4 +37,12 @@ namespace armarx::aron::codegenerator ...@@ -37,4 +37,12 @@ namespace armarx::aron::codegenerator
std::string include; std::string include;
std::string enforceConversion = ""; std::string enforceConversion = "";
}; };
struct StaticReaderInfo
{
std::string methodName;
std::string argumentType;
std::string returnType;
};
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment