From 17c8042bd6f2887992d2aac9b5a7bc927ea36b1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Tue, 24 Nov 2020 17:49:14 +0100 Subject: [PATCH] Add TinyMatrix for string handling - allow affectation of TinyMatrix to string - allow concatenation of TinyMatrix to string --- .../utils/AffectationRegisterForString.cpp | 58 +++++++++++-------- .../utils/BinaryOperatorRegisterForString.cpp | 3 + 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/language/utils/AffectationRegisterForString.cpp b/src/language/utils/AffectationRegisterForString.cpp index 37446e243..7946aeb45 100644 --- a/src/language/utils/AffectationRegisterForString.cpp +++ b/src/language/utils/AffectationRegisterForString.cpp @@ -39,6 +39,18 @@ AffectationRegisterForString::_register_eq_op() language::eq_op>(string_t, ASTNodeDataType::build<ASTNodeDataType::vector_t>(3), std::make_shared<AffectationProcessorBuilder<language::eq_op, std::string, TinyVector<3>>>()); + repository.addAffectation< + language::eq_op>(string_t, ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1, 1), + std::make_shared<AffectationProcessorBuilder<language::eq_op, std::string, TinyMatrix<1>>>()); + + repository.addAffectation< + language::eq_op>(string_t, ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2, 2), + std::make_shared<AffectationProcessorBuilder<language::eq_op, std::string, TinyMatrix<2>>>()); + + repository.addAffectation< + language::eq_op>(string_t, ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3, 3), + std::make_shared<AffectationProcessorBuilder<language::eq_op, std::string, TinyMatrix<3>>>()); + repository.addAffectation<language::eq_op>(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(string_t), ASTNodeDataType::build<ASTNodeDataType::bool_t>(), std::make_shared<AffectationToTupleProcessorBuilder<std::string>>()); @@ -66,6 +78,18 @@ AffectationRegisterForString::_register_eq_op() repository.addAffectation<language::eq_op>(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(string_t), ASTNodeDataType::build<ASTNodeDataType::vector_t>(3), std::make_shared<AffectationToTupleProcessorBuilder<std::string>>()); + + repository.addAffectation<language::eq_op>(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(string_t), + ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1, 1), + std::make_shared<AffectationToTupleProcessorBuilder<std::string>>()); + + repository.addAffectation<language::eq_op>(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(string_t), + ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2, 2), + std::make_shared<AffectationToTupleProcessorBuilder<std::string>>()); + + repository.addAffectation<language::eq_op>(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(string_t), + ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3, 3), + std::make_shared<AffectationToTupleProcessorBuilder<std::string>>()); } void @@ -107,29 +131,17 @@ AffectationRegisterForString::_register_pluseq_op() std::make_shared<AffectationProcessorBuilder< language::pluseq_op, std::string, TinyVector<3>>>()); - // this->_addAffectation("string += string", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, - // std::string>>()); - // this->_addAffectation("string += B", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, bool>>()); - // this->_addAffectation("string += N", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, uint64_t>>()); - // this->_addAffectation("string += Z", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, int64_t>>()); - // this->_addAffectation("string += R", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, double>>()); - // this - // ->_addAffectation("string += R^1", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, - // TinyVector<1>>>()); - // this - // ->_addAffectation("string += R^2", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, - // TinyVector<2>>>()); - // this - // ->_addAffectation("string += R^3", - // std::make_shared<AffectationProcessorBuilder<language::pluseq_op, std::string, - // TinyVector<3>>>()); + repository.addAffectation<language::pluseq_op>(string_t, ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1, 1), + std::make_shared<AffectationProcessorBuilder< + language::pluseq_op, std::string, TinyMatrix<1>>>()); + + repository.addAffectation<language::pluseq_op>(string_t, ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2, 2), + std::make_shared<AffectationProcessorBuilder< + language::pluseq_op, std::string, TinyMatrix<2>>>()); + + repository.addAffectation<language::pluseq_op>(string_t, ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3, 3), + std::make_shared<AffectationProcessorBuilder< + language::pluseq_op, std::string, TinyMatrix<3>>>()); } AffectationRegisterForString::AffectationRegisterForString() diff --git a/src/language/utils/BinaryOperatorRegisterForString.cpp b/src/language/utils/BinaryOperatorRegisterForString.cpp index 1323e21ea..0e89cbe00 100644 --- a/src/language/utils/BinaryOperatorRegisterForString.cpp +++ b/src/language/utils/BinaryOperatorRegisterForString.cpp @@ -36,5 +36,8 @@ BinaryOperatorRegisterForString::BinaryOperatorRegisterForString() this->_register_concat<TinyVector<1>>(); this->_register_concat<TinyVector<2>>(); this->_register_concat<TinyVector<3>>(); + this->_register_concat<TinyMatrix<1>>(); + this->_register_concat<TinyMatrix<2>>(); + this->_register_concat<TinyMatrix<3>>(); this->_register_concat<std::string>(); } -- GitLab