diff --git a/ex01/Makefile b/ex01/Makefile new file mode 100644 index 0000000..c70dac7 --- /dev/null +++ b/ex01/Makefile @@ -0,0 +1,4 @@ +override NAME = ex01.out +override SRC_FILES = main.cpp Serializer.cpp + +include ../Makefile diff --git a/ex01/src/Serializer.cpp b/ex01/src/Serializer.cpp new file mode 100644 index 0000000..d36a4ae --- /dev/null +++ b/ex01/src/Serializer.cpp @@ -0,0 +1,9 @@ +#include + +uintptr_t Serializer::serialize(Data* ptr) { + return reinterpret_cast(ptr); +} + +Data* Serializer::deserialize(uintptr_t raw) { + return reinterpret_cast(raw); +} diff --git a/ex01/src/Serializer.hpp b/ex01/src/Serializer.hpp new file mode 100644 index 0000000..274890d --- /dev/null +++ b/ex01/src/Serializer.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include +#include + +struct Data { + std::string name; + int value; + int year; +}; + +class Serializer { + public: + static uintptr_t serialize(Data* ptr); + static Data* deserialize(uintptr_t raw); + private: + Serializer(); + Serializer(const Serializer&); + + Serializer& operator=(const Serializer&); + + ~Serializer(); +}; diff --git a/ex01/src/main.cpp b/ex01/src/main.cpp new file mode 100644 index 0000000..c541b09 --- /dev/null +++ b/ex01/src/main.cpp @@ -0,0 +1,17 @@ +#include +#include + +int main() { + Data data; + data.name = "Peugeot 208"; + data.value = 3860; + data.year = 2013; + + std::cout << "Before : " << &data << " " << data.year << " " << data.name << ": " << data.value << "€" << std::endl; + + const uintptr_t raw = Serializer::serialize(&data); + std::cout << "Serialized : " << raw << std::endl; + + const Data* deserialized = Serializer::deserialize(raw); + std::cout << "Deserialized: " << deserialized << " " << deserialized->year << " " << deserialized->name << ": " << deserialized->value << "€" << std::endl; +}