I want to serialize and deserialize a class Mango
. So I have created a function serialize
and deserialize
respectively.
? serialize(Mango &Man) /// What should be return ?
{
}
Mango deserialize( ? ) /// What should be function parameter ?
{
}
I don't know how to implement it very efficiently in terms of speed, portability , memory because it contains 10 members of custom data types ( I just mention one but they are all similar) which again are very complex.
I want suggestions for implementation for eg : what should be the return type of serialize function ? vector of bytes ie std::vector<uint8_t> serialize(Mango &Man)
? or should it be nothing like just serializing it into bytes and storing it in memory? or any other way?
Mango Class
class Mango
{
public:
const MangoType &getMangoType() const { return typeMan; }
MangoType &getMangoType() { return typeMan; }
private:
// There are many members of different types : I just mention one.
MangoType typeMan;
};
Data type classes
//MangoType Class
class MangoType
{
/// It only has one member ie content
public:
/// Getter of content vector.
std::vector<FuntionMango> &getContent() noexcept { return Content; }
private:
/// \name Data of MangoType.
std::vector<FuntionMango> Content;
};
/// FuntionMango class.
class FuntionMango
{
public:
/// Getter of param types.
const std::vector<ValType> &getParamTypes() const noexcept
{
return ParamTypes;
}
std::vector<ValType> &getParamTypes() noexcept { return ParamTypes; }
/// Getter of return types.
const std::vector<ValType> &getReturnTypes() const noexcept
{
return ReturnTypes;
}
std::vector<ValType> &getReturnTypes() noexcept { return ReturnTypes; }
private:
/// \name Data of FuntionMango.
std::vector<ValType> ParamTypes;
std::vector<ValType> ReturnTypes;
};
//ValType Class
enum class ValType : uint8_t
{
#define UseValType
#define Line(NAME, VALUE, STRING) NAME = VALUE
#undef Line
#undef UseValType
};
I want to know the best possible implementation plan in terms of speed and memory for serialize and deserialize functions.
Note : I do not want to transfer it over the network and do not want to use library which requires linking like boost serialization
Aucun commentaire:
Enregistrer un commentaire