@@ -73,6 +73,8 @@ class Iterator {
73
73
74
74
virtual const Row* row () const = 0;
75
75
76
+ virtual Row moveRow () = 0;
77
+
76
78
// erase range, no include last position, if last > size(), erase to the end
77
79
// position
78
80
virtual void eraseRange (size_t first, size_t last) = 0;
@@ -228,6 +230,11 @@ class DefaultIter final : public Iterator {
228
230
return nullptr ;
229
231
}
230
232
233
+ Row moveRow () override {
234
+ DLOG (FATAL) << " This method should not be invoked" ;
235
+ return Row{};
236
+ }
237
+
231
238
private:
232
239
void doReset (size_t pos) override {
233
240
DCHECK ((pos == 0 && size () == 0 ) || (pos < size ()));
@@ -318,6 +325,10 @@ class GetNeighborsIter final : public Iterator {
318
325
return currentEdge_;
319
326
}
320
327
328
+ Row moveRow () override {
329
+ return std::move (*currentEdge_);
330
+ }
331
+
321
332
private:
322
333
void doReset (size_t pos) override {
323
334
UNUSED (pos);
@@ -475,6 +486,10 @@ class SequentialIter : public Iterator {
475
486
476
487
Value getEdge () const override ;
477
488
489
+ Row moveRow () override {
490
+ return std::move (*iter_);
491
+ }
492
+
478
493
protected:
479
494
const Row* row () const override {
480
495
return &*iter_;
@@ -484,9 +499,6 @@ class SequentialIter : public Iterator {
484
499
friend class DataCollectExecutor ;
485
500
friend class AppendVerticesExecutor ;
486
501
friend class TraverseExecutor ;
487
- Row&& moveRow() {
488
- return std::move (*iter_);
489
- }
490
502
491
503
void doReset (size_t pos) override ;
492
504
0 commit comments