remove redundant fields

This commit is contained in:
Motiejus Jakštys 2022-03-07 21:14:19 +02:00 committed by Motiejus Jakštys
parent 9bf0a35689
commit d2ace3e125

View File

@ -31,15 +31,12 @@ const Corpus = struct {
// sorted by gid
groups: []Group,
// convenience users and groups by column
// columnar users and groups of the above
usersMulti: MultiArrayList(User),
groupsMulti: MultiArrayList(Group),
// pointing to `users` and `groups` slices above.
name2user: StringHashMap(usize),
uid2user: AutoHashMap(u32, usize),
name2group: StringHashMap(usize),
gid2group: AutoHashMap(u32, usize),
groupname2users: StringHashMap([]usize),
username2groups: StringHashMap([]usize),
@ -72,20 +69,12 @@ const Corpus = struct {
groupsMulti.appendAssumeCapacity(group);
var name2user = StringHashMap(usize).init(allocator);
var uid2user = AutoHashMap(u32, usize).init(allocator);
var name2group = StringHashMap(usize).init(allocator);
var gid2group = AutoHashMap(u32, usize).init(allocator);
for (users) |*user, i| {
var res1 = try name2user.getOrPut(user.name);
if (res1.found_existing)
return error.Duplicate;
res1.value_ptr.* = i;
var res2 = try uid2user.getOrPut(user.uid);
if (res2.found_existing)
return error.Duplicate;
res2.value_ptr.* = i;
}
for (groups) |*group, i| {
@ -93,10 +82,6 @@ const Corpus = struct {
if (res1.found_existing)
return error.Duplicate;
res1.value_ptr.* = i;
var res2 = try gid2group.getOrPut(group.gid);
if (res2.found_existing)
return error.Duplicate;
res2.value_ptr.* = i;
}
var groupname2users = StringHashMap([]usize).init(allocator);
@ -157,9 +142,7 @@ const Corpus = struct {
.usersMulti = usersMulti,
.groupsMulti = groupsMulti,
.name2user = name2user,
.uid2user = uid2user,
.name2group = name2group,
.gid2group = gid2group,
.groupname2users = groupname2users,
.username2groups = username2groups_final,
};
@ -525,12 +508,8 @@ test "test corpus" {
try testing.expectEqual(corpus.name2user.get("404"), null);
try testing.expectEqual(corpus.name2user.get("vidmantas").?, vidmantas);
try testing.expectEqual(corpus.uid2user.get(42), null);
try testing.expectEqual(corpus.uid2user.get(128).?, vidmantas);
try testing.expectEqual(corpus.name2group.get("404"), null);
try testing.expectEqual(corpus.name2group.get("vidmantas").?, g_vidmantas);
try testing.expectEqual(corpus.gid2group.get(42), null);
try testing.expectEqual(corpus.gid2group.get(128).?, g_vidmantas);
const membersOfAll = corpus.groupname2users.get("all").?;
try testing.expectEqual(membersOfAll[0], name_name);