📄 my_global.h
字号:
#endif#define MY_FILEPOS_ERROR (~(my_off_t) 0)#if !defined(__WIN__) && !defined(OS2)typedef off_t os_off_t;#endif#if defined(__WIN__)#define socket_errno WSAGetLastError()#define SOCKET_EINTR WSAEINTR #define SOCKET_EAGAIN WSAEINPROGRESS#define SOCKET_ENFILE ENFILE#define SOCKET_EMFILE EMFILE#elif defined(OS2)#define socket_errno sock_errno()#define SOCKET_EINTR SOCEINTR #define SOCKET_EAGAIN SOCEINPROGRESS#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK#define SOCKET_ENFILE SOCENFILE#define SOCKET_EMFILE SOCEMFILE#define closesocket(A) soclose(A)#else /* Unix */#define socket_errno errno#define closesocket(A) close(A)#define SOCKET_EINTR EINTR#define SOCKET_EAGAIN EAGAIN#define SOCKET_EWOULDBLOCK EWOULDBLOCK#define SOCKET_ENFILE ENFILE#define SOCKET_EMFILE EMFILE#endiftypedef uint8 int7; /* Most effective integer 0 <= x <= 127 */typedef short int15; /* Most effective integer 0 <= x <= 32767 */typedef char *my_string; /* String of characters */typedef unsigned long size_s; /* Size of strings (In string-funcs) */typedef int myf; /* Type of MyFlags in my_funcs */#ifndef byte_definedtypedef char byte; /* Smallest addressable unit */#endiftypedef char my_bool; /* Small bool */#if !defined(bool) && !defined(bool_defined) && (!defined(HAVE_BOOL) || !defined(__cplusplus))typedef char bool; /* Ordinary boolean values 0 1 */#endif /* Macros for converting *constants* to the right type */#define INT8(v) (int8) (v)#define INT16(v) (int16) (v)#define INT32(v) (int32) (v)#define MYF(v) (myf) (v)/* Defines to make it possible to prioritize register assignments. No longer needed with moder compilers */#ifndef USING_X#define reg1 register#define reg2 register#define reg3 register#define reg4 register#define reg5 register#define reg6 register#define reg7 register#define reg8 register#define reg9 register#define reg10 register#define reg11 register#define reg12 register#define reg13 register#define reg14 register#define reg15 register#define reg16 register#endif/* Defines for time function */#define SCALE_SEC 100#define SCALE_USEC 10000#define MY_HOW_OFTEN_TO_ALARM 2 /* How often we want info on screen */#define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen *//*** Define-funktions for reading and storing in machine independent format** (low byte first)*//* Optimized store functions for Intel x86 */#ifdef __i386__#define sint2korr(A) (*((int16 *) (A)))#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) (*((long *) (A)))#define uint2korr(A) (*((uint16 *) (A)))#define uint3korr(A) (long) (*((unsigned long *) (A)) & 0xFFFFFF)#define uint4korr(A) (*((unsigned long *) (A)))#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))#define uint8korr(A) (*((ulonglong *) (A)))#define sint8korr(A) (*((longlong *) (A)))#define int2store(T,A) *((uint16*) (T))= (uint16) (A)#define int3store(T,A) { *(T)= (uchar) ((A));\ *(T+1)=(uchar) (((uint) (A) >> 8));\ *(T+2)=(uchar) (((A) >> 16)); }#define int4store(T,A) *((long *) (T))= (long) (A)#define int5store(T,A) { *(T)= (uchar)((A));\ *((T)+1)=(uchar) (((A) >> 8));\ *((T)+2)=(uchar) (((A) >> 16));\ *((T)+3)=(uchar) (((A) >> 24)); \ *((T)+4)=(uchar) (((A) >> 32)); }#define int8store(T,A) *((ulonglong *) (T))= (ulonglong) (A)typedef union { double v; long m[2];} doubleget_union;#define doubleget(V,M) { ((doubleget_union *)&V)->m[0] = *((long*) M); \ ((doubleget_union *)&V)->m[1] = *(((long*) M)+1); }#define doublestore(T,V) { *((long *) T) = ((doubleget_union *)&V)->m[0]; \ *(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; }#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }#define float8get(V,M) doubleget((V),(M))#define float4store(V,M) memcpy((byte*) V,(byte*) (&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))#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) { uint def_temp= (uint) (A) ;\ *((uchar*) (T))= (uchar)(def_temp); \ *((uchar*) (T+1))=(uchar)((def_temp >> 8)); }#define int3store(T,A) { /*lint -save -e734 */\ *((T))=(char) ((A));\ *((T)+1)=(char) (((A) >> 8));\ *((T)+2)=(char) (((A) >> 16)); \ /*lint -restore */}#define int4store(T,A) { *(T)=(char) ((A));\ *((T)+1)=(char) (((A) >> 8));\ *((T)+2)=(char) (((A) >> 16));\ *((T)+3)=(char) (((A) >> 24)); }#define int5store(T,A) { *(T)=((A));\ *((T)+1)=(((A) >> 8));\ *((T)+2)=(((A) >> 16));\ *((T)+3)=(((A) >> 24)); \ *((T)+4)=(((A) >> 32)); }#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) { *(T)= ((byte *) &A)[3];\ *((T)+1)=(char) ((byte *) &A)[2];\ *((T)+2)=(char) ((byte *) &A)[1];\ *((T)+3)=(char) ((byte *) &A)[0]; }#define float4get(V,M) { float def_temp;\ ((byte*) &def_temp)[0]=(M)[3];\ ((byte*) &def_temp)[1]=(M)[2];\ ((byte*) &def_temp)[2]=(M)[1];\ ((byte*) &def_temp)[3]=(M)[0];\ (V)=def_temp; }#define float8store(T,V) { *(T)= ((byte *) &V)[7];\ *((T)+1)=(char) ((byte *) &V)[6];\ *((T)+2)=(char) ((byte *) &V)[5];\ *((T)+3)=(char) ((byte *) &V)[4];\ *((T)+4)=(char) ((byte *) &V)[3];\ *((T)+5)=(char) ((byte *) &V)[2];\ *((T)+6)=(char) ((byte *) &V)[1];\ *((T)+7)=(char) ((byte *) &V)[0]; }#define float8get(V,M) { double def_temp;\ ((byte*) &def_temp)[0]=(M)[7];\ ((byte*) &def_temp)[1]=(M)[6];\ ((byte*) &def_temp)[2]=(M)[5];\ ((byte*) &def_temp)[3]=(M)[4];\ ((byte*) &def_temp)[4]=(M)[3];\ ((byte*) &def_temp)[5]=(M)[2];\ ((byte*) &def_temp)[6]=(M)[1];\ ((byte*) &def_temp)[7]=(M)[0];\ (V) = def_temp; }#else#define float4get(V,M) memcpy_fixed((byte*) &V,(byte*) (M),sizeof(float))#define float4store(V,M) memcpy_fixed((byte*) V,(byte*) (&M),sizeof(float))#if defined(__FLOAT_WORD_ORDER) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN)#define doublestore(T,V) { *(T)= ((byte *) &V)[4];\ *((T)+1)=(char) ((byte *) &V)[5];\ *((T)+2)=(char) ((byte *) &V)[6];\ *((T)+3)=(char) ((byte *) &V)[7];\ *((T)+4)=(char) ((byte *) &V)[0];\ *((T)+5)=(char) ((byte *) &V)[1];\ *((T)+6)=(char) ((byte *) &V)[2];\ *((T)+7)=(char) ((byte *) &V)[3]; }#define doubleget(V,M) { double def_temp;\ ((byte*) &def_temp)[0]=(M)[4];\ ((byte*) &def_temp)[1]=(M)[5];\ ((byte*) &def_temp)[2]=(M)[6];\ ((byte*) &def_temp)[3]=(M)[7];\ ((byte*) &def_temp)[4]=(M)[0];\ ((byte*) &def_temp)[5]=(M)[1];\ ((byte*) &def_temp)[6]=(M)[2];\ ((byte*) &def_temp)[7]=(M)[3];\ (V) = def_temp; }#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) { int32 def_temp;\ ((byte*) &def_temp)[0]=(M)[0];\ ((byte*) &def_temp)[1]=(M)[1];\ ((byte*) &def_temp)[2]=(M)[2];\ ((byte*) &def_temp)[3]=(M)[3];\ (V)=def_temp; }#define ulongget(V,M) { uint32 def_temp;\ ((byte*) &def_temp)[0]=(M)[0];\ ((byte*) &def_temp)[1]=(M)[1];\ ((byte*) &def_temp)[2]=(M)[2];\ ((byte*) &def_temp)[3]=(M)[3];\ (V)=def_temp; }#define shortstore(T,A) { uint def_temp=(uint) (A) ;\ *(T+1)=(char)(def_temp); \ *(T+0)=(char)(def_temp >> 8); }#define longstore(T,A) { *((T)+3)=((A));\ *((T)+2)=(((A) >> 8));\ *((T)+1)=(((A) >> 16));\ *((T)+0)=(((A) >> 24)); }#define doubleget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(double))#define doublestore(T,V) memcpy((byte*) (T),(byte*) &V,sizeof(double))#define longlongget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(ulonglong))#define longlongstore(T,V) memcpy((byte*) (T),(byte*) &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_fixed((byte*) &V,(byte*) (M),sizeof(double))#define doublestore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(double))#endif /* doubleget */#define longlongget(V,M) memcpy_fixed((byte*) &V,(byte*) (M),sizeof(ulonglong))#define longlongstore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(ulonglong))#endif /* WORDS_BIGENDIAN *//* sprintf does not always return the number of bytes :- */#ifdef SPRINTF_RETURNS_INT#define my_sprintf(buff,args) sprintf args#else#ifdef SPRINTF_RETURNS_PTR#define my_sprintf(buff,args) ((int)(sprintf args - buff))#else#define my_sprintf(buff,args) sprintf args,strlen(buff)#endif#endif#ifndef THREAD#define thread_safe_increment(V,L) (V)++#define thread_safe_add(V,C,L) (V)+=(C)#define thread_safe_sub(V,C,L) (V)-=(C)#define statistic_increment(V,L) (V)++#define statistic_add(V,C,L) (V)+=(C)#endif#endif /* _global_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -