struct VariableNameIterator [src]

Fields

services: *const RuntimeServices
buffer: []u16
guid: Guid

Members

Source

pub const VariableNameIterator = struct { pub const NextSizeError = uefi.UnexpectedError || error{ DeviceError, Unsupported, }; pub const IterateVariableNameError = NextSizeError || error{ BufferTooSmall, }; services: *const RuntimeServices, buffer: []u16, guid: Guid, pub fn nextSize(self: *VariableNameIterator) NextSizeError!?usize { var len: usize = 0; switch (self.services._getNextVariableName( &len, null, &self.guid, )) { .buffer_too_small => return len, .not_found => return null, .device_error => return error.DeviceError, .unsupported => return error.Unsupported, else => |status| return uefi.unexpectedStatus(status), } } /// Call `nextSize` to get the length of the next variable name and check /// if `buffer` is large enough to hold the name. pub fn next( self: *VariableNameIterator, ) IterateVariableNameError!?[:0]const u16 { var len = self.buffer.len; switch (self.services._getNextVariableName( &len, @ptrCast(self.buffer.ptr), &self.guid, )) { .success => return self.buffer[0 .. len - 1 :0], .not_found => return null, .buffer_too_small => return error.BufferTooSmall, .device_error => return error.DeviceError, .unsupported => return error.Unsupported, else => |status| return uefi.unexpectedStatus(status), } } }