Exploring varying with names

This commit is contained in:
Sam Gateau 2018-12-03 00:00:28 -08:00
parent 259a97c43a
commit a5d1c4833e

View file

@ -17,6 +17,15 @@
#include <array> #include <array>
namespace task { namespace task {
class Varying;
template <class T> Varying varyingGetSub(const T& data, uint8_t index) {
return Varying();
}
template <class T> uint8_t varyingGetLength(const T& data) {
return 0;
}
// A varying piece of data, to be used as Job/Task I/O // A varying piece of data, to be used as Job/Task I/O
class Varying { class Varying {
@ -66,10 +75,11 @@ protected:
virtual ~Model() = default; virtual ~Model() = default;
virtual Varying operator[] (uint8_t index) const override { virtual Varying operator[] (uint8_t index) const override {
Varying var; return varyingGetSub<T>(_data, index);
return var; }
virtual uint8_t length() const override {
return varyingGetLength<T>(_data);
} }
virtual uint8_t length() const override { return 0; }
Data _data; Data _data;
}; };
@ -106,6 +116,12 @@ public:
Varying asVarying() const { return Varying((*this)); } Varying asVarying() const { return Varying((*this)); }
}; };
template <typename T0, typename T1> Varying varyingGetSub(const VaryingSet2<T0, T1>& dat, uint8_t index) {
return data[index];
}
template <typename T0, typename T1> uint8_t varyingGetLength(const VaryingSet2<T0, T1>& data) {
return data.length();
}
template <class T0, class T1, class T2> template <class T0, class T1, class T2>
class VaryingSet3 : public std::tuple<Varying, Varying,Varying>{ class VaryingSet3 : public std::tuple<Varying, Varying,Varying>{