add:添加vec序列化测试。

This commit is contained in:
taynpg 2025-05-08 12:46:49 +08:00
parent ecb8ea5e65
commit 4442ecd7e5
3 changed files with 55 additions and 7 deletions

View File

@ -119,6 +119,8 @@
"complex": "cpp", "complex": "cpp",
"regex": "cpp", "regex": "cpp",
"typeindex": "cpp", "typeindex": "cpp",
"valarray": "cpp" "valarray": "cpp",
"charconv": "cpp",
"compare": "cpp"
} }
} }

View File

@ -4,8 +4,10 @@
#include <cereal/archives/binary.hpp> #include <cereal/archives/binary.hpp>
#include <cereal/types/memory.hpp> #include <cereal/types/memory.hpp>
#include <cereal/types/unordered_map.hpp> #include <cereal/types/unordered_map.hpp>
#include <cereal/types/vector.hpp>
#include <cstdint> #include <cstdint>
#include <string> #include <string>
#include <vector>
#include <wx/wx.h> #include <wx/wx.h>
enum FileType : uint32_t { enum FileType : uint32_t {
@ -16,16 +18,28 @@ enum FileType : uint32_t {
}; };
struct DirFileInfo { struct DirFileInfo {
FileType type; FileType type = None;
std::string fullPath; std::string fullPath;
std::string name; std::string name;
uint64_t lastModifyTime; uint64_t lastModifyTime = 0;
uint64_t size; uint64_t size = 0;
uint16_t permission; uint16_t permission = 0;
DirFileInfo() = default;
template <class Archive> void serialize(Archive& archive) template <class Archive> void serialize(Archive& archive)
{ {
archive(type, fullPath, name, lastModifyTime, size, permission); archive(CEREAL_NVP(type), CEREAL_NVP(fullPath), CEREAL_NVP(name), CEREAL_NVP(lastModifyTime), CEREAL_NVP(size),
CEREAL_NVP(permission));
}
};
struct DirFileInfoVec {
std::vector<DirFileInfo> vec;
template <class Archive> void serialize(Archive& archive)
{
archive(CEREAL_NVP(vec));
} }
}; };

View File

@ -1,7 +1,7 @@
#include <InfoDirFile.hpp> #include <InfoDirFile.hpp>
#include <iostream> #include <iostream>
int main() void test1()
{ {
DirFileInfo info; DirFileInfo info;
DirFileInfo info2; DirFileInfo info2;
@ -33,6 +33,38 @@ int main()
cereal::BinaryInputArchive inputArchive(inputSs); cereal::BinaryInputArchive inputArchive(inputSs);
inputArchive(info2); inputArchive(info2);
} }
}
void test2()
{
DirFileInfoVec v;
DirFileInfoVec v2;
DirFileInfo d1;
d1.fullPath = "Java";
DirFileInfo d2;
d2.fullPath = "CPP";
v.vec.push_back(d1);
v.vec.push_back(d2);
std::stringstream ss;
{
cereal::BinaryOutputArchive archive(ss);
archive(v);
}
std::string ret = ss.str();
std::cout << "Serialized size: " << ret.size() << " bytes\n";
{
std::stringstream inputSs(ret);
cereal::BinaryInputArchive inputArchive(inputSs);
inputArchive(v2);
}
}
int main()
{
test2();
return 0; return 0;
} }