⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myconf.h

📁 Tokyo Cabinet的Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符
💻 H
字号:
/************************************************************************************************* * System-dependent configurations of Tokyo Cabinet *                                                      Copyright (C) 2006-2009 Mikio Hirabayashi * This file is part of Tokyo Cabinet. * Tokyo Cabinet is free software; you can redistribute it and/or modify it under the terms of * the GNU Lesser General Public License as published by the Free Software Foundation; either * version 2.1 of the License or any later version.  Tokyo Cabinet is distributed in the hope * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public * License for more details. * You should have received a copy of the GNU Lesser General Public License along with Tokyo * Cabinet; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA. *************************************************************************************************/#ifndef _MYCONF_H                        // duplication check#define _MYCONF_H/************************************************************************************************* * system discrimination *************************************************************************************************/#if defined(__linux__)#define _SYS_LINUX_#define TCSYSNAME   "Linux"#elif defined(__FreeBSD__)#define _SYS_FREEBSD_#define TCSYSNAME   "FreeBSD"#elif defined(__NetBSD__)#define _SYS_NETBSD_#define TCSYSNAME   "NetBSD"#elif defined(__OpenBSD__)#define _SYS_OPENBSD_#define TCSYSNAME   "OpenBSD"#elif defined(__sun__)#define _SYS_SUNOS_#define TCSYSNAME   "SunOS"#elif defined(__hpux)#define _SYS_HPUX_#define TCSYSNAME   "HP-UX"#elif defined(__osf)#define _SYS_TRU64_#define TCSYSNAME   "Tru64"#elif defined(_AIX)#define _SYS_AIX_#define TCSYSNAME   "AIX"#elif defined(__APPLE__) && defined(__MACH__)#define _SYS_MACOSX_#define TCSYSNAME   "Mac OS X"#elif defined(_MSC_VER)#define _SYS_MSVC_#define TCSYSNAME   "Windows (VC++)"#elif defined(_WIN32)#define _SYS_MINGW_#define TCSYSNAME   "Windows (MinGW)"#elif defined(__CYGWIN__)#define _SYS_CYGWIN_#define TCSYSNAME   "Windows (Cygwin)"#else#define _SYS_GENERIC_#define TCSYSNAME   "Generic"#endif/************************************************************************************************* * common settings *************************************************************************************************/#if defined(NDEBUG)#define TCDODEBUG(TC_expr) \  do { \  } while(false)#else#define TCDODEBUG(TC_expr) \  do { \    TC_expr; \  } while(false)#endif#define TCSWAB16(TC_num) \  ( \   ((TC_num & 0x00ffU) << 8) | \   ((TC_num & 0xff00U) >> 8) \  )#define TCSWAB32(TC_num) \  ( \   ((TC_num & 0x000000ffUL) << 24) | \   ((TC_num & 0x0000ff00UL) << 8) | \   ((TC_num & 0x00ff0000UL) >> 8) | \   ((TC_num & 0xff000000UL) >> 24) \  )#define TCSWAB64(TC_num) \  ( \   ((TC_num & 0x00000000000000ffULL) << 56) | \   ((TC_num & 0x000000000000ff00ULL) << 40) | \   ((TC_num & 0x0000000000ff0000ULL) << 24) | \   ((TC_num & 0x00000000ff000000ULL) << 8) | \   ((TC_num & 0x000000ff00000000ULL) >> 8) | \   ((TC_num & 0x0000ff0000000000ULL) >> 24) | \   ((TC_num & 0x00ff000000000000ULL) >> 40) | \   ((TC_num & 0xff00000000000000ULL) >> 56) \  )#if defined(_MYBIGEND) || defined(_MYSWAB)#define TCBIGEND       1#define TCHTOIS(TC_num)   TCSWAB16(TC_num)#define TCHTOIL(TC_num)   TCSWAB32(TC_num)#define TCHTOILL(TC_num)  TCSWAB64(TC_num)#define TCITOHS(TC_num)   TCSWAB16(TC_num)#define TCITOHL(TC_num)   TCSWAB32(TC_num)#define TCITOHLL(TC_num)  TCSWAB64(TC_num)#else#define TCBIGEND       0#define TCHTOIS(TC_num)   (TC_num)#define TCHTOIL(TC_num)   (TC_num)#define TCHTOILL(TC_num)  (TC_num)#define TCITOHS(TC_num)   (TC_num)#define TCITOHL(TC_num)   (TC_num)#define TCITOHLL(TC_num)  (TC_num)#endif#if defined(_SYS_LINUX_) || defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || \  defined(_SYS_MACOSX_) || defined(_SYS_SUNOS_)#define TCUBCACHE      1#else#define TCUBCACHE      0#endif#if defined(_MYNOZLIB)#define TCUSEZLIB      0#else#define TCUSEZLIB      1#endif#if defined(_MYNOBZIP)#define TCUSEBZIP      0#else#define TCUSEBZIP      1#endif#if defined(_MYEXLZMA)#define TCUSEEXLZMA    1#else#define TCUSEEXLZMA    0#endif#if defined(_MYEXLZO)#define TCUSEEXLZO     1#else#define TCUSEEXLZO     0#endif#if defined(_MYNOPTHREAD)#define TCUSEPTHREAD   0#else#define TCUSEPTHREAD   1#endif#if defined(_MYMICROYIELD)#define TCMICROYIELD   1#else#define TCMICROYIELD   0#endif#define MYMALLOC       malloc#define MYCALLOC       calloc#define MYREALLOC      realloc#define MYFREE         free/************************************************************************************************* * general headers *************************************************************************************************/#include <assert.h>#include <ctype.h>#include <errno.h>#include <float.h>#include <limits.h>#include <locale.h>#include <math.h>#include <setjmp.h>#include <stdarg.h>#include <stddef.h>#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <string.h>#include <time.h>#include <inttypes.h>#include <stdbool.h>#include <stdint.h>#include <unistd.h>#include <sys/param.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include <sys/time.h>#include <sys/times.h>#include <sys/wait.h>#include <fcntl.h>#include <dirent.h>#include <regex.h>#include <glob.h>#if TCUSEPTHREAD#include <pthread.h>#if defined(_POSIX_PRIORITY_SCHEDULING)#include <sched.h>#endif#endif/************************************************************************************************* * miscellaneous hacks *************************************************************************************************/#define sizeof(a)      ((int)sizeof(a))#if defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || defined(_SYS_OPENBSD_)#define nan(TC_a)      strtod("nan", NULL)#endif#if ! defined(PATH_MAX)#if defined(MAXPATHLEN)#define PATH_MAX       MAXPATHLEN#else#define PATH_MAX       4096#endif#endifextern int _tc_dummy_cnt;int _tc_dummyfunc(void);int _tc_dummyfuncv(int a, ...);/************************************************************************************************* * notation of filesystems *************************************************************************************************/#define MYPATHCHR       '/'#define MYPATHSTR       "/"#define MYEXTCHR        '.'#define MYEXTSTR        "."#define MYCDIRSTR       "."#define MYPDIRSTR       ".."/************************************************************************************************* * for ZLIB *************************************************************************************************/enum {  _TCZMZLIB,  _TCZMRAW,  _TCZMGZIP};extern char *(*_tc_deflate)(const char *, int, int *, int);extern char *(*_tc_inflate)(const char *, int, int *, int);extern unsigned int (*_tc_getcrc)(const char *, int);/************************************************************************************************* * for BZIP2 *************************************************************************************************/extern char *(*_tc_bzcompress)(const char *, int, int *);extern char *(*_tc_bzdecompress)(const char *, int, int *);/************************************************************************************************* * for test of custom codec functions *************************************************************************************************/void *_tc_recencode(const void *ptr, int size, int *sp, void *op);void *_tc_recdecode(const void *ptr, int size, int *sp, void *op);/************************************************************************************************* * for POSIX thread disability *************************************************************************************************/#if ! TCUSEPTHREAD#define pthread_t                        intptr_t#define pthread_once_t                   intptr_t#undef PTHREAD_ONCE_INIT#define PTHREAD_ONCE_INIT                0#define pthread_once(TC_a, TC_b)         _tc_dummyfuncv((intptr_t)(TC_a), (TC_b))#define pthread_mutexattr_t              intptr_t#undef PTHREAD_MUTEX_RECURSIVE#define PTHREAD_MUTEX_RECURSIVE          0#define pthread_mutexattr_init(TC_a)     _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_mutexattr_destroy(TC_a)  _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_mutexattr_settype(TC_a, TC_b)  _tc_dummyfuncv((intptr_t)(TC_a), (TC_b))#define pthread_mutex_t                  intptr_t#undef PTHREAD_MUTEX_INITIALIZER#define PTHREAD_MUTEX_INITIALIZER        0#define pthread_mutex_init(TC_a, TC_b)   _tc_dummyfuncv((intptr_t)(TC_a), (TC_b))#define pthread_mutex_destroy(TC_a)      _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_mutex_lock(TC_a)         _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_mutex_unlock(TC_a)       _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_rwlock_t                 intptr_t#undef PTHREAD_RWLOCK_INITIALIZER#define PTHREAD_RWLOCK_INITIALIZER       0#define pthread_rwlock_init(TC_a, TC_b)  _tc_dummyfuncv((intptr_t)(TC_a), (TC_b))#define pthread_rwlock_destroy(TC_a)     _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_rwlock_rdlock(TC_a)      _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_rwlock_wrlock(TC_a)      _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_rwlock_unlock(TC_a)      _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_key_t                    intptr_t#define pthread_key_create(TC_a, TC_b)   _tc_dummyfuncv((intptr_t)(TC_a), (TC_b))#define pthread_key_delete(TC_a)         _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_setspecific(TC_a, TC_b)  _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_getspecific(TC_a)        _tc_dummyfuncv((intptr_t)(TC_a))#define pthread_create(TC_th, TC_attr, TC_func, TC_arg) \  (*(TC_th) = 0, (TC_func)(TC_arg), 0)#define pthread_join(TC_th, TC_rv)       (*(TC_rv) = NULL, 0)#define pthread_detach(TC_th)            0#define sched_yield()                    _tc_dummyfunc()#endif#if TCUSEPTHREAD && TCMICROYIELD#define TCTESTYIELD() \  do { \    if(((++_tc_dummy_cnt) & (0x20 - 1)) == 0){ \      sched_yield(); \      if(_tc_dummy_cnt > 0x1000) _tc_dummy_cnt = (uint32_t)time(NULL) % 0x1000; \    } \  } while(false)#undef assert#define assert(TC_expr) \  do { \    if(!(TC_expr)){ \      fprintf(stderr, "assertion failed: %s\n", #TC_expr); \      abort(); \    } \    TCTESTYIELD(); \  } while(false)#define if(TC_cond) \  if((((++_tc_dummy_cnt) & (0x100 - 1)) != 0 || (sched_yield() * 0) == 0) && (TC_cond))#define while(TC_cond) \  while((((++_tc_dummy_cnt) & (0x100 - 1)) != 0 || (sched_yield() * 0) == 0) && (TC_cond))#else#define TCTESTYIELD() \  do { \  } while(false)#endif#if !defined(_POSIX_PRIORITY_SCHEDULING) && TCUSEPTHREAD#define sched_yield()                    usleep(1000 * 20)#endif/************************************************************************************************* * utilities for implementation *************************************************************************************************/#define TCNUMBUFSIZ    32                // size of a buffer for a number/* set a buffer for a variable length number */#define TCSETVNUMBUF(TC_len, TC_buf, TC_num) \  do { \    int _TC_num = (TC_num); \    if(_TC_num == 0){ \      ((signed char *)(TC_buf))[0] = 0; \      (TC_len) = 1; \    } else { \      (TC_len) = 0; \      while(_TC_num > 0){ \        int _TC_rem = _TC_num & 0x7f; \        _TC_num >>= 7; \        if(_TC_num > 0){ \          ((signed char *)(TC_buf))[(TC_len)] = -_TC_rem - 1; \        } else { \          ((signed char *)(TC_buf))[(TC_len)] = _TC_rem; \        } \        (TC_len)++; \      } \    } \  } while(false)/* set a buffer for a variable length number of 64-bit */#define TCSETVNUMBUF64(TC_len, TC_buf, TC_num) \  do { \    long long int _TC_num = (TC_num); \    if(_TC_num == 0){ \      ((signed char *)(TC_buf))[0] = 0; \      (TC_len) = 1; \    } else { \      (TC_len) = 0; \      while(_TC_num > 0){ \        int _TC_rem = _TC_num & 0x7f; \        _TC_num >>= 7; \        if(_TC_num > 0){ \          ((signed char *)(TC_buf))[(TC_len)] = -_TC_rem - 1; \        } else { \          ((signed char *)(TC_buf))[(TC_len)] = _TC_rem; \        } \        (TC_len)++; \      } \    } \  } while(false)/* read a variable length buffer */#define TCREADVNUMBUF(TC_buf, TC_num, TC_step) \  do { \    TC_num = 0; \    int _TC_base = 1; \    int _TC_i = 0; \    while(true){ \      if(((signed char *)(TC_buf))[_TC_i] >= 0){ \        TC_num += ((signed char *)(TC_buf))[_TC_i] * _TC_base; \        break; \      } \      TC_num += _TC_base * (((signed char *)(TC_buf))[_TC_i] + 1) * -1; \      _TC_base <<= 7; \      _TC_i++; \    } \    (TC_step) = _TC_i + 1; \  } while(false)/* read a variable length buffer */#define TCREADVNUMBUF64(TC_buf, TC_num, TC_step) \  do { \    TC_num = 0; \    long long int _TC_base = 1; \    int _TC_i = 0; \    while(true){ \      if(((signed char *)(TC_buf))[_TC_i] >= 0){ \        TC_num += ((signed char *)(TC_buf))[_TC_i] * _TC_base; \        break; \      } \      TC_num += _TC_base * (((signed char *)(TC_buf))[_TC_i] + 1) * -1; \      _TC_base <<= 7; \      _TC_i++; \    } \    (TC_step) = _TC_i + 1; \  } while(false)/* calculate the size of a buffer for a variable length number */#define TCCALCVNUMSIZE(TC_num) \  ((TC_num) < 0x80 ? 1 : (TC_num) < 0x4000 ? 2 : (TC_num) < 0x200000 ? 3 : \   (TC_num) < 0x10000000 ? 4 : 5)/* compare keys of two records by lexical order */#define TCCMPLEXICAL(TC_rv, TC_aptr, TC_asiz, TC_bptr, TC_bsiz) \  do { \    (TC_rv) = 0; \    int _TC_min = (TC_asiz) < (TC_bsiz) ? (TC_asiz) : (TC_bsiz); \    for(int _TC_i = 0; _TC_i < _TC_min; _TC_i++){ \      if(((unsigned char *)(TC_aptr))[_TC_i] != ((unsigned char *)(TC_bptr))[_TC_i]){ \        (TC_rv) = ((unsigned char *)(TC_aptr))[_TC_i] - ((unsigned char *)(TC_bptr))[_TC_i]; \        break; \      } \    } \    if((TC_rv) == 0) (TC_rv) = (TC_asiz) - (TC_bsiz); \  } while(false)#endif                                   // duplication check// END OF FILE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -