From 7523fb429445fcb7620cab8fb3022356256f4396 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Thu, 15 Aug 2019 16:58:16 +0200 Subject: [PATCH] Extern support for creating iterators --- .../UserDataCollections/UserDataCollectionIterator.cpp | 10 ++++++++++ .../UserDataCollections/UserDataCollectionIterator.hpp | 2 +- .../UserDataCollectionRangeIterator.cpp | 8 ++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/UserData/UserDataCollections/UserDataCollectionIterator.cpp b/src/UserData/UserDataCollections/UserDataCollectionIterator.cpp index 29bc7a0..8ebc926 100644 --- a/src/UserData/UserDataCollections/UserDataCollectionIterator.cpp +++ b/src/UserData/UserDataCollections/UserDataCollectionIterator.cpp @@ -1 +1,11 @@ #include "UserDataCollectionIterator.hpp" + +namespace Porygon::UserData{ + extern "C"{ + UserDataCollectionIterator* CreateCollectionIterator(const Evaluation::EvalValue* (*getCurrent)(), + const Evaluation::EvalValue* (*moveNext)(), + const Evaluation::EvalValue* (*reset)()){ + return new UserDataCollectionIterator(getCurrent, moveNext, reset); + } + } +} \ No newline at end of file diff --git a/src/UserData/UserDataCollections/UserDataCollectionIterator.hpp b/src/UserData/UserDataCollections/UserDataCollectionIterator.hpp index 4799dcd..f46aa16 100644 --- a/src/UserData/UserDataCollections/UserDataCollectionIterator.hpp +++ b/src/UserData/UserDataCollections/UserDataCollectionIterator.hpp @@ -21,7 +21,7 @@ namespace Porygon::UserData{ return _getCurrent(); } bool MoveNext() final{ - _moveNext(); + return _moveNext(); } void Reset() final{ _reset(); diff --git a/src/UserData/UserDataCollections/UserDataCollectionRangeIterator.cpp b/src/UserData/UserDataCollections/UserDataCollectionRangeIterator.cpp index e2815fa..1e4e785 100644 --- a/src/UserData/UserDataCollections/UserDataCollectionRangeIterator.cpp +++ b/src/UserData/UserDataCollections/UserDataCollectionRangeIterator.cpp @@ -1 +1,9 @@ #include "UserDataCollectionRangeIterator.hpp" + +namespace Porygon::UserData{ +extern "C"{ + UserDataCollectionRangeIterator* CreateCollectionRangeIterator(size_t start, size_t end){ + return new UserDataCollectionRangeIterator(start, end); + } +} +} \ No newline at end of file