mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-28 22:53:28 +00:00
Remove unecessary comptime keyword in generate
Signed-off-by: Francis Bouvier <francis.bouvier@gmail.com>
This commit is contained in:
@@ -13,9 +13,7 @@ pub const Union = struct {
|
|||||||
_union: type,
|
_union: type,
|
||||||
|
|
||||||
pub fn compile(comptime tuple: anytype) Union {
|
pub fn compile(comptime tuple: anytype) Union {
|
||||||
comptime {
|
return private_compile(tuple) catch |err| @compileError(@errorName(err));
|
||||||
return private_compile(tuple) catch @compileError("CompileUnion error");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn private_compile(comptime tuple: anytype) !Union {
|
fn private_compile(comptime tuple: anytype) !Union {
|
||||||
@@ -31,8 +29,8 @@ pub const Union = struct {
|
|||||||
const tuple_members = tuple_info.Struct.fields;
|
const tuple_members = tuple_info.Struct.fields;
|
||||||
|
|
||||||
// first iteration to get the total number of members
|
// first iteration to get the total number of members
|
||||||
comptime var members_nb = 0;
|
var members_nb = 0;
|
||||||
inline for (tuple_members) |member| {
|
for (tuple_members) |member| {
|
||||||
const member_T = @field(tuple, member.name);
|
const member_T = @field(tuple, member.name);
|
||||||
const member_info = @typeInfo(member_T);
|
const member_info = @typeInfo(member_T);
|
||||||
if (member_info == .Union) {
|
if (member_info == .Union) {
|
||||||
@@ -46,7 +44,7 @@ pub const Union = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// define the tag type regarding the members nb
|
// define the tag type regarding the members nb
|
||||||
comptime var tag_type: type = undefined;
|
var tag_type: type = undefined;
|
||||||
if (members_nb < 3) {
|
if (members_nb < 3) {
|
||||||
tag_type = u1;
|
tag_type = u1;
|
||||||
} else if (members_nb < 4) {
|
} else if (members_nb < 4) {
|
||||||
@@ -70,14 +68,14 @@ pub const Union = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// second iteration to generate tags
|
// second iteration to generate tags
|
||||||
comptime var enum_fields: [members_nb]std.builtin.Type.EnumField = undefined;
|
var enum_fields: [members_nb]std.builtin.Type.EnumField = undefined;
|
||||||
comptime var done = 0;
|
var done = 0;
|
||||||
inline for (tuple_members) |member| {
|
for (tuple_members) |member| {
|
||||||
const member_T = @field(tuple, member.name);
|
const member_T = @field(tuple, member.name);
|
||||||
const member_info = @typeInfo(member_T);
|
const member_info = @typeInfo(member_T);
|
||||||
if (member_info == .Union) {
|
if (member_info == .Union) {
|
||||||
const member_union = member_info.Union;
|
const member_union = member_info.Union;
|
||||||
inline for (member_union.fields) |field| {
|
for (member_union.fields) |field| {
|
||||||
enum_fields[done] = .{
|
enum_fields[done] = .{
|
||||||
.name = fmtName(field.field_type),
|
.name = fmtName(field.field_type),
|
||||||
.value = done,
|
.value = done,
|
||||||
@@ -103,14 +101,14 @@ pub const Union = struct {
|
|||||||
const enum_T = @Type(std.builtin.Type{ .Enum = enum_info });
|
const enum_T = @Type(std.builtin.Type{ .Enum = enum_info });
|
||||||
|
|
||||||
// third iteration to generate union type
|
// third iteration to generate union type
|
||||||
comptime var union_fields: [members_nb]std.builtin.Type.UnionField = undefined;
|
var union_fields: [members_nb]std.builtin.Type.UnionField = undefined;
|
||||||
done = 0;
|
done = 0;
|
||||||
inline for (tuple_members) |member, i| {
|
for (tuple_members) |member, i| {
|
||||||
const member_T = @field(tuple, member.name);
|
const member_T = @field(tuple, member.name);
|
||||||
const member_info = @typeInfo(member_T);
|
const member_info = @typeInfo(member_T);
|
||||||
if (member_info == .Union) {
|
if (member_info == .Union) {
|
||||||
const member_union = member_info.Union;
|
const member_union = member_info.Union;
|
||||||
inline for (member_union.fields) |field| {
|
for (member_union.fields) |field| {
|
||||||
union_fields[done] = .{
|
union_fields[done] = .{
|
||||||
.name = fmtName(field.field_type),
|
.name = fmtName(field.field_type),
|
||||||
.field_type = field.field_type,
|
.field_type = field.field_type,
|
||||||
@@ -144,18 +142,16 @@ pub const Union = struct {
|
|||||||
};
|
};
|
||||||
|
|
||||||
fn itoa(comptime i: u8) ![]u8 {
|
fn itoa(comptime i: u8) ![]u8 {
|
||||||
comptime {
|
var len: usize = undefined;
|
||||||
var len: usize = undefined;
|
if (i < 10) {
|
||||||
if (i < 10) {
|
len = 1;
|
||||||
len = 1;
|
} else if (i < 100) {
|
||||||
} else if (i < 100) {
|
len = 2;
|
||||||
len = 2;
|
} else {
|
||||||
} else {
|
return error.GenerateTooMuchMembers;
|
||||||
return error.GenerateTooMuchMembers;
|
|
||||||
}
|
|
||||||
var buf: [len]u8 = undefined;
|
|
||||||
return try std.fmt.bufPrint(buf[0..], "{d}", .{i});
|
|
||||||
}
|
}
|
||||||
|
var buf: [len]u8 = undefined;
|
||||||
|
return try std.fmt.bufPrint(buf[0..], "{d}", .{i});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate a flatten tuple type from various structs and tuple of structs.
|
// Generate a flatten tuple type from various structs and tuple of structs.
|
||||||
@@ -172,7 +168,7 @@ pub fn TupleT(comptime tuple: anytype) type {
|
|||||||
const tuple_members = tuple_info.Struct.fields;
|
const tuple_members = tuple_info.Struct.fields;
|
||||||
|
|
||||||
// first iteration to get the total number of members
|
// first iteration to get the total number of members
|
||||||
comptime var members_nb = 0;
|
var members_nb = 0;
|
||||||
for (tuple_members) |member| {
|
for (tuple_members) |member| {
|
||||||
const member_T = @field(tuple, member.name);
|
const member_T = @field(tuple, member.name);
|
||||||
if (@TypeOf(member_T) == type) {
|
if (@TypeOf(member_T) == type) {
|
||||||
|
|||||||
Reference in New Issue
Block a user