1(use "errno.witx")
2(use "excuse.witx")
3
4(typename $const_excuse_array (list (@witx const_pointer $excuse)))
5(typename $excuse_array (list (@witx pointer $excuse)))
6
7(module $lists
8  (@interface func (export "reduce_excuses")
9    (param $excuses $const_excuse_array)
10    (result $error (expected $excuse (error $errno)))
11  )
12  (@interface func (export "populate_excuses")
13    (param $excuses $excuse_array)
14    (result $error (expected (error $errno)))
15  )
16)
17
18(typename $pair_ints
19  (record
20    (field $first s32)
21    (field $second s32)))
22
23(typename $s32 s32)
24
25(module $array_traversal
26  (@interface func (export "sum_of_element")
27    (param $elements (list $pair_ints))
28    (param $index (@witx usize))
29    (result $error (expected $s32 (error $errno))))
30
31  (@interface func (export "sum_of_elements")
32    (param $elements (list $pair_ints))
33    (param $start (@witx usize))
34    (param $end (@witx usize))
35    (result $error (expected $s32 (error $errno))))
36)
37