Skip to content
Snippets Groups Projects
Commit 0b67faa3 authored by Fabian Reister's avatar Fabian Reister
Browse files

reading variable size eigen matrices

parent ca141b37
No related branches found
No related tags found
1 merge request!315Fix/read variable size matrices and optionals
......@@ -44,7 +44,7 @@ namespace armarx::aron::codegenerator::cpp::generator
"Eigen::Matrix<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
"Eigen::Matrix<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
simox::meta::get_type_name<data::dto::NDArray>(),
simox::meta::get_type_name<type::dto::Matrix>(), n)
simox::meta::get_type_name<type::dto::Matrix>(), n), matrixType(n)
{
}
......@@ -102,6 +102,13 @@ namespace armarx::aron::codegenerator::cpp::generator
block_if_data->addLine("std::vector<int> " + dims + ";");
block_if_data->addLine("std::vector<unsigned char> " + data + ";");
block_if_data->addLine("" + ARON_READER_ACCESSOR + ".readNDArray("+variantAccessor+", "+dims+", "+type+", "+data+"); // of " + cppAccessor);
if(matrixType.getRows() == Eigen::Dynamic or matrixType.getCols() == Eigen::Dynamic)
{
// TODO assert(aron_variant_kpImpedance_shape.size() == 2);
block_if_data->addLine(cppAccessor + nextEl() + "resize(" + dims + ".at(0), " + dims + ".at(1));");
}
block_if_data->addLine("std::memcpy(reinterpret_cast<unsigned char*>(" + cppAccessor + nextEl() + "data()), "+data+".data(), "+data+".size());");
return resolveMaybeReadBlock(block_if_data, cppAccessor, variantAccessor);
}
......
......@@ -47,5 +47,8 @@ namespace armarx::aron::codegenerator::cpp::generator
CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const final;
private:
const type::Matrix matrixType;
};
}
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