#ifndef ACTION_H #define ACTION_H #include "Arduino.h" #include "functional" #include "StreamEvent.h" template class Action { public: Action(function _funcEventMatchesAction, function _funcInvokeAction, function _funcDescribeAction) : funcEventMatchesAction(_funcEventMatchesAction), funcInvokeAction(_funcInvokeAction), funcDescribeAction(_funcDescribeAction) {} bool eventMatchesAction(StreamEvent* event) { return funcEventMatchesAction(event); } void describeAction(Print* printStream) { funcDescribeAction(printStream); } T* invokeAction(StreamEvent* event) { return funcInvokeAction(event); } private: function funcEventMatchesAction; function funcInvokeAction; function funcDescribeAction; }; #endif