lib/tldr/src/formats/elf/byte.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const std = @import("std");
 2 
 3 pub fn copyInto(buffer: []u8, offset: usize, bytes: []const u8) void {
 4     if (bytes.len == 0) return;
 5     @memcpy(buffer[offset .. offset + bytes.len], bytes);
 6 }
 7 
 8 pub fn elfSymbolInfo(binding: anytype, kind: anytype) u8 {
 9     return (@as(u8, binding) << 4) | @as(u8, kind);
10 }
11 
12 pub fn hashU64(seed: u64, value: u64) u64 {
13     var bytes: [8]u8 = undefined;
14     std.mem.writeInt(u64, &bytes, value, .little);
15     return std.hash.Wyhash.hash(seed, &bytes);
16 }
17 
18 pub fn readU16(bytes: []const u8, offset: usize) u16 {
19     return std.mem.readInt(u16, bytes[offset..][0..2], .little);
20 }
21 
22 pub fn readU32(bytes: []const u8, offset: usize) u32 {
23     return std.mem.readInt(u32, bytes[offset..][0..4], .little);
24 }
25 
26 pub fn readU64(bytes: []const u8, offset: usize) u64 {
27     return std.mem.readInt(u64, bytes[offset..][0..8], .little);
28 }
29 
30 pub fn writeU16(bytes: []u8, offset: usize, value: u16) void {
31     std.mem.writeInt(u16, bytes[offset..][0..2], value, .little);
32 }
33 
34 pub fn writeU32(bytes: []u8, offset: usize, value: u32) void {
35     std.mem.writeInt(u32, bytes[offset..][0..4], value, .little);
36 }
37 
38 pub fn writeU64(bytes: []u8, offset: usize, value: u64) void {
39     std.mem.writeInt(u64, bytes[offset..][0..8], value, .little);
40 }