29 #ifndef ENDIAN_FSTREAM_H
30 #define ENDIAN_FSTREAM_H
40 iendianfstream(
const char *_Filename, ios_base::openmode _Mode = ios_base::in)
41 : ifstream(_Filename, _Mode)
63 get(
reinterpret_cast<char&
>(value));
69 read(reinterpret_cast<char*>(&value),
sizeof(value));
71 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
78 read(reinterpret_cast<char*>(&value),
sizeof(value));
80 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
87 read(reinterpret_cast<char*>(&value),
sizeof(value));
89 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
96 read(reinterpret_cast<char*>(&value),
sizeof(value));
98 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
105 read(reinterpret_cast<char*>(&value),
sizeof(value));
107 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
114 read(reinterpret_cast<char*>(&value),
sizeof(value));
116 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
123 read(reinterpret_cast<char*>(&value),
sizeof(value));
125 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
132 read(reinterpret_cast<char*>(&value),
sizeof(value));
134 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
141 read(reinterpret_cast<char*>(&value),
sizeof(value));
143 swap_bytes(reinterpret_cast<unsigned char*>(&value),
sizeof(value));
150 read(reinterpret_cast<char*>(&value[0]), value.size());
151 string::size_type pos = value.find_first_of(
'\0');
152 if(pos != string::npos)
160 unsigned char color[4];
161 read(reinterpret_cast<char*>(&color),
sizeof(color));
185 value.
column = color[0] - 0x64;
191 for(
int i = 0; i < 3; ++i)
192 value.
custom[i] = color[i];
201 else if(color[0] == 0xF7)
223 register int j = size - 1;
226 std::swap(data[i], data[j]);
233 #endif // ENDIAN_FSTREAM_H