code wiki / _hdl_build / _json_string_authored.nx

_json_string_authored.nx source

↩ module page · 16 lines · 955 B

1// AUTHORED BY THE NISHI BUILDER (json-string template) -- JSON string scan + unescape, bits-up 2import "nx_syscalls.nx" 3func json_string(s: *u8, n: i64, out: *u8) -> i64 { 4 var op: i64=0; var i: i64=1; var done: i64=0 5 while done==0 { 6 if i>=n { done=1 } else { let c: u8=s[i]; if c==0x22 as u8 { done=1; i=i+1 } else { if c==0x5c as u8 { i=i+1; if i<n { let e: u8=s[i]; if e==0x6e as u8 { out[op]=0x0a as u8 } else { if e==0x74 as u8 { out[op]=0x09 as u8 } else { out[op]=e } } op=op+1; i=i+1 } } else { out[op]=c; op=op+1; i=i+1 } } } 7 } 8 return op 9} 10func main() -> i64 { 11 let s: *u8=sys_mmap(8); s[0]=34 as u8; s[1]=97 as u8; s[2]=92 as u8; s[3]=110 as u8; s[4]=98 as u8; s[5]=34 as u8 12 let out: *u8=sys_mmap(32); let n: i64=json_string(s, 6, out) 13 var ok: i64=1; if n!=3 { ok=0 } if out[0]!=97 as u8 { ok=0 } if out[1]!=10 as u8 { ok=0 } if out[2]!=98 as u8 { ok=0 } 14 if ok==1 { sys_exit(0) } sys_exit(1) 15 return 1 16}