fc7864091e
CreateAsmStructOffsetsHeader mechanism to generate a header with macros defined to the sizes of the structures we're interested in and when compiling in C mode define the structures as "struct { char bytes[size]; }". It works in principle, but due to how jam works, one would have to specify the dependency to the generated header for all sources that include it directly or indirectly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34441 a95241bf-73f2-0310-859d-f6bbb57e9c96
32 lines
868 B
C
32 lines
868 B
C
/*
|
|
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _KERNEL_UTIL_KERNEL_C_H
|
|
#define _KERNEL_UTIL_KERNEL_C_H
|
|
|
|
|
|
/*! Defines a structure that has the size of a certain C++ structure.
|
|
\param name The name of the C++ structure.
|
|
\param flatName The name of the structure to be defined.
|
|
*/
|
|
#define DEFINE_FLAT_KERNEL_CPP_STRUCT(name, flatName) \
|
|
struct flatName { \
|
|
char bytes[_KERNEL_CPP_STRUCT_SIZE_##name]; \
|
|
};
|
|
|
|
|
|
/*! In C mode DEFINE_KERNEL_CPP_STRUCT() defines a struct \a name with the
|
|
size of the C++ structure of the same name. In C++ it is a no-op.
|
|
*/
|
|
#ifdef __cplusplus
|
|
# define DEFINE_KERNEL_CPP_STRUCT(name)
|
|
#else
|
|
# define DEFINE_KERNEL_CPP_STRUCT(name) \
|
|
DEFINE_FLAT_KERNEL_CPP_STRUCT(name, name) \
|
|
typedef struct name name;
|
|
#endif
|
|
|
|
|
|
#endif /* _KERNEL_UTIL_KERNEL_C_H */
|