mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-03 10:55:57 -04:00
Implement fixed integer r/w methods
This commit is contained in:
parent
d7987b33da
commit
b8d3b08f10
@ -197,4 +197,52 @@ Sint64 RWops::Size() {
|
||||
return size;
|
||||
}
|
||||
|
||||
Uint16 RWops::ReadBE16() {
|
||||
return SDL_ReadBE16(rwops_);
|
||||
}
|
||||
|
||||
Uint32 RWops::ReadBE32() {
|
||||
return SDL_ReadBE32(rwops_);
|
||||
}
|
||||
|
||||
Uint64 RWops::ReadBE64() {
|
||||
return SDL_ReadBE64(rwops_);
|
||||
}
|
||||
|
||||
Uint16 RWops::ReadLE16() {
|
||||
return SDL_ReadLE16(rwops_);
|
||||
}
|
||||
|
||||
Uint32 RWops::ReadLE32() {
|
||||
return SDL_ReadLE32(rwops_);
|
||||
}
|
||||
|
||||
Uint64 RWops::ReadLE64() {
|
||||
return SDL_ReadLE64(rwops_);
|
||||
}
|
||||
|
||||
size_t RWops::WriteBE16(Uint16 value) {
|
||||
return SDL_WriteBE16(rwops_, value);
|
||||
}
|
||||
|
||||
size_t RWops::WriteBE32(Uint32 value) {
|
||||
return SDL_WriteBE32(rwops_, value);
|
||||
}
|
||||
|
||||
size_t RWops::WriteBE64(Uint64 value) {
|
||||
return SDL_WriteBE64(rwops_, value);
|
||||
}
|
||||
|
||||
size_t RWops::WriteLE16(Uint16 value) {
|
||||
return SDL_WriteLE16(rwops_, value);
|
||||
}
|
||||
|
||||
size_t RWops::WriteLE32(Uint32 value) {
|
||||
return SDL_WriteLE32(rwops_, value);
|
||||
}
|
||||
|
||||
size_t RWops::WriteLE64(Uint64 value) {
|
||||
return SDL_WriteLE64(rwops_, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -113,6 +113,19 @@ public:
|
||||
size_t Write(const void* ptr, size_t size, size_t num);
|
||||
Sint64 Tell();
|
||||
Sint64 Size();
|
||||
|
||||
Uint16 ReadBE16();
|
||||
Uint32 ReadBE32();
|
||||
Uint64 ReadBE64();
|
||||
Uint16 ReadLE16();
|
||||
Uint32 ReadLE32();
|
||||
Uint64 ReadLE64();
|
||||
size_t WriteBE16(Uint16 value);
|
||||
size_t WriteBE32(Uint32 value);
|
||||
size_t WriteBE64(Uint64 value);
|
||||
size_t WriteLE16(Uint16 value);
|
||||
size_t WriteLE32(Uint32 value);
|
||||
size_t WriteLE64(Uint64 value);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -233,6 +233,36 @@ BEGIN_TEST()
|
||||
|
||||
rw.Close();
|
||||
}
|
||||
|
||||
// Fixed width reads/writes
|
||||
{
|
||||
std::vector<char> data, outdata;
|
||||
for (int i = 0; i < 28; i++)
|
||||
data.push_back(i);
|
||||
|
||||
RWops rw((ContainerRWops<std::vector<char>>(data)));
|
||||
|
||||
EXPECT_EQUAL(rw.ReadBE16(), 0x0001U);
|
||||
EXPECT_EQUAL(rw.ReadLE16(), 0x0302U);
|
||||
EXPECT_EQUAL(rw.ReadBE32(), 0x04050607U);
|
||||
EXPECT_EQUAL(rw.ReadLE32(), 0x0B0A0908U);
|
||||
EXPECT_EQUAL(rw.ReadBE64(), 0x0C0D0E0F10111213ULL);
|
||||
EXPECT_EQUAL(rw.ReadLE64(), 0x1B1A191817161514ULL);
|
||||
|
||||
RWops rw1((ContainerRWops<std::vector<char>>(outdata)));
|
||||
|
||||
EXPECT_EQUAL(rw1.WriteBE16(0x0001U), 1U);
|
||||
EXPECT_EQUAL(rw1.WriteLE16(0x0302U), 1U);
|
||||
EXPECT_EQUAL(rw1.WriteBE32(0x04050607U), 1U);
|
||||
EXPECT_EQUAL(rw1.WriteLE32(0x0B0A0908U), 1U);
|
||||
EXPECT_EQUAL(rw1.WriteBE64(0x0C0D0E0F10111213ULL), 1U);
|
||||
EXPECT_EQUAL(rw1.WriteLE64(0x1B1A191817161514ULL), 1U);
|
||||
|
||||
EXPECT_EQUAL(data.size(), outdata.size());
|
||||
|
||||
EXPECT_TRUE(data == outdata);
|
||||
}
|
||||
|
||||
HANDLE_EXCEPTION(Exception& e)
|
||||
std::cerr << "unexpected SDL exception was thrown during the test: " << e.what() << ": " << e.GetSDLError() << std::endl;
|
||||
END_TEST()
|
||||
|
Loading…
x
Reference in New Issue
Block a user