1 module bdwgc;
2 version (D_BetterC)
3 {
4     version (LDC)
5     {
6         pragma(LDC_no_moduleinfo);
7         pragma(LDC_no_typeinfo);
8     }
9     public import gc;
10 }
11 else
12 {
13     public import cimport;
14 }
15 
16 version (Windows)
17 {
18     private import core.stdc.stdio : printf;
19 
20     alias GC_printf = printf;
21 }
22 else
23 {
24     pragma(printf)
25     extern (C) void GC_printf(const(char)* format, ...) @trusted @nogc nothrow;
26 }
27 
28 @("GC initialization")
29 @system unittest
30 {
31     GC_init();
32 
33     for (auto i = 0; i < 1024; i++)
34     {
35         auto mem = cast(size_t*) GC_malloc(size_t.sizeof * 4);
36 
37         *(mem + 0) = 0;
38         *(mem + 1) = 1;
39         *(mem + 2) = 2;
40         *(mem + 3) = 3;
41 
42         assert(*(mem++) == 0);
43         assert(*(mem++) == 1);
44         assert(*(mem++) == 2);
45         assert(*(mem++) == 3);
46     }
47 }
48 
49 @("GC incremental")
50 @system unittest
51 {
52     GC_init();
53     GC_enable_incremental();
54 
55     for (auto i = 0; i < 1024; i++)
56     {
57         auto mem = GC_malloc(size_t.sizeof * 4);
58         GC_free(mem);
59     }
60 }