53 lines
1.2 KiB
Zig
53 lines
1.2 KiB
Zig
const std = @import("std");
|
|
|
|
pub const QVariant = union(enum) {
|
|
int: u32,
|
|
short: u16,
|
|
byte: u8,
|
|
bytearray: std.ArrayList(u8),
|
|
string: []const u8,
|
|
stringlist: std.ArrayList([]const u8),
|
|
qmap: std.StringHashMap(QVariant),
|
|
empty: bool,
|
|
};
|
|
|
|
pub const QVariantTypes = enum(u32) {
|
|
byte = 1,
|
|
// IDK why there is 2???
|
|
int_1 = 2,
|
|
int_2 = 3,
|
|
qmap = 8,
|
|
string = 10,
|
|
stringlist = 11,
|
|
bytearray = 12,
|
|
short = 133,
|
|
};
|
|
|
|
pub fn qvariant_type_id(variant: QVariant) !u32 {
|
|
switch (variant) {
|
|
.byte => {
|
|
return @enumToInt(QVariantTypes.byte);
|
|
},
|
|
.int => {
|
|
return @enumToInt(QVariantTypes.int_2);
|
|
},
|
|
.qmap => {
|
|
return @enumToInt(QVariantTypes.qmap);
|
|
},
|
|
.string => {
|
|
return @enumToInt(QVariantTypes.string);
|
|
},
|
|
.stringlist => {
|
|
return @enumToInt(QVariantTypes.stringlist);
|
|
},
|
|
.bytearray => {
|
|
return @enumToInt(QVariantTypes.bytearray);
|
|
},
|
|
.short => {
|
|
return @enumToInt(QVariantTypes.short);
|
|
},
|
|
else => {
|
|
return 0;
|
|
},
|
|
}
|
|
} |