Skip to content

Commit 2e6f1ac

Browse files
committed
minor code cleanup and some assertions
1 parent 8d96630 commit 2e6f1ac

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

include/pfasst/controller.hpp

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
#ifndef _PFASST_CONTROLLER_HPP_
66
#define _PFASST_CONTROLLER_HPP_
77

8+
#include <deque>
9+
#include <memory>
10+
#include <cassert>
11+
812
#include "interfaces.hpp"
913

1014
namespace pfasst
@@ -51,14 +55,20 @@ namespace pfasst
5155
}
5256
}
5357

54-
template<typename R = ISweeper<time>> R* get_level(size_t level)
58+
template<typename R = ISweeper<time>>
59+
R* get_level(size_t level)
5560
{
56-
return dynamic_cast<R*>(levels[level].get());
61+
R* r = dynamic_cast<R*>(levels[level].get());
62+
assert(r != nullptr);
63+
return r;
5764
}
5865

59-
template<typename R = ITransfer<time>> R* get_transfer(size_t level)
66+
template<typename R = ITransfer<time>>
67+
R* get_transfer(size_t level)
6068
{
61-
return dynamic_cast<R*>(transfer[level].get());
69+
R* r = dynamic_cast<R*>(transfer[level].get());
70+
assert(r != nullptr);
71+
return r;
6272
}
6373

6474
size_t nlevels()
@@ -83,21 +93,25 @@ namespace pfasst
8393

8494
LevelIter(size_t level, Controller* ts) : ts(ts), level(level) {}
8595

86-
template<typename R = ISweeper<time>> R* current()
96+
template<typename R = ISweeper<time>>
97+
R* current()
8798
{
88-
return ts->get_level<R>(level);
99+
return ts->template get_level<R>(level);
89100
}
90-
template<typename R = ISweeper<time>> R* fine()
101+
template<typename R = ISweeper<time>>
102+
R* fine()
91103
{
92-
return ts->get_level<R>(level + 1);
104+
return ts->template get_level<R>(level + 1);
93105
}
94-
template<typename R = ISweeper<time>> R* coarse()
106+
template<typename R = ISweeper<time>>
107+
R* coarse()
95108
{
96-
return ts->get_level<R>(level - 1);
109+
return ts->template get_level<R>(level - 1);
97110
}
98-
template<typename R = ITransfer<time>> R* transfer()
111+
template<typename R = ITransfer<time>>
112+
R* transfer()
99113
{
100-
return ts->get_transfer<R>(level);
114+
return ts->template get_transfer<R>(level);
101115
}
102116

103117
ISweeper<time>* operator*() { return current(); }

0 commit comments

Comments
 (0)