summaryrefslogtreecommitdiff
path: root/core/property_access.hpp
blob: 19016e9cc820afb81c25df4fb1e8854c5d5caa3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef VIp1Hrkjsl2bQTTqbsZf9mqNsWY
#define VIp1Hrkjsl2bQTTqbsZf9mqNsWY

#include "pla_get.hpp"
#include "context.hpp"

template <typename Prop>
struct Property_Get {
  template<typename PropComp, typename Context>
  static inline typename Prop::type eval(PropComp &pc, Context context) __attribute__ ((pure));

  template<typename PropComp, typename Context>
  static inline typename Prop::type eval(PropComp &pc, Context context, Time t) __attribute__ ((pure));
};

template <typename Prop>
template<typename PropComp, typename Context>
inline typename Prop::type Property_Get<Prop>::eval(PropComp &pc, Context context) {
  PLA_Get<Prop, Context> action(context);
  return pc.call(action);
}

template <typename Prop>
template<typename PropComp, typename Context>
inline typename Prop::type Property_Get<Prop>::eval(PropComp &pc, Context context, Time t) {
  PLA_Get<Prop, Context> action(t, context);
  return pc.call(action);
}



#endif // VIp1Hrkjsl2bQTTqbsZf9mqNsWY
contact: Jan Huwald // Impressum