-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathOptionVars.h
125 lines (105 loc) · 2.92 KB
/
OptionVars.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#ifndef __OptionVars_h__
#define __OptionVars_h__
namespace
{
template <typename VAL, class CHILD>
class OptionVarBase
{
public:
OptionVarBase(const char *name, const VAL &defaultValue)
: myDefaultValue(defaultValue)
{
myName = "houdiniEngine";
myName += name;
bool exists = false;
static_cast<const CHILD &>(*this).getImpl(exists);
if (!exists)
{
MGlobal::setOptionVarValue(myName.c_str(), myDefaultValue);
}
}
VAL get() const
{
bool exists = false;
const VAL value = static_cast<const CHILD &>(*this).getImpl(exists);
return exists ? value : myDefaultValue;
}
bool set(VAL value) const
{
return static_cast<const CHILD &>(*this).setImpl(value);
}
protected:
std::string myName;
const VAL myDefaultValue;
private:
OptionVarBase &operator=(const OptionVarBase &);
};
class IntOptionVar : public OptionVarBase<int, IntOptionVar>
{
public:
typedef OptionVarBase<int, IntOptionVar> Base;
IntOptionVar(const char *name, int defaultValue) : Base(name, defaultValue)
{
}
int getImpl(bool &exists) const
{
return MGlobal::optionVarIntValue(myName.c_str(), &exists);
}
bool setImpl(int value) const
{
return MGlobal::setOptionVarValue(myName.c_str(), value);
}
};
class StringOptionVar : public OptionVarBase<MString, StringOptionVar>
{
public:
typedef OptionVarBase<MString, StringOptionVar> Base;
StringOptionVar(const char *name, const char *defaultValue)
: Base(name, defaultValue)
{
}
MString getImpl(bool &exists) const
{
return MGlobal::optionVarStringValue(myName.c_str(), &exists);
}
bool setImpl(MString &value) const
{
return MGlobal::setOptionVarValue(myName.c_str(), value);
}
};
struct OptionVars
{
OptionVars()
: hfsLocation("HfsLocation", ""),
hapilLocation("HapilLocation", ""),
asyncMode("AsynchronousMode", 1),
sessionType("SessionType", 2), // named pipe
thriftServer("ThriftServer", "localhost"),
thriftPort("ThriftPort", 9090),
sessionPipeCustom("SessionPipeCustom", 0),
thriftPipe("ThriftPipe", "hapi"),
unsetLLP("UnsetLLP", 1),
unsetPP("UnsetPP", 0),
viewProduct("ViewProduct", "Houdini Core"),
timeout("Timeout", 10 * 1000),
disableCooking("DisableCooking", 0)
{
}
StringOptionVar hfsLocation;
StringOptionVar hapilLocation;
IntOptionVar asyncMode;
IntOptionVar sessionType;
StringOptionVar thriftServer;
IntOptionVar thriftPort;
IntOptionVar sessionPipeCustom;
StringOptionVar thriftPipe;
IntOptionVar unsetLLP;
IntOptionVar unsetPP;
StringOptionVar viewProduct;
IntOptionVar timeout;
IntOptionVar disableCooking;
private:
OptionVars &operator=(const OptionVars &);
};
}
#endif