From ac4cb599eb07f1a51b5848e7a342021123fac954 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Mon, 14 Mar 2022 18:45:24 +0100 Subject: [PATCH] d06 check leaks ok --- d06/ex01/Makefile | 3 +- d06/ex01/headers/colors.h | 25 +++++++++++ d06/ex01/main.cpp | 88 +++++++++++++++++++++++++++++--------- d06/ex01/serialize | Bin 13864 -> 0 bytes d06/ex02/dynamic | Bin 19504 -> 0 bytes d06/ex02/main.cpp | 24 +++-------- 6 files changed, 100 insertions(+), 40 deletions(-) create mode 100644 d06/ex01/headers/colors.h delete mode 100755 d06/ex01/serialize delete mode 100755 d06/ex02/dynamic diff --git a/d06/ex01/Makefile b/d06/ex01/Makefile index d20930b..ed6a5da 100644 --- a/d06/ex01/Makefile +++ b/d06/ex01/Makefile @@ -32,7 +32,8 @@ D_SRCS = srcs SRCS = main.cpp D_HEADERS = headers -HEADERS = Data.hpp +HEADERS = Data.hpp \ + colors.h D_OBJS = builds OBJS = $(SRCS:%.$(EXT)=$(D_OBJS)/%.o) diff --git a/d06/ex01/headers/colors.h b/d06/ex01/headers/colors.h new file mode 100644 index 0000000..0374e42 --- /dev/null +++ b/d06/ex01/headers/colors.h @@ -0,0 +1,25 @@ +#ifndef COLORS_H +# define COLORS_H + +# define GRAY "\e[0;30m" +# define RED "\e[0;31m" +# define GREEN "\e[0;32m" +# define YELLOW "\e[0;33m" +# define BLUE "\e[0;34m" +# define PURPLE "\e[0;35m" +# define CYAN "\e[0;36m" +# define WHITE "\e[0;37m" + +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + +#endif + diff --git a/d06/ex01/main.cpp b/d06/ex01/main.cpp index 5b20135..c511bd8 100644 --- a/d06/ex01/main.cpp +++ b/d06/ex01/main.cpp @@ -1,18 +1,20 @@ #include #include #include +#include "colors.h" + #include "Data.hpp" -/* - * template < typename T > - * void printBits(T num) - * { - * unsigned long int *p = reinterpret_cast(&num); - * - * for (unsigned long int mask = 1LU << (sizeof(T) *8 -1); mask; mask >>= 1) - * std::cout << ((*p & mask) != 0); - * } - */ +#define N_TEST "3" + +template < typename T > +void printBits(T num) +{ + unsigned long int *p = reinterpret_cast(&num); + + for (unsigned long int mask = 1LU << (sizeof(T) *8 -1); mask; mask >>= 1) + std::cout << ((*p & mask) != 0); +} uintptr_t serialize(Data* ptr) { return ( reinterpret_cast(ptr) ); @@ -22,20 +24,64 @@ Data* deserialize(uintptr_t raw) { } int main() { - Data data; - Data * data_ptr = & data; - uintptr_t raw; - data.str = "42"; - raw = serialize(data_ptr); -// printBits(raw); - std::cout << " " << raw << "\n"; + int i = 0; - data_ptr = deserialize(raw); -// printBits(data_ptr); - std::cout << " " << data_ptr << "\n"; + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "test basique :" RESET "\n"; + { + Data data; + Data * data_ptr = & data; + uintptr_t raw; + data.str = "42"; + + raw = serialize(data_ptr); + std::cout << " " << raw << "\n"; + + data_ptr = deserialize(raw); + std::cout << " " << data_ptr << "\n"; + + std::cout << data_ptr->str << "\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "test with bits prints :" RESET "\n"; + { + Data data; + Data * data_ptr = & data; + uintptr_t raw; + data.str = "hello you I see you"; + + raw = serialize(data_ptr); + printBits(raw); + std::cout << " " << raw << "\n"; + + data_ptr = deserialize(raw); + printBits(data_ptr); + std::cout << " " << data_ptr << "\n"; + + std::cout << data_ptr->str << "\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "test with special string :" RESET "\n"; + { + Data data; + Data * data_ptr = & data; + uintptr_t raw; + data.str = " lIUJLIJLIJLI lijlij "; + + raw = serialize(data_ptr); + printBits(raw); + std::cout << " " << raw << "\n"; + + data_ptr = deserialize(raw); + printBits(data_ptr); + std::cout << " " << data_ptr << "\n"; + + std::cout << data_ptr->str << "\n"; + } - std::cout << data_ptr->str << "\n"; return 0; } diff --git a/d06/ex01/serialize b/d06/ex01/serialize deleted file mode 100755 index 06dc451f349cc22794bf3a39757e949dba3454a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13864 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 d@ZR9SD<;>=va~0VPJdISAwm1|=4301{{(p); - std::cout << " "; - } + try {base = dynamic_cast(p); std::cout << " ";} catch ( std::exception ) {std::cout << " ";} - try { - base = dynamic_cast(p); - std::cout << " "; - } + try {base = dynamic_cast(p); std::cout << " ";} catch ( std::exception ) {std::cout << " ";} - try { - base = dynamic_cast(p); - std::cout << " "; - } + try {base = dynamic_cast(p); std::cout << " ";} catch ( std::exception ) {std::cout << " ";} std::cout << "\n"; }