Beispiel #1
0
pointer seld_notes() {
  amc_found=tst_alive_amc();
  if (!amc_found && !find_amc()) 
    return Error_0("STOP! amc not running");
  BMessage mes(STORE_SEL),
           reply;
  StoredNote *notes;
  Settings *settings;
  ssize_t bytes=0;
  int n,
      items=0;
  amc_application.SendMessage(&mes,&reply);
  puts("amc did reply");
  switch (reply.what) {
    case CONTENTS_SEL:
      reply.FindData(SELD_NOTES,B_OBJECT_TYPE,(const void**)(&notes),&bytes);
      items=bytes/sizeof(StoredNote);
      reply.FindData(SETTINGS,B_OBJECT_TYPE,(const void**)(&settings),&bytes);
      break;
    default: return Error_0("seld notes: unknown reply");
  } 
  pointer ptr,
          out=nil_pointer();
  for (n=0;n<items;++n) {
    ptr=cons(mk_integer(notes[n].lnr),
         cons(mk_integer(notes[n].snr),
          cons(mk_integer(notes[n].sign),
           cons(mk_integer(notes[n].dur),nil_pointer()))));
    out=cons(ptr,out);
  }
  ptr=cons(mk_integer(settings->meter),nil_pointer());
  ptr=cons(mk_symbol("meter"),ptr);
  ptr=cons(ptr,nil_pointer());
  return cons(ptr,out);
}
Beispiel #2
0
/* (random [optional-max]) */
static pointer s_random(scheme* sc, pointer args) {
	if(!seed_inited) {
		srand(time(0));
		seed_inited = 1;
	}

	if(args == sc->NIL)
		return mk_integer(sc, rand());

	pointer a = sc->vptr->pair_car(args);
	if(a == sc->NIL || !sc->vptr->is_integer(a)) {
		/* TODO: this should be an error */
		return sc->F;
	}

	long v = sc->vptr->ivalue(a);
	return mk_integer(sc, rand() % v);
}
Beispiel #3
0
pointer list_to_int(pointer a) {
  int res=0;
  char *dispatch;
  if (is_symbol(car(a))) {
    dispatch=sym_name(car(a));
    if (!strcmp(dispatch,"random"))
      return random_int(cadr(a),caddr(a));
    else
      return Error_1("list>int: unknown dispatch type:",car(a));
  }
  else
    return Error_1("list>int: no symbol:",car(a));
  return mk_integer(res);
}
Beispiel #4
0
pointer random_int(pointer v1,pointer v2) {
  int minv=int_value(v1),
      maxv=int_value(v2);
  return mk_integer(minv + rand() % (maxv - minv + 1));
}
Beispiel #5
0
Datei: eval.cpp Projekt: tov/ipd
value_ptr Integer_literal::eval(const Environment&) const
{
    return mk_integer(val_);
}