/
AutoFilterArgument.h
56 lines (51 loc) · 1.12 KB
/
AutoFilterArgument.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Copyright (C) 2012-2015 Leap Motion, Inc. All rights reserved.
#pragma once
#include "auto_arg.h"
#include <typeinfo>
/// <summary>
/// AutoFilter argument disposition
/// </summary>
struct AutoFilterArgument {
AutoFilterArgument(void) = default;
protected:
AutoFilterArgument(
bool is_input,
bool is_output,
bool is_shared,
bool is_multi,
auto_id id,
int tshift
) :
is_input(is_input),
is_output(is_output),
is_shared(is_shared),
is_multi(is_multi),
id(id),
tshift(tshift)
{}
public:
const bool is_input = false;
const bool is_output = false;
const bool is_shared = false;
const bool is_multi = false;
const auto_id id = auto_id_t<void>{};
const int tshift = 0;
explicit operator bool(void) const {
return static_cast<bool>(id);
}
};
template<typename T>
struct AutoFilterArgumentT:
AutoFilterArgument
{
AutoFilterArgumentT(void) :
AutoFilterArgument(
auto_arg<T>::is_input,
auto_arg<T>::is_output,
auto_arg<T>::is_shared,
auto_arg<T>::is_multi,
typename auto_arg<T>::id_type(),
auto_arg<T>::tshift
)
{}
};