-
Notifications
You must be signed in to change notification settings - Fork 17
/
AutoFilterDescriptorInput.h
61 lines (56 loc) · 1.21 KB
/
AutoFilterDescriptorInput.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
57
58
59
60
61
// Copyright (C) 2012-2015 Leap Motion, Inc. All rights reserved.
#pragma once
#include "auto_arg.h"
#include <typeinfo>
/// <summary>
/// AutoFilter argument disposition
/// </summary>
struct AutoFilterDescriptorInput {
AutoFilterDescriptorInput(void) :
is_input(false),
is_output(false),
is_shared(false),
is_multi(false),
ti(nullptr),
tshift(0)
{}
AutoFilterDescriptorInput(
bool is_input,
bool is_output,
bool is_shared,
bool is_multi,
const std::type_info* ti,
int tshift
) :
is_input(is_input),
is_output(is_output),
is_shared(is_shared),
is_multi(is_multi),
ti(ti),
tshift(tshift)
{}
const bool is_input;
const bool is_output;
const bool is_shared;
const bool is_multi;
const std::type_info* const ti;
const int tshift;
operator bool(void) const {
return !!ti;
}
};
template<typename T>
struct AutoFilterDescriptorInputT:
AutoFilterDescriptorInput
{
AutoFilterDescriptorInputT(void) :
AutoFilterDescriptorInput(
auto_arg<T>::is_input,
auto_arg<T>::is_output,
auto_arg<T>::is_shared,
auto_arg<T>::is_multi,
&typeid(typename auto_arg<T>::id_type),
auto_arg<T>::tshift
)
{}
};