Skip to content
Snippets Groups Projects
Commit 17c8042b authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add TinyMatrix for string handling

- allow affectation of TinyMatrix to string
- allow concatenation of TinyMatrix to string
parent 88a786c4
No related branches found
No related tags found
1 merge request!71Feature/language tiny matrices
......@@ -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()
......
......@@ -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>();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment