7#ifndef __CHAR_UNSIGNED__
11#define CLICK_BIG_ENDIAN 4321
12#define CLICK_LITTLE_ENDIAN 1234
13#define CLICK_NO_ENDIAN 0
16#define CLICK_BYTE_ORDER CLICK_LITTLE_ENDIAN
37#define CLICK_VERSION "2.1"
40#define CLICK_VERSION_CODE CLICK_MAKE_VERSION_CODE(2,1,0)
49#define HAVE___BUILTIN_CTZ 1
52#define HAVE___BUILTIN_CLZ 1
55#define HAVE___BUILTIN_CLZL 1
58#define HAVE___BUILTIN_CLZLL 1
61#define HAVE___BUILTIN_FFS 1
64#define HAVE___BUILTIN_FFSL 1
67#define HAVE___BUILTIN_FFSLL 1
70#define HAVE___BUILTIN_POPCOUNT 1
73#define HAVE___HAS_TRIVIAL_COPY 1
76#define HAVE___IS_TRIVIALLY_COPYABLE 1
79#define HAVE___SYNC_SYNCHRONIZE 1
88#define HAVE_ARITHMETIC_RIGHT_SHIFT 1
103#define HAVE_CXX_CONSTEXPR 1
106#define HAVE_CXX_PRAGMA_INTERFACE 1
109#define HAVE_CXX_RVALUE_REFERENCES 1
112#define HAVE_CXX_STATIC_ASSERT 1
115#define HAVE_CXX_TEMPLATE_ALIAS 1
121#define HAVE_INDIFFERENT_ALIGNMENT 1
127#define HAVE_INT64_TYPES 1
130#define HAVE_FULLPUSH_NONATOMIC 1
133#define HAVE_VERBOSE_BATCH 1
135#define AUTO_BATCH_PORT 1
136#define AUTO_BATCH_LIST 2
137#define AUTO_BATCH_JUMP 3
152#define HAVE_LONG_LONG 1
155#define HAVE_NANOTIMESTAMP_ENABLED 1
164#define HAVE_STRIDE_SCHED 1
170#define HAVE_STRUCT_TIMESPEC 1
172#ifdef HAVE_STRIDE_SCHED
190#define SIZEOF_LONG_LONG 8
193#define SIZEOF_SIZE_T 8
196#define SIZEOF_STRUCT_TIMESPEC 16
199#define SIZEOF_STRUCT_TIMEVAL 16
202#define SIZEOF_PTRDIFF_T 8
205#define SIZEOF_VOID_P 8
222#if !defined(__cplusplus) || !HAVE_CXX_CONSTEXPR
223# define constexpr const
227#ifndef CLICK_DEBUG_SCHEDULING
228# define CLICK_DEBUG_SCHEDULING 0
232#define CLICK_MAKE_VERSION_CODE(major, minor, patch) \
233 (((major) << 16) | ((minor) << 8) | (patch))
237# define CLICK_ALIGNED(x) __attribute__((aligned(x)))
239# define CLICK_ALIGNED(x)
243#define CLICK_CACHE_LINE_SIZE 64
247#define CLICK_CACHE_LINE_PAD_BYTES(x) \
248 ((((x) + CLICK_CACHE_LINE_SIZE - 1) / CLICK_CACHE_LINE_SIZE) * CLICK_CACHE_LINE_SIZE - (x))
251#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ == 0)
252# define CLICK_DEPRECATED
254# define CLICK_DEPRECATED __attribute__((deprecated))
258#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ == 0)
259# define CLICK_DEPRECATED_MSG(m)
260#elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4)
261# define CLICK_DEPRECATED_MSG(m) __attribute__((deprecated))
263# define CLICK_DEPRECATED_MSG(m) __attribute__((deprecated(m)))
267#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
268# define CLICK_DEPRECATED_ENUM
270# define CLICK_DEPRECATED_ENUM __attribute__((deprecated))
274#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
275# define CLICK_MAY_ALIAS
277# define CLICK_MAY_ALIAS __attribute__((__may_alias__))
281#ifdef CLICK_LINUXMODULE
282# define CLICK_NOINLINE noinline
284# define CLICK_NOINLINE __attribute__((noinline))
286# define CLICK_NOINLINE
291# define CLICK_ALWAYS_INLINE __attribute__((always_inline))
293# define CLICK_ALWAYS_INLINE
298# define CLICK_OPTNONE __attribute__((optnone))
300# define CLICK_OPTNONE
306# define CLICK_CACHE_ALIGN ____cacheline_aligned;
308# define CLICK_CACHE_ALIGN __attribute__((aligned(CLICK_CACHE_LINE_SIZE)))
310# define CLICK_CACHE_ALIGN
315# define CLICK_PACKED_STRUCTURE(open, close) open close __attribute__((packed))
316# define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close __attribute__((packed))
317# define CLICK_SIZE_PACKED_ATTRIBUTE __attribute__((packed))
319# define CLICK_PACKED_STRUCTURE(open, close) _Cannot_pack_structure__Use_GCC
320# define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close
321# define CLICK_SIZE_PACKED_ATTRIBUTE
325#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
326# define CLICK_WARN_UNUSED_RESULT
328# define CLICK_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
332#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
335# define CLICK_COLD __attribute__((cold))
339#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
340# define ARCH_IS_BIG_ENDIAN 1
341#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
342# define ARCH_IS_BIG_ENDIAN 0
346#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
347# define click_constant_htons(x) (x)
348#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
349# define click_constant_htons(x) ((((x) >> 8) & 255) | (((x) & 255) << 8))
354#define EXPORT_ELEMENT(x)
355#define ELEMENT_REQUIRES(x)
356#define ELEMENT_PROVIDES(x)
357#define ELEMENT_HEADER(x)
358#define ELEMENT_FEATURES(x)
359#define ELEMENT_LIBS(x)
360#define ELEMENT_MT_SAFE(x)
363#define CLICK_NEVER_REPLACE(x) x
366#if !defined(CLICK_USERLEVEL) && !defined(CLICK_TOOL) && !defined(CLICK_LINUXMODULE) && !defined(CLICK_BSDMODULE) && !defined(CLICK_MINIOS)
367# define CLICK_USERLEVEL 1
371#ifdef CLICK_LINUXMODULE
372# include <click/config-linuxmodule.h>
376#ifdef CLICK_BSDMODULE
377# include <click/config-bsdmodule.h>
382# include <click/config-ns.h>
386#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
387# include <click/config-userlevel.h>
392# include <click/config-minios.h>
398template <
typename T>
struct DefaultArg;
402struct uninitialized_type {
408typedef uint16_t click_aliasable_uint16_t CLICK_MAY_ALIAS;
409typedef int16_t click_aliasable_int16_t CLICK_MAY_ALIAS;
410typedef uint32_t click_aliasable_uint32_t CLICK_MAY_ALIAS;
411typedef int32_t click_aliasable_int32_t CLICK_MAY_ALIAS;
413typedef uint64_t click_aliasable_uint64_t CLICK_MAY_ALIAS;
414typedef int64_t click_aliasable_int64_t CLICK_MAY_ALIAS;
416typedef void *click_aliasable_void_pointer_t CLICK_MAY_ALIAS;