NEURON
oc2iv.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string.h>
4 #include <stdio.h>
5 // common things in oc that can be used by ivoc
6 #include "hocdec.h"
7 
8 // xmenu
9 #define CChar const char
10 extern void hoc_ivpanel(CChar*, bool h = false);
11 extern void hoc_ivpanelmap(int scroll = -1);
12 extern void hoc_ivbutton(CChar* name, CChar* action, Object* pyact = 0);
13 extern void hoc_ivradiobutton(CChar* name, CChar* action, bool activate = false, Object* pyact = 0);
14 extern void hoc_ivmenu(CChar*, bool add2menubar = false);
15 extern void hoc_ivvarmenu(CChar*, CChar*, bool add2menubar = false, Object* pyvar = NULL);
16 extern void hoc_ivvalue(CChar* name, CChar* variable, bool deflt = false, Object* pyvar = 0);
18  CChar* variable,
19  bool deflt = false,
20  bool usepointer = false);
21 extern void hoc_ivvalue_keep_updated(CChar* name, CChar* variable, Object* pyvar = 0);
24  bool deflt = false,
25  HocSymExtension* extra = NULL);
26 extern void hoc_ivvaluerun(CChar* name,
27  CChar* variable,
28  CChar* action,
29  bool deflt = false,
30  bool canrun = false,
31  bool usepointer = false,
32  Object* pyvar = 0,
33  Object* pyact = 0);
35  CChar* var,
37  Object* pyvar,
38  CChar* action,
39  Object* pyact,
40  bool deflt = false,
41  bool canrun = false,
42  bool usepointer = false,
43  HocSymExtension* extra = NULL);
46  CChar* action,
47  bool deflt = false,
48  bool canrun = false,
49  HocSymExtension* extra = NULL);
50 
51 extern void hoc_ivlabel(CChar*);
52 extern void hoc_ivvarlabel(char**, Object* pyvar = 0);
54  CChar* name,
55  CChar* action,
56  int style,
57  Object* pyvar = 0,
58  Object* pyact = 0);
60  float low = 0,
61  float high = 100,
62  float resolution = 1,
63  int steps = 10,
64  const char* send_cmd = NULL,
65  bool vert = false,
66  bool slow = false,
67  Object* pyvar = 0,
68  Object* pyact = 0);
69 
70 inline double* object_pval(Symbol* sym, Objectdata* od) {
71  return od[sym->u.oboff].pval;
72 }
73 inline char* object_str(Symbol* sym, Objectdata* od) {
74  return *od[sym->u.oboff].ppstr;
75 }
76 inline char** object_pstr(Symbol* sym, Objectdata* od) {
77  return od[sym->u.oboff].ppstr;
78 }
79 inline Object** object_pobj(Symbol* sym, Objectdata* od) {
80  return od[sym->u.oboff].pobj;
81 }
83  return od[sym->u.oboff].psecitm;
84 }
85 
86 class Oc2IV {
87  public:
88  static char** object_pstr(const char* symname, Object* = NULL);
89  static char* object_str(const char* symname, Object* = NULL);
90 };
91 
92 struct Symlist;
93 
94 #ifndef OCMATRIX
95 
97  public:
98  ParseTopLevel();
99  virtual ~ParseTopLevel();
100  void save();
101  void restore();
102 
103  private:
107  bool restored_;
108 };
109 #endif
Definition: oc2iv.h:86
static char ** object_pstr(const char *symname, Object *=NULL)
Definition: oc2iv.cpp:24
static char * object_str(const char *symname, Object *=NULL)
Definition: oc2iv.cpp:13
virtual ~ParseTopLevel()
Definition: oc2iv.cpp:50
Object * obsav_
Definition: oc2iv.h:105
Objectdata * obdsav_
Definition: oc2iv.h:104
Symlist * symsav_
Definition: oc2iv.h:106
void save()
Definition: oc2iv.cpp:53
void restore()
Definition: oc2iv.cpp:71
bool restored_
Definition: oc2iv.h:107
ParseTopLevel()
Definition: oc2iv.cpp:46
double var(InputIterator begin, InputIterator end)
Definition: ivocvect.h:108
const char * name
Definition: init.cpp:16
#define CChar
Definition: oc2iv.h:9
char ** object_pstr(Symbol *sym, Objectdata *od)
Definition: oc2iv.h:76
void hoc_ivvarlabel(char **, Object *pyvar=0)
Object ** object_pobj(Symbol *sym, Objectdata *od)
Definition: oc2iv.h:79
void hoc_ivvalue(CChar *name, CChar *variable, bool deflt=false, Object *pyvar=0)
void hoc_ivpvalue(CChar *name, neuron::container::data_handle< double >, bool deflt=false, HocSymExtension *extra=NULL)
void hoc_ivpvaluerun(CChar *name, neuron::container::data_handle< double >, CChar *action, bool deflt=false, bool canrun=false, HocSymExtension *extra=NULL)
void hoc_ivbutton(CChar *name, CChar *action, Object *pyact=0)
void hoc_ivstatebutton(neuron::container::data_handle< double >, CChar *name, CChar *action, int style, Object *pyvar=0, Object *pyact=0)
void hoc_ivmenu(CChar *, bool add2menubar=false)
hoc_Item ** object_psecitm(Symbol *sym, Objectdata *od)
Definition: oc2iv.h:82
void hoc_ivvalue_keep_updated(CChar *name, CChar *variable, Object *pyvar=0)
void hoc_ivradiobutton(CChar *name, CChar *action, bool activate=false, Object *pyact=0)
void hoc_ivpanelmap(int scroll=-1)
char * object_str(Symbol *sym, Objectdata *od)
Definition: oc2iv.h:73
double * object_pval(Symbol *sym, Objectdata *od)
Definition: oc2iv.h:70
void hoc_ivslider(neuron::container::data_handle< double >, float low=0, float high=100, float resolution=1, int steps=10, const char *send_cmd=NULL, bool vert=false, bool slow=false, Object *pyvar=0, Object *pyact=0)
void hoc_ivfixedvalue(CChar *name, CChar *variable, bool deflt=false, bool usepointer=false)
void hoc_ivvaluerun(CChar *name, CChar *variable, CChar *action, bool deflt=false, bool canrun=false, bool usepointer=false, Object *pyvar=0, Object *pyact=0)
void hoc_ivvaluerun_ex(CChar *name, CChar *var, neuron::container::data_handle< double > pvar, Object *pyvar, CChar *action, Object *pyact, bool deflt=false, bool canrun=false, bool usepointer=false, HocSymExtension *extra=NULL)
void hoc_ivpanel(CChar *, bool h=false)
void hoc_ivlabel(CChar *)
void hoc_ivvarmenu(CChar *, CChar *, bool add2menubar=false, Object *pyvar=NULL)
static void activate()
#define NULL
Definition: spdefs.h:105
Definition: hocdec.h:173
Definition: model.h:47
union Symbol::@28 u
int oboff
Definition: hocdec.h:111
Definition: hocdec.h:75
char ** ppstr
Definition: hocdec.h:165
hoc_Item ** psecitm
Definition: hocdec.h:167
double * pval
Definition: hocdec.h:164
Object ** pobj
Definition: hocdec.h:166