nx_face_feature_gate_t367r4.nx source
↩ module page · 55 lines · 2781 B
1// nx_face_feature_gate_t367r4.nx -- instrumented reusable face feature referee.
2// Emits each native stage result so qualification observes the complete contract.
3import "nx_syscalls.nx"
4import "nx_gatekit_lib.nx"
5import "nx_sdfrender.nx"
6import "nx_faceanat.nx"
7const R_EXIT_USAGE: i64 = 2
8const R_EXIT_REFUSE: i64 = 1
9const R_FACE_SIZE: i64 = 1
10const R_LEFT: i64 = 0 - 1
11const R_RIGHT: i64 = 1
12const R_ASCII0: i64 = 48
13const R_MINUS: i64 = 45
14const R_NL: i64 = 10
15func rnum(tag:*u8,v:i64)->i64 {
16 let b:*u8=sys_mmap(96); let d:*u8=sys_mmap(64); var n:i64=0; var x:i64=v
17 if x<0 { b[n]=R_MINUS; n=n+1; x=0-x }; var m:i64=0
18 if x==0 { d[m]=R_ASCII0; m=m+1 }
19 while x>0 { let q:i64=x/10; d[m]=R_ASCII0+(x-q*10); m=m+1; x=q }
20 while m>0 { m=m-1; b[n]=d[m]; n=n+1 }; b[n]=R_NL; n=n+1
21 sys_write(1,tag,gk_len(tag)); sys_write(1,b,n); return v
22}
23func main(argc:i64,argv:*i64)->i64 {
24 if argc!=R_FACE_SIZE { return R_EXIT_USAGE }
25 let arena:*u8=sys_mmap(sdf_bytes())
26 if (arena as i64)==0 { return R_EXIT_REFUSE }
27 rnum("build=",faceanat_build(arena as i64))
28 let left:*i64=sys_mmap(FA_PF_O_FIELDS*8+FA_LIP_SLACK) as *i64
29 let right:*i64=sys_mmap(FA_PF_O_FIELDS*8+FA_LIP_SLACK) as *i64
30 if (left as i64)==0 || (right as i64)==0 { return R_EXIT_REFUSE }
31 let left_result:i64=fa_palpebral_fissure(arena as i64,R_LEFT,left)
32 rnum("left=",left_result); rnum("left_reason=",left[FA_PF_O_REASON])
33 let right_result:i64=fa_palpebral_fissure(arena as i64,R_RIGHT,right)
34 rnum("right=",right_result); rnum("right_reason=",right[FA_PF_O_REASON])
35 let lip:*i64=sys_mmap(FA_LIP_O_FIELDS*8+FA_LIP_SLACK) as *i64
36 if (lip as i64)==0 { return R_EXIT_REFUSE }
37 let lip_result:i64=fa_lip_ratio(arena as i64,lip)
38 rnum("lip=",lip_result); rnum("lip_reason=",lip[FA_LIP_O_REASON])
39 if left_result!=0 || right_result!=0 { return R_EXIT_REFUSE }
40 if lip_result==FA_LIP_UNMEASURED || lip[FA_LIP_O_REASON]!=FA_LIP_R_OK { return R_EXIT_REFUSE }
41 let genes:*i64=sys_mmap(6*8) as *i64
42 if (genes as i64)==0 { return R_EXIT_REFUSE }
43 genes[0]=50; genes[1]=100; genes[2]=100; genes[3]=581; genes[4]=0; genes[5]=0
44 rnum("genes=",faceanat_eye_genes(arena as i64,genes))
45 rnum("rebuild=",faceanat_build(arena as i64))
46 let left_after:i64=fa_palpebral_fissure(arena as i64,R_LEFT,left)
47 rnum("left_after=",left_after); rnum("left_after_reason=",left[FA_PF_O_REASON])
48 let right_after:i64=fa_palpebral_fissure(arena as i64,R_RIGHT,right)
49 rnum("right_after=",right_after); rnum("right_after_reason=",right[FA_PF_O_REASON])
50 let lip_after:i64=fa_lip_ratio(arena as i64,lip)
51 rnum("lip_after=",lip_after); rnum("lip_after_reason=",lip[FA_LIP_O_REASON])
52 if left_after!=0 || right_after!=0 { return R_EXIT_REFUSE }
53 if lip_after==FA_LIP_UNMEASURED || lip[FA_LIP_O_REASON]!=FA_LIP_R_OK { return R_EXIT_REFUSE }
54 return 0
55}