1
0
Fork 0
QuasselClient/src/qtshit/qvariant.zig
2021-06-02 16:32:43 +01:00

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;
},
}
}