shorten cmph pack by 4 bytes

This commit is contained in:
Motiejus Jakštys 2022-02-23 20:30:23 +02:00 committed by Motiejus Jakštys
parent 3498167108
commit c0afca00b0
2 changed files with 5 additions and 4 deletions

View File

@ -6,7 +6,7 @@ const c = @cImport({
}); });
pub fn search_packed(packed_mphf: []const u8, key: []const u8) error{Overflow}!u32 { pub fn search_packed(packed_mphf: []const u8, key: []const u8) error{Overflow}!u32 {
const bdz_start = @intToPtr(?*anyopaque, @ptrToInt(&packed_mphf[4])); const bdz_start = @intToPtr(?*anyopaque, @ptrToInt(&packed_mphf[0]));
const len = try std.math.cast(c_uint, key.len); const len = try std.math.cast(c_uint, key.len);
return @as(u32, c.bdz_search_packed(bdz_start, key.ptr, len)); return @as(u32, c.bdz_search_packed(bdz_start, key.ptr, len));
} }

View File

@ -6,8 +6,9 @@ const c = @cImport({
@cInclude("cmph.h"); @cInclude("cmph.h");
}); });
// pack packs cmph hashes for the given input and returns a slice ("cmph // pack packs cmph hashes for the given input and returns a slice ("cmph pack
// userdata") for further storage. The slice must be freed by the caller. // minus first 4 bytes") for further storage. The slice must be freed by the
// caller.
const packErr = Allocator.Error || error{Overflow}; const packErr = Allocator.Error || error{Overflow};
pub fn pack(allocator: Allocator, input: [][*:0]const u8) packErr![]const u8 { pub fn pack(allocator: Allocator, input: [][*:0]const u8) packErr![]const u8 {
var cvector = @ptrCast([*c][*c]u8, input.ptr); var cvector = @ptrCast([*c][*c]u8, input.ptr);
@ -24,7 +25,7 @@ pub fn pack(allocator: Allocator, input: [][*:0]const u8) packErr![]const u8 {
var buf = try allocator.alloc(u8, size); var buf = try allocator.alloc(u8, size);
c.cmph_pack(hash, &buf[0]); c.cmph_pack(hash, &buf[0]);
c.cmph_destroy(hash); c.cmph_destroy(hash);
return buf; return buf[4..];
} }
const testing = std.testing; const testing = std.testing;