Skip to content

Commit

Permalink
add support for static containers to static iterator wrapper (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
PhilippGrulich authored Aug 8, 2024
1 parent 9c505c7 commit f4d623a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
8 changes: 4 additions & 4 deletions nautilus/include/nautilus/static.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,12 +159,12 @@ class static_iterable {
static_iterable(Container& container) : m_container(container) {
}

static_iterator<typename Container::iterator> begin() {
return static_iterator<typename Container::iterator>(m_container.begin());
auto begin() {
return static_iterator<decltype(m_container.begin())>(m_container.begin());
}

static_iterator<typename Container::iterator> end() {
return static_iterator<typename Container::iterator>(m_container.end());
auto end() {
return static_iterator<decltype(m_container.end())>(m_container.end());
}

private:
Expand Down
12 changes: 12 additions & 0 deletions nautilus/test/execution-tests/StaticLoopFunctions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,18 @@ val<int32_t> staticIterator(val<int32_t> ref) {
return sum;
}

const std::vector<int> constVec = {1, 2, 3, 4, 5};

val<int32_t> staticConstIterator(val<int32_t> ref) {
val<int32_t> sum = 0;
for (auto x : static_iterable(constVec)) {
if (ref > x) {
sum = sum + 1;
}
}
return sum;
}

val<int32_t> staticLoopIncrement() {
val<int32_t> agg = val<int32_t>(1);
for (static_val<int> start = 0; start < 10; start++) {
Expand Down
5 changes: 3 additions & 2 deletions nautilus/test/execution-tests/TracingTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,10 @@ TEST_CASE("Loop Trace Test") {

TEST_CASE("Static Trace Test") {
auto tests = std::vector<std::tuple<std::string, std::function<void()>>> {{"staticLoop", details::createFunctionWrapper(staticLoop)},
// {"staticLoopWithIf", details::createFunctionWrapper(staticLoopWithIf)},
{"staticLoopWithIf", details::createFunctionWrapper(staticLoopWithIf)},
{"staticLoopWithDynamicLoop", details::createFunctionWrapper(staticLoopWithDynamicLoop)},
// {"staticIterator", details::createFunctionWrapper(staticIterator)},
{"staticIterator", details::createFunctionWrapper(staticIterator)},
{"staticConstIterator", details::createFunctionWrapper(staticConstIterator)},
{"staticLoopIncrement", details::createFunctionWrapper(staticLoopIncrement)},
{"staticWhileLoopDecrement", details::createFunctionWrapper(staticWhileLoopDecrement)}};
runTraceTests(tests);
Expand Down

0 comments on commit f4d623a

Please sign in to comment.