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 
42 void hoc_template_notify(Object* ob, int message) {
43  ClassObservable* co = (ClassObservable*)ob->ctemplate->observers;
44  if(co) {
45  co->ob_ = ob;
46  co->message_ = message;
47  co->notify();
48  }
49 }
50 
52  if (!ct->observers) {
53  ct->observers = (void*)(new ClassObservable(ct));
54  }
56  co->attach(view);
57 }
58 
60  if (!ct->observers) {
61  return;
62  }
64  co->detach(view);
65  if (co->cnt_ <= 0) {
66  delete co;
67  }
68 }
69 
71  ct_ = ct;
72  ob_ = NULL;
73  message_ = 0;
74  cnt_ = 0;
75 }
76 
78  ct_->observers = NULL;
79 }
80 
83  ++cnt_;
84 }
85 
88  --cnt_;
89 }
90 
o
Definition: seclist.cpp:180
void hoc_obj_notify(Object *ob)
Definition: ocobserv.cpp:14
void hoc_obj_disconnect(Object *)
Definition: ocobserv.cpp:9
Object * ob_
Definition: ocobserv.h:27
ClassObservable(cTemplate *)
Definition: ocobserv.cpp:70
void hoc_template_notify(Object *ob, int message)
Definition: ocobserv.cpp:42
void detach(Observer *)
Definition: ocobserv.cpp:86
virtual void notify()
Definition: observe.cpp:75
static void Attach(Object *, Observer *)
Definition: ocobserv.cpp:20
void * observers
Definition: hocdec.h:241
static void Detach(cTemplate *, Observer *)
Definition: ocobserv.cpp:59
virtual ~ClassObservable()
Definition: ocobserv.cpp:77
ObjObservable(Object *)
Definition: ocobserv.cpp:34
static void Attach(cTemplate *, Observer *)
Definition: ocobserv.cpp:51
virtual void attach(Observer *)
Definition: observe.cpp:54
Object * ob_
Definition: ocobserv.h:55
char * ct
Definition: xred.cpp:178
void attach(Observer *)
Definition: ocobserv.cpp:81
Definition: hocdec.h:226
virtual void detach(Observer *)
Definition: observe.cpp:63
static void Detach(Object *, Observer *)
Definition: ocobserv.cpp:27
void * observers
Definition: hocdec.h:205
return NULL
Definition: cabcode.cpp:461
virtual ~ObjObservable()
Definition: ocobserv.cpp:38