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);