home *** CD-ROM | disk | FTP | other *** search
- // ==========================================================================
- // MDEFS.H
- // (C) Anubis Software
- // Escrito el 5 de Enero de 1995
- //
- // Esta librería proporciona algunas definiciones y declaraciones útiles
- // de proposito genera.
- // Está sacada del libro: Lenguaje C, biblioteca de funciones.
- // ==========================================================================
-
- #ifndef MDEFS.H
- #define MDEFS.H
-
- typedef unsigned char BYTE;
- typedef unsigned char *PBYTE;
- typedef unsigned int WORD;
- typedef unsigned int *PWORD;
- typedef unsigned long DWORD;
- typedef unsigned long *PDWORD;
-
- #define ACTIVADO 1 //Tratamiento de un interruptor
- #define DESACTIVADO 0
-
- typedef unsigned char boolean;
- #define FALSE 0
- #define TRUE !FALSE
-
-
- /*
- * NOMBRE porcent(x,y)
- * FUNCION: Retorna el porcentaje de x / y.
- * EJEMPLOS: a=porcent(3.0,4.0); asigna a 'a' el valor 75.0
- * VARIABLES UTILIZADAS: x: el dividendo.
- * y: el divisor.
- * PSEUDO CODIGO: multiplica x por 100.0 (también convierte a coma flotante)
- * divide x por y.
- */
- #define porcent(x, y) (100.0 * x / y)
-
- /* NOMBRE: val_abs(x)
- * FUNCION: Retorna el valor absoluto del valor contenido en la variable x.
- * EJEMPLOS: x = val_abs(-2); asigna a x el valor 2
- * x = val_abs(4); asigna a x el valor 4
- * x = val_abs(4 -13); asigna a x el valor 9
- * VARIABLES UTILIZADAS : x: la expresión de la que se retorna el valor absoluto
- * PSEUDO CODIGO: if (x es positivo)
- * return(x)
- * else
- * return(-x)
- */
- #define val_abs(x) ((x >= 0) ? x : 0 - x)
-
- /* NOMBRE: max(x,y)
- * FUNCION: Retorna el valor máximo contenido en x o y.
- */
- //#define max(x,y) (x > y) ? x : y)
-
- /* NOMBRE: min(x,y)
- * FUNCION: Retorna el valor mínimo contenido en x o y.
- */
- //#define min(x,y) ((x <y) ? x : y)
-
- /* NOMBRE: es_impar(x)
- * FUNCION: Retorna 1 si el valor contenido en x es impar, en otro caso retorna 0.
- * El operador mod (%) retorna el resto de la división entera de x por 2.
- * Si el resto es 0, entonces x es par. Si el resto es 1, entonces x es
- * impar.
- */
- #define es_impar(x) ((x % 2 == 1) ? 1 : 0)
-
- /* NOMBRE es_par(x)
- * FUNCION: Retorna 1 si el valor contenido en x es par, en otro caso retorna 0.
- * El operador mod (%) retorna el resto de la división entera de x por 2.
- * Si el resto es 0, entonces x es par. si el resto es 1, entonces x es
- * impar.
- */
- #define es_par(x) ((x % 2 == 0) ? 1 : 0)
-
- /* NOMBRE redondea_off(x)
- * FUNCION: Redondea el valor contenido en x.
- */
- #define redondea_off(x) ((int)(x + 0.5))
-
- /* NOMBRE: truncar(x)
- * FUNCION Trunca el valor contenido en x.
- */
- #define truncar(x) ((int)(x))
-
- /* NOMBRE: resto(x,y)
- * FUNCION: Utiliza el operador mod (%) para retornar el resto
- * de la división entera de los valores x e y.
- */
- #define resto(x, y) (x % y)
-
- /* NOMBRE: cuadrado(x)
- * FUNCION: Retorna el cuadrado del valor contenido en x.
- */
- #define cuadrado(x) (x*x)
-
- /* NOMBRE: cubo(x)
- * FUNCION: Retorna el cubo del valor contenido en x.
- */
- #define cubo(x) (x*x*x)
-
- /* NOMBRE: XOR(x, y)
- * FUNCION: Retorna la or exclusiva de los bits contenidos en las variables
- * x e y. La or exclusiva usa la siguiente tabla de verdad:
- * x y resultado
- * 0 0 0
- * 0 1 1
- * 1 0 1
- * 1 1 0 <--- Nota
- */
- #define XOR(x, y) ((x & "y) | ("x & y))
-
- /* NOMBRE: NOT(x)
- * FUNCION: Retorna el NOT Booleano del valor contenido en x. si x es TRUE se
- * retorna FALSE. Si x es FALSE, se retorna TRUE.
- */
- #define NOT(x) ((x != 0) ? 0 : 1)
-
- /* NOMBRE: bit_mask(x, y)
- * FUNCION: Realiza un AND bit a bit de los contenidos de x e y.
- */
- #define bit_mask(x, y) (x & y)
-
- /* NOMBRE: es_digit(x)
- * FUNCION: Retorna 1 si x es un caracter en el rango '0' a '9'
- * en otro caso retorna 0.
- */
- #define es_digit(x) ((x >= '0' && x <= '9') ? 1 : 0)
-
- /* NOMBRE: es_mayuscula(x)
- * FUNCION: Retorna 1 si x es una letra MAYUSCULA, en otro caso retorna el valor 0.
- */
- #define es_mayuscula(x) ((x >= 'A' && x <= 'Z') ? 1 : 0)
-
- /* NOMBRE: es_minuscula(x)
- * FUNCION Retorna 1 si x es una letra minúscula, en otro caso retorna 0.
- */
- #define es_minuscula(x) ((x >= 'a' && x <= 'z') ? 1 : 0)
-
- /* NOMBRE: es_blanco(x)
- * FUNCION: Retorna 1 si el valor contenido en x es un blanco, en otro caso
- * retorna 0.
- */
- #define es_blanco(x) ((x == ' ') ? 1:0)
-
- /* NOMBRE: a_mayuscula(x)
- * FUNCION: Convierte el caracter contenido en la variable x a MAYUSCULA si
- * es minúscula, en otro caso no se modifica.
- */
- #define a_mayuscula(x) ((es_minuscula(x)) ? x - 'a' + 'A' : x)
-
- /* NOMBRE: a_minuscula(x)
- * FUNCION: Convierte el caracter contenido en la variable x a minúscula si es
- * MAYUSCULA, en otro caso no se modifica.
- */
- #define a_minuscula(x) ((es_mayuscula(x)) ? x + 'a' - 'A' : x)
-
- /* NOMBRE: a_decimal(x)
- * FUNCION: Convierte el dígito ASCII al valor decimal correspondiente.
- * Se supone que x ha sido verificado como un dígito.
- */
- #define a_decimal(x) (x - '0')
-
- /* NOMBRE: es_control(x)
- * FUNCION: Retorna 1 si el valor contenido en x es una caracter de control, en
- * otro caso se retorna 0.
- */
- #define es_control(x) ((x > 0 && x < 32) ? 1 : 0)
-
- /* NOMBRE: es_imprimible_ascii(x)
- * FUNCION: Retorna 1 si x es un caracter ASCII, o 0 si no es imprimible.
- */
- #define es_imprimible_ascii(x) ((x > 32 && x < 127) ? 1 : 0)
-
- /* NOMBRE: a_ascii(x)
- * FUNCION: Convierte un entero en el rango 0 - 9 a representación de caracter
- * ASCII. Se retorna -1 si el valor no está en el rango 0 - 9.
- */
- #define a_ascii(x) ((x >= 0 && x <= 9) ? x + '0' : -1)
-
- /* NOMBRE: es_binario(x)
- * FUNCION: Retorna TRUE si x contiene un '1' o '0', en otro caso se retorna
- * FALSE.
- */
- #define es_binario(x) ((x == '0' || x == '1') ? 1 : 0)
-
- /* NOMBRE: es_hexadecimal(x)
- * FUNCION: Retorna 1 si el valor contenido en x es hexadecimal (p.ej., en el
- * rango 0 - 9 o A - F), en otro caso se retorna el valor 0.
- */
- #define es_hexadecimal(x) ((es_digito(x) || (x >= 'A' && x <= 'F')) ? 1 : 0)
-
- /* NOMBRE: es_octal(x)
- * FUNCION: Retorna 1 si el valor contenido en x es octal (en el rango '0' - '7'),
- * en otro caso se retorna el valor 0.
- */
- #define es_octal(x) ((x >= '0' && x <= '7') ? 1 : 0)
- #endif