¿Existe una biblioteca C de código abierto decente para almacenar y manipular
variables de tipo dinámico (variantes a.k.a.)? Me interesan principalmente los valores atómicos (int8, int16, int32, uint, cadenas, blobs, etc.), mientras que las matrices y objetos estilo JSON, así como los objetos personalizados, también serían buenos. Un caso importante donde tal biblioteca sería útil es trabajando con bases de datos SQL.Biblioteca de tipos de datos de variantes para C
La característica más obvia de tal biblioteca habría un solo tipo para todos los valores admitidos, por ejemplo:
struct Variant {
enum Type type;
union {
int8_t int8_;
int16_t int16_;
// ...
};
};
Otras características pueden incluir la conversión de objetos Variant a/de estructuras C (utilizando una tabla de unión), convertir valores a/desde cadenas e integración con una biblioteca de base de datos existente como SQLite.
Nota: No creo que esta es una pregunta es un duplicado de Any library for generic datatypes in C?, que se refiere a "colas, árboles, mapas, listas". De lo que estoy hablando se enfoca más en hacer que trabajar con bases de datos SQL sea más sencillo que trabajar con ellos en lenguajes interpretados.
¿Variant? C usa 'void *' para eso ... – kennytm
@KennyTM: No creo que 'void *' sea una base adecuada para una función como el 'sqlite_fetch_object' de PHP imitado en C (sin escribir/usar una biblioteca de variantes o similar). –
No creo que la palabra "atómico" signifique lo que piensas que significa. – JXG