Resolve "[API-#2] Pseudo-privatization of rotgen entity member functions"

Closes #18

Co-authored-by: Jules Pénuchot <jules@penuchot.com>

See merge request oss/rotgen!50
This commit is contained in:
Jules Pénuchot 2025-12-17 20:48:00 +01:00 committed by Joel Falcou
parent 6489697c05
commit e151e136d6
52 changed files with 2212 additions and 1556 deletions

View file

@ -36,7 +36,7 @@ TTS_CASE_TPL("Test static map transposition-like operations",
auto process = []<typename D>(D const& desc) {
rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value> base(D::rows,
D::cols);
rotgen::tests::prepare(base.rows(), base.cols(), desc.init_fn, base);
rotgen::tests::prepare(rows(base), cols(base), desc.init_fn, base);
rotgen::map<rotgen::matrix<T, D::rows, D::cols, O::value>> input(
base.data());
@ -72,7 +72,7 @@ TTS_CASE_TPL("Test static map reduction-like operations",
auto process = []<typename D>(D const& desc) {
rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value> base(D::rows,
D::cols);
rotgen::tests::prepare(base.rows(), base.cols(), desc.init_fn, base);
rotgen::tests::prepare(rows(base), cols(base), desc.init_fn, base);
rotgen::map<rotgen::matrix<T, D::rows, D::cols, O::value>> input(
base.data());

View file

@ -9,40 +9,41 @@
#include "unit/tests.hpp"
TTS_CASE_TPL("Function size", rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("Function size", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
T data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
rotgen::map<rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value>>
dyn_map(data, 1, 12);
TTS_EQUAL(dyn_map.rows(), rotgen::Index{1});
TTS_EQUAL(dyn_map.cols(), rotgen::Index{12});
TTS_EQUAL(rows(dyn_map), rotgen::Index{1});
TTS_EQUAL(cols(dyn_map), rotgen::Index{12});
rotgen::map<rotgen::matrix<T, 1, 12, rotgen::RowMajor>> s112_map(data);
TTS_EQUAL(s112_map.rows(), rotgen::Index{1});
TTS_EQUAL(s112_map.cols(), rotgen::Index{12});
TTS_EQUAL(rows(s112_map), rotgen::Index{1});
TTS_EQUAL(cols(s112_map), rotgen::Index{12});
TTS_EQUAL(s112_map.size(), rotgen::Index{12});
rotgen::map<rotgen::matrix<T, 12, 1, rotgen::ColMajor>> s121_map(data);
TTS_EQUAL(s121_map.rows(), rotgen::Index{12});
TTS_EQUAL(s121_map.cols(), rotgen::Index{1});
TTS_EQUAL(rows(s121_map), rotgen::Index{12});
TTS_EQUAL(cols(s121_map), rotgen::Index{1});
TTS_EQUAL(s121_map.size(), rotgen::Index{12});
rotgen::map<rotgen::matrix<T, 3, 4, O::value>> s34_map(data);
TTS_EQUAL(s34_map.rows(), rotgen::Index{3});
TTS_EQUAL(s34_map.cols(), rotgen::Index{4});
TTS_EQUAL(rows(s34_map), rotgen::Index{3});
TTS_EQUAL(cols(s34_map), rotgen::Index{4});
TTS_EQUAL(s34_map.size(), rotgen::Index{12});
rotgen::map<rotgen::matrix<T, 6, 2, O::value>> s62_map(data);
TTS_EQUAL(s62_map.rows(), rotgen::Index{6});
TTS_EQUAL(s62_map.cols(), rotgen::Index{2});
TTS_EQUAL(rows(s62_map), rotgen::Index{6});
TTS_EQUAL(cols(s62_map), rotgen::Index{2});
TTS_EQUAL(s62_map.size(), rotgen::Index{12});
};
TTS_CASE_TPL("Test coefficient accessors",
rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("Test coefficient accessors", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
using base = rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value>;
@ -66,9 +67,9 @@ TTS_CASE_TPL("Test coefficient accessors",
TTS_EQUAL(a(2, 2), 17);
};
TTS_CASE_TPL("Test one index coefficient accessors",
rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("Test one index coefficient accessors", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
T data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

View file

@ -11,9 +11,9 @@
#include "unit/common/references.hpp"
#include "unit/tests.hpp"
TTS_CASE_TPL("Test dynamic map cwise operations",
rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("Test dynamic map cwise operations", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
auto const cases = rotgen::tests::generate_matrix_references();
for (auto const& [rows, cols, fn] : cases)
@ -28,16 +28,16 @@ TTS_CASE_TPL("Test dynamic map cwise operations",
}
};
TTS_CASE_TPL("Test static map cwise operations",
rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("Test static map cwise operations", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
auto const cases = rotgen::tests::generate_static_matrix_references();
auto process = []<typename D>(D const& desc) {
rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value> base(D::rows,
D::cols);
rotgen::tests::prepare(base.rows(), base.cols(), desc.init_fn, base);
rotgen::tests::prepare(rows(base), cols(base), desc.init_fn, base);
rotgen::map<rotgen::matrix<T, D::rows, D::cols, O::value>> input(
base.data());

View file

@ -11,9 +11,9 @@
#include "unit/common/references.hpp"
#include "unit/tests.hpp"
TTS_CASE_TPL("Test dynamic map norm operations",
rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("Test dynamic map norm operations", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
auto const cases = rotgen::tests::generate_matrix_references();
for (auto const& [rows, cols, fn] : cases)
@ -28,16 +28,16 @@ TTS_CASE_TPL("Test dynamic map norm operations",
}
};
TTS_CASE_TPL("Test static map norm operations",
rotgen::tests::types)<typename T, typename O>(
tts::type<tts::types<T, O>>)
TTS_CASE_TPL("Test static map norm operations", rotgen::tests::types)
<typename T, typename O>(tts::type<tts::types<T, O>>)
{
auto const cases = rotgen::tests::generate_static_matrix_references();
auto process = []<typename D>(D const& desc) {
rotgen::matrix<T, rotgen::Dynamic, rotgen::Dynamic, O::value> base(D::rows,
D::cols);
rotgen::tests::prepare(base.rows(), base.cols(), desc.init_fn, base);
rotgen::tests::prepare(rows(base), cols(base), desc.init_fn, base);
rotgen::map<rotgen::matrix<T, D::rows, D::cols, O::value>> input(
base.data());

View file

@ -40,8 +40,8 @@ TTS_CASE("Validate Column Major Map with regular stride behavior")
r_map_t<r_mat_t<rotgen::ColMajor>> r_map(buffer.data(), rows, cols);
TTS_EQUAL(r_map.innerStride(), 1);
TTS_EQUAL(r_map.outerStride(), 3);
TTS_EQUAL(innerStride(r_map), 1);
TTS_EQUAL(outerStride(r_map), 3);
e_map_t<e_mat_t<Eigen::ColMajor>> e_map(buffer.data(), rows, cols);
@ -59,8 +59,8 @@ TTS_CASE("Validate Column Major Map with specific outer stride behavior")
r_map_t<r_mat_t<rotgen::ColMajor>, rotgen::outer_stride<>> r_map(
buffer.data(), rows, cols, rotgen::outer_stride<>(rows + 1));
TTS_EQUAL(r_map.innerStride(), 1);
TTS_EQUAL(r_map.outerStride(), 4);
TTS_EQUAL(innerStride(r_map), 1);
TTS_EQUAL(outerStride(r_map), 4);
e_map_t<e_mat_t<Eigen::ColMajor>, Eigen::OuterStride<>> e_map(
buffer.data(), rows, cols, Eigen::OuterStride<>(rows + 1));
@ -79,8 +79,8 @@ TTS_CASE("Validate Column Major Map with specific inner stride behavior")
r_map_t<r_mat_t<rotgen::ColMajor>, rotgen::dynamic_stride> r_map(
buffer.data(), rows, cols, rotgen::dynamic_stride(rows, 2));
TTS_EQUAL(r_map.innerStride(), 2);
TTS_EQUAL(r_map.outerStride(), 3);
TTS_EQUAL(innerStride(r_map), 2);
TTS_EQUAL(outerStride(r_map), 3);
e_map_t<e_mat_t<Eigen::ColMajor>,
Eigen::Stride<Eigen::Dynamic, Eigen::Dynamic>>
@ -100,8 +100,8 @@ TTS_CASE("Validate Row Major Map with regular stride behavior")
r_map_t<r_mat_t<rotgen::RowMajor>> r_map(buffer.data(), rows, cols);
TTS_EQUAL(r_map.innerStride(), 1);
TTS_EQUAL(r_map.outerStride(), 4);
TTS_EQUAL(innerStride(r_map), 1);
TTS_EQUAL(outerStride(r_map), 4);
e_map_t<e_mat_t<Eigen::RowMajor>> e_map(buffer.data(), rows, cols);
@ -119,8 +119,8 @@ TTS_CASE("Validate Row Major Map with specific outer stride behavior")
r_map_t<r_mat_t<rotgen::RowMajor>, rotgen::outer_stride<>> r_map(
buffer.data(), rows, cols, rotgen::outer_stride<>(cols + 1));
TTS_EQUAL(r_map.innerStride(), 1);
TTS_EQUAL(r_map.outerStride(), 5);
TTS_EQUAL(innerStride(r_map), 1);
TTS_EQUAL(outerStride(r_map), 5);
e_map_t<e_mat_t<Eigen::RowMajor>, Eigen::OuterStride<>> e_map(
buffer.data(), rows, cols, Eigen::OuterStride<>(cols + 1));
@ -139,8 +139,8 @@ TTS_CASE("Validate Row Major Map with specific inner stride behavior")
r_map_t<r_mat_t<rotgen::RowMajor>, rotgen::dynamic_stride> r_map(
buffer.data(), rows, cols, rotgen::dynamic_stride(2, cols));
TTS_EQUAL(r_map.innerStride(), 4);
TTS_EQUAL(r_map.outerStride(), 2);
TTS_EQUAL(innerStride(r_map), 4);
TTS_EQUAL(outerStride(r_map), 2);
e_map_t<e_mat_t<Eigen::RowMajor>,
Eigen::Stride<Eigen::Dynamic, Eigen::Dynamic>>