diff --git a/.vscode/settings.json b/.vscode/settings.json index 49d0ad7..346a0ab 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -119,6 +119,8 @@ "complex": "cpp", "regex": "cpp", "typeindex": "cpp", - "valarray": "cpp" + "valarray": "cpp", + "charconv": "cpp", + "compare": "cpp" } } \ No newline at end of file diff --git a/Information/InfoDirFile.hpp b/Information/InfoDirFile.hpp index 7fdbbad..7ec03ea 100644 --- a/Information/InfoDirFile.hpp +++ b/Information/InfoDirFile.hpp @@ -4,8 +4,10 @@ #include #include #include +#include #include #include +#include #include enum FileType : uint32_t { @@ -16,16 +18,28 @@ enum FileType : uint32_t { }; struct DirFileInfo { - FileType type; + FileType type = None; std::string fullPath; std::string name; - uint64_t lastModifyTime; - uint64_t size; - uint16_t permission; + uint64_t lastModifyTime = 0; + uint64_t size = 0; + uint16_t permission = 0; + + DirFileInfo() = default; template 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 vec; + + template void serialize(Archive& archive) + { + archive(CEREAL_NVP(vec)); } }; diff --git a/Test/main.cxx b/Test/main.cxx index 3911e27..84f7be7 100644 --- a/Test/main.cxx +++ b/Test/main.cxx @@ -1,7 +1,7 @@ #include #include -int main() +void test1() { DirFileInfo info; DirFileInfo info2; @@ -33,6 +33,38 @@ int main() cereal::BinaryInputArchive inputArchive(inputSs); 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; } \ No newline at end of file