Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › os/ › windows.zig › STRING
STRING
windows.STRING
fn STRING (comptime C : type ) type
File
Code
fn STRING (comptime C : type ) type {
return extern struct {
Length : USHORT ,
MaximumLength : USHORT ,
Buffer : ?[*]C ,
pub const empty : @This () = .{ .Length = 0 , .MaximumLength = 0 , .Buffer = null };
pub fn init (string : []const C ) @This () {
const len : USHORT = @intCast (@sizeOf (C ) * string .len );
return .{
.Length = len ,
.MaximumLength = len ,
.Buffer = @constCast (string .ptr ),
};
}
pub fn initZ (string : [:0 ]const C ) @This () {
const len : USHORT = @intCast (@sizeOf (C ) * string .len );
return .{
.Length = len ,
.MaximumLength = len + @sizeOf (C ),
.Buffer = @constCast (string .ptr ),
};
}
pub fn isEmpty (string : *const @This ()) bool {
return string .Length == 0 ;
}
pub fn slice (string : *const @This ()) []C {
return if (string .isEmpty ()) &.{} else string .Buffer .?[0 ..@divExact (string .Length , @sizeOf (C ))];
}
pub fn sliceZ (string : *const @This ()) [:0 ]C {
assert (string .Length + @sizeOf (C ) <= string .MaximumLength );
return string .Buffer .?[0 ..@divExact (string .Length , @sizeOf (C )) :0 ];
}
};
}