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 struct 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 
24  return ob_;
25  }
26 
27  private:
29 
30  private:
32 };
33 
34 // For an Observer watching a cTemplate
35 
36 extern "C" {
37 void hoc_template_notify(Object*, int message);
38 } // extern "C"
39 
40 class ClassObservable: public Observable {
41  public:
42  // only the first two guarantee an update on the Observer
43  enum { Delete, Create, Changed };
44 
45  static void Attach(cTemplate*, Observer*);
46  static void Detach(cTemplate*, Observer*);
47  virtual ~ClassObservable();
48 
50  return ct_;
51  }
53  return ob_;
54  }
55  int message() {
56  return message_;
57  }
58 
59  private:
60  friend void hoc_template_notify(Object*, int);
62  void attach(Observer*);
63  void detach(Observer*);
64 
65  private:
68  int message_;
69  int cnt_;
70 };
71 
72 #endif
friend void hoc_template_notify(Object *, int)
Definition: ocobserv.cpp:41
static void Detach(cTemplate *, Observer *)
Definition: ocobserv.cpp:58
static void Attach(cTemplate *, Observer *)
Definition: ocobserv.cpp:50
cTemplate * ctemplate()
Definition: ocobserv.h:49
int message()
Definition: ocobserv.h:55
ClassObservable(cTemplate *)
Definition: ocobserv.cpp:69
Object * ob_
Definition: ocobserv.h:67
Object * object()
Definition: ocobserv.h:52
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
Object * object()
Definition: ocobserv.h:23
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
void hoc_obj_notify(Object *ob)
Definition: ocobserv.cpp:14
void hoc_template_notify(Object *, int message)
Definition: ocobserv.cpp:41
Definition: hocdec.h:227