NEURON
ocobserv.h
Go to the documentation of this file.
1
#ifndef ocobserve_h
2
#define ocobserve_h
3
4
#include <
InterViews/observe.h
>
5
6
struct
Object
;
7
class
cTemplate
;
8
9
// For an Observer watching a hoc Object
10
// when the last ref disappears, disconnect is called on the Observer
11
// Some objects may be written so that update gets called on the Observer
12
13
extern
"C"
{
14
void
hoc_obj_notify
(
Object
* ob);
15
}
16
17
class
ObjObservable
:
public
Observable
{
18
public
:
19
static
void
Attach
(
Object
*,
Observer
*);
20
static
void
Detach
(
Object
*,
Observer
*);
21
virtual
~ObjObservable
();
22
23
Object
*
object
() {
return
ob_
; }
24
private
:
25
ObjObservable
(
Object
*);
26
private
:
27
Object
*
ob_
;
28
};
29
30
// For an Observer watching a cTemplate
31
32
extern
"C"
{
33
void
hoc_template_notify
(
Object
*,
int
message);
34
}
// extern "C"
35
36
class
ClassObservable
:
public
Observable
{
37
public
:
38
// only the first two guarantee an update on the Observer
39
enum
{
Delete
, Create, Changed};
40
41
static
void
Attach
(
cTemplate
*,
Observer
*);
42
static
void
Detach
(
cTemplate
*,
Observer
*);
43
virtual
~
ClassObservable
();
44
45
cTemplate
*
ctemplate
() {
return
ct_; }
46
Object
*
object
() {
return
ob_
;}
47
int
message
() {
return
message_;}
48
private
:
49
friend
void
hoc_template_notify
(
Object
*,
int
);
50
ClassObservable
(
cTemplate
*);
51
void
attach
(
Observer
*);
52
void
detach
(
Observer
*);
53
private
:
54
cTemplate
*
ct_
;
55
Object
*
ob_
;
56
int
message_
;
57
int
cnt_
;
58
};
59
60
#endif
Observer
Definition:
observe.h:51
ObjObservable::ob_
Object * ob_
Definition:
ocobserv.h:27
ClassObservable
Definition:
ocobserv.h:36
ClassObservable::message_
int message_
Definition:
ocobserv.h:56
ClassObservable::object
Object * object()
Definition:
ocobserv.h:46
ClassObservable::Delete
Definition:
ocobserv.h:39
ObjObservable::Attach
static void Attach(Object *, Observer *)
Definition:
ocobserv.cpp:20
ObjObservable::object
Object * object()
Definition:
ocobserv.h:23
ClassObservable::message
int message()
Definition:
ocobserv.h:47
ObjObservable::ObjObservable
ObjObservable(Object *)
Definition:
ocobserv.cpp:34
ObjObservable
Definition:
ocobserv.h:17
Observable::attach
virtual void attach(Observer *)
Definition:
observe.cpp:54
observe.h
Observable
Definition:
observe.h:39
ClassObservable::ob_
Object * ob_
Definition:
ocobserv.h:55
ClassObservable::ctemplate
cTemplate * ctemplate()
Definition:
ocobserv.h:45
hoc_template_notify
void hoc_template_notify(Object *, int message)
Definition:
ocobserv.cpp:42
Object
Definition:
hocdec.h:226
Observable::detach
virtual void detach(Observer *)
Definition:
observe.cpp:63
ObjObservable::Detach
static void Detach(Object *, Observer *)
Definition:
ocobserv.cpp:27
cTemplate
Definition:
hocdec.h:191
ClassObservable::cnt_
int cnt_
Definition:
ocobserv.h:57
ClassObservable::ct_
cTemplate * ct_
Definition:
ocobserv.h:54
hoc_obj_notify
void hoc_obj_notify(Object *ob)
Definition:
ocobserv.cpp:14
ObjObservable::~ObjObservable
virtual ~ObjObservable()
Definition:
ocobserv.cpp:38
src
ivoc
ocobserv.h