lib/gpalloc/src/large/medium/header.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const class_policy = @import("class.zig");
 2 const model = @import("../root.zig").model;
 3 
 4 const Class = model.Class;
 5 const Header = model.Header;
 6 
 7 pub fn initializeHeader(base: [*]u8, class: Class) [*]u8 {
 8     const header: *Header = @ptrCast(@alignCast(base));
 9     header.* = .{
10         .magic = model.medium_header_magic,
11         .class_index = class.index,
12     };
13     return base + model.header_size;
14 }
15 
16 pub fn headerFromUserPointer(ptr: [*]u8) *Header {
17     return @ptrCast(@alignCast(ptr - model.header_size));
18 }
19 
20 pub fn classFromHeader(header: *const Header) ?Class {
21     if (header.magic != model.medium_header_magic) return null;
22     if (header.class_index >= model.medium_class_count) return null;
23     return class_policy.classForIndex(header.class_index);
24 }
25 
26 pub fn baseFromUserPointer(ptr: [*]u8) [*]u8 {
27     return ptr - model.header_size;
28 }