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 */
|