home *** CD-ROM | disk | FTP | other *** search
/ Compressed Image File Formats / CompressedImageFileFormatsJohnMiano.iso / pc / Library / include / datatype.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-12-17  |  2.7 KB  |  119 lines

  1. #ifndef __DATATYPE_H
  2. #define __DATATYPE_H
  3. //
  4. // Copyright (c) 1997,1998 Colosseum Builders, Inc.
  5. // All rights reserved.
  6. //
  7. // Colosseum Builders, Inc. makes no warranty, expressed or implied
  8. // with regards to this software. It is provided as is.
  9. //
  10. // See the README.TXT file that came with this software for restrictions
  11. // on the use and redistribution of this file or send E-mail to
  12. // info@colosseumbuilders.com
  13. //
  14.  
  15. #if defined (__BORLANDC__)
  16. #pragma warn -csu
  17. #pragma warn -sig
  18. #pragma warn -pch
  19. #pragma warn -inl
  20. #endif
  21.  
  22. //
  23. // For some reason MSVC++ gives errors about missing return statements
  24. // in non-void functions for execution paths that can never be reached
  25. // due to throw statements.
  26. //
  27. #if defined (_MSC_VER)
  28. # define DUMMY_RETURN return 0 ;
  29. #else
  30. # define DUMMY_RETURN
  31. #endif
  32.  
  33. typedef char BYTE1 ;
  34. typedef unsigned char UBYTE1 ;
  35.  
  36. typedef short BYTE2 ;
  37. typedef unsigned short UBYTE2 ;
  38. typedef long BYTE4 ;
  39. typedef unsigned long UBYTE4 ;
  40.  
  41. #define BIGENDIAN_SYSTEM 0
  42.  
  43. #if BIGENDIDIAN_SYSTEM!=0
  44. inline UBYTE2 SystemToLittleEndian (UBYTE2 value)
  45. {
  46.   return ((value&0xFF) << 8)|((value&0xFF00)>>8) ;
  47. }
  48. inline UBYTE4 SystemToLittleEndian (UBYTE4 value)
  49. {
  50.   return ((value&0xFF000000L)>>24)|((value&0xFF0000L)>>8)
  51.          | ((value&0xFF00L)<<8) | ((value&0xFFL)<<24) ;
  52. }
  53. inline UBYTE2 SystemToBigEndian (UBYTE2 value)
  54. {
  55.   return value ;
  56. }
  57. inline UBYTE4 SystemToBigEndian (UBYTE4 value)
  58. {
  59.   return value ;
  60. }
  61.  
  62. inline UBYTE2 LittleEndianToSystem (UBYTE2 value)
  63. {
  64.   return ((value&0xFF) << 8)|((value&0xFF00)>>8) ;
  65. }
  66. inline UBYTE4 LittleEndianToSystem (UBYTE4 value)
  67. {
  68.   return ((value&0xFF000000L)>>24)|((value&0xFF0000L)>>8)
  69.          | ((value&0xFF00L)<<8) | ((value&0xFFL)<<24) ;
  70. }
  71. inline UBYTE2 BigEndianToSystem (UBYTE2 value)
  72. {
  73.   return value ;
  74. }
  75. inline UBYTE4 BigEndianToSystem (UBYTE4 value)
  76. {
  77.   return value ;
  78. }
  79.  
  80. #else
  81. inline UBYTE2 SystemToLittleEndian (UBYTE2 value)
  82. {
  83.   return value ;
  84. }
  85. inline UBYTE4 SystemToLittleEndian (UBYTE4 value)
  86. {
  87.   return value ;
  88. }
  89. inline UBYTE2 SystemToBigEndian (UBYTE2 value)
  90. {
  91.   return (UBYTE2) ((value&0xFF) << 8)|((value&0xFF00)>>8) ;
  92. }
  93. inline UBYTE4 SystemToBigEndian (UBYTE4 value)
  94. {
  95.   return ((value&0xFF000000L)>>24)|((value&0xFF0000L)>>8)
  96.          | ((value&0xFF00L)<<8) | ((value&0xFFL)<<24) ;
  97. }
  98.  
  99. inline UBYTE2 LittleEndianToSystem (UBYTE2 value)
  100. {
  101.   return value ;
  102. }
  103. inline UBYTE4 LittleEndianToSystem (UBYTE4 value)
  104. {
  105.   return value ;
  106. }
  107. inline UBYTE2 BigEndianToSystem (UBYTE2 value)
  108. {
  109.   return (UBYTE2) ((value&0xFF) << 8)|((value&0xFF00)>>8) ;
  110. }
  111. inline UBYTE4 BigEndianToSystem (UBYTE4 value)
  112. {
  113.   return ((value&0xFF000000L)>>24)|((value&0xFF0000L)>>8)
  114.          | ((value&0xFF00L)<<8) | ((value&0xFFL)<<24) ;
  115. }
  116. #endif
  117.  
  118. #endif
  119.