2 * Amiga Generic Set - set of libraries and includes to ease sw development for all Amiga platforms
3 * Copyright (C) 2001-2011 Tomasz Wiszkowski Tomasz.Wiszkowski at gmail.com.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 #ifndef _GENERIC_EXTPROPERTYT_H_
21 #define _GENERIC_EXTPROPERTYT_H_
28 class ExtPropertyT
: public Generic
34 virtual bool onPropSet(ExtPropertyT
<T
>*, const T
&) = 0;
35 virtual T
& onPropGet(ExtPropertyT
<T
>*) = 0;
41 virtual void onPropChange(ExtPropertyT
<T
>*, const T
&) = 0;
46 VectorT
<Monitor
*> monitors
;
54 virtual ~ExtPropertyT()
58 virtual ExtPropertyT
<T
>& operator = (const T
& t
)
64 if (handler
->onPropSet(this, t
))
72 return handler
->onPropGet(this);
75 virtual ExtPropertyT
<T
>& operator << (Monitor
*mon
)
81 mon
->onPropChange(this, handler
->onPropGet(this));
86 virtual ExtPropertyT
<T
>& operator >> (Monitor
*mon
)
92 virtual ExtPropertyT
<T
>& SetPropHandler(Handler
*f
)
98 virtual void NotifyAll()
103 for (int i
=0; i
<monitors
.Count(); i
++)
104 monitors
[i
]->onPropChange(this, handler
->onPropGet(this));