Beispiel #1
0
void lat_sistema_iraxy(lat_mv * mv) {
	lat_objeto *x = lat_desapilar(mv);
	lat_objeto *y = lat_desapilar(mv);
	int yx = __numerico(y), xx = __numerico(x);
	printf("%c[%d;%df", 0x1B, yx, xx);
	fflush(stdout);
}
Beispiel #2
0
void lat_modulo_decimal(lat_vm *vm)
{
    lat_objeto *b = lat_desapilar(vm);
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] =
        lat_decimal_nuevo(vm, fmod(lat_obtener_decimal(a), lat_obtener_decimal(b)));
}
Beispiel #3
0
void lat_arco_tangente2(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    lat_objeto *b = lat_desapilar(vm);
    vm->registros[255] =
        lat_decimal_nuevo(vm, atan2(lat_obtener_decimal(a), lat_obtener_decimal(b)));
}
Beispiel #4
0
void lat_potencia(lat_vm *vm)
{
    lat_objeto *b = lat_desapilar(vm);
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] =
        lat_decimal_nuevo(vm, pow(lat_obtener_decimal(a), lat_obtener_decimal(b)));
}
Beispiel #5
0
void lat_escribir_archivo(lat_vm *vm){
  lat_objeto* s = lat_desapilar(vm);
  lat_objeto* o = lat_desapilar(vm);
  if(o->type == T_STR || o->type == T_LIT){
    FILE* fp;
    fp = fopen(lat_obtener_cadena(o), "w");
    const char* cad = lat_obtener_cadena(s);
    size_t lon = strlen(cad);
    fwrite(cad, 1 , lon , fp);
    fclose(fp);
  }else{
    lat_registrar_error("No se pudo escribir en el archivo\n");
  }
}
Beispiel #6
0
void lat_sistema_fecha(lat_mv * mv) {
	lat_objeto *tiempo = lat_desapilar(mv);
	char *num = __cadena(tiempo);
	time_t raw;
	struct tm *tipo;
	time(&raw);
	tipo = localtime(&raw);
	lat_objeto *tmp = mv->objeto_nulo;
	if (!strcmp(num, "seg")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_sec);	//segundos
	} else if (!strcmp(num, "min")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_min);
	} else if (!strcmp(num, "hora")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_hour);
	} else if (!strcmp(num, "d_mes")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_mday);	// dia del mes
	} else if (!strcmp(num, "mes")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_mon);
	} else if (!strcmp(num, "año")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_year + 1900);
	} else if (!strcmp(num, "d_sem")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_wday);	// día de la sem.
	} else if (!strcmp(num, "d_año")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_yday);	// día del año
	} else if (!strcmp(num, "estacion")) {
		tmp = lat_numerico_nuevo(mv, tipo->tm_isdst);	// verano/inv
	} else {
		filename = tiempo->nombre_archivo;
		lat_error("Linea %d, %d: %s", tiempo->num_linea, tiempo->num_columna,
				  "el formato de tiempo indicado no existe.");
	}
	lat_apilar(mv, tmp);
	lat_gc_agregar(mv, tmp);
}
Beispiel #7
0
void lat_sistema_avisar(lat_mv * mv) {
	lat_objeto *a = lat_desapilar(mv);
	signal(__numerico(a), proceso_al_activarse);
	if (!proceso_detenido) {
		lat_apilar(mv, mv->objeto_falso);
		return;
	} else {
		lat_apilar(mv, mv->objeto_verdadero);
	};
}
Beispiel #8
0
void lat_sistema_entorno(lat_mv * mv) {
	lat_objeto *a = lat_desapilar(mv);
	char *env = getenv(__cadena(a));
	lat_objeto *tmp;
	if (env) {
		tmp = lat_cadena_nueva(mv, env);
	} else {
		tmp = mv->objeto_nulo;
	}
	lat_apilar(mv, tmp);
}
Beispiel #9
0
void lat_sistema_pipe(lat_mv * mv) {
	lat_objeto *cmd = lat_desapilar(mv);
	FILE *fp = __lat_popen(mv, __cadena(cmd), "r");
	size_t rlen = MAX_BUFFERSIZE;
	char *p = __memoria_asignar(NULL, rlen);
	fread(p, sizeof(char), rlen, fp);
	rlen = strlen(p);
	p[rlen - 1] = '\0';			// elimina el ultimo '\n'
	lat_objeto *tmp = lat_cadena_nueva(mv, strdup(p));
	lat_apilar(mv, tmp);
	__lat_pclose(mv, fp);
	__memoria_liberar(mv, p);
	lat_gc_agregar(mv, tmp);
}
Beispiel #10
0
void lat_leer_archivo(lat_vm *vm){
  lat_objeto* o = lat_desapilar(vm);

  if(o->type == T_STR || o->type == T_LIT){
    FILE *fp;
    char *buf;
    fp = fopen(lat_obtener_cadena(o), "r");
    if (fp == NULL) {
      lat_registrar_error("No se pudo abrir el archivo\n");
    }
    fseek(fp, 0, SEEK_END);
    int fsize = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    buf = (char*)calloc(fsize, 1);
    size_t newSize = fread(buf, sizeof(char), fsize, fp);
    if (buf == NULL) {
      printf("No se pudo asignar %d bytes de memoria\n", fsize);
    }
    buf[newSize] = '\0';
    vm->regs[255] = lat_cadena_nueva(vm, buf);
  }else{
    lat_registrar_error("No se pudo abrir el archivo\n");
  }
}
Beispiel #11
0
void lat_exponente(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, exp(lat_obtener_decimal(a)));
}
Beispiel #12
0
void lat_tangente_hiperbolica(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, tanh(lat_obtener_decimal(a)));
}
Beispiel #13
0
void lat_seno_hiperbolico(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, sinh(lat_obtener_decimal(a)));
}
Beispiel #14
0
void lat_coseno(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, cos(lat_obtener_decimal(a)));
}
Beispiel #15
0
void lat_sistema_ejecutar(lat_mv * mv) {
	lat_objeto *cmd = lat_desapilar(mv);
	system(__cadena(cmd));
}
Beispiel #16
0
void lat_redondeo_abajo(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, floor(lat_obtener_decimal(a)));
}
Beispiel #17
0
void lat_valor_absoluto(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, fabs(lat_obtener_decimal(a)));
}
Beispiel #18
0
void lat_redondear_arriba(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, ceil(lat_obtener_decimal(a)));
}
Beispiel #19
0
void lat_raiz_cuadrada(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, sqrt(lat_obtener_decimal(a)));
}
Beispiel #20
0
void lat_sistema_dormir(lat_mv * mv) {
	lat_objeto *mili_segundos = lat_desapilar(mv);
	__lat_sleep(__numerico(mili_segundos));
}
Beispiel #21
0
void lat_logaritmo_base10(lat_vm *vm)
{
    lat_objeto *a = lat_desapilar(vm);
    vm->registros[255] = lat_decimal_nuevo(vm, log10(lat_obtener_decimal(a)));
}