Merge pull request #1066 from esdrubal/bug19313
[mono.git] / mono / metadata / abi-details.h
1 /*
2  * Copyright 2014 Xamarin Inc
3  */
4 #ifndef __MONO_METADATA_ABI_DETAILS_H__
5 #define __MONO_METADATA_ABI_DETAILS_H__
6
7 #include <config.h>
8 #include <glib.h>
9
10 #define MONO_ABI_ALIGNOF(type) MONO_ALIGN_ ## type
11 #define MONO_CURRENT_ABI_ALIGNOF(type) ((int)G_STRUCT_OFFSET(struct { char c; type x; }, x))
12
13
14 #undef DECL_OFFSET
15 #undef DECL_OFFSET2
16 #define DECL_OFFSET(struct,field) MONO_OFFSET_ ## struct ## _ ## field = -1,
17 #define DECL_OFFSET2(struct,field,offset) MONO_OFFSET_ ## struct ## _ ## field = offset,
18 #define DECL_ALIGN(type) MONO_ALIGN_ ##type = MONO_CURRENT_ABI_ALIGNOF (type),
19 #define DECL_ALIGN2(type,size) MONO_ALIGN_ ##type = size,
20
21 enum {
22 #include "object-offsets.h"
23 };
24
25 #ifdef USED_CROSS_COMPILER_OFFSETS
26 #define MONO_STRUCT_OFFSET(struct,field) MONO_OFFSET_ ## struct ## _ ## field
27 #else
28 #define MONO_STRUCT_OFFSET(struct,field) (MONO_OFFSET_ ## struct ## _ ## field == -1, G_STRUCT_OFFSET (struct,field))
29 #endif
30
31 #endif