This commit is contained in:
2026-01-19 20:44:01 -06:00
commit 3ec97851a9
8 changed files with 239 additions and 0 deletions

55
sz_parser.odin Normal file
View File

@@ -0,0 +1,55 @@
package main
import sz "szlib"
import "core:encoding/json"
import "core:fmt"
import "core:os"
write_dataset_to_json :: proc(dataset: sz.Dataset, json_path: string) -> (ok: bool) {
json_data, err := json.marshal(dataset, {pretty = true, use_enum_names = true})
if err != nil {
fmt.eprintfln("Unable to marshal JSON: %v", err)
return false
}
werr := os.write_entire_file_or_err(json_path, json_data)
if werr != nil {
fmt.eprintfln("Unable to write JSON: %v", err)
return false
}
return true
}
parse_json_to_dataset :: proc(json_path: string) -> (result: sz.Dataset, ok: bool) {
dataset: sz.Dataset
data, data_ok := os.read_entire_file_from_filename(json_path)
if !data_ok {
fmt.eprintln("Failed to load the file")
return dataset, false
}
defer delete(data)
json_data, err := json.parse(data)
if err != .None {
fmt.eprintln("Failed to parse JSON file.")
fmt.eprintln("Error: ", err)
return dataset, false
}
defer json.destroy_value(json_data)
root := json_data.(json.Object)
error := json.unmarshal(data, &dataset)
if error != nil {
fmt.eprintln("Could not unmarshal json data to Dataset:", error)
return dataset, false
}
return dataset, true
}