Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / library / libm5.c
1 #include <assert.h>
2
3 #define PART_OF_M5
4 #include "m5.h"
5 #include "m4.h"
6 #define DYNAMIC_LINK_M3
7 #include "m3.h"
8
9 extern EXTERNAL void* libm3cSymPublic;
10 extern EXTERNAL void* libm3cFnPublic(void);
11 extern EXTERNAL void* libm4cSymPublic;
12 extern EXTERNAL void* libm4cFnPublic(void);
13
14 PRIVATE void* libm5cSymPrivate = 0;
15 PUBLIC void* libm5cSymPublic = 0;
16
17 PRIVATE void* libm5cFnPrivate(void) {
18 return &libm5cSymPrivate;
19 }
20
21 PUBLIC void* libm5cFnPublic(void) {
22 return &libm5cSymPublic;
23 }
24
25 PRIVATE void libm5confirmC(void) {
26 assert (&libm5smlFnPrivate == libm5smlSymPrivate);
27 assert (&libm5smlFnPublic == libm5smlSymPublic);
28 assert (&libm5cFnPrivate == libm5cSymPrivate);
29 assert (&libm5cFnPublic == libm5cSymPublic);
30
31 assert (libm5smlFnPrivate() == &libm5smlSymPrivate);
32 assert (libm5smlFnPublic() == &libm5smlSymPublic);
33
34 /* Check libm3 */
35 assert (&libm3smlFnPublic == libm3smlSymPublic);
36 assert (&libm3cFnPublic == libm3cSymPublic);
37 assert (libm3smlFnPublic() == &libm3smlSymPublic);
38 assert (libm3cFnPublic() == &libm3cSymPublic);
39
40 /* Check libm4 */
41 assert (&libm4smlFnPublic == libm4smlSymPublic);
42 assert (&libm4cFnPublic == libm4cSymPublic);
43 assert (libm4smlFnPublic() == &libm4smlSymPublic);
44 assert (libm4cFnPublic() == &libm4cSymPublic);
45 }