source: src/examples/gc_no_raii/src/internal/object_header.h @ 00c32e9

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsctordeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 00c32e9 was 1b5c81ed, checked in by Thierry Delisle <tdelisle@…>, 8 years ago

fixed several compilation errors

  • Property mode set to 100644
File size: 989 bytes
Line 
1#pragma once
2
3#include <stdbool.h>
4#include <stddef.h>
5#include <stdint.h>
6
7#include "tools.h"
8
9#if DEBUG
10        static const long unsigned int CANARY_VALUE = 0xCAFEBABACAFEBABA;
11#endif
12
13struct gcpointer_t;
14struct gc_object_header;
15
16struct gc_object_header
17{
18        #if DEBUG
19                void* canary_start;
20        #endif
21
22        size_t          size;
23        gcpointer_t*    root_chain;
24        gcpointer_t*    type_chain;
25        gc_object_header*       forward;
26        bool                    is_forwarded;
27
28        #if DEBUG
29                void* canary_end;
30        #endif
31};
32
33void ctor(gc_object_header* const this, size_t size);
34void copy_ctor(gc_object_header* const this, const gc_object_header* const other);
35
36static inline gc_object_header* placement_ctor(void* address, size_t size)
37{
38        gc_object_header* const this = (gc_object_header* const) address;
39        ctor(this, size);
40        return this;
41}
42
43static inline gc_object_header* placement_copy_ctor(void* address, const gc_object_header* const other)
44{
45        gc_object_header* const this = (gc_object_header* const) address;
46        copy_ctor(this, other);
47        return this;
48}
Note: See TracBrowser for help on using the repository browser.