add: ex01

This commit is contained in:
Camille Chauvet 2023-09-19 11:37:26 +00:00
parent 4afd76b65b
commit 671d71f273
5 changed files with 96 additions and 0 deletions

26
ex01/Makefile Normal file
View File

@ -0,0 +1,26 @@
CXX := c++
CXXFLAGS := -std=c++98 -Wall -Wextra -Werror -g
SRCDIR := src
OBJDIR := obj
NAME := ex01
SRCS := $(wildcard $(SRCDIR)/*.cpp)
OBJS := $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRCS))
all: $(NAME)
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
mkdir -p $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $< -o $@
$(NAME): $(OBJS)
$(CXX) $(CXXFLAGS) $^ -o $@
clean:
rm -rf $(OBJDIR)
fclean: clean
rm -fr $(NAME)
re: fclean
@make --no-print-directory all

9
ex01/src/Data.hpp Normal file
View File

@ -0,0 +1,9 @@
#pragma once
#include <string>
typedef struct s_data
{
std::string name;
int id;
} Data;

29
ex01/src/Serializer.cpp Normal file
View File

@ -0,0 +1,29 @@
#include "Serializer.hpp"
#include "Data.hpp"
Serializer::Serializer()
{}
Serializer::~Serializer()
{}
Serializer::Serializer(const Serializer& src)
{
(void)src;
}
Serializer& Serializer::operator=(const Serializer& src)
{
(void)src;
return *this;
}
uintptr_t Serializer::serialize(Data* ptr)
{
return reinterpret_cast<uintptr_t>(ptr);
}
Data* Serializer::deserialize(uintptr_t raw)
{
return reinterpret_cast<Data *>(raw);
}

19
ex01/src/Serializer.hpp Normal file
View File

@ -0,0 +1,19 @@
#pragma once
#include <stdint.h>
#include "Data.hpp"
class Serializer
{
private:
Serializer();
~Serializer();
Serializer(const Serializer& src);
Serializer& operator=(const Serializer& src);
public:
static uintptr_t serialize(Data* ptr);
static Data* deserialize(uintptr_t raw);
};

13
ex01/src/main.cpp Normal file
View File

@ -0,0 +1,13 @@
#include "Data.hpp"
#include "Serializer.hpp"
#include <iostream>
int main()
{
Data data = {"bozo", 10};
uintptr_t tmp = Serializer::serialize(&data);
std::cout << "serialized: " << std::hex << tmp << std::endl;
std::cout << "deserialized: " << Serializer::deserialize(tmp) << std::endl;
}