You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// Macros for correct module ordering.
#ifndef _CL_MODULES_H
#define _CL_MODULES_H
// global constructor/destructor naming.
#include "cln/config.h"
// Concatenation of macroexpanded tokens.
// Equivalent to CL_CONCAT in src/base/cl_macros.h which we do not want
// to expose, however.
#define CL_CONCATENATE_(xxx,yyy) xxx##yyy
#define CL_CONCATENATE(xxx,yyy) CL_CONCATENATE_(xxx,yyy)
// Sometimes a link time dependency is needed, but without requirements
// on initialization order.
//
// CL_FORCE_LINK(dummy,external_variable)
// forces a link time reference to the external_variable.
#include <cstdlib>
#if 0
// This definition does not work. It gets optimized away by g++ 3.1.
#define CL_FORCE_LINK(dummy,external_variable) \
static const void* const dummy[] = { &dummy, &external_variable }; #else
#define CL_FORCE_LINK(dummy,external_variable) \
static const \ struct dummy { \ inline dummy () { \ if ((void*) &external_variable == (void*) this) \ abort(); \ } \ } \ CL_CONCATENATE(dummy,_instance); #endif
#endif /* _CL_MODULES_H */
|