Mercurial > MadButterfly
diff include/mb_observer.h @ 192:54fdc2a65242
Remove factory from observer APIs.
- Save factory that used to new a subject as subject's attribute.
- Get factory from subject himself instead of passing as an argument.
- It make API of observer more simple and clean.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Tue, 18 Nov 2008 21:42:30 +0800 |
parents | 530bb7728546 |
children | f9d507a3e1d9 |
line wrap: on
line diff
--- a/include/mb_observer.h Tue Nov 18 13:55:09 2008 +0800 +++ b/include/mb_observer.h Tue Nov 18 21:42:30 2008 +0800 @@ -35,6 +35,7 @@ int obj_type; /*!< \brief type of object (a.k.a. OBJT_*). */ void *obj; /*!< \brief the object this subject for. */ int flags; + ob_factory_t *factory; STAILQ(observer_t) observers; }; /*! \brief Flag that make a subject to propagate events to parents. */ @@ -77,14 +78,11 @@ extern subject_t *subject_new(ob_factory_t *factory, void *obj, int obj_type); -extern void subject_free(ob_factory_t *factory, subject_t *subject); -extern void subject_notify(ob_factory_t *factory, - subject_t *subject, event_t *evt); -extern observer_t *subject_add_observer(ob_factory_t *factory, - subject_t *subject, +extern void subject_free(subject_t *subject); +extern void subject_notify(subject_t *subject, event_t *evt); +extern observer_t *subject_add_observer(subject_t *subject, evt_handler hdr, void *arg); -extern void subject_remove_observer(ob_factory_t *factory, - subject_t *subject, +extern void subject_remove_observer(subject_t *subject, observer_t *observer);