enum MetadataString [src]
Fields
none = 0
_
Members
- slice (Function)
Source
pub const MetadataString = enum(u32) {
none = 0,
_,
pub fn slice(self: MetadataString, builder: *const Builder) []const u8 {
const index = @intFromEnum(self);
const start = builder.metadata_string_indices.items[index];
const end = builder.metadata_string_indices.items[index + 1];
return builder.metadata_string_bytes.items[start..end];
}
const Adapter = struct {
builder: *const Builder,
pub fn hash(_: Adapter, key: []const u8) u32 {
return @truncate(std.hash.Wyhash.hash(0, key));
}
pub fn eql(ctx: Adapter, lhs_key: []const u8, _: void, rhs_index: usize) bool {
const rhs_metadata_string: MetadataString = @enumFromInt(rhs_index);
return std.mem.eql(u8, lhs_key, rhs_metadata_string.slice(ctx.builder));
}
};
const FormatData = struct {
metadata_string: MetadataString,
builder: *const Builder,
};
fn format(
data: FormatData,
comptime _: []const u8,
_: std.fmt.FormatOptions,
writer: anytype,
) @TypeOf(writer).Error!void {
try printEscapedString(data.metadata_string.slice(data.builder), .always_quote, writer);
}
fn fmt(self: MetadataString, builder: *const Builder) std.fmt.Formatter(format) {
return .{ .data = .{ .metadata_string = self, .builder = builder } };
}
}