Sewer
Incluso los más grandes palacios necesitaban alcantarillas. Tom Lehrer
Funciones
void | (*FPtr_destroy (...)) |
type* | (*FPtr_copy (...)) |
void | (*FPtr_scopy (...)) |
int | (*FPtr_compare (...)) |
int | (*FPtr_compare_ex (...)) |
void | (*FPtr_assert (...)) |
void | unref (...) |
Tipos y Constantes
sewer es la librería más elemental dentro del SDK de NAppGUI (Figura 1). En ella se declaran los tipos básicos, el soporte fundamental para Unicode, aserciones y manipulación segura de punteros. También es utilizada como "sumidero" donde enterrar las antiestéticas macros del preprocesador necesarias para configurar el compilador, CPU, plataformas, etc. Sus únicas dependencias son unas cuantas cabeceras de la librería estándar de C:
- <stdint.h>: Para tipos enteros de tamaño fijo y límites.
- <stdarg.h>: Para soportar funciones con un número de parámetros variable.
- <stddef.h>: Para la constante
NULL
y la macrooffsetof
.

int8_t
Entero con signo de 8 bits. Puede representar un valor entre INT8_MIN y INT8_MAX.
int16_t
Entero con signo de 16 bits. Puede representar un valor entre INT16_MIN y INT16_MAX.
int32_t
Entero con signo de 32 bits. Puede representar un valor entre INT32_MIN y INT32_MAX.
int64_t
Entero con signo de 64 bits. Puede representar un valor entre INT64_MIN y INT64_MAX.
uint8_t
Entero sin signo de 8 bits. Puede representar un valor entre 0 y UINT8_MAX.
uint16_t
Entero sin signo de 16 bits. Puede representar un valor entre 0 y UINT16_MAX.
uint32_t
Entero sin signo de 32 bits. Puede representar un valor entre 0 y UINT32_MAX.
uint64_t
Entero sin signo de 64 bits. Puede representar un valor entre 0 y UINT64_MAX.
char_t
Tipo carácter de 8 bits (Unicode). Un solo carácter puede necesitar 1, 2, 3 o 4 elementos (bytes), dependiendo de Codificaciones UTF.
byte_t
Tipo de 8 bits para almacenar bloques de memoria genéricos.
bool_t
Booleano de 8 bits. Solo dos valores son correctos TRUE (1) y FALSE (0).
real
Número de punto flotante de 32 o 64 bits.
real32_t
Número de punto flotante de 32 bits. El tipo float
de C.
real64_t
Número de punto flotante de 64 bits. El tipo double
de C.
TRUE
const bool_t TRUE = 1;
Cierto, verdadero.
FALSE
const bool_t FALSE = 0;
Falso.
NULL
const void* NULL = 0;
Puntero nulo.
INT8_MIN
const int8_t INT8_MIN = 0x80;
-128.
INT8_MAX
const int8_t INT8_MAX = 0x7F;
127.
INT16_MIN
const int16_t INT16_MIN = 0x8000;
-32.768.
INT16_MAX
const int16_t INT16_MAX = 0x7FFF;
32.767.
INT32_MIN
const int32_t INT32_MIN = 0x80000000;
-2.147.483.648.
INT32_MAX
const int32_t INT32_MAX = 0x7FFFFFFF;
2.147.483.647.
INT64_MIN
const int64_t INT64_MIN = 0x8000000000000000;
-9.223.372.036.854.775.808.
INT64_MAX
const int64_t INT64_MAX = 0x7FFFFFFFFFFFFFFF;
9.223.372.036.854.775.807.
UINT8_MAX
const uint8_t UINT8_MAX = 0xFF;
255.
UINT16_MAX
const uint16_t UINT16_MAX = 0xFFFF;
65.535.
UINT32_MAX
const uint32_t UINT32_MAX = 0xFFFFFFFF;
4.294.967.295.
UINT64_MAX
const uint64_t UINT64_MAX = 0xFFFFFFFFFFFFFFFF;
18.446.744.073.709.551.615.
enum unicode_t
Representa las Codificaciones UTF.
enum unicode_t
{
ekUTF8,
ekUTF16,
ekUTF32
};
ekUTF8 | Codificación UTF8. |
ekUTF16 | Codificación UTF16. |
ekUTF32 | Codificación UTF32. |
FPtr_destroy
Prototipo de función destructora.
void (*FPtr_destroy)(type **item);
item | Doble puntero al objeto a destruir. Debe ser puesto a |
FPtr_copy
Prototipo de constructor de copia.
type* (*FPtr_copy)(const type *item);
item | Puntero al objeto que debe ser copiado. |
Retorna
El nuevo objeto que es una copia exacta de la entrada.
FPtr_scopy
Prototipo de constructor de copia sin asignar memoria.
void (*FPtr_scopy)(type *dest, const type *src);
dest | Objeto destino (copia). |
src | Puntero al objeto que debe ser copiado (source). |
Observaciones
En esta operación de copia, la memoria que necesita el objeto ya ha sido asignada. Debemos crear memoria dinámica para los campos del objeto que lo requieran, pero no para el objeto en sí mismo. Suele utilizarse para copiar arrays de objetos (no punteros a objetos).
FPtr_compare
Prototipo de función de comparación.
int (*FPtr_compare)(const type *item1, const type *item2);
item1 | Primer elemento a comparar. |
item2 | Segundo elemento a comparar. |
Retorna
Resultado de la comparación.
FPtr_compare_ex
Similar a FPtr_compare
, pero recibe un parámetro adicional que puede influir en la comparación.
int (*FPtr_compare_ex)(const type *item1, const type *item2, const dtype *data);
item1 | Primer elemento a comparar. |
item2 | Segundo elemento a comparar. |
data | Parámetro adicional. |
Retorna
Resultado de la comparación.
FPtr_assert
Prototipo de función callback llamada cuando se produce un assert
.
void (*FPtr_assert)(type *item, const uint32_t group, const char_t *caption, const char_t *detail, const char_t *file, const uint32_t line);
item | Datos de usuario pasados como primer parámetro. |
group | 0 = Error fatal, 1 = La ejecución puede continuar. |
caption | Título. |
detail | Mensaje detallado. |
file | Archivo fuente donde ocurrió el assert. |
line | Línea dentro del archivo fuente. |
unref ()
Marca el parámetro como no referenciado, desactivando los avisos del compilador.
void
unref(param);
param | Parámetro. |