Files
cbindgen/tests/expectations/enum.compat.c
T
Emilio Cobos Álvarez 9b5dd80d84 Stop including <uchar.h>, and instead map Rust char to uint32_t.
This is technically a breaking change for C++, unfortunately.

Fixes #423.
2019-12-04 00:03:38 +01:00

194 lines
2.3 KiB
C

#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
enum A
#ifdef __cplusplus
: uint32_t
#endif // __cplusplus
{
a1 = 0,
a2 = 2,
a3,
a4 = 5,
};
#ifndef __cplusplus
typedef uint32_t A;
#endif // __cplusplus
enum B
#ifdef __cplusplus
: uint16_t
#endif // __cplusplus
{
b1 = 0,
b2 = 2,
b3,
b4 = 5,
};
#ifndef __cplusplus
typedef uint16_t B;
#endif // __cplusplus
enum C
#ifdef __cplusplus
: uint8_t
#endif // __cplusplus
{
c1 = 0,
c2 = 2,
c3,
c4 = 5,
};
#ifndef __cplusplus
typedef uint8_t C;
#endif // __cplusplus
enum D
#ifdef __cplusplus
: uintptr_t
#endif // __cplusplus
{
d1 = 0,
d2 = 2,
d3,
d4 = 5,
};
#ifndef __cplusplus
typedef uintptr_t D;
#endif // __cplusplus
enum E
#ifdef __cplusplus
: intptr_t
#endif // __cplusplus
{
e1 = 0,
e2 = 2,
e3,
e4 = 5,
};
#ifndef __cplusplus
typedef intptr_t E;
#endif // __cplusplus
typedef enum {
k1,
k2,
k3,
k4,
} K;
enum L
#ifdef __cplusplus
: int8_t
#endif // __cplusplus
{
l1 = -1,
l2 = 0,
l3 = 1,
};
#ifndef __cplusplus
typedef int8_t L;
#endif // __cplusplus
typedef struct I I;
typedef struct J J;
typedef struct Opaque Opaque;
enum F_Tag
#ifdef __cplusplus
: uint8_t
#endif // __cplusplus
{
Foo,
Bar,
Baz,
};
#ifndef __cplusplus
typedef uint8_t F_Tag;
#endif // __cplusplus
typedef struct {
F_Tag tag;
int16_t _0;
} Foo_Body;
typedef struct {
F_Tag tag;
uint8_t x;
int16_t y;
} Bar_Body;
typedef union {
F_Tag tag;
Foo_Body foo;
Bar_Body bar;
} F;
typedef enum {
G_Foo,
G_Bar,
G_Baz,
} G_Tag;
typedef struct {
int16_t _0;
} G_Foo_Body;
typedef struct {
uint8_t x;
int16_t y;
} G_Bar_Body;
typedef struct {
G_Tag tag;
union {
G_Foo_Body foo;
G_Bar_Body bar;
};
} G;
enum H_Tag
#ifdef __cplusplus
: uint8_t
#endif // __cplusplus
{
H_Foo,
H_Bar,
H_Baz,
};
#ifndef __cplusplus
typedef uint8_t H_Tag;
#endif // __cplusplus
typedef struct {
int16_t _0;
} H_Foo_Body;
typedef struct {
uint8_t x;
int16_t y;
} H_Bar_Body;
typedef struct {
H_Tag tag;
union {
H_Foo_Body foo;
H_Bar_Body bar;
};
} H;
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
void root(Opaque *o, A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l);
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus