1 #include <../../nrnconf.h>
12 #include <InterViews/glyph.h>
13 #include <InterViews/hit.h>
14 #include <InterViews/event.h>
15 #include <InterViews/color.h>
16 #include <InterViews/brush.h>
17 #include <InterViews/window.h>
18 #include <InterViews/printer.h>
19 #include <InterViews/label.h>
20 #include <InterViews/font.h>
21 #include <InterViews/background.h>
22 #include <InterViews/style.h>
23 #include <InterViews/telltale.h>
25 #include <InterViews/image.h>
26 extern Image* gif_image(
const char*);
29 #include <IV-look/kit.h>
56 #define Graph_Crosshair_ "Crosshair Graph"
57 #define Graph_Change_label_ "ChangeText Graph"
58 #define Graph_keep_lines_toggle_ "KeepLines Graph"
59 #define Graph_erase_axis_ "AxisType Graph"
60 #define Graph_new_axis_ "NewAxis AxisType Graph"
61 #define Graph_view_axis_ "ViewAxis AxisType Graph"
62 #define Graph_view_box_ "ViewBox AxisType Graph"
63 #define Graph_erase_lines_ "Erase Graph"
64 #define Graph_choose_sym_ "PlotWhat Graph"
65 #define Graph_choose_family_label_ "FamilyLabel Graph"
66 #define Graph_choose_rvp_ "PlotRange Graph"
83 virtual ~GraphLabelItem(){};
98 virtual ~GraphAxisItem(){};
113 virtual ~GraphMarkItem(){};
128 virtual ~VectorLineItem(){};
135 class LineExtension:
public Glyph {
138 virtual ~LineExtension();
149 return (
DataVec*) gp_->x_data();
152 return (
DataVec*) gp_->y_data();
161 class NewLabelHandler:
public Handler {
165 virtual bool event(
Event&);
179 NewLabelHandler::~NewLabelHandler() {
182 bool NewLabelHandler::event(
Event&
e) {
185 GLabel* gl = g_->new_proto_label();
191 g_->vfixed(gl->
scale());
193 if (g_->labeltype() == 2) {
240 ntic = int(
chkarg(4, -1, 100));
247 nminor = int(
chkarg(5, 0, 100));
255 g->axis(d, x1, x2, pos, ntic, nminor,
invert, number);
287 *
Oc::save_stream <<
"save_window_.size(" <<
g->x1() <<
"," <<
g->x2() <<
"," <<
g->y1()
288 <<
"," <<
g->y2() <<
")\n";
290 sprintf(
buf,
"scene_vector_[%ld] = save_window_",
i);
293 g->Scene::mark(
true);
303 static void move_label(
Graph*
g,
const GLabel* lab,
int ioff = 0) {
305 if (
ifarg(4 + ioff) && lab) {
308 g->move(
g->glyph_index(lab), x, y);
339 ((
Scene*)
v)->picker()->add_menu(
gargstr(1),
new HocCommandAction(hc));
352 HocPanel::paneltool(
gargstr(1),
359 HocPanel::paneltool(
gargstr(1),
388 float x1, y1, x2, y2;
392 return view->
width();
406 return view->
right();
415 return view->
width() / (x2 - x1);
423 return view->
height() / (y2 - y1);
445 WidgetKit::instance()->font()->font_bbox(b);
446 return b.ascent() + b.descent();
478 if (i < 0 || i >
cnt - 1) {
482 for (
i += 1;
i <
cnt; ++
i) {
493 g->location(
g->glyph_index(gpl->
label()), a, b);
507 static void gr_add(
void*
v,
bool var) {
516 int fixtype =
g->labeltype();
547 if (
ifarg(3 + ioff)) {
548 if (
ifarg(6 + ioff)) {
549 fixtype = int(
chkarg(6 + ioff, 0, 2));
550 }
else if (
ifarg(4 + ioff)) {
556 gl =
g->add_var(expr,
565 gl =
g->add_var(expr,
g->color(),
g->brush(),
var, fixtype, pd, lab, obj);
567 move_label(
g, gl->
label(), ioff);
604 g->append(
new VectorLineItem(gv));
608 g->see_range_plot(gv);
625 int n = int(
chkarg(1, 1., 1.e5));
636 for (
int i = 0;
i <
n; ++
i) {
637 gv->
add(x[
i], y +
i);
813 Coord x1, y1, x2, y2;
815 XYView* view =
g->sceneview(0);
820 g->wholeplot(x1, y1, x2, y2);
833 view->
zout(x1, y1, x2, y2);
834 view->
size(x1, y1, x2, y2);
837 view->
zin(x1, y1, x2, y2);
839 switch (
int(
chkarg(1, 1., 4.))) {
876 }
else if (
ifarg(2)) {
897 scale =
chkarg(1, .01, 100);
899 ((
Graph*)
v)->fixed(scale);
912 scale =
chkarg(1, .01, 100);
914 ((
Graph*)
v)->vfixed(scale);
927 scale =
chkarg(1, .01, 100.);
929 ((
Graph*)
v)->relative(scale);
947 ((
Graph*)
v)->align(x, y);
981 float(
chkarg(3, 0, 1000)));
1003 for (
i = 0;
i < 8; ++
i) {
1006 XYView* view =
new XYView(x[0], x[1], x[2], x[3],
g, x[6], x[7]);
1007 Coord x1, x2, y1, y2;
1008 view->
zout(x1, y1, x2, y2);
1009 view->
size(x1, y1, x2, y2);
1012 w->
xplace(
int(x[4]),
int(x[5]));
1039 style = char(
chkarg(3, 0, 10));
1043 g->mark(x, y, style);
1044 }
else if (!
ifarg(5)) {
1045 g->mark(x, y, style,
chkarg(4, .1, 100.),
g->color(),
g->brush());
1067 n = ((
Scene*)
v)->view_count();
1093 bool vector_copy =
false;
1095 vector_copy = int(
chkarg(2, 0, 1));
1141 extern double gr_getline(
void*);
1273 static const char* colorname[] =
1274 {
"white",
"black",
"red",
"blue",
"green",
"orange",
"brown",
"violet",
"yellow",
"gray", 0};
1312 "couldn't lookup color \"%s\", you must be missing the\n\
1313 colormap.ini file or else the name isn't in it\n",
1336 static int brush_pattern[] = {0x0, 0xcccc, 0xfff0, 0xff00, 0xf000};
1344 for (
int j = 0;
j < 5; ++
j) {
1345 for (
int k = 0;
k < 5; ++
k) {
1371 b =
new Brush(width);
1402 MonoGlyph::pick(
c, a, depth, h);
1408 declareActionCallback(
Graph);
1409 implementActionCallback(
Graph);
1414 :
Scene(0, 0, XSCENE, YSCENE) {
1420 cross_action_ =
NULL;
1421 vector_copy_ =
false;
1423 family_label_ =
NULL;
1425 current_polyline_ =
NULL;
1436 mi->state()->set(TelltaleState::is_chosen,
true);
1439 picker()->add_radio_menu(
"Pick Vector", (
OcHandler*)
NULL, PICK);
1443 Menu* m = wk.pullright();
1450 picker()->add_menu(mi);
1454 mi = WidgetKit::instance()->check_menu_item(
"Keep Lines");
1456 keep_lines_toggle_ = mi->state();
1457 keep_lines_toggle_->ref();
1458 picker()->add_menu(
"Keep Lines", mi);
1459 picker()->add_menu(
"Family Label?",
1478 extension_flushed_ =
true;
1486 if (WidgetKit::instance()->style()->find_attribute(
"graph_axis_default",
i)) {
1551 for (
i = 0;
i <
cnt; ++
i) {
1565 for (
i = 0;
i <
cnt; ++
i) {
1569 if (gpl->
label() == glab) {
1587 for (
i = 0;
i <
cnt; ++
i) {
1623 if (glin->
label()) {
1630 for (
i = 0;
i <
cnt; ++
i) {
1655 for (
i = 0;
i <
cnt; ++
i) {
1670 o <<
"PolyLines" << endl;
1675 o << lcnt <<
" addvar/addexpr lines:";
1676 for (
i = 0;
i < lcnt; ++
i) {
1687 bool matrix_form =
true;
1691 for (
i = 0;
i < lcnt; ++
i) {
1702 matrix_form =
false;
1713 for (
i = 0;
i < lcnt; ++
i) {
1723 o << xcnt <<
" rows, " << col + 1 <<
" columns" << endl;
1725 for (
j = 0;
j < xcnt; ++
j) {
1727 for (
i = 0;
i < lcnt; ++
i) {
1732 o <<
"\t" << gpl->
y(
j);
1740 o <<
"Line Manifest:" << endl;
1741 for (
i = 0;
i < lcnt; ++
i) {
1755 o <<
"End of Line Manifest" << endl;
1756 for (
i = 0;
i < lcnt; ++
i) {
1768 for (
j = 0;
j < jcnt; ++
j) {
1769 o << gpl->
x(
j) <<
"\t" << gpl->
y(
j) <<
"\n";
1776 o <<
"Graph addvar/addexpr lines" << endl;
1777 o << lcnt <<
" " <<
x_->
count() << endl;
1788 for (
i = 0;
i < dcnt; ++
i) {
1798 for (
i = 0;
i < lcnt; ++
i) {
1802 if (!gpl->
label()) {
1807 o <<
n <<
" unlabeled lines" << endl;
1808 for (
i = 0;
i < lcnt; ++
i) {
1812 if (!gpl->
label()) {
1816 for (
j = 0;
j <
n; ++
j) {
1817 o << gpl->
x(
j) <<
"\t" << gpl->
y(
j) << endl;
1828 h.event()->pointer_button() ==
Event::left && h.count() < 2) {
1829 h.target(depth,
this, 0,
new NewLabelHandler(
this, h.left(), h.bottom()));
1832 if (h.event() && h.event()->type() == Event::down) {
1834 h.target(depth,
this, 0,
new RubberRect(
c,
new NewView(
this)));
1835 }
else if (h.event()->pointer_button() == Event::middle) {
1868 for (
i = 0;
i <
cnt; ++
i) {
1888 if (l >= r || b >=
t) {
1909 for (
i = 0;
i <
cnt; ++
i) {
1916 if (l >= r || b >=
t) {
1933 a =
new Axis(
this, d);
1934 }
else if (ntic < 0) {
1937 a =
new Axis(
this, d,
x1,
x2, pos, ntic, nminor,
invert, number);
1964 glab =
label(lab, fixtype);
1966 glab =
label(expr, fixtype);
1995 hoc_execerror(expr,
"is invalid left hand side of assignment statement");
2018 if (gl->
valid(
true) ==
false) {
2019 printf(
"Graph:: presently invalid expression: %s\n", gl->
name());
2068 for (
i = 0;
i <
cnt; ++
i) {
2076 for (
i=0;
i <
cnt; ++
i) {
2085 for (
i = 0;
i <
cnt; ++
i) {
2095 for (
i = 0;
i <
cnt; ++
i) {
2103 for (
i = 0;
i <
cnt; ++
i) {
2120 if (cp && strlen(cp) > 0) {
2148 printf(
"{x=%g y=%g}\n", gpl->
x(
i), gpl->
y(
i));
2161 printf(
"{x=%g y=%g}\n", x, y);
2179 for (
i =
count() - 1;
i >= 0; --
i) {
2201 Oc::help(Graph_keep_lines_toggle_);
2222 long lcnt =
count();
2223 for (
long i = lcnt - 1;
i >= 0; --
i) {
2276 }
else if (s && s[1]) {
2290 for (
i =
cnt - 1;
i >= 0; --
i) {
2335 void Graph::spec_axis() {
2366 for (
i = 0;
i <
cnt; ++
i) {
2376 for (
i = 0;
i <
cnt; ++
i) {
2381 for (
i =
cnt - 1;
i >= 0; --
i) {
2385 for (
i = 0;
i <
cnt; ++
i) {
2405 }
else if (fixtype == 2) {
2407 }
else if (fixtype == 0) {
2408 append(
new GraphLabelItem(l));
2463 static Graph* current_save_graph;
2486 current_save_graph =
this;
2487 for (
long i = 0;
i <
cnt; ++
i) {
2517 Style* style =
new Style(Session::instance()->style());
2518 style->attribute(
"caption",
"Variable to graph");
2524 if (!
v ||
v->scene() != (
Scene*)
this || !
v->canvas() || !
v->canvas()->window()) {
2529 w =
v->canvas()->window();
2531 while ((w &&
sc_->post_for_aligned(w, .5, 1.)) || (!w &&
sc_->post_at(300, 300))) {
2541 for (
int i = 0;
i <
n; ++
i) {
2542 gv->
add(
double(
i), pd +
i);
2547 append(
new VectorLineItem(gv));
2573 Oc::help(Graph_choose_family_label_);
2576 Style* style =
new Style(Session::instance()->style());
2577 style->attribute(
"caption",
"Family label variable");
2605 simgraph_x_sav_ =
NULL;
2617 hoc_execerror(expr,
"is invalid left hand side of assignment statement");
2633 if (!pval_ && !expr_) {
2640 extension_ =
new LineExtension(
this);
2680 extern void graphLineRecDeleted(
GraphLine*);
2686 graphLineRecDeleted(
this);
2735 printf(
"Can't change.\n");
2811 "save_window_.addvar(\"%s\", %d, %d, %g, %g, %d)",
2817 label()->fixtype());
2824 "save_window_.addexpr(\"%s\", %d, %d, %g, %g, %d)",
2830 label()->fixtype());
2850 const float eps = 1
e-4;
2852 span =
x_->
max() -
x + eps;
2853 x = (span > 0) ?
x / span : 0;
2856 span =
y_->
max() -
x + eps;
2857 x = (span > 0) ?
x / span : 0;
2878 Coord x1, y1, x2, y2;
2881 #define GPIN(arg) MyMath::inside(x_->get_val(arg), y_->get_val(arg), x1, y1, x2, y2)
2890 for (;
i <
cnt; ++
i) {
2927 if (cnt1 >
cnt - 2) {
2932 for (++
i;
i < cnt1; ++
i) {
2946 float xmax, xmin, ymax, ymin;
2955 for (
i = 0;
i <
cnt; ++
i) {
2964 for (
j =
cnt - 1;
i <
j; --
j) {
2987 for (++
i;
i <
cnt; ++
i) {
2994 for (++
i;
i <
cnt; ++
i) {
2997 c->push_transform();
3006 c->push_transform();
3022 }
else if (
valid()) {
3096 WidgetKit& kit = *WidgetKit::instance();
3129 "save_window_.label(%g, %g, \"%s\", %d, %g, %g, %g, %d)",
3159 WidgetKit& kit = *WidgetKit::instance();
3172 WidgetKit& kit = *WidgetKit::instance();
3207 c->push_transform();
3259 float* y =
new float[
size_];
3268 }
else if (x < -1e32) {
3339 if (imax >= low && imax < high) {
3343 for (m =
y_[low++]; low < high; low++) {
3353 if (imin >= low && imin < high) {
3357 for (m =
y_[low++]; low < high; low++) {
3373 cout << get_name() << endl;
3376 cout <<
y_[
i] << endl;
3392 double** px =
new double*[
size_];
3408 disconnect_defer_ =
false;
3459 if (
dp_->
p(
i) != &zero) {
3475 LineExtension::LineExtension(
GPolyLine* gp) {
3477 start_ = previous_ = -1;
3479 LineExtension::~LineExtension() {}
3482 previous_ = yd()->count() - 1;
3483 start_ = yd()->count() - 1;
3484 yd()->running_start();
3486 void LineExtension::extend() {
3488 start_ = yd()->count() - 1;
3489 yd()->running_start();
3493 void LineExtension::request(
Requisition& req)
const {
3496 const float eps = 1
e-4;
3497 x1 = xd()->running_min();
3498 x2 = xd()->running_max();
3501 x = (span > 0) ? x / span : 0;
3503 x1 = yd()->running_min();
3504 x2 = yd()->running_max();
3505 span = (x2 - x1) / 2;
3507 x = (span > 0) ? x / span : 0;
3520 if (previous_ >= 0) {
3521 gp_->draw_specific(
c, a, previous_, xd()->count());
3525 gp_->draw_specific(
c, a, start_, xd()->count());
3529 void LineExtension::damage(
Graph*
g) {
3530 g->damage(xd()->running_min(), yd()->running_min(), xd()->running_max(), yd()->running_max());
3550 for (
i = 0;
i <
cnt; ++
i) {
void allot_y(const Allotment &)
Allotment & x_allotment()
Allotment & y_allotment()
void allot_x(const Allotment &)
const Brush * brush_palette[BRUSH_SIZE]
const Brush * brush(int) const
const Color * color_palette[COLOR_SIZE]
const Color * color(int) const
DataPointers(int size=50)
Object ** new_vect(GLabel *g=NULL) const
float get_val(int i) const
virtual void draw(Canvas *, const Allocation &) const
void align(float x, float y)
virtual void allocate(Canvas *, const Allocation &, Extension &)
void relative(float scale)
const char * text() const
GPolyLine * labeled_line() const
GLabel(const char *s, const Color *, int fixtype=1, float size=12, float x_align=0., float y_align=0.)
virtual void save(std::ostream &, Coord, Coord)
void color(const Color *)
virtual void request(Requisition &) const
virtual Glyph * clone() const
const Color * color() const
virtual void request(Requisition &) const
void init(DataVec *, DataVec *, const Color *, const Brush *)
void brush(const Brush *)
const DataVec * y_data() const
const Brush * brush() const
virtual void allocate(Canvas *, const Allocation &, Extension &)
const DataVec * x_data() const
const Color * color() const
virtual void print(Printer *, const Allocation &) const
void color(const Color *)
void plot(Coord x, Coord y)
GPolyLine(DataVec *x, const Color *=NULL, const Brush *=NULL)
virtual void save(std::ostream &)
virtual void draw_specific(Canvas *, const Allocation &, int, int) const
virtual void erase_line(Scene *, GlyphIndex)
virtual void draw(Canvas *, const Allocation &) const
virtual void pick_vector()
void label_loc(Coord &x, Coord &y) const
virtual void erase(Scene *s, GlyphIndex i, int type)
virtual bool is_polyline()
void change_line_color(GPolyLine *)
const Color * color() const
virtual void new_size(Coord x1, Coord y1, Coord x2, Coord y2)
static std::ostream * ascii_
void cross_action(char, GPolyLine *, int)
const Brush * brush() const
virtual bool change_label(GLabel *, const char *, GLabel *gl=NULL)
void line(Coord x, Coord y)
virtual GlyphIndex glyph_index(const Glyph *)
void ascii_save(std::ostream &o) const
GraphLine * add_var(const char *, const Color *, const Brush *, bool usepointer, int fixtype=1, double *p=NULL, const char *lab=NULL, Object *obj=NULL)
void add_polyline(GPolyLine *)
TelltaleState * keep_lines_toggle_
virtual void see_range_plot(GraphVector *)
static bool label_chooser(const char *, char *, GLabel *, Coord x=400., Coord y=400.)
void family_label_chooser()
void begin_line(const char *s=NULL)
virtual void save_phase2(std::ostream &)
void change_label_color(GLabel *)
void add_graphVector(GraphVector *)
virtual void save_phase1(std::ostream &)
void x_expr(const char *, bool usepointer)
GLabel * new_proto_label() const
virtual void delete_label(GLabel *)
virtual void wholeplot(Coord &x1, Coord &y1, Coord &x2, Coord &y2) const
GPolyLine * current_polyline_
void relative(float scale)
HocCommand * cross_action_
void align(float x, float y)
virtual void draw(Canvas *, const Allocation &) const
void extension_continue()
GLabel * label(float x, float y, const char *s, int fixtype, float scale, float x_align, float y_align, const Color *)
static std::ostream * ascii()
void axis(DimensionName, float min, float max, float pos=0., int ntics=-1, int nminor=0, int invert=0, bool number=true)
void set_cross_action(const char *, Object *, bool vectorcopy=false)
virtual void pick(Canvas *, const Allocation &, int depth, Hit &)
virtual void pick(Canvas *, const Allocation &, int depth, Hit &)
virtual void erase(Scene *, GlyphIndex, int erase_type)
virtual bool is_graphVector()
GraphItem(Glyph *g, bool=true, bool pick=true)
virtual bool is_polyline()
bool valid(bool check=false)
LineExtension * extension_
const Brush * save_brush_
const Color * save_color_
const Color * save_color() const
GraphLine(const char *, DataVec *x, Symlist **, const Color *=NULL, const Brush *=NULL, bool usepointer=0, double *pd=NULL, Object *obj=NULL)
bool change_expr(const char *, Symlist **)
virtual void save(std::ostream &)
virtual void update(Observable *)
const char * name() const
void extension_continue()
void simgraph_continuous(double)
void simgraph_activate(bool)
const Brush * save_brush() const
DataVec * simgraph_x_sav_
virtual void save(std::ostream &)
virtual bool choose_sym(Graph *)
const char * name() const
GraphVector(const char *, const Color *=NULL, const Brush *=NULL)
virtual void request(Requisition &) const
void add(float, double *)
virtual void update(Observable *)
double func_call(int narg, int *perr=NULL)
int execute(bool notify=true)
static HocMark * instance(char style, float size, const Color *, const Brush *)
static MenuItem * menu_item(const char *)
static void extend(Extension &, Coord)
static bool inside(Coord x, Coord min, Coord max)
static void help(const char *)
int run(int argc, const char **argv)
static ostream * save_stream
static bool valid_expr(Symbol *)
void notify_when_freed(void *p, Observer *)
const char * name(Symbol *)
Symbol * parseExpr(const char *, Symlist **=NULL)
void notify_pointer_disconnect(Observer *)
void xplace(int left, int top)
void require_x(const Requirement &)
const Requirement & x_requirement() const
void require_y(const Requirement &)
const Requirement & y_requirement() const
virtual void unref() const
virtual GlyphIndex glyph_index(const Glyph *)
virtual void pick(Canvas *, const Allocation &, int depth, Hit &)
static long scene_list_index(Scene *)
virtual XYView * sceneview(int) const
void move(GlyphIndex, Coord x, Coord y)
virtual void change_to_fixed(GlyphIndex, XYView *)
virtual void damage(GlyphIndex)
virtual void background(Glyph *bg=NULL)
virtual void append_viewfixed(Glyph *)
static const Color * default_background()
void location(GlyphIndex, Coord &x, Coord &y) const
virtual void damage_all()
virtual void append(Glyph *)
virtual void change_to_vfixed(GlyphIndex, XYView *)
virtual void new_size(Coord x1, Coord y1, Coord x2, Coord y2)
static const Color * default_foreground()
virtual void change(GlyphIndex)
virtual void save_class(std::ostream &, const char *)
virtual int view_count() const
virtual void wholeplot(Coord &x1, Coord &y1, Coord &x2, Coord &y2) const
virtual GlyphIndex count() const
virtual Glyph * component(GlyphIndex) const
virtual void remove(GlyphIndex)
virtual void insert(GlyphIndex, Glyph *)
virtual void append_fixed(Glyph *)
virtual void modified(GlyphIndex)
virtual void draw(Canvas *, const Allocation &) const
virtual void set_scene_tool(int)
void bind_select(Rubberband *rb)
const char * string() const
virtual double * selected_var()
virtual const String * selected() const
virtual int selected_vector_count()
virtual void damage_area(Coord &x1, Coord &y1, Coord &x2, Coord &y2) const
virtual Coord bottom() const
virtual Coord height() const
virtual Coord top() const
virtual void view_ratio(float xratio, float yratio, Coord &x, Coord &y) const
virtual void zout(Coord &x1, Coord &y1, Coord &x2, Coord &y2) const
void size(Coord x1, Coord y1, Coord x2, Coord y2)
virtual Coord width() const
virtual Coord left() const
virtual void ratio_view(Coord x, Coord y, float &xratio, float &yratio) const
virtual void damage_all()
virtual Coord right() const
virtual void zin(Coord &x1, Coord &y1, Coord &x2, Coord &y2) const
static XYView * current_draw_view()
static XYView * current_pick_view()
const Transformer & s2o() const
sprintf(buf, " if (secondorder) {\n" " int _i;\n" " for (_i = 0; _i < %d; ++_i) {\n" " _p[_slist%d[_i]] += dt*_p[_dlist%d[_i]];\n" " }}\n", numeqn, listnum, listnum)
double chkarg(int, double low, double high)
void hoc_execerror(const char *, const char *)
unsigned int DimensionName
static double gr_view(void *v)
static double gr_simgraph(void *v)
double gr_addglyph(void *)
double ivoc_gr_menu_action(void *v)
static double gr_addexpr(void *v)
static double gr_view_count(void *v)
static double gr_addobject(void *v)
static void gr_destruct(void *v)
static double gr_fast_flush(void *v)
static double gr_begin(void *v)
static double gr_family(void *v)
double ivoc_gr_size(void *v)
static double gr_xaxis(void *v)
static double gr_align(void *v)
static double gr_vfixed(void *v)
double(* nrnpy_object_to_double_)(Object *)
static double exec_menu(void *v)
static double gr_set_cross_action(void *v)
static double gr_color(void *v)
static double gr_relative(void *v)
double ivoc_erase_all(void *v)
double ivoc_gr_line(void *v)
static double gr_flush(void *v)
double ivoc_gr_begin_line(void *v)
static Member_func gr_members[]
static double gr_plot(void *v)
double ivoc_view_size(void *v)
static double gr_addvar(void *v)
static double gr_save_name(void *v)
static double gr_fixed(void *v)
double gr_line_info(void *v)
static void * gr_cons(Object *ho)
static double gr_xexpr(void *v)
double ivoc_gr_menu_remove(void *v)
double ivoc_gr_gif(void *v)
double ivoc_gr_erase(void *v)
double ivoc_gr_mark(void *v)
static double gr_vector(void *v)
static double gr_printfile(void *v)
static double gr_brush(void *v)
static double gr_unmap(void *v)
double ivoc_view_info(void *v)
double ivoc_gr_menu_tool(void *v)
static double gr_yaxis(void *v)
double ivoc_gr_label(void *v)
int hoc_is_object_arg(int narg)
void hoc_obj_set(int i, Object *obj)
int hoc_is_str_arg(int narg)
double * hoc_val_pointer(const char *s)
int is_obj_type(Object *obj, const char *type_name)
void hoc_warning(const char *, const char *)
char * hoc_object_name(Object *ob)
int hoc_is_pdouble_arg(int narg)
double * hoc_pgetarg(int narg)
void hoc_obj_unref(Object *obj)
void hoc_push_object(Object *d)
#define TRY_GUI_REDIRECT_ACTUAL_DOUBLE(name, obj)
#define TRY_GUI_REDIRECT_NO_RETURN(name, obj)
#define TRY_GUI_REDIRECT_OBJ(name, obj)
Object ** hoc_objgetarg(int)
int hoc_execerror_messages
double * vector_vec(Vect *v)
double var(InputIterator begin, InputIterator end)
#define implementPtrList(PtrList, T)
double * nrn_recalc_ptr(double *)
static double check(double t, Daspk *ida)
int const size_t const size_t n
void class2oc(const char *, void *(*cons)(Object *), void(*destruct)(void *), Member_func *, int(*checkpoint)(void **), Member_ret_obj_func *, Member_ret_str_func *)
static philox4x32_key_t k
static double save(void *v)
void hoc_free_list(Symlist **)
bool var_pair_chooser(const char *, float &x, float &y, Window *w=NULL, Coord x1=400., Coord y1=400.)