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}