blob: 06ab14aceab38581a2c4720892116379954f9231 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
#pragma pack(1)
#include "types.h"
#ifndef BYTE_ORDER
#error "BYTE_ORDER not defined"
#endif
#if BYTE_ORDER != BIG_ENDIAN
#define NOSWAP
#endif
//template <typename T> struct Blah32
//{
// unsigned T i;
// #ifdef NOSWAP
// operator T () { return i; }
// T & operator = (T i) { return this->i = i; }
// #else
// operator T () { return i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
// T & operator = (T i) { return this->i = i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
// #endif
// Blah() {}
// Blah(T i) { *this = i; }
//};
struct unsigned_int
{
unsigned int i;
#ifdef NOSWAP
operator unsigned int () { return i; }
unsigned int & operator = (unsigned int i) { return this->i = i; }
#else
operator unsigned int () { return i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
unsigned int & operator = (unsigned int i) { return this->i = i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
#endif
unsigned_int() {}
unsigned_int(unsigned int i) { *this = i; }
};
struct unsigned_long
{
unsigned long i;
#ifdef NOSWAP
operator unsigned long () { return i; }
unsigned long & operator = (unsigned long i) { return this->i = i; }
#else
operator unsigned long () { return i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
unsigned long & operator = (unsigned long i) { return this->i = i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
#endif
unsigned_long() {}
unsigned_long(unsigned long i) { *this = i; }
};
struct unsigned_short
{
unsigned short i;
#ifdef NOSWAP
operator unsigned short () { return i; }
unsigned short & operator = (unsigned short i) { return this->i = i; }
#else
operator unsigned short () { return i>>8 | i<<8; }
unsigned short & operator = (unsigned short i) { return this->i = i>>8 | i<<8; }
#endif
unsigned_short() {}
unsigned_short(unsigned short i) { *this = i; }
};
struct signed_int
{
unsigned int i;
#ifdef NOSWAP
operator signed int () { return i; }
signed int & operator = (signed int i) { return (signed int &)this->i = i; }
#else
operator signed int () { return i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
signed int & operator = (signed int i) { return (signed int &)this->i = i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
#endif
signed_int() {}
signed_int(signed int i) { *this = i; }
};
struct signed_long
{
unsigned long i;
#ifdef NOSWAP
operator signed long () { return i; }
signed long & operator = (signed long i) { return (signed long &)this->i = i; }
#else
operator signed long () { return i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
signed long & operator = (signed long i) { return (signed long &)this->i = i<<24 | i<<8&0xFF0000 | i>>8&0xFF00 | i>>24; }
#endif
signed_long() {}
signed_long(signed long i) { *this = i; }
};
struct signed_short
{
unsigned short i;
#ifdef NOSWAP
operator signed short () { return i; }
signed short & operator = (unsigned short i) { return (signed short &)this->i = i; }
#else
operator signed short () { return i>>8 | i<<8; }
signed short & operator = (unsigned short i) { return (signed short &)this->i = i>>8 | i<<8; }
#endif
signed_short() {}
signed_short(signed short i) { *this = i; }
};
#pragma pack()
|