41 lines
943 B
C++
41 lines
943 B
C++
#ifndef ALSK_ALSK_IMPL_BONEIMPLBASE_H
|
|
#define ALSK_ALSK_IMPL_BONEIMPLBASE_H
|
|
|
|
#include <functional>
|
|
|
|
#include "execute.h"
|
|
#include "tags.h"
|
|
|
|
#include "../utility.h"
|
|
|
|
namespace alsk {
|
|
|
|
template<typename, typename, typename, typename> struct BoneImplBase;
|
|
|
|
template<
|
|
template<typename...> class Bone,
|
|
typename R, typename... Args, typename... Tasks,
|
|
typename Tag_, typename Executor_, typename State_
|
|
>
|
|
struct BoneImplBase<Bone<R(Args...), Tasks...>, Tag_, Executor_, State_> {
|
|
using Signature = R(Args...);
|
|
using Skeleton = Bone<Signature, Tasks...>;
|
|
using Tag = Tag_;
|
|
using Executor = Executor_;
|
|
using ExecutorInfo = typename std::decay_t<Executor_>::Info;
|
|
using State = State_;
|
|
using StateRef = std::reference_wrapper<State>;
|
|
|
|
using Return = RealType<R, typename Skeleton::Packs>;
|
|
|
|
ExecutorInfo executorInfo;
|
|
|
|
constexpr BoneImplBase() noexcept {}
|
|
|
|
std::size_t id = 0;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|