20 #pragma message "C++ support is required for extras module" 28 #ifndef MCR_EXTRAS_FUNCTIONS_H_ 29 #define MCR_EXTRAS_FUNCTIONS_H_ 36 T &reference(
void *pointer)
39 return *
reinterpret_cast<T *
>(pointer);
43 template<
typename rT,
typename vT>
47 size_t diff = ((
char *)&r->self) - ((
char *)r);
48 return reinterpret_cast<rT *
>(((
char *)valuePt) - diff);
52 template<
typename rT,
typename vT>
56 size_t diff = ((
const char *)&r->self) - ((
const char *)r);
57 return reinterpret_cast<const rT *
>(((
const char *)valuePt) - diff);
72 delete reinterpret_cast<T *
>(dataPt);
80 reference<T>(dataPt) = T();
88 .
data =
new T(), .deallocate = &deleteDataMember<T>
92 extern MCR_API
void throwError(
const char *lineString,
int errorNumber);
void deleteDataMember(void *dataPt)
Raise a compiler error. Usage: #include "mcr/err.h"
Libmacro, by Jonathan Pelletier, New Paradigm Software. Alpha version.
Base module implements mcr_base - Libmacro first module.
void resetDataMember(void *dataPt)
#define mcr_dassert(expression)