28 #include <boost/shared_ptr.hpp>
30 #include "WCondition.h"
36 template <
typename T >
48 typedef boost::shared_ptr< WFlag< T > >
SPtr;
53 typedef boost::shared_ptr< const WFlag< T > >
ConstSPtr;
73 WFlag( boost::shared_ptr< WCondition > condition, T initial );
98 virtual const T
get(
bool resetChangeState = false );
105 virtual const T
get()
const;
119 virtual operator T()
const;
124 virtual void wait()
const;
136 virtual bool set( T value,
bool suppressNotification = false );
168 virtual bool accept( T newValue );
185 virtual bool changed(
bool reset =
false );
218 template <
typename T >
220 m_condition( boost::shared_ptr<
WCondition >( condition ) ),
227 template <
typename T >
229 m_condition( condition ),
236 template <
typename T >
240 m_flag( from.m_flag ),
241 m_changed( from.m_changed )
245 template <
typename T >
250 template <
typename T >
256 template <
typename T >
259 if( resetChangeState )
266 template <
typename T >
272 template <
typename T >
278 template <
typename T >
284 template <
typename T >
290 template <
typename T >
294 if( m_flag == value )
300 if( !accept( value ) )
309 if( !suppressNotification )
311 m_condition->notify();
313 m_valueChangeCondition->notify();
318 template <
typename T >
324 template <
typename T >
327 return m_valueChangeCondition;
330 template <
typename T >
337 template <
typename T >
340 return accept(
get() );
343 template <
typename T >
346 bool tmp = m_changed;