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
|