source: src/examples/gc_no_raii/src/internal/object_header.h @ 16cfd8c

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

1 error left

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