feat: improve build and serialization logic

- Update v fmt exit code handling
- Support dynamic organization for symlinks
- Add f32 and list f64 serialization/deserialization
- Improve JSON decoding for bid requirements/pricing
- Add basic tests for Bid and Node creation
This commit is contained in:
Mahmoud-Emad
2025-10-12 13:27:10 +03:00
parent de8f390f4b
commit a65cbd606b
8 changed files with 108 additions and 30 deletions

View File

@@ -115,6 +115,13 @@ pub fn (mut b Encoder) add_f64(data f64) {
b.add_u64(bits)
}
// adds a float32 value
pub fn (mut b Encoder) add_f32(data f32) {
// Convert f32 to bits first, then store as u32
bits := unsafe { *(&u32(&data)) }
b.add_u32(bits)
}
// adds gid as a string
pub fn (mut b Encoder) add_gid(data gid.GID) {
b.add_string(data.str())
@@ -185,6 +192,16 @@ pub fn (mut b Encoder) add_list_u64(data []u64) {
}
}
pub fn (mut b Encoder) add_list_f64(data []f64) {
if data.len > 64 * kb {
panic('list cannot have more than 64kb items.')
}
b.add_u16(u16(data.len)) // how many items in list
for item in data {
b.add_f64(item)
}
}
// when complicated hash e.g. map of other object need to serialize each sub object
pub fn (mut b Encoder) add_map_string(data map[string]string) {
if data.len > 64 * kb {