Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / library / libm4.c
1 #include <assert.h>
2
3 #define PART_OF_M4
4 #include "m4.h"
5 #define STATIC_LINK_M3
6 #include "m3.h"
7 #include "m2.h"
8 #define DYNAMIC_LINK_M1
9 #include "m1.h"
10
11 extern EXTERNAL void* libm1cSymPublic;
12 extern EXTERNAL void* libm1cFnPublic(void);
13 extern EXTERNAL void* libm2cSymPublic;
14 extern EXTERNAL void* libm2cFnPublic(void);
15
16 extern PUBLIC void* libm3cSymPublic;
17 extern PUBLIC void* libm3cFnPublic(void);
18
19 PRIVATE void* libm4cSymPrivate = 0;
20 PUBLIC void* libm4cSymPublic = 0;
21
22 PRIVATE void* libm4cFnPrivate(void) {
23 return &libm4cSymPrivate;
24 }
25
26 PUBLIC void* libm4cFnPublic(void) {
27 return &libm4cSymPublic;
28 }
29
30 PRIVATE void libm4confirmC(void) {
31 assert (&libm4smlFnPrivate == libm4smlSymPrivate);
32 assert (&libm4smlFnPublic == libm4smlSymPublic);
33 assert (&libm4cFnPrivate == libm4cSymPrivate);
34 assert (&libm4cFnPublic == libm4cSymPublic);
35
36 assert (libm4smlFnPrivate() == &libm4smlSymPrivate);
37 assert (libm4smlFnPublic() == &libm4smlSymPublic);
38
39 /* Check libm1 */
40 assert (&libm1smlFnPublic == libm1smlSymPublic);
41 assert (&libm1cFnPublic == libm1cSymPublic);
42 assert (libm1smlFnPublic() == &libm1smlSymPublic);
43 assert (libm1cFnPublic() == &libm1cSymPublic);
44
45 /* Check libm2 */
46 assert (&libm2smlFnPublic == libm2smlSymPublic);
47 assert (&libm2cFnPublic == libm2cSymPublic);
48 assert (libm2smlFnPublic() == &libm2smlSymPublic);
49 assert (libm2cFnPublic() == &libm2cSymPublic);
50
51 /* Check libm3 */
52 assert (&libm3smlFnPublic == libm3smlSymPublic);
53 assert (&libm3cFnPublic == libm3cSymPublic);
54 assert (libm3smlFnPublic() == &libm3smlSymPublic);
55 assert (libm3cFnPublic() == &libm3cSymPublic);
56 }