common.h
上传用户:hkcoast
上传日期:2007-01-12
资源大小:979k
文件大小:3k
源码类别:

手机短信编程

开发平台:

Visual C++

  1. #define SMPPAPI_GOLD
  2. #define DEFAULT_PORT 5000
  3. //#define DllExport   __declspec( dllexport ) 
  4. #ifdef _EXPORTING
  5.    #define CLASS_DECLSPEC    __declspec(dllexport)
  6. #else
  7.    #define CLASS_DECLSPEC    __declspec(dllimport)
  8. #endif
  9. //##ModelId=3B70A7690168
  10. typedef unsigned short  ushort;
  11. //##ModelId=3B70A7690186
  12. typedef unsigned int    uint;
  13. //##ModelId=3B70A769019A
  14. typedef unsigned char uchar;
  15. //##ModelId=3B70A76901AE
  16. typedef char int8; /* Signed integer >= 8 bits */
  17. //##ModelId=3B70A76901C2
  18. typedef short int16; /* Signed integer >= 16 bits */
  19. //##ModelId=3B70A76901D6
  20. typedef unsigned char uint8; /* Short for unsigned integer >= 8  bits */
  21. //##ModelId=3B70A76901EB
  22. typedef unsigned short uint16; /* Short for unsigned integer >= 16 bits */
  23. //##ModelId=3B70A7690200
  24. typedef int int32;
  25. //##ModelId=3B70A769021D
  26. typedef unsigned int uint32; /* Short for unsigned integer >= 32 bits */
  27. //##ModelId=3B70A7690231
  28. typedef unsigned long ulong;
  29. //##ModelId=3B70A7690245
  30. typedef unsigned hyper ulonglong;
  31. // Optimized store functions for Intel x86 
  32. #define sint2korr(A) (*((int16 *) (A)))
  33. #define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? 
  34.   (((uint32) 255L << 24) | 
  35.    (((uint32) (uchar) (A)[2]) << 16) |
  36.    (((uint32) (uchar) (A)[1]) << 8) | 
  37.    ((uint32) (uchar) (A)[0])) : 
  38.   (((uint32) (uchar) (A)[2]) << 16) |
  39.   (((uint32) (uchar) (A)[1]) << 8) | 
  40.   ((uint32) (uchar) (A)[0])))
  41. #define sint4korr(A) (*((long *) (A)))
  42. #define uint2korr(A) (*((uint16 *) (A)))
  43. #define uint3korr(A) (long) (*((unsigned long *) (A)) & 0xFFFFFF)
  44. #define uint4korr(A) (*((unsigned long *) (A)))
  45. #define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +
  46.     (((uint32) ((uchar) (A)[1])) << 8) +
  47.     (((uint32) ((uchar) (A)[2])) << 16) +
  48.     (((uint32) ((uchar) (A)[3])) << 24)) +
  49.       (((ulonglong) ((uchar) (A)[4])) << 32))
  50. #define uint8korr(A) (*((ulonglong *) (A)))
  51. #define sint8korr(A) (*((longlong *) (A)))
  52. #define int2store(T,A) *((uint16*) (T))= (uint16) (A)
  53. #define int3store(T,A) { *(T)=  (uchar) ((A));
  54.   *(T+1)=(uchar) (((uint) (A) >> 8));
  55.   *(T+2)=(uchar) (((A) >> 16)); }
  56. #define int4store(T,A) *((long *) (T))= (long) (A)
  57. #define int5store(T,A) { *(T)= (uchar)((A));
  58.   *((T)+1)=(uchar) (((A) >> 8));
  59.   *((T)+2)=(uchar) (((A) >> 16));
  60.   *((T)+3)=(uchar) (((A) >> 24)); 
  61.   *((T)+4)=(uchar) (((A) >> 32)); }
  62. #define int8store(T,A) *((ulonglong *) (T))= (ulonglong) (A)
  63. #define doubleget(V,M) { *((long *) &V) = *((long*) M); 
  64.   *(((long *) &V)+1) = *(((long*) M)+1); }
  65. #define doublestore(T,V) { *((long *) T) = *((long*) &V); 
  66.    *(((long *) T)+1) = *(((long*) &V)+1); }
  67. #define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }
  68. #define float8get(V,M) doubleget((V),(M))
  69. #define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float))
  70. #define float8store(V,M) doublestore((V),(M))
  71. //Starting here, for Big Endian defition
  72. #define storeInt(T, A) {
  73. *((T)+3) = (uchar) ((A));
  74. *((T)+2) = (uchar) (((A) >> 8));
  75. *((T)+1) = (uchar) (((A) >> 16));
  76. *(T) = (uchar) (((A) >> 24)); }
  77. #define storeInt2(T, A) {
  78. *((T)+1) = (uchar) (((A)));
  79. *(T) = (uchar) (((A) >> 8)); }
  80. #define readInt(A) ((int) (
  81.     (((int) ((uchar) (A)[0])) << 24) +
  82.     (((uint32) ((uchar) (A)[1])) << 16) +
  83.     (((uint32) ((uchar) (A)[2])) << 8) +
  84. ((uchar) (A)[3])))
  85. #define readInt2(A) ((int) (
  86.     (((int) ((uchar) (A)[0])) << 8) +
  87. ((uchar) (A)[1])))