+void sgClearReadError() { read_error = false; }
+void sgClearWriteError() { write_error = false; }
+int sgReadError() { return read_error ; }
+int sgWriteError() { return write_error ; }
+
+static const int sgEndianTest = 1;
+#define sgIsLittleEndian (*((char *) &sgEndianTest ) != 0)
+#define sgIsBigEndian (*((char *) &sgEndianTest ) == 0)
+
+static inline void sgEndianSwap(unsigned short *x) {
+ *x =
+ (( *x >> 8 ) & 0x00FF ) |
+ (( *x << 8 ) & 0xFF00 ) ;
+}
+
+static inline void sgEndianSwap(unsigned int *x) {
+ *x =
+ (( *x >> 24 ) & 0x000000FF ) |
+ (( *x >> 8 ) & 0x0000FF00 ) |
+ (( *x << 8 ) & 0x00FF0000 ) |
+ (( *x << 24 ) & 0xFF000000 ) ;
+}
+
+static inline void sgEndianSwap(unsigned long long *x) {
+ *x =
+ (( *x >> 56 ) & 0x00000000000000FFULL ) |
+ (( *x >> 40 ) & 0x000000000000FF00ULL ) |
+ (( *x >> 24 ) & 0x0000000000FF0000ULL ) |
+ (( *x >> 8 ) & 0x00000000FF000000ULL ) |
+ (( *x << 8 ) & 0x000000FF00000000ULL ) |
+ (( *x << 24 ) & 0x0000FF0000000000ULL ) |
+ (( *x << 40 ) & 0x00FF000000000000ULL ) |
+ (( *x << 56 ) & 0xFF00000000000000ULL ) ;
+}
+