Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / library / libm3.c
1 #include <assert.h>
2
3 #define PART_OF_M3
4 #include "m3.h"
5 #include "m2.h"
6 #define DYNAMIC_LINK_M1
7 #include "m1.h"
8
9 extern EXTERNAL void* libm1cSymPublic;
10 extern EXTERNAL void* libm1cFnPublic(void);
11 extern EXTERNAL void* libm2cSymPublic;
12 extern EXTERNAL void* libm2cFnPublic(void);
13
14 PRIVATE void* libm3cSymPrivate = 0;
15 PUBLIC void* libm3cSymPublic = 0;
16
17 PRIVATE void* libm3cFnPrivate(void) {
18 return &libm3cSymPrivate;
19 }
20
21 PUBLIC void* libm3cFnPublic(void) {
22 return &libm3cSymPublic;
23 }
24
25 PRIVATE void libm3confirmC(void) {
26 assert (&libm3smlFnPrivate == libm3smlSymPrivate);
27 assert (&libm3smlFnPublic == libm3smlSymPublic);
28 assert (&libm3cFnPrivate == libm3cSymPrivate);
29 assert (&libm3cFnPublic == libm3cSymPublic);
30
31 assert (libm3smlFnPrivate() == &libm3smlSymPrivate);
32 assert (libm3smlFnPublic() == &libm3smlSymPublic);
33
34 /* Check libm1 */
35 assert (&libm1smlFnPublic == libm1smlSymPublic);
36 assert (&libm1cFnPublic == libm1cSymPublic);
37 assert (libm1smlFnPublic() == &libm1smlSymPublic);
38 assert (libm1cFnPublic() == &libm1cSymPublic);
39
40 /* Check libm2 */
41 assert (&libm2smlFnPublic == libm2smlSymPublic);
42 assert (&libm2cFnPublic == libm2cSymPublic);
43 assert (libm2smlFnPublic() == &libm2smlSymPublic);
44 assert (libm2cFnPublic() == &libm2cSymPublic);
45 }