1
0
mirror of https://gitlab.xiph.org/xiph/icecast-common.git synced 2024-12-04 14:46:31 -05:00
icecast-common/timing/timing.h
giles cfb106b16b Add a name mangling mechanism so we can safely compile in code we share with applications that might link with use. Currently only hooked up for the timing liblet, but thread is the real target.
Basically we define _mangle() in config.h, and use that in timing.h (if available) to prepend the package name to all the symbols in the header and including C files. It's thus fairly invisible.

Unfortunately the prefix is hardwired, so it's another thing that has to be maintained by hand (not that is changes often, but we can't make it a macro). AH_VERBATIM seems to be the only way to add a macro that takes arguments, and it explicitly doesn't do shell expansion. Further, @PACKAGE@ substitution doesn't happen on config.h.in. Insert standard autotools frustration here.

svn path=/trunk/timing/; revision=5060
2003-07-04 23:18:26 +00:00

24 lines
479 B
C

#ifndef __TIMING_H__
#define __TIMING_H__
#include <sys/types.h>
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif
#ifdef _WIN32
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#endif
/* config.h should be included before we are to define _mangle */
#ifdef _mangle
# define timing_get_time _mangle(timing_get_time)
# define timing_sleep _mangle(timing_sleep)
#endif
uint64_t timing_get_time(void);
void timing_sleep(uint64_t sleeptime);
#endif /* __TIMING_H__ */