NEURON
ocobserv.cpp
Go to the documentation of this file.
1 #include <../../nrnconf.h>
2 #include "ocobserv.h"
3 #include "oc2iv.h"
4 
5 extern "C" {
6 extern void hoc_obj_disconnect(Object*);
7 } // extern "C"
8 
10  delete ((ObjObservable*) ob->observers);
11  ob->observers = NULL;
12 }
13 
15  if (ob->observers) {
16  ((ObjObservable*) ob->observers)->notify();
17  }
18 }
19 
21  if (!ob->observers) {
22  ob->observers = (void*) (new ObjObservable(ob));
23  }
24  ((ObjObservable*) ob->observers)->attach(view);
25 }
26 
28  if (!ob->observers) {
29  return;
30  }
31  ((ObjObservable*) ob->observers)->detach(view);
32 }
33 
35  ob_ = ob;
36 }
37 
39 
40 
41 void hoc_template_notify(Object* ob, int message) {
42  ClassObservable* co = (ClassObservable*) ob->ctemplate->observers;
43  if (co) {
44  co->ob_ = ob;
45  co->message_ = message;
46  co->notify();
47  }
48 }
49 
51  if (!ct->observers) {
52  ct->observers = (void*) (new ClassObservable(ct));
53  }
55  co->attach(view);
56 }
57 
59  if (!ct->observers) {
60  return;
61  }
63  co->detach(view);
64  if (co->cnt_ <= 0) {
65  delete co;
66  }
67 }
68 
70  ct_ = ct;
71  ob_ = NULL;
72  message_ = 0;
73  cnt_ = 0;
74 }
75 
77  ct_->observers = NULL;
78 }
79 
82  ++cnt_;
83 }
84 
87  --cnt_;
88 }
static void Detach(cTemplate *, Observer *)
Definition: ocobserv.cpp:58
static void Attach(cTemplate *, Observer *)
Definition: ocobserv.cpp:50
ClassObservable(cTemplate *)
Definition: ocobserv.cpp:69
Object * ob_
Definition: ocobserv.h:67
virtual ~ClassObservable()
Definition: ocobserv.cpp:76
cTemplate * ct_
Definition: ocobserv.h:66
void detach(Observer *)
Definition: ocobserv.cpp:85
void attach(Observer *)
Definition: ocobserv.cpp:80
static void Detach(Object *, Observer *)
Definition: ocobserv.cpp:27
virtual ~ObjObservable()
Definition: ocobserv.cpp:38
Object * ob_
Definition: ocobserv.h:31
static void Attach(Object *, Observer *)
Definition: ocobserv.cpp:20
ObjObservable(Object *)
Definition: ocobserv.cpp:34
virtual void notify()
Definition: observe.cpp:75
virtual void attach(Observer *)
Definition: observe.cpp:54
virtual void detach(Observer *)
Definition: observe.cpp:63
void hoc_template_notify(Object *ob, int message)
Definition: ocobserv.cpp:41
void hoc_obj_disconnect(Object *)
Definition: ocobserv.cpp:9
void hoc_obj_notify(Object *ob)
Definition: ocobserv.cpp:14
if(status)
o
Definition: seclist.cpp:175
#define NULL
Definition: sptree.h:16
Definition: hocdec.h:227
void * observers
Definition: hocdec.h:243
void * observers
Definition: hocdec.h:206