Ideally we'd just do this when we need it, but the ostream derivation will be controlled by both global config and per-structure config, so it's hard to know exactly when we need it and when we don't.
74 lines
1.2 KiB
C++
74 lines
1.2 KiB
C++
#define CBINDGEN_PACKED __attribute__ ((packed))
|
|
#define CBINDGEN_ALIGNED(n) __attribute__ ((aligned(n)))
|
|
|
|
|
|
#include <cstdarg>
|
|
#include <cstdint>
|
|
#include <cstdlib>
|
|
#include <ostream>
|
|
#include <new>
|
|
|
|
struct RustAlign4Struct;
|
|
|
|
struct RustAlign4Union;
|
|
|
|
struct RustPackedStruct;
|
|
|
|
struct RustPackedUnion;
|
|
|
|
struct UnsupportedAlign4Enum;
|
|
|
|
struct UnsupportedPacked4Struct;
|
|
|
|
struct UnsupportedPacked4Union;
|
|
|
|
struct CBINDGEN_ALIGNED(1) Align1Struct {
|
|
uintptr_t arg1;
|
|
uint8_t *arg2;
|
|
};
|
|
|
|
struct CBINDGEN_ALIGNED(2) Align2Struct {
|
|
uintptr_t arg1;
|
|
uint8_t *arg2;
|
|
};
|
|
|
|
struct CBINDGEN_ALIGNED(4) Align4Struct {
|
|
uintptr_t arg1;
|
|
uint8_t *arg2;
|
|
};
|
|
|
|
struct CBINDGEN_ALIGNED(8) Align8Struct {
|
|
uintptr_t arg1;
|
|
uint8_t *arg2;
|
|
};
|
|
|
|
struct CBINDGEN_ALIGNED(32) Align32Struct {
|
|
uintptr_t arg1;
|
|
uint8_t *arg2;
|
|
};
|
|
|
|
struct CBINDGEN_PACKED PackedStruct {
|
|
uintptr_t arg1;
|
|
uint8_t *arg2;
|
|
};
|
|
|
|
union CBINDGEN_ALIGNED(1) Align1Union {
|
|
uintptr_t variant1;
|
|
uint8_t *variant2;
|
|
};
|
|
|
|
union CBINDGEN_ALIGNED(4) Align4Union {
|
|
uintptr_t variant1;
|
|
uint8_t *variant2;
|
|
};
|
|
|
|
union CBINDGEN_ALIGNED(16) Align16Union {
|
|
uintptr_t variant1;
|
|
uint8_t *variant2;
|
|
};
|
|
|
|
union CBINDGEN_PACKED PackedUnion {
|
|
uintptr_t variant1;
|
|
uint8_t *variant2;
|
|
};
|