📄 integers.hh
字号:
// -*- c-basic-offset: 4; related-file-name: "../../lib/integers.cc" -*-#ifndef CLICK_INTEGERS_HH#define CLICK_INTEGERS_HH#if !HAVE___BUILTIN_FFS && HAVE_FFS && HAVE_STRINGS_H# include <strings.h>#endifCLICK_DECLS#ifdef HAVE_INT64_TYPESinline uint64_t htonq(uint64_t x) { uint32_t hi = x >> 32; uint32_t lo = x & 0xffffffff; return (((uint64_t)htonl(lo)) << 32) | htonl(hi);}inline uint64_t ntohq(uint64_t x) { uint32_t hi = x >> 32; uint32_t lo = x & 0xffffffff; return (((uint64_t)ntohl(lo)) << 32) | ntohl(hi);}#endif// MSB is bit #1#if HAVE___BUILTIN_CLZinline int ffs_msb(uint32_t x) { return (x ? __builtin_clz(x) + 1 : 0);}#elseint ffs_msb(uint32_t);#endif#ifdef HAVE_INT64_TYPES# if HAVE___BUILTIN_CLZLL && SIZEOF_LONG_LONG == 8inline int ffs_msb(uint64_t x) { return (x ? __builtin_clzll(x) + 1 : 0);}# elif HAVE___BUILTIN_CLZL && SIZEOF_LONG == 8inline int ffs_msb(uint64_t x) { return (x ? __builtin_clzl(x) + 1 : 0);}# elif HAVE___BUILTIN_CLZ && SIZEOF_INT == 8inline int ffs_msb(uint64_t x) { return (x ? __builtin_clz(x) + 1 : 0);}# elseint ffs_msb(uint64_t);# endif#endif// LSB is bit #1#if HAVE___BUILTIN_FFSinline int ffs_lsb(uint32_t x) { return __builtin_ffs(x);}#elif HAVE_FFSinline int ffs_lsb(uint32_t x) { return ffs(x);}#elseint ffs_lsb(uint32_t);#endif#ifdef HAVE_INT64_TYPES# if HAVE___BUILTIN_FFSLL && SIZEOF_LONG_LONG == 8inline int ffs_lsb(uint64_t x) { return __builtin_ffsll(x);}# elif HAVE___BUILTIN_FFSL && SIZEOF_LONG == 8inline int ffs_lsb(uint64_t x) { return __builtin_ffsl(x);}# elif HAVE___BUILTIN_FFS && SIZEOF_INT == 8inline int ffs_lsb(uint64_t x) { return __builtin_ffs(x);}# elseint ffs_lsb(uint64_t);# endif#endifuint32_t int_sqrt(uint32_t);#if HAVE_INT64_TYPES && !CLICK_LINUXMODULEuint64_t int_sqrt(uint64_t);#endifCLICK_ENDDECLS#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -