Skip to content

Commit f93c030

Browse files
committed
array
1 parent 65f7879 commit f93c030

2 files changed

Lines changed: 35 additions & 13 deletions

File tree

CoreLib.Serialization/DataSerializer.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,18 @@ namespace JxCoreLib::Serialization
8888

8989
return stream;
9090
}
91+
template<typename T, int N>
92+
Stream& ReadWriteStream(Stream& stream, bool is_write, T (&arr)[N])
93+
{
94+
int len = N;
95+
ReadWriteStream(stream, is_write, len);
96+
for (int i = 0; i < N; i++)
97+
{
98+
ReadWriteStream(stream, is_write, arr[i]);
99+
}
100+
101+
return stream;
102+
}
91103

92104
template<typename T, int N>
93105
Stream& ReadWriteStream(Stream& stream, bool is_write, std::array<T, N>& arr)

Example/TestFile.cpp

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,35 +22,45 @@ void TestFile()
2222
FileStream fs{ "D:/a.txt", FileOpenMode::OpenOrCreate };
2323

2424
bool is_ser = true;
25-
25+
//write
2626
int32_t i32 = 257;
2727
ReadWriteStream(fs, is_ser, i32);
2828

2929
string str = "jomi";
3030
ReadWriteStream(fs, is_ser, str);
3131

32-
std::vector<int> arr = { 2,3,4,8 };
33-
ReadWriteStream(fs, is_ser, arr);
32+
std::vector<int> vec = { 2,3,4,8 };
33+
ReadWriteStream(fs, is_ser, vec);
3434

35-
std::array<int, 3> ar = { 1 };
36-
ReadWriteStream(fs, is_ser, ar);
35+
std::array<int, 3> stdarr = { 1 };
36+
ReadWriteStream(fs, is_ser, stdarr);
37+
38+
int arr[3] = {1,0,5};
39+
ReadWriteStream(fs, is_ser, arr);
3740

38-
int32_t oi32;
39-
string ostr;
4041
fs.set_position(0);
42+
//read
43+
int32_t oi32;
4144
ReadWriteStream(fs, !is_ser, oi32);
45+
46+
string ostr;
4247
ReadWriteStream(fs, !is_ser, ostr);
4348

44-
std::vector<int> oarr;
45-
ReadWriteStream(fs, !is_ser, oarr);
49+
std::vector<int> ovec;
50+
ReadWriteStream(fs, !is_ser, ovec);
51+
52+
std::array<int, 3> ostdaar;
53+
ReadWriteStream(fs, !is_ser, ostdaar);
4654

47-
std::array<int, 3> oar;
48-
ReadWriteStream(fs, !is_ser, oar);
55+
int oarr[3];
56+
ReadWriteStream(fs, !is_ser, oarr);
4957

58+
//check
5059
assert(oi32 == i32);
5160
assert(str == ostr);
52-
assert(arr == oarr);
53-
assert(!memcmp(ar.data(), oar.data(), ar.size()));
61+
assert(vec == ovec);
62+
assert(!memcmp(stdarr.data(), ostdaar.data(), stdarr.size()));
63+
assert(!memcmp(arr, oarr, 3));
5464
}
5565
{
5666
FileStream fs{ "D:/a.txt", FileOpenMode::Read };

0 commit comments

Comments
 (0)