static double ste_state(void* v) { StateTransitionEvent* ste = (StateTransitionEvent*)v; int state = ste->state(); if (ifarg(1)) { ste->state((int)chkarg(1, 0, ste->nstate()-1)); } return (double)state; }
static double ste_transition(void* v) { StateTransitionEvent* ste = (StateTransitionEvent*)v; int src = (int)chkarg(1, 0, ste->nstate()-1); int dest = (int)chkarg(2, 0, ste->nstate()-1); if (src == dest) { hoc_execerror("source and destination are the same", 0); } double* var1 = hoc_pgetarg(3); double* var2 = hoc_pgetarg(4); char* stmt = gargstr(5); Object* obj = nil; if (ifarg(6)) { obj = hoc_obj_get(6); } ste->transition(src, dest, var1, var2, 1, stmt, obj); return 1.; }
static double ste_transition(void* v) { StateTransitionEvent* ste = (StateTransitionEvent*)v; int src = (int)chkarg(1, 0, ste->nstate()-1); int dest = (int)chkarg(2, 0, ste->nstate()-1); double* var1 = hoc_pgetarg(3); double* var2 = hoc_pgetarg(4); HocCommand* hc = NULL; if (ifarg(5)) { Object* obj = NULL; if (hoc_is_str_arg(5)) { char* stmt = NULL; stmt = gargstr(5); if (ifarg(6)) { obj = *hoc_objgetarg(6); } hc = new HocCommand(stmt, obj); }else{ obj = *hoc_objgetarg(5); hc = new HocCommand(obj); } } ste->transition(src, dest, var1, var2, hc); return 1.; }