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:
26 private:
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);
51  void attach(Observer*);
52  void detach(Observer*);
53 private:
56  int message_;
57  int cnt_;
58 };
59 
60 #endif
Object * ob_
Definition: ocobserv.h:27
Object * object()
Definition: ocobserv.h:46
static void Attach(Object *, Observer *)
Definition: ocobserv.cpp:20
Object * object()
Definition: ocobserv.h:23
int message()
Definition: ocobserv.h:47
ObjObservable(Object *)
Definition: ocobserv.cpp:34
virtual void attach(Observer *)
Definition: observe.cpp:54
Object * ob_
Definition: ocobserv.h:55
cTemplate * ctemplate()
Definition: ocobserv.h:45
void hoc_template_notify(Object *, int message)
Definition: ocobserv.cpp:42
Definition: hocdec.h:226
virtual void detach(Observer *)
Definition: observe.cpp:63
static void Detach(Object *, Observer *)
Definition: ocobserv.cpp:27
cTemplate * ct_
Definition: ocobserv.h:54
void hoc_obj_notify(Object *ob)
Definition: ocobserv.cpp:14
virtual ~ObjObservable()
Definition: ocobserv.cpp:38