(svn r19698) -Add: macros to get the size/length of a variable within a class

This commit is contained in:
rubidium 2010-04-23 14:56:14 +00:00
parent 02363447a6
commit d058df8828

View File

@ -371,6 +371,22 @@ assert_compile(sizeof(uint8) == 1);
#define offsetof(s, m) cpp_offsetof(s, m) #define offsetof(s, m) cpp_offsetof(s, m)
#endif /* offsetof */ #endif /* offsetof */
/**
* Gets the size of a variable within a class.
* @param base The class the variable is in.
* @param variable The variable to get the size of.
* @return the size of the variable
*/
#define cpp_sizeof(base, variable) (sizeof(((base*)8)->variable))
/**
* Gets the length of an array variable within a class.
* @param base The class the variable is in.
* @param variable The array variable to get the size of.
* @return the length of the array
*/
#define cpp_lengthof(base, variable) (cpp_sizeof(base, variable) / cpp_sizeof(base, variable[0]))
/* take care of some name clashes on MacOS */ /* take care of some name clashes on MacOS */
#if defined(__APPLE__) #if defined(__APPLE__)