Skip to content

Commit

Permalink
Merge pull request ziglang#15087 from jacobly0/x86-debug-mir
Browse files Browse the repository at this point in the history
x86_64: misc fixes
  • Loading branch information
kubkon authored Mar 27, 2023
2 parents 1de64db + fd13e44 commit 28d6dd7
Show file tree
Hide file tree
Showing 11 changed files with 2,609 additions and 2,429 deletions.
26 changes: 16 additions & 10 deletions lib/std/multi_array_list.zig
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,20 @@ pub fn MultiArrayList(comptime S: type) type {
return casted_ptr[0..self.len];
}

pub fn set(self: Slice, index: usize, elem: S) void {
inline for (fields) |field_info| {
self.items(@field(Field, field_info.name))[index] = @field(elem, field_info.name);
}
}

pub fn get(self: Slice, index: usize) S {
var elem: S = undefined;
inline for (fields) |field_info| {
@field(elem, field_info.name) = self.items(@field(Field, field_info.name))[index];
}
return elem;
}

pub fn toMultiArrayList(self: Slice) Self {
if (self.ptrs.len == 0) {
return .{};
Expand Down Expand Up @@ -156,20 +170,12 @@ pub fn MultiArrayList(comptime S: type) type {

/// Overwrite one array element with new data.
pub fn set(self: *Self, index: usize, elem: S) void {
const slices = self.slice();
inline for (fields, 0..) |field_info, i| {
slices.items(@intToEnum(Field, i))[index] = @field(elem, field_info.name);
}
return self.slice().set(index, elem);
}

/// Obtain all the data for one array element.
pub fn get(self: Self, index: usize) S {
const slices = self.slice();
var result: S = undefined;
inline for (fields, 0..) |field_info, i| {
@field(result, field_info.name) = slices.items(@intToEnum(Field, i))[index];
}
return result;
return self.slice().get(index);
}

/// Extend the list by 1 element. Allocates more memory as necessary.
Expand Down
Loading

0 comments on commit 28d6dd7

Please sign in to comment.