static int new_folder (CalcHandle* handle, VarRequest* vr) { uint8_t data[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x40, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23 }; char varname[18]; char *utf8; tifiles_build_fullname(handle->model, varname, vr->folder, "a1234567"); utf8 = ticonv_varname_to_utf8(handle->model, vr->folder, -1); g_snprintf(update_->text, sizeof(update_->text), _("Creating %s..."), utf8); g_free(utf8); update_label(); // send empty expression TRYF(ti92_send_RTS(0x10, 0x00, varname)); TRYF(ti92_recv_ACK(NULL)); TRYF(ti92_recv_CTS()); TRYF(ti92_send_ACK()); TRYF(ti92_send_XDP(0x10, data)); TRYF(ti92_recv_ACK(NULL)); TRYF(ti92_send_EOT()); TRYF(ti92_recv_ACK(NULL)); // delete 'a1234567' variable strcpy(vr->name, "a1234567"); TRYF(del_var(handle, vr)); return 0; }
/* compose -- evaluate a sequential composition or piping */ PRIVATE env compose(tree t, env e, tok ldec, tok rdec, char *kind) { env e1 = tc_sexp(t->x_arg1, e); env e2 = tc_sexp(t->x_arg2, e); env ee = new_env(e); def q; /* Get vars from left arg that don't match */ for (;;) { def d = pop_def(e1); if (d == NULL) break; else if (d->d_name->s_decor != ldec) push_def(d, ee); else { sym rname = mk_symbol(d->d_name->s_basename, rdec); type rtype = del_var(rname, e2); if (rtype == NULL) push_def(d, ee); else if (! unify(d->d_type, rtype)) { tc_error(t->x_loc, "Type mismatch in %s", kind); tc_e_etc("Expression: %z", t); tc_e_etc("Type of %n in LHS: %t", d->d_name, d->d_type); tc_e_etc("Type of %n in RHS: %t", rname, rtype); tc_e_end(); } } } /* Now merge the unmatched vars from the right */ for (q = e2->e_defs; q != NULL; q = q->d_next) merge_def(VAR, q->d_name, q->d_type, ee, t, t->x_loc); return ee; }
void Physics :: clear(Object* obj, int param) { delComp(); pool[vDELTA_TIME].refCount --; del_var(); LOG_INFO("%s: clear.", getName()); do_update = &Module::empty_update; }
/* ** new_hscvar ** ** alloc & init a new variable */ HSCVAR *new_hscvar( STRPTR newname ) { HSCVAR *newvar = (HSCVAR*) umalloc( sizeof(HSCVAR) ); if (newvar) { /* init new varument item */ newvar->vartype = VT_NONE; newvar->name = strclone( newname ); newvar->deftext = NULL; newvar->text = NULL; newvar->enumstr = NULL; newvar->macro_id = 0; newvar->varflag = 0; newvar->quote = EOF; } if ( !( newvar->name ) ) { del_var( (APTR) newvar ); newvar = NULL; } return (newvar); }
void Control :: clear(Object* obj, int param) { delComp(); pool[vLVM].refCount --; del_var(); Keyboard::instance().setDisplay(nullptr); Mousedevice::instance().setDisplay(nullptr); XCloseDisplay(m_dpy); LOG_INFO("%s: clear.", getName()); do_update = &Module::empty_update; }
/* ** app_var ** ** append a new var to the var list AT BEGINNING */ HSCVAR *app_var( DLLIST *varlist, STRPTR newname ) { HSCVAR *var = new_hscvar( newname ); BOOL ok = FALSE; if ( var ) ok = ( ins_dlnode( varlist, varlist->first, (APTR) var ) != NULL ); if ( !ok ) { del_var( (APTR) var ); var = NULL; } return ( var ); }