Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/bindgen/ir/constant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -636,13 +636,16 @@ impl Constant {
debug_assert!(config.structure.associated_constants_in_body);
debug_assert!(config.constant.allow_static_const);

let condition = self.cfg.to_condition(config);
condition.write_before(config, out);
if let Type::Ptr { is_const: true, .. } = self.ty {
out.write("static ");
} else {
out.write("static const ");
}
language_backend.write_type(out, &self.ty);
write!(out, " {};", self.export_name())
write!(out, " {};", self.export_name());
condition.write_after(config, out);
}

pub fn write<F: Write, LB: LanguageBackend>(
Expand Down
13 changes: 13 additions & 0 deletions tests/expectations/associated_in_body.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
Expand Down Expand Up @@ -34,6 +41,12 @@ typedef struct {
#define StyleAlignFlags_FLEX_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 3) }
#define StyleAlignFlags_MIXED (StyleAlignFlags){ .bits = (uint8_t)(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#define StyleAlignFlags_MIXED_SELF (StyleAlignFlags){ .bits = (uint8_t)(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#if defined(PLATFORM_WIN)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 6) }
#endif
#if defined(PLATFORM_UNIX)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 7) }
#endif

/**
* An arbitrary identifier for a native (OS compositor) surface
Expand Down
13 changes: 13 additions & 0 deletions tests/expectations/associated_in_body.compat.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
Expand Down Expand Up @@ -34,6 +41,12 @@ typedef struct {
#define StyleAlignFlags_FLEX_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 3) }
#define StyleAlignFlags_MIXED (StyleAlignFlags){ .bits = (uint8_t)(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#define StyleAlignFlags_MIXED_SELF (StyleAlignFlags){ .bits = (uint8_t)(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#if defined(PLATFORM_WIN)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 6) }
#endif
#if defined(PLATFORM_UNIX)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 7) }
#endif

/**
* An arbitrary identifier for a native (OS compositor) surface
Expand Down
23 changes: 23 additions & 0 deletions tests/expectations/associated_in_body.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


#include <cstdarg>
#include <cstdint>
#include <cstdlib>
Expand Down Expand Up @@ -45,6 +52,12 @@ struct StyleAlignFlags {
static const StyleAlignFlags FLEX_START;
static const StyleAlignFlags MIXED;
static const StyleAlignFlags MIXED_SELF;
#if defined(PLATFORM_WIN)
static const StyleAlignFlags PLATFORM_BIT;
#endif
#if defined(PLATFORM_UNIX)
static const StyleAlignFlags PLATFORM_BIT;
#endif
};
/// 'auto'
constexpr inline const StyleAlignFlags StyleAlignFlags::AUTO = StyleAlignFlags{
Expand Down Expand Up @@ -75,6 +88,16 @@ constexpr inline const StyleAlignFlags StyleAlignFlags::MIXED = StyleAlignFlags{
constexpr inline const StyleAlignFlags StyleAlignFlags::MIXED_SELF = StyleAlignFlags{
/* .bits = */ (uint8_t)(((1 << 5) | (StyleAlignFlags::FLEX_START).bits) | (StyleAlignFlags::END).bits)
};
#if defined(PLATFORM_WIN)
constexpr inline const StyleAlignFlags StyleAlignFlags::PLATFORM_BIT = StyleAlignFlags{
/* .bits = */ (uint8_t)(1 << 6)
};
#endif
#if defined(PLATFORM_UNIX)
constexpr inline const StyleAlignFlags StyleAlignFlags::PLATFORM_BIT = StyleAlignFlags{
/* .bits = */ (uint8_t)(1 << 7)
};
#endif

/// An arbitrary identifier for a native (OS compositor) surface
struct StyleNativeSurfaceId {
Expand Down
11 changes: 11 additions & 0 deletions tests/expectations/associated_in_body.pyx
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


from libc.stdint cimport int8_t, int16_t, int32_t, int64_t, intptr_t
from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t, uintptr_t
cdef extern from *:
Expand All @@ -24,6 +31,10 @@ cdef extern from *:
const StyleAlignFlags StyleAlignFlags_FLEX_START # = <StyleAlignFlags>{ <uint8_t>(1 << 3) }
const StyleAlignFlags StyleAlignFlags_MIXED # = <StyleAlignFlags>{ <uint8_t>(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
const StyleAlignFlags StyleAlignFlags_MIXED_SELF # = <StyleAlignFlags>{ <uint8_t>(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
IF PLATFORM_WIN:
const StyleAlignFlags StyleAlignFlags_PLATFORM_BIT # = <StyleAlignFlags>{ <uint8_t>(1 << 6) }
IF PLATFORM_UNIX:
const StyleAlignFlags StyleAlignFlags_PLATFORM_BIT # = <StyleAlignFlags>{ <uint8_t>(1 << 7) }

# An arbitrary identifier for a native (OS compositor) surface
ctypedef struct StyleNativeSurfaceId:
Expand Down
13 changes: 13 additions & 0 deletions tests/expectations/associated_in_body_both.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
Expand Down Expand Up @@ -34,6 +41,12 @@ typedef struct StyleAlignFlags {
#define StyleAlignFlags_FLEX_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 3) }
#define StyleAlignFlags_MIXED (StyleAlignFlags){ .bits = (uint8_t)(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#define StyleAlignFlags_MIXED_SELF (StyleAlignFlags){ .bits = (uint8_t)(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#if defined(PLATFORM_WIN)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 6) }
#endif
#if defined(PLATFORM_UNIX)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 7) }
#endif

/**
* An arbitrary identifier for a native (OS compositor) surface
Expand Down
13 changes: 13 additions & 0 deletions tests/expectations/associated_in_body_both.compat.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
Expand Down Expand Up @@ -34,6 +41,12 @@ typedef struct StyleAlignFlags {
#define StyleAlignFlags_FLEX_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 3) }
#define StyleAlignFlags_MIXED (StyleAlignFlags){ .bits = (uint8_t)(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#define StyleAlignFlags_MIXED_SELF (StyleAlignFlags){ .bits = (uint8_t)(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#if defined(PLATFORM_WIN)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 6) }
#endif
#if defined(PLATFORM_UNIX)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 7) }
#endif

/**
* An arbitrary identifier for a native (OS compositor) surface
Expand Down
13 changes: 13 additions & 0 deletions tests/expectations/associated_in_body_tag.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
Expand Down Expand Up @@ -34,6 +41,12 @@ struct StyleAlignFlags {
#define StyleAlignFlags_FLEX_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 3) }
#define StyleAlignFlags_MIXED (StyleAlignFlags){ .bits = (uint8_t)(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#define StyleAlignFlags_MIXED_SELF (StyleAlignFlags){ .bits = (uint8_t)(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#if defined(PLATFORM_WIN)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 6) }
#endif
#if defined(PLATFORM_UNIX)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 7) }
#endif

/**
* An arbitrary identifier for a native (OS compositor) surface
Expand Down
13 changes: 13 additions & 0 deletions tests/expectations/associated_in_body_tag.compat.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
Expand Down Expand Up @@ -34,6 +41,12 @@ struct StyleAlignFlags {
#define StyleAlignFlags_FLEX_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 3) }
#define StyleAlignFlags_MIXED (StyleAlignFlags){ .bits = (uint8_t)(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#define StyleAlignFlags_MIXED_SELF (StyleAlignFlags){ .bits = (uint8_t)(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#if defined(PLATFORM_WIN)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 6) }
#endif
#if defined(PLATFORM_UNIX)
#define StyleAlignFlags_PLATFORM_BIT (StyleAlignFlags){ .bits = (uint8_t)(1 << 7) }
#endif

/**
* An arbitrary identifier for a native (OS compositor) surface
Expand Down
11 changes: 11 additions & 0 deletions tests/expectations/associated_in_body_tag.pyx
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#if 0
DEF PLATFORM_UNIX = 0
DEF PLATFORM_WIN = 0
#endif
#define PLATFORM_UNIX 1


from libc.stdint cimport int8_t, int16_t, int32_t, int64_t, intptr_t
from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t, uintptr_t
cdef extern from *:
Expand All @@ -24,6 +31,10 @@ cdef extern from *:
const StyleAlignFlags StyleAlignFlags_FLEX_START # = <StyleAlignFlags>{ <uint8_t>(1 << 3) }
const StyleAlignFlags StyleAlignFlags_MIXED # = <StyleAlignFlags>{ <uint8_t>(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
const StyleAlignFlags StyleAlignFlags_MIXED_SELF # = <StyleAlignFlags>{ <uint8_t>(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
IF PLATFORM_WIN:
const StyleAlignFlags StyleAlignFlags_PLATFORM_BIT # = <StyleAlignFlags>{ <uint8_t>(1 << 6) }
IF PLATFORM_UNIX:
const StyleAlignFlags StyleAlignFlags_PLATFORM_BIT # = <StyleAlignFlags>{ <uint8_t>(1 << 7) }

# An arbitrary identifier for a native (OS compositor) surface
cdef struct StyleNativeSurfaceId:
Expand Down
22 changes: 22 additions & 0 deletions tests/expectations/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ DEF PLATFORM_WIN = 0
DEF X11 = 0
DEF M_32 = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
Expand All @@ -29,9 +30,30 @@ enum FooType {
typedef uint32_t FooType;
#endif

typedef struct {
uint8_t _0;
} Flags;
/**
* none
*/
#define Flags_NONE (Flags){ ._0 = (uint8_t)0 }
#if defined(PLATFORM_WIN)
#define Flags_A (Flags){ ._0 = (uint8_t)(1 << 0) }
#endif
#if defined(PLATFORM_UNIX)
#define Flags_A (Flags){ ._0 = (uint8_t)(1 << 1) }
#endif
#if defined(PLATFORM_WIN)
#define Flags_B (Flags){ ._0 = (uint8_t)((Flags_A)._0 | (1 << 3)) }
#endif
#if defined(PLATFORM_UNIX)
#define Flags_B (Flags){ ._0 = (uint8_t)((Flags_A)._0 | (1 << 4)) }
#endif

#if (defined(PLATFORM_UNIX) && defined(X11))
typedef struct {
FooType ty;
Flags flags;
int32_t x;
float y;
} FooHandle;
Expand Down
22 changes: 22 additions & 0 deletions tests/expectations/cfg.compat.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ DEF PLATFORM_WIN = 0
DEF X11 = 0
DEF M_32 = 0
#endif
#define PLATFORM_UNIX 1


#include <stdarg.h>
Expand Down Expand Up @@ -41,9 +42,30 @@ typedef uint32_t FooType;
#endif // __cplusplus
#endif

typedef struct {
uint8_t _0;
} Flags;
/**
* none
*/
#define Flags_NONE (Flags){ ._0 = (uint8_t)0 }
#if defined(PLATFORM_WIN)
#define Flags_A (Flags){ ._0 = (uint8_t)(1 << 0) }
#endif
#if defined(PLATFORM_UNIX)
#define Flags_A (Flags){ ._0 = (uint8_t)(1 << 1) }
#endif
#if defined(PLATFORM_WIN)
#define Flags_B (Flags){ ._0 = (uint8_t)((Flags_A)._0 | (1 << 3)) }
#endif
#if defined(PLATFORM_UNIX)
#define Flags_B (Flags){ ._0 = (uint8_t)((Flags_A)._0 | (1 << 4)) }
#endif

#if (defined(PLATFORM_UNIX) && defined(X11))
typedef struct {
FooType ty;
Flags flags;
int32_t x;
float y;
} FooHandle;
Expand Down
Loading