UsenetSearch/include/usenetsearch/Serialize.h

45 lines
1.6 KiB
C++

#pragma once
#include <cstdint>
#include <fstream>
#include <vector>
#include "usenetsearch/Except.h"
namespace usenetsearch {
struct ArticleEntry;
struct NntpHeader;
struct NntpListEntry;
struct SerializeException: public UsenetSearchException
{
SerializeException(int errorCode, const std::string& message):
UsenetSearchException(errorCode, message){}
virtual ~SerializeException() = default;
};
class SerializableFile: public std::fstream
{
public:
virtual ~SerializableFile() = default;
};
SerializableFile& operator<<(
SerializableFile& out, const std::vector<std::uint64_t>& arr);
SerializableFile& operator>>(
SerializableFile& in, std::vector<std::uint64_t>& arr);
SerializableFile& operator<<(SerializableFile& out, const ArticleEntry& obj);
SerializableFile& operator>>(SerializableFile& in, ArticleEntry& obj);
SerializableFile& operator<<(SerializableFile& out, const std::string& str);
SerializableFile& operator>>(SerializableFile& in, std::string& str);
SerializableFile& operator<<(SerializableFile& out, const std::wstring& str);
SerializableFile& operator>>(SerializableFile& in, std::wstring& str);
SerializableFile& operator<<(SerializableFile& out, const NntpHeader& obj);
SerializableFile& operator>>(SerializableFile& in, NntpHeader& obj);
SerializableFile& operator<<(SerializableFile& out, const NntpListEntry& obj);
SerializableFile& operator>>(SerializableFile& in, NntpListEntry& obj);
SerializableFile& operator<<(SerializableFile& out, const uint64_t& obj);
SerializableFile& operator>>(SerializableFile& in, uint64_t& obj);
} // namespace usenetsearch