add:添加vec序列化测试。
This commit is contained in:
parent
ecb8ea5e65
commit
4442ecd7e5
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -119,6 +119,8 @@
|
|||||||
"complex": "cpp",
|
"complex": "cpp",
|
||||||
"regex": "cpp",
|
"regex": "cpp",
|
||||||
"typeindex": "cpp",
|
"typeindex": "cpp",
|
||||||
"valarray": "cpp"
|
"valarray": "cpp",
|
||||||
|
"charconv": "cpp",
|
||||||
|
"compare": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user