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
|
/*********************************************************************************************************************
* Copyright 2013-2014 Tobii Technology AB. All rights reserved.
* StateBag.inl
*********************************************************************************************************************/
#if !defined(__TOBII_TX_CLIENT_CPPBINDINGS_STATEBAG__INL__)
#define __TOBII_TX_CLIENT_CPPBINDINGS_STATEBAG__INL__
/*********************************************************************************************************************/
TX_NAMESPACE_BEGIN
/*********************************************************************************************************************/
inline StateBag::StateBag(const std::shared_ptr<const Context>& spContext, TX_HANDLE hBag)
: InteractionObject(spContext, hBag)
{}
/*********************************************************************************************************************/
inline std::string StateBag::GetStatePath() const
{
return GetString(txGetStateBagPath, _hObject);
}
/*********************************************************************************************************************/
template <typename TValue>
inline bool StateBag::TryGetStateValue(TValue* pValue, const std::string& valuePath) const
{
std::shared_ptr<Property> spProperty;
if(!TryGetPropertyForStateValue(&spProperty, valuePath, false))
return false;
return spProperty->TryGetValue(pValue);
}
/*********************************************************************************************************************/
template <typename TValue>
inline void StateBag::SetStateValue(const std::string& valuePath, const TValue& value)
{
std::shared_ptr<Property> spProperty;
TryGetPropertyForStateValue(&spProperty, valuePath, true);
spProperty->SetValue(value);
}
/*********************************************************************************************************************/
inline void StateBag::SetAsync(AsyncDataHandler fnCompletion)
{
auto spThis = shared_from_this();
auto callback = [&, spThis, fnCompletion](TX_CONSTHANDLE hAsyncData)
{
GetContext()->InvokeAsyncDataHandler(hAsyncData, fnCompletion);
};
TX_VALIDATE(Tx::SetStateAsync(GetHandle(), callback));
}
/*********************************************************************************************************************/
inline bool StateBag::TryGetPropertyForStateValue(std::shared_ptr<Property>* pspProperty, const std::string& valuePath, bool createIfNotExists) const
{
TX_PROPERTYHANDLE hProperty;
if (!TX_VALIDATE(txGetPropertyForStateValue(_hObject, &hProperty, valuePath.c_str(), createIfNotExists ? TX_TRUE : TX_FALSE), TX_RESULT_NOTFOUND))
return false;
*pspProperty = _spContext->CreateProperty(hProperty);
return true;
}
/*********************************************************************************************************************/
TX_NAMESPACE_END
/*********************************************************************************************************************/
#endif // !defined(__TOBII_TX_CLIENT_CPPBINDINGS_STATEBAG__INL__)
/*********************************************************************************************************************/
|