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

📄 portability.h

📁 linux下安装不上mysql5与php5的可用此关联
💻 H
📖 第 1 页 / 共 2 页
字号:
/* From Andrey Hristov based on doubleget */#define floatget(V,M)    memcpy((char*) &(V),(char*) (M),sizeof(float))#define floatstore       float4store#define float4store(V,M) memcpy((char*) (V),(char*) (&M),sizeof(float))#define float8store(V,M) doublestore((V),(M))#endif /* __i386__ */ #ifndef sint2korr#define sint2korr(A)    (int16) (((int16) ((uchar) (A)[0])) +\                                 ((int16) ((int16) (A)[1]) << 8))#define sint3korr(A)    ((int32) ((((uchar) (A)[2]) & 128) ? \                  (((uint32) 255L << 24) | \                  (((uint32) (uchar) (A)[2]) << 16) |\                  (((uint32) (uchar) (A)[1]) << 8) | \                   ((uint32) (uchar) (A)[0])) : \                  (((uint32) (uchar) (A)[2]) << 16) |\                  (((uint32) (uchar) (A)[1]) << 8) | \                  ((uint32) (uchar) (A)[0])))#define sint4korr(A)  (int32) (((int32) ((uchar) (A)[0])) +\                              (((int32) ((uchar) (A)[1]) << 8)) +\                              (((int32) ((uchar) (A)[2]) << 16)) +\                              (((int32) ((int16) (A)[3]) << 24)))#define sint8korr(A)  (longlong) uint8korr(A)#define uint2korr(A)  (uint16) (((uint16) ((uchar) (A)[0])) +\                               ((uint16) ((uchar) (A)[1]) << 8))#define uint3korr(A)  (uint32) (((uint32) ((uchar) (A)[0])) +\                               (((uint32) ((uchar) (A)[1])) << 8) +\                               (((uint32) ((uchar) (A)[2])) << 16))#define uint4korr(A)  (uint32) (((uint32) ((uchar) (A)[0])) +\                               (((uint32) ((uchar) (A)[1])) << 8) +\                               (((uint32) ((uchar) (A)[2])) << 16) +\                               (((uint32) ((uchar) (A)[3])) << 24))#define uint5korr(A)  ((ulonglong)(((uint32) ((uchar) (A)[0])) +\                                  (((uint32) ((uchar) (A)[1])) << 8) +\                                  (((uint32) ((uchar) (A)[2])) << 16) +\                                  (((uint32) ((uchar) (A)[3])) << 24)) +\                               (((ulonglong) ((uchar) (A)[4])) << 32))/* From Andrey Hristov, based on uint5korr */#define uint6korr(A)  ((ulonglong)(((uint32) ((uchar) (A)[0])) +\                                  (((uint32) ((uchar) (A)[1])) << 8) +\                                  (((uint32) ((uchar) (A)[2])) << 16) +\                                  (((uint32) ((uchar) (A)[3])) << 24)) +\                                  (((ulonglong) ((uchar) (A)[4])) << 32)) +\                                  (((ulonglong) ((uchar) (A)[5])) << 40))#define uint8korr(A)  ((ulonglong)(((uint32) ((uchar) (A)[0])) +\                                  (((uint32) ((uchar) (A)[1])) << 8) +\                                  (((uint32) ((uchar) (A)[2])) << 16) +\                                  (((uint32) ((uchar) (A)[3])) << 24)) +\                                  (((ulonglong) (((uint32) ((uchar) (A)[4])) +\                                  (((uint32) ((uchar) (A)[5])) << 8) +\                                  (((uint32) ((uchar) (A)[6])) << 16) +\                                  (((uint32) ((uchar) (A)[7])) << 24))) << 32))#define int2store(T,A)  do { uint def_temp= (uint) (A) ;\                  *((uchar*) (T))  =  (uchar)(def_temp); \                  *((uchar*) (T+1)) = (uchar)((def_temp >> 8)); } while (0)#define int3store(T,A)  do { /*lint -save -e734 */\                  *(((char *)(T)))   = (char) ((A));\                  *(((char *)(T))+1) = (char) (((A) >> 8));\                  *(((char *)(T))+2) = (char) (((A) >> 16)); \                  /*lint -restore */} while (0)#define int4store(T,A)  do { \                  *(((char *)(T)))   = (char) ((A));\                  *(((char *)(T))+1) = (char) (((A) >> 8));\                  *(((char *)(T))+2) = (char) (((A) >> 16));\                  *(((char *)(T))+3) = (char) (((A) >> 24)); } while (0)#define int5store(T,A)  do { \                  *(((char *)(T)))   = (char)((A));\                  *(((char *)(T))+1) = (char)(((A) >> 8));\                  *(((char *)(T))+2) = (char)(((A) >> 16));\                  *(((char *)(T))+3) = (char)(((A) >> 24)); \                  *(((char *)(T))+4) = (char)(((A) >> 32)); } while (0)/* Based on int5store() from Andrey Hristov */#define int6store(T,A)  do { \                  *(((char *)(T)))   = (char)((A));\                  *(((char *)(T))+1) = (char)(((A) >> 8));\                  *(((char *)(T))+2) = (char)(((A) >> 16));\                  *(((char *)(T))+3) = (char)(((A) >> 24)); \                  *(((char *)(T))+4) = (char)(((A) >> 32)); \                  *(((char *)(T))+5) = (char)(((A) >> 40)); } while (0)#define int8store(T,A)        { uint def_temp= (uint) (A), def_temp2= (uint) ((A) >> 32); \                  int4store((T),def_temp); \                  int4store((T+4),def_temp2); \                }#ifdef WORDS_BIGENDIAN#define float4store(T,A) do { \                          *(((char *)(T)))   = (char) ((char *) &A)[3];\                          *(((char *)(T))+1) = (char) ((char *) &A)[2];\                          *(((char *)(T))+2) = (char) ((char *) &A)[1];\                          *(((char *)(T))+3) = (char) ((char *) &A)[0]; } while (0)#define float4get(V,M)   do { float def_temp;\                          ((char*) &def_temp)[0] = (M)[3];\                          ((char*) &def_temp)[1] = (M)[2];\                          ((char*) &def_temp)[2] = (M)[1];\                          ((char*) &def_temp)[3] = (M)[0];\                          (V)=def_temp; } while (0)#define float8store(T,V)  do { \                           *(((char *)(T)))   = (char) ((char *) &(V))[7];\                           *(((char *)(T))+1) = (char) ((char *) &(V))[6];\                           *(((char *)(T))+2) = (char) ((char *) &(V))[5];\                           *(((char *)(T))+3) = (char) ((char *) &(V))[4];\                           *(((char *)(T))+4) = (char) ((char *) &(V))[3];\                           *(((char *)(T))+5) = (char) ((char *) &(V))[2];\                           *(((char *)(T))+6) = (char) ((char *) &(V))[1];\                           *(((char *)(T))+7) = (char) ((char *) &(V))[0]; } while (0)#define float8get(V,M)   do { double def_temp;\                          ((char*) &def_temp)[0] = (M)[7];\                          ((char*) &def_temp)[1] = (M)[6];\                          ((char*) &def_temp)[2] = (M)[5];\                          ((char*) &def_temp)[3] = (M)[4];\                          ((char*) &def_temp)[4] = (M)[3];\                          ((char*) &def_temp)[5] = (M)[2];\                          ((char*) &def_temp)[6] = (M)[1];\                          ((char*) &def_temp)[7] = (M)[0];\                          (V) = def_temp; \                         } while (0)#else#define float4get(V,M)   memcpy((char*) &(V),(char*) (M),sizeof(float))#define float4store(V,M) memcpy((char*) (V),(char*) (&M),sizeof(float))#if defined(__FLOAT_WORD_ORDER) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN)#define doublestore(T,V)  do { \                         *(((char *)(T)))= ((char *) &(V))[4];\                         *(((char *)(T))+1)=(char) ((char *) &(V))[5];\                         *(((char *)(T))+2)=(char) ((char *) &(V))[6];\                         *(((char *)(T))+3)=(char) ((char *) &(V))[7];\                         *(((char *)(T))+4)=(char) ((char *) &(V))[0];\                         *(((char *)(T))+5)=(char) ((char *) &(V))[1];\                         *(((char *)(T))+6)=(char) ((char *) &(V))[2];\                         *(((char *)(T))+7)=(char) ((char *) &(V))[3];} while (0)#define doubleget(V,M) do { double def_temp;\                         ((char*) &def_temp)[0]=(M)[4];\                         ((char*) &def_temp)[1]=(M)[5];\                         ((char*) &def_temp)[2]=(M)[6];\                         ((char*) &def_temp)[3]=(M)[7];\                         ((char*) &def_temp)[4]=(M)[0];\                         ((char*) &def_temp)[5]=(M)[1];\                         ((char*) &def_temp)[6]=(M)[2];\                         ((char*) &def_temp)[7]=(M)[3];\                         (V) = def_temp; } while (0)#endif /* __FLOAT_WORD_ORDER */#define float8get(V,M)   doubleget((V),(M))#define float8store(V,M) doublestore((V),(M))#endif /* WORDS_BIGENDIAN */#endif /* sint2korr *//* Define-funktions for reading and storing in machine format from/to   short/long to/from some place in memory V should be a (not   register) variable, M is a pointer to byte */#ifdef WORDS_BIGENDIAN#define ushortget(V,M)  { V = (uint16) (((uint16) ((uchar) (M)[1]))+\                                        ((uint16) ((uint16) (M)[0]) << 8)); }#define shortget(V,M)   { V = (short) (((short) ((uchar) (M)[1]))+\                                       ((short) ((short) (M)[0]) << 8)); }#define longget(V,M)    do { int32 def_temp;\              ((char*) &def_temp)[0]=(M)[0];\              ((char*) &def_temp)[1]=(M)[1];\              ((char*) &def_temp)[2]=(M)[2];\              ((char*) &def_temp)[3]=(M)[3];\              (V)=def_temp; } while (0)#define ulongget(V,M)    do { uint32 def_temp;\              ((char*) &def_temp)[0]=(M)[0];\              ((char*) &def_temp)[1]=(M)[1];\              ((char*) &def_temp)[2]=(M)[2];\              ((char*) &def_temp)[3]=(M)[3];\              (V)=def_temp; }  while (0)#define shortstore(T,A) do { \              uint def_temp=(uint) (A) ;\              *(((char *)(T))+1)=(char)(def_temp); \              *(((char *)(T))+0)=(char)(def_temp >> 8); } while (0)#define longstore(T,A)  do { \              *(((char *)(T))+3)=(char)((A));\              *(((char *)(T))+2)=(char)(((A) >> 8));\              *(((char *)(T))+1)=(char)(((A) >> 16));\              *(((char *)(T))+0)=(char)(((A) >> 24)); }  while (0)#define doubleget(V,M)     memcpy((char*) &(V),(char*) (M),sizeof(double))#define doublestore(T,V) memcpy((char*) (T),(char*) &(V),sizeof(double))#define longlongget(V,M) memcpy((char*) &(V),(char*) (M),sizeof(ulonglong))#define longlongstore(T,V) memcpy((char*) (T),(char*) &(V),sizeof(ulonglong))#else#define ushortget(V,M)  { V = uint2korr((M)); }#define shortget(V,M)   { V = sint2korr((M)); }#define longget(V,M)    { V = sint4korr((M)); }#define ulongget(V,M)   { V = uint4korr((M)); }#define shortstore(T,V)   int2store((T),(V))#define longstore(T,V)    int4store((T),(V))#ifndef doubleget#define doubleget(V,M)    memcpy((char*) &(V),(char*) (M),sizeof(double))#define doublestore(T,V)  memcpy((char*) (T),(char*) &(V),sizeof(double))#endif /* doubleget */#define longlongget(V,M)   memcpy((char*) &(V),(char*) (M),sizeof(ulonglong))#define longlongstore(T,V) memcpy((char*) (T),(char*) &(V),sizeof(ulonglong))#endif /* WORDS_BIGENDIAN */

⌨️ 快捷键说明

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