7 #ifndef _QI_PROPERTY_HPP_
8 #define _QI_PROPERTY_HPP_
10 #include <boost/function.hpp>
11 #include <boost/thread/mutex.hpp>
16 # pragma warning( push )
18 # pragma warning( disable: 4251 )
20 # pragma warning( disable: 4275 )
43 using Setter = boost::function<bool (T&, const T&)>;
44 using Getter = boost::function<T(const T&)>;
93 :
PropertyImpl<T>(std::move(getter), std::move(setter), std::move(onsubscribe))
98 :
PropertyImpl<T>(std::move(defaultValue), std::move(getter), std::move(setter), std::move(onsubscribe))
125 class ScopedLockReadWrite;
126 class ScopedLockReadOnly;
130 :
PropertyImpl<T>(std::move(getter), std::move(setter), std::move(onsubscribe))
135 :
PropertyImpl<T>(std::move(defaultValue), std::move(getter), std::move(setter), std::move(onsubscribe))
152 mutable boost::mutex _mutex;
165 : _property(property)
166 , _lock(property._mutex)
172 _property(_property._value);
183 boost::mutex::scoped_lock _lock;
196 : _property(property)
197 , _lock(property._mutex)
201 const T&
get()
const {
return _property._value; }
207 boost::mutex::scoped_lock _lock;
220 std::vector<TypeInterface*> types(&_type, &_type + 1);
239 # pragma warning( pop )
242 #endif // _QITYPE_PROPERTY_HPP_
FutureSync< AnyValue > value() const override
void setValue(qi::Promise< R > &p, const boost::function< R()> &f)
GenericProperty & operator=(const AnyValue &v)
boost::function< void(bool)> OnSubscribers
FutureSync< void > setValue(AutoAnyReference value) override
SignalBase * signal() override
const T * operator->() const
ScopedLockReadWrite getLockedReadWrite()
typename ImplType::Getter Getter
Property(AutoAnyReference defaultValue, Getter getter=Getter(), Setter setter=Setter(), SignalBase::OnSubscribers onsubscribe=SignalBase::OnSubscribers())
typename ImplType::Getter Getter
UnsafeProperty(AutoAnyReference defaultValue, Getter getter=Getter(), Setter setter=Setter(), SignalBase::OnSubscribers onsubscribe=SignalBase::OnSubscribers())
typename ImplType::Setter Setter
FutureSync< void > setValue(AutoAnyReference value) override
qi::Signature signature() const override
boost::function< AnyValue(const AnyValue &)> Getter
UnsafeProperty(Getter getter=Getter(), Setter setter=Setter(), SignalBase::OnSubscribers onsubscribe=SignalBase::OnSubscribers())
GenericProperty(TypeInterface *type, Getter getter=Getter(), Setter setter=Setter())
virtual FutureSync< void > set(const T &v)=0
ScopedLockReadOnly(const Property< T > &property)
FutureSync< void > set(const T &v) override
Type-erased property, simulating a typed property but using AnyValue.
UnsafeProperty< T > & operator=(const T &v)
PropertyImpl(Getter getter=Getter(), Setter setter=Setter(), SignalBase::OnSubscribers onsubscribe=SignalBase::OnSubscribers())
Property(Getter getter=Getter(), Setter setter=Setter(), SignalBase::OnSubscribers onsubscribe=SignalBase::OnSubscribers())
qi::Signature makeTupleSignature(const std::vector< qi::AnyReference > &vgv, bool resolveDynamic=false, const std::string &name=std::string(), const std::vector< std::string > &names=std::vector< std::string >())
SignalBase * signal() override
FutureSync< void > set(const T &v) override
PropertyImpl< T > & operator=(const T &v)
ScopedLockReadWrite(Property< T > &property)
const T & operator*() const
typename ImplType::Setter Setter
boost::function< bool(AnyValue &, const AnyValue &)> Setter
const T & operator*() const
Property< T > & operator=(const T &v)
ScopedLockReadOnly getLockedReadOnly() const
FutureSync< AnyValue > value() const override
FutureSync< void > setValue(AutoAnyReference value) override
const T * operator->() const
SignalBase * signal() override