1 /** Function pointer tests.
7 /* Must use a typedef as there is no way of adding the code modifier
10 typedef void (*NOARGFUNPTR)(void);
11 typedef void (*ONEARGFUNPTR)({type}) REENTRANT;
12 typedef long int (*FOURARGFUNPTR)(char, char, long int, long int) REENTRANT;
24 incBy({type} a) REENTRANT
29 long int f6(char a, char b, long int c, long int d) REENTRANT
43 callViaPtr(NOARGFUNPTR fptr)
49 callViaPtr2(ONEARGFUNPTR fptr, {type} arg)
55 callViaPtr3(void (*fptr)(void))
61 callViaPtrAnsi(NOARGFUNPTR fptr)
67 callViaPtr2Ansi(ONEARGFUNPTR fptr, {type} arg)
73 callViaPtr3Ansi(void (*fptr)(void))
88 callViaPtr2(incBy, 7);
91 ASSERT((*fafp)(0, 0x55, 0x12345678, 0x9abcdef0) == 0);
92 ASSERT((*fafp)(1, 0x55, 0x12345678, 0x9abcdef0) == 0x55);
93 ASSERT((*fafp)(2, 0x55, 0x12345678, 0x9abcdef0) == 0x12345678);
94 ASSERT((*fafp)(3, 0x55, 0x12345678, 0x9abcdef0) == 0x9abcdef0);
103 callViaPtrAnsi(incCount);
105 callViaPtr2Ansi(incBy, 7);
108 ASSERT(fafp(0, 0x55, 0x12345678, 0x9abcdef0) == 0);
109 ASSERT(fafp(1, 0x55, 0x12345678, 0x9abcdef0) == 0x55);
110 ASSERT(fafp(2, 0x55, 0x12345678, 0x9abcdef0) == 0x12345678);
111 ASSERT(fafp(3, 0x55, 0x12345678, 0x9abcdef0) == 0x9abcdef0);