Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
void Physics :: clear(Object* obj, int param)
 { delComp();
   pool[vDELTA_TIME].refCount --;
   del_var();
   LOG_INFO("%s: clear.", getName());
   do_update = &Module::empty_update;
 }
Ejemplo n.º 4
0
/*
** 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);

}
Ejemplo n.º 5
0
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;
 }
Ejemplo n.º 6
0
/*
** 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 );
}