Có thư viện C nguồn mở phù hợp để lưu trữ và thao tác
biến động được nhập (biến thể a.k.a.) không? Tôi chủ yếu quan tâm đến các giá trị nguyên tử (int8, int16, int32, uint, strings, blobs, vv), trong khi các mảng và đối tượng JSON cũng như các đối tượng tùy chỉnh cũng sẽ tốt đẹp. Một trường hợp quan trọng trong đó một thư viện như vậy sẽ hữu ích khi làm việc với các cơ sở dữ liệu SQL.Thư viện kiểu dữ liệu biến thể cho C
Tính năng rõ ràng nhất của một thư viện như vậy sẽ là một loại duy nhất cho tất cả các giá trị được hỗ trợ, ví dụ:
struct Variant {
enum Type type;
union {
int8_t int8_;
int16_t int16_;
// ...
};
};
Các tính năng khác có thể bao gồm chuyển đổi Ngôn ngữ địa phương đối tượng đến/từ các cấu trúc C (sử dụng một bảng ràng buộc), chuyển đổi các giá trị thành/từ các chuỗi và tích hợp với một thư viện cơ sở dữ liệu hiện có như SQLite.
Lưu ý: Tôi không tin đây là câu hỏi trùng lặp với Any library for generic datatypes in C?, đề cập đến "hàng đợi, cây cối, bản đồ, danh sách". Những gì tôi đang nói về tập trung nhiều hơn vào việc làm việc với các cơ sở dữ liệu SQL gần như trơn tru như làm việc với chúng trong các ngôn ngữ thông dịch.
Biến thể? C sử dụng 'void *' cho điều đó ... – kennytm
@KennyTM: Tôi không nghĩ rằng 'void *' là một nền tảng thích hợp cho một hàm như PHP 'sqlite_fetch_object' bắt chước trong C (không viết/sử dụng một thư viện biến thể hoặc tương tự). –
Tôi không nghĩ từ "nguyên tử" nghĩa là ý nghĩa của từ đó. – JXG