From 25e3d4994106c74a14adf38ce1d52cb1b1788be7 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 5 Dec 2018 17:10:18 -0800 Subject: [PATCH] Add VaryingSet1 to Task aliases --- libraries/task/src/task/Task.h | 1 + libraries/task/src/task/Varying.h | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/libraries/task/src/task/Task.h b/libraries/task/src/task/Task.h index fb7012b16c..9647157a54 100644 --- a/libraries/task/src/task/Task.h +++ b/libraries/task/src/task/Task.h @@ -411,6 +411,7 @@ protected: using Task = task::Task; \ using Engine = task::Engine; \ using Varying = task::Varying; \ + template < typename T0 > using VaryingSet1 = task::VaryingSet1; \ template < typename T0, typename T1 > using VaryingSet2 = task::VaryingSet2; \ template < typename T0, typename T1, typename T2 > using VaryingSet3 = task::VaryingSet3; \ template < typename T0, typename T1, typename T2, typename T3 > using VaryingSet4 = task::VaryingSet4; \ diff --git a/libraries/task/src/task/Varying.h b/libraries/task/src/task/Varying.h index 9536db2799..60f3c6dec4 100644 --- a/libraries/task/src/task/Varying.h +++ b/libraries/task/src/task/Varying.h @@ -69,6 +69,26 @@ protected: std::shared_ptr _concept; }; +template < typename T0 > +class VaryingSet1 : public std::tuple { +public: + using Parent = std::tuple; + + VaryingSet1() : Parent(Varying(T0())) {} + VaryingSet1(const VaryingSet1& src) : Parent(std::get<0>(src)) {} + VaryingSet1(const Varying& first) : Parent(first) {} + + const T0& get0() const { return std::get<0>((*this)).template get(); } + T0& edit0() { return std::get<0>((*this)).template edit(); } + + virtual Varying operator[] (uint8_t index) const { + return std::get<0>((*this)); + } + virtual uint8_t length() const { return 1; } + + Varying asVarying() const { return Varying((*this)); } +}; + using VaryingPairBase = std::pair; template < typename T0, typename T1 > class VaryingSet2 : public VaryingPairBase {