From c705276319a1f9f4a2879ad22251c244eb1f43ec Mon Sep 17 00:00:00 2001 From: hugogogo Date: Sun, 6 Mar 2022 20:24:43 +0100 Subject: [PATCH] d06 ex01 ok --- d06/ex01/Makefile | 75 ++++++++++++++++++++++++++++++++++++++ d06/ex01/headers/Data.hpp | 9 +++++ d06/ex01/serialize | Bin 0 -> 13864 bytes d06/ex01/srcs/main.cpp | 41 +++++++++++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 d06/ex01/Makefile create mode 100644 d06/ex01/headers/Data.hpp create mode 100755 d06/ex01/serialize create mode 100644 d06/ex01/srcs/main.cpp diff --git a/d06/ex01/Makefile b/d06/ex01/Makefile new file mode 100644 index 0000000..b97ae84 --- /dev/null +++ b/d06/ex01/Makefile @@ -0,0 +1,75 @@ +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # +# . name = value \ . += append to a variable # +# VARIABLES . value . != set result of command # +# . name is case sensitive . ?= set if not already set # +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +NAME = serialize + +#TYPE = c +TYPE = cpp + +ifeq "$(TYPE)" "c" + CC = c + EXT = c +else ifeq "$(TYPE)" "cpp" + CC = clang++ + EXT = cpp +endif + +CFLAGS = -Wall -Wextra -Werror $(INCLUDES) +ifeq "$(TYPE)" "cpp" + CFLAGS += -std=c++98 +endif + +VPATH = $(D_SRCS) + +LIBS = + +INCLUDES = -I$(D_HEADERS) + +D_SRCS = srcs +SRCS = main.cpp + +D_HEADERS = headers +HEADERS = Data.hpp + +D_OBJS = builds +OBJS = $(SRCS:%.$(EXT)=$(D_OBJS)/%.o) + +ifeq "$(D_OBJS)" "." + RM_OBJS = rm -f $(OBJS) +else + RM_OBJS = rm -rf $(D_OBJS) +endif + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # +# . target: prerequisites . $@ : target # +# RULES . recipe . $< : 1st prerequisite # +# . recipe . $^ : all prerequisites # +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +all: $(NAME) + +$(D_OBJS)/%.o: %.$(EXT) | $(D_OBJS) + $(CC) $(CFLAGS) -c $< -o $@ + +$(D_OBJS): + mkdir $@ + +$(OBJS): $(HEADERS:%=$(D_HEADERS)/%) + +$(NAME): $(OBJS) + $(CC) $(OBJS) -o $@ $(LIBS) + +clean: + $(RM_OBJS) + +fclean: clean + rm -f $(NAME) + +re: fclean all + +.PHONY : all clean fclean re + diff --git a/d06/ex01/headers/Data.hpp b/d06/ex01/headers/Data.hpp new file mode 100644 index 0000000..ec9cc8d --- /dev/null +++ b/d06/ex01/headers/Data.hpp @@ -0,0 +1,9 @@ +#ifndef DATA_HPP +# define DATA_HPP + +struct Data { +public: + std::string str; +}; + +#endif diff --git a/d06/ex01/serialize b/d06/ex01/serialize new file mode 100755 index 0000000000000000000000000000000000000000..06dc451f349cc22794bf3a39757e949dba3454a9 GIT binary patch literal 13864 zcmeHOeQ;Y>mA{gl#QCVAgtST9WTK|&PC_P%?8*m8?(PqPX7`kM3`bTDAmh8^#64)6gWq>-QlVpH_6bcQyFq2^k$h(F0ZlUX? zAKu@&_a6D_S(<_T!CyX}_s%_^_ug~wyHEGNq*3tL8E367=1)Q&isQmn5(u3yiahEf}-ipTmyY`GCbsy88|sB6UGwfhPX5 zP5f+bqJN=@{#{M@E1I+?+=Nf#6U60)FTnpAu|b>-4oOh}G{LWMQGaKa8@SKI_faH% zK(7}y3Fb%9P9=BjpgGYYENf&epR})}h=-Gr5#?FkLK-r3HjZo)Q!$ zgtweQ3oH`o`7xHrBD$U`9xaN_V&-<)!-H5+J0v95Sht$%WblxZnF-) zeg#MYKace8qqUJ?gMLnzfuSE&DGECHx=P94=HUC-32@lK=XVN;I~{!Id)ILAo$npf z!KXGc^f~zajwIQjgO32$V93E=QR50R>fmF*YB28L)0i=o9sE_y1fFp4*Esm*@mE{T zQ%in!M^Kp0OxfPKYv%D6TQAi#=JxymqPhEC#(ni>10|wINj`mJ4shSMiKd~Lz9#8! z5lurdJtgU{5$z-TyrjQEG=+Tntfc>uXbSc8q@@3jXbSQ4grxtLXbSE0xTHTrG=+3} zNYZ~vG=*}yPtu_ zU-wpCdfcr1+&un^nZAMED^tR62=mIt$=e8BnOun&-@fgJAoKcOON3L}|V3$j8u;%S%SU@#y}%hHe>RzKx`I_&+PCe7^r?<=CuwDmDwB zlQO<;`sr8CqZ3zR^kYSsr(@U6$`!K`J74`Y<`pc@gShtmIs~fnJ&3CR`xZu|5<537 z^-mqUR(+Pns1iG?IkB@Ku0DSjeXo4~`SsGU`ekKxM(dQWnx~GPsqRqRNy)u%C#hbB zV6yrNB{<2IT&>c4g5L?QWCFxBS0!<2^-LM6T+cQ0)HjH(3MHdyTwmKah*e#q#G@=W zPnE7+kX^V^z4<0p{S3``mnpHTKUU&F7MrJ!UDx5Peh5K2g}M3kixlL;mntuz*;AGM zUniw%96ae!xAxdn^(SyfN>?hU2grFZRO-i*o)0;O$7ZWfQPpzZ%lRh9*C~JFjXHT> z^dLCQNi*Na= zkC5pzzqW&sf8+TTulznzyrYa8#M(?GyAi^6wd(+ zS}XB^w*uS1L%>@Rxe4GN;OB@B{4($_fHz`wTnAeM&yxp*ryTIyy=qzOq-R-x*7A+G zuA}}PqyT8FtKP+=`%~!hJ8vuKFfQ}=b8|Dm!XMb{-|*1tl^<=L5bwR~!FTT7x`o&q za1G)Lz_yzhQGeisxBE6)cu8jC>OmjnJJ}_hgsiiHjM_rrd9p7qd$r6*Kc9W7Z>nF^ zzE!aOB4W|f7ckuQQmmgt4DTjKu6ilXXPd|<_Mb(cX`y%8^?)=WI|I8k$-4Z3zxHfhGo4?++6UH(@2yXYkROu-Mw zn%vF#dVNtUypwJOR0u+|fJ;1tTZFg-Pk~qt{5fFHCvm%1vT;Ls5f&q`7=gtIEJk24 z0*et?jKE?979+42fyD?cM&J*Mz|cxV>W!~ZIIL;jS-J85Xa@7?Y@C2;ItwSDvjBns zHnIeKcHQDv^qrDR-&u!bN$y)wqJ2EUT?&b+mh&E&4loIR_x4<#aM^1Rk|*|r2U`q6 z^1PhzIj=#8jwvMkg>IkR?}9^nc7od#s@;8D3J%EN{i$V!EHS^V zX>PZv^=Lm!!1cd9r}{Iy)R24}cgX&6J7zTfvX)DwKjE$R9otpsUOm2#YW#%8M>Ia6 z@!x3t_Zojyf*qkSG$Ts0Ex652j1+erjKyQo{+QJf4)1ybAM~=@ z-L=)z^kt{hYt%DA(RZVPhJ0UbzB-NQ3)H!W`b%o_xn6&%XfzLeVwvFiQ?K7DcpldC zmkXY+_52mJ=eC}|QiS!m)bm$~V1x1T;i>26y&=dZ5iG1T(|;$%bpHG+=9 z+~C8PW?omEGM{)yZ9S>yuS4F(kdr0LKCBA-{mm)#i93YQ>q0$$y*SyBKmVP)UY}RN zdF~bzTf~3Q&2v;qEjtVQ`wob`SZ#UzUa1Xt0DG{y@JAP3pWmhRdAz!{ejjk7dMQtV z{7<>Y_ps*AxcK9m&+ieC5>DVw?KywXkfgai&r1Hnarrv1uq!DgcrT)V4ZPxx@ zN&SF`H<%}l`ujUs(ZYF1XQ&>WD7)v$8rhMx3+B}p&3DhkJ<`v@`SURNlpo=SVekWD zy`axfPRKOTzv{!(guZ(oo`C)uG5_4PXlKth@$)Z|ze><|H3B+!CQ$h%m~WcT-=4oi z{=Mr3f7(;pc)vICzXdPUEi}IPd`H0V|F587Ya6T^yP&_;yGoqb^9`hgecF%V@EM9_dP4`P>GHHoUSo#y>s?{|`bxh{R{jup_b$-yLf&JY)t?+=z zJTaHbtt70e9KJe7vdwso@H-yqa@nj^%ezA>XpX6@uv;5?N=<7}+iayU_BAwml@J#Cf*QD|!>50&d=lRqijk3P+ z3+B2Iq2kdotbxFGLE%v@WpW7ixCrI)b~=Pyx}DfCiO@){6dFwwM@1-gGzVja?Shi% zy;dDzL5AliK?b@sp0!0tuAL#I_@ONO7b@iCvJpy;>XmIY1zV=z6q$q0bzAvR>z4At zWmJ_I%Oqivhj-jUvP$J111v&Ve#fw+I^P$!TBhGIc;(`^s{-C1a{fA>V`#C|^TUIXIRUS=I-rl{uj8zM?aN+6%FCJ&mK6QgSJ0|4qX$u-Jp|jI^BSP& z97Q5=o;n9uf{Ti5&*vE3;Nho5&7RL=26cse{sI*V+8vYPVU+0XgX`yg?#q;50obZg zt^KUWco1?rOJSP#!?W6cLfcdOsh!+@%@!jlP*d5S_swN}pkr!9cl@~jAJO(*T95bF zQ`(--kH{XofLi@*{}gx>6W!d}@5sP%Fadndq^S9EWcmmSPJ7<3hqe6-D{35Y;ip~p z!4-zo2&{HwwBLtX>;OW}Mdc9DhD12xxnnn@-?yV4m7f z&W|7eKLr1uM3xmbcH4g*d}=?}&*u&&b^TXK=m7Wp`6tMn_Iy6krvnvt*izA5Km9)f zRmEZE{UiV1g*)C{KjZJfmi7c}&*!JrO<)38Pf_zU^Iw60<{sPgewY8Rg#$y+4*}b8 zyKaC-{jb??9s-5`2cUmo0I;5-=Iz +#include +#include +#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); + * } + */ + +uintptr_t serialize(Data* ptr) { + return ( reinterpret_cast(ptr) ); +} +Data* deserialize(uintptr_t raw) { + return ( reinterpret_cast(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"; + + data_ptr = deserialize(raw); +// printBits(data_ptr); + std::cout << " " << data_ptr << "\n"; + + std::cout << data_ptr->str << "\n"; + return 0; +} +