Ejemplo n.º 1
0
int a2_librandom(struct a2_state* state){
	int args = a2_top(state);
	if(args == 0){
		a2_pushnumber(state, (a2_number)rand());
	}else{
		a2_number num = a2_tonumber(state, 0);
		a2_pushnumber(state, rand()%((int)num));
	}
	return 1;
}
Ejemplo n.º 2
0
// print 
int a2_libprint(struct a2_state* state){
	int args = a2_top(state);
	int i;
	for(i=0; i<args; i++){
		switch(a2_type(state, i)){
			case TNIL:
				printf("nil ");
				break;
			case TNUMBER:
				printf("%.14g ", a2_tonumber(state, i));
				break;
			case TSTRING:
				printf("%s ", a2_tostring(state, i));
				break;
			case TBOOL:
				printf("%s ", (a2_tobool(state, i))?("true"):("false"));
				break;
			case TCFUNCTION:
				printf("cfunc:%p ", a2_tocfunction(state, i));
				break;
			case TCLOSURE:
				printf("closure:%p ", a2_topoint(state, i));
				break;
			case TARRAY:
				printf("array:%p ", a2_topoint(state, i));
				break;
			case TMAP:
				printf("map:%p ", a2_topoint(state, i));
				break;
			default:
				assert(0);
		}
	}
	
	printf("\n");
	return 0;
}