types.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:3k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __TYPES_H
  2. #define __TYPES_H
  3. #ifdef __BORLANDC__
  4. #define __attribute__(x)
  5. #define __alignof__(x)  sizeof(x)
  6. typedef char INT8;
  7. typedef int INT16;
  8. typedef long INT32;
  9. typedef struct {
  10. INT32 a;
  11. INT32 b;
  12. } INT64;
  13. // this INT64 shouldn't be used, invalid under BC
  14. typedef unsigned char  UINT8;
  15. typedef unsigned int  UINT16;
  16. typedef unsigned long  UINT32;
  17. typedef struct {
  18. UINT32 a;
  19. UINT32 b;
  20. } UINT64;
  21. // this UINT64 shouldn't be used, invalid under BC
  22. typedef unsigned char BYTE;
  23. typedef unsigned short SHORT;
  24. typedef unsigned long WORD;
  25. #else // for EMU and SIM
  26. typedef unsigned char BYTE;
  27. typedef unsigned short WORD;
  28. typedef unsigned int LONG;
  29. typedef unsigned long long  UINT64;
  30. typedef unsigned int    UINT32;
  31. typedef unsigned short  UINT16;
  32. typedef unsigned char  UINT8;
  33. typedef long long  INT64;
  34. typedef int    INT32;
  35. typedef short  INT16;
  36. typedef signed char INT8;
  37. #endif // end of EMU and SIM
  38. /* bcd */
  39. #define getBCD(p) (((((UINT8 *)(p))[0])>>4)*10 + ((((UINT8 *)(p))[0])&0x0f))
  40. /* unaligned accessing */
  41. #define getUINT16_bi(p) ((UINT16) (((UINT8 *)(p))[1] | ((UINT16)((UINT8 *)(p))[0]<<8)))
  42. #define getUINT16_li(p) ((UINT16) (((UINT8 *)(p))[0] | ((UINT16)((UINT8 *)(p))[1]<<8)))
  43. #define getUINT24_bi(p) ((UINT32) (((UINT8 *)(p))[2] | ((UINT32)((UINT8 *)(p))[1]<<8) | ((UINT32)((UINT8 *)(p))[0]<<16)))
  44. #define getUINT32_bi(p) ((UINT32) (((UINT8 *)(p))[3] | ((UINT32)((UINT8 *)(p))[2]<<8) | ((UINT32)((UINT8 *)(p))[1]<<16) | ((UINT32)((UINT8 *)(p))[0]<<24)))
  45. #define getUINT32_li(p) ((UINT32) (((UINT8 *)(p))[0] | ((UINT32)((UINT8 *)(p))[1]<<8) | ((UINT32)((UINT8 *)(p))[2]<<16) | ((UINT32)((UINT8 *)(p))[3]<<24)))
  46. //
  47. //
  48. #include "endian.h"
  49. #undef  getUINT16_li
  50. #undef  getUINT16_bi
  51. #undef  getUINT32_li
  52. #undef  getUINT32_bi
  53. #define getUINT16_li    lle16
  54. #define getUINT16_bi    lbe16
  55. #define getUINT32_li    lle32
  56. #define getUINT32_bi    lbe32
  57. #define getUINT64_bi(p) ((((UINT64) getUINT32_bi(p)) << 32) | ((UINT64) getUINT32_bi(p+4)))
  58. #define BIG_ENDIAN
  59. /* endian-less taste */
  60. #ifdef BIG_ENDIAN
  61. #define getUINT16(p) getUINT16_bi((BYTE *)p)
  62. #define getUINT32(p) getUINT32_bi((BYTE *)p)
  63. #else
  64. #define getUINT16(p) getUINT16_li((BYTE *)p)
  65. #define getUINT32(p) getUINT32_li((BYTE *)p)
  66. #endif
  67. #define getBiUINT32(p) getUINT32_li((BYTE *)p)
  68. #define getBiUINT16(p) getUINT16_li((BYTE *)p)
  69. #ifndef  TRUE
  70. #define  TRUE  1
  71. #endif
  72. #ifndef  FALSE
  73. #define  FALSE 0
  74. #endif
  75. #define IS_B7_ONE(p) ( ((p) & 0x80) == 0x80 )
  76. #define IS_B7_ZERO(p) ( ((p) & 0x80) == 0x00 )
  77. #define GET_LOW_NIBBLE(p) ((p) & 0x0F)
  78. #ifndef NULL
  79. #define NULL    ((void *)0)
  80. #endif
  81. #endif/*__TYPES_H*/