Backport from sid to buster
[hcoop/debian/mlton.git] / regression / library / libm4.c
CommitLineData
7f918cf1
CE
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
11extern EXTERNAL void* libm1cSymPublic;
12extern EXTERNAL void* libm1cFnPublic(void);
13extern EXTERNAL void* libm2cSymPublic;
14extern EXTERNAL void* libm2cFnPublic(void);
15
16extern PUBLIC void* libm3cSymPublic;
17extern PUBLIC void* libm3cFnPublic(void);
18
19PRIVATE void* libm4cSymPrivate = 0;
20PUBLIC void* libm4cSymPublic = 0;
21
22PRIVATE void* libm4cFnPrivate(void) {
23 return &libm4cSymPrivate;
24}
25
26PUBLIC void* libm4cFnPublic(void) {
27 return &libm4cSymPublic;
28}
29
30PRIVATE 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}