include/mb_observer.h File Reference

#include "mb_tools.h"

Go to the source code of this file.

Classes

struct  _event
struct  _observer
 Observer of observer pattern. More...
struct  _subject
 Subject of observer pattern. More...
struct  _mouse_event
struct  _ob_factory
 Observer factory. More...

Defines

#define SUBF_STOP_PROPAGATE   0x1
 Flag that make a subject to propagate events to parents.
#define SUBF_BUSY   0x2
 in subject_notify()
#define SUBF_FREE   0x4
 in postponding subject_free()
#define MOUSE_BUT1   0x1
#define MOUSE_BUT2   0x2
#define MOUSE_BUT3   0x4

Typedefs

typedef struct _event event_t
typedef struct _observer observer_t
typedef struct _subject subject_t
typedef struct _mouse_event mouse_event_t
typedef struct _ob_factory ob_factory_t
typedef void(* evt_handler )(event_t *event, void *arg)

Enumerations

enum  {
  OBJT_GEO, OBJT_COORD, OBJT_KB, OBJT_PROGM,
  OBJT_RDMAN
}
enum  {
  EVT_MOUSE_OVER, EVT_MOUSE_OUT, EVT_MOUSE_MOVE, EVT_MOUSE_BUT_PRESS,
  EVT_MOUSE_BUT_RELEASE, EVT_KB_PRESS, EVT_KB_RELEASE, EVT_PROGM_COMPLETE,
  EVT_RDMAN_REDRAW
}

Functions

subject_tsubject_new (ob_factory_t *factory, void *obj, int obj_type)
void subject_free (ob_factory_t *factory, subject_t *subject)
void subject_notify (ob_factory_t *factory, subject_t *subject, event_t *evt)
observer_tsubject_add_observer (ob_factory_t *factory, subject_t *subject, evt_handler hdr, void *arg)
void subject_remove_observer (ob_factory_t *factory, subject_t *subject, observer_t *observer)


Define Documentation

#define MOUSE_BUT1   0x1

Definition at line 54 of file mb_observer.h.

#define MOUSE_BUT2   0x2

Definition at line 55 of file mb_observer.h.

#define MOUSE_BUT3   0x4

Definition at line 56 of file mb_observer.h.

#define SUBF_BUSY   0x2

in subject_notify()

Definition at line 42 of file mb_observer.h.

#define SUBF_FREE   0x4

in postponding subject_free()

Definition at line 43 of file mb_observer.h.

#define SUBF_STOP_PROPAGATE   0x1

Flag that make a subject to propagate events to parents.

Definition at line 41 of file mb_observer.h.


Typedef Documentation

typedef struct _event event_t

Definition at line 6 of file mb_observer.h.

typedef void(* evt_handler)(event_t *event, void *arg)

Definition at line 11 of file mb_observer.h.

typedef struct _mouse_event mouse_event_t

Definition at line 9 of file mb_observer.h.

typedef struct _ob_factory ob_factory_t

Definition at line 10 of file mb_observer.h.

typedef struct _observer observer_t

Definition at line 7 of file mb_observer.h.

typedef struct _subject subject_t

Definition at line 8 of file mb_observer.h.


Enumeration Type Documentation

anonymous enum

Enumerator:
OBJT_GEO 
OBJT_COORD 
OBJT_KB 
OBJT_PROGM 
OBJT_RDMAN 

Definition at line 45 of file mb_observer.h.

anonymous enum

Enumerator:
EVT_MOUSE_OVER 
EVT_MOUSE_OUT 
EVT_MOUSE_MOVE 
EVT_MOUSE_BUT_PRESS 
EVT_MOUSE_BUT_RELEASE 
EVT_KB_PRESS 
EVT_KB_RELEASE 
EVT_PROGM_COMPLETE 
EVT_RDMAN_REDRAW 

Definition at line 73 of file mb_observer.h.


Function Documentation

observer_t* subject_add_observer ( ob_factory_t factory,
subject_t subject,
evt_handler  hdr,
void *  arg 
)

Definition at line 79 of file observer.c.

void subject_free ( ob_factory_t factory,
subject_t subject 
)

Todo:
Keep ob_factory following subject objects.

Definition at line 28 of file observer.c.

subject_t* subject_new ( ob_factory_t factory,
void *  obj,
int  obj_type 
)

Definition at line 10 of file observer.c.

void subject_notify ( ob_factory_t factory,
subject_t subject,
event_t evt 
)

Note:
What is happend when the subject is freed by observer? Postponding the request of free until notification been finished. (SUBF_BUSY / SUBF_FREE)

Definition at line 48 of file observer.c.

void subject_remove_observer ( ob_factory_t factory,
subject_t subject,
observer_t observer 
)

Definition at line 95 of file observer.c.

SourceForge.net Logo