aboutsummaryrefslogtreecommitdiff
path: root/test/3.cff
blob: 7a92c121b648bc16e67732badc34180b026ff04f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import "libc.hff";

bitfield ColorMaskFlags : u32 {
   red 1 bool,
   green 1 bool,
   blue 1 bool,
   alpha 1 bool,
   id (8,3),
};

fn sum(res int, ...) int {
   let ap va_list = {};
   ap->start();
   printf("%d ", res);
   for ;; {
      let n = ap->arg(int);
      printf("+ %d ", n);
      res += n;
      if n == 0 { break; }
   }
   ap->end();
   return res;
}

extern fn main(argc int, argv **u8) int {
   printf("= %d\n", sum(1,2,3,42,-1,0));
   let rgb  = ColorMaskFlags { .red: #t, .blue: #t, .id: 13};
   printf("0x%X\n", rgb.#raw);
}