From 0a12b12eb97254dffb260a0cdce6046908042ac3 Mon Sep 17 00:00:00 2001 From: polymurph Date: Sun, 1 Aug 2021 16:19:27 +0200 Subject: [PATCH] work on CRTP --- CPP/CRTP/example/Makefile | 24 +++++++++++++++ CPP/CRTP/example/main.cpp | 14 +++++++++ CPP/CRTP/example/runtest | Bin 0 -> 17248 bytes CPP/CRTP/infos.txt | 5 ++++ .../pin_interface_CRTP_style/PIN_modeling.cpp | 28 ++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 CPP/CRTP/example/Makefile create mode 100644 CPP/CRTP/example/main.cpp create mode 100755 CPP/CRTP/example/runtest create mode 100644 CPP/CRTP/infos.txt create mode 100644 scribbles_and_notes/pin_interface_CRTP_style/PIN_modeling.cpp diff --git a/CPP/CRTP/example/Makefile b/CPP/CRTP/example/Makefile new file mode 100644 index 0000000..38e5ad5 --- /dev/null +++ b/CPP/CRTP/example/Makefile @@ -0,0 +1,24 @@ +cpp_src = $(wildcard *.cpp) +cpp_src += $(wildcard ./utils/*.cpp) +cpp_src += $(wildcard ./driver/*.cpp) + +cpp_obj = $(cpp_src:.cpp=.o) +c_obj = $(c_src:.c=.o) +CC = g++ +CFLAGS = -Wall -pedantic -li2c +LDFLAGS = +EXEC = runtest + + +all : $(EXEC) + +$(EXEC): $(cpp_obj) $(c_obj) + $(CC) -o $@ $^ $(LDFLAGS) + +clean: + rm -rf $(c_obj) $(cpp_obj) $(EXEC) + clear + +cleanall: + rm -rf $(c_obj) $(cpp_obj) $(EXEC) + clear diff --git a/CPP/CRTP/example/main.cpp b/CPP/CRTP/example/main.cpp new file mode 100644 index 0000000..3039948 --- /dev/null +++ b/CPP/CRTP/example/main.cpp @@ -0,0 +1,14 @@ +#include + + +struct Shape +{ + +}; + + +int main(void) +{ + std::cout << "CRTP example" <C3sR#QM~SH(@54^mKvoy6%gb4y542CU)5v7N-5KQj9n z(gLF>4B@e`GT2m2Ok*3{*ndUSv`#{Uu80BCrm_#gK9CA(r4)fE8$;!*-tXLZ&&%_R zv$6iM{jql=``q(8ANRcT?)$j$J$FW819cvc;N}&d7R2rMn@C6rj$frZAR*Bs&d2vB z#l>P7_j)UwPNThft z&8j$^k zm0qzWlOFHx+>%MQX41LROzTWfcWZZNu$T{SmB&r~Nq5Jt-7+Lft8yjf&EN?m`GY-o z-g4jx|HEq!zx8ioX~BH$diWD}b*SYsFZ| zl=#8RhVxf6l8Mcm>6~>7U7yV6b9&K;7Ytn&dURx`o=g=|lj)+7Dva#x%j9#Zk@$Ef zWy)$xZrU|$^rZ7eeLP-Fbw+b(qrW|Ji_n4RGsVc@z|e4hSdRc0Hab(eWG0#zHrm@0 zQ}Kds6yj;47)?YXL%=%VA)V0kMWc|4XQLzfNShuR?nY#b$LKT17&bD+=tpyx7=g1c zeeg30Gn7QWWC&y=YbFD|$wWdg64y?6f|Hb(iR*DAHIp`wF=8gtxp*eM4_VPkPbDxL zPv^vrShTnAh8y&bV5iyFw+6QcyD0l!Tnk?L$5(}k(0r#q^Y#+}H8y=6w-m2PsPjhB z&FJ&>Te>K{f_&taobPLV9~xT?CuonU`xfJ`DEyEE4=6kol4gSSnSb_b6Q^sEuSG(R z*>Dw#RD8*X+wV`uZMb?wNd0*m&SR6{v<=4rTkVVuKhHviHQ(tOv(kpQgiMCUth3<( z8_tga5^uEOe6Jx&48N$Hv?`4+zgyU2DI7N8@2lyUfv>v_T{IH zy2>$a_UXo>mZwVBs}NN#KY{P2^&#|#pCb9G;}x{a|4cl+f}J`h`QH&wuR5omlKk_; z(<{!YLy{i?KXCxOZ0&DE%P-ulm0#6nPn;eciOn@U4`15cDtZCc=C&V!R%J~$Y~F5K z-!GvDz-V&~Um>#XjIjpc`>2obS5%HSt=~_Mk17fmajD;R6Om14wIgS}TKTkgWd3T+ z^NjYwS)&;aP6kZ}jg{jQavZkbzdhOpccm@6wb||8gqG0CCykZbecS8cZ@v|WG(Ux} zXBsYno@bQpn4Y=~!ridZ=DNP&gZ13@Q}8nX^w~;9EB_KhUqeHepV7)M&OZt8FhxIl zRGQ4b?l0f*LAi8h_KpucrLA|}ai&s1ESuour!@L^$jRKA8S*gK^*uVk`x-V#f4`a^ zg7Cm|($O!->`6LD^N%8&(W4W=ruBEzKqCCvX!*tP_0jS>;oaf#hhdz7%kSMR#BOb_ z^#JH_Y|}}aBlExi5Mv$r&}*z~|4Y+)5i7qJE5FlUeluKY{;M{7)T3>Cx%3*%ozIPi z_k>5oH-~lPK+sH*bF6As$)VjZHv?`4+zhxGa5La$z|DZ00XG9~2HXs|8Tc<|z(c=E z^bL&+22wNe>@9)vbPwngpc&94=yh*ZDt`dI8}x0^-+(q_ zh50&YCur<%mCEg)^t&rH&%Pnyneltptz6!Cz_Z*>xcqG&{;rr`Z&oUU zr0w$$_*$-MI{((j{o?A2uKHBRWg7@4d;FU~9E6_z_Z%8)4?ZP~*8wWRKL0&+eXEw` z5D-|B-;U3{kVio+d0oF$Ao;`iJP!F9yL`~Jr!k+v=MdzhB=7b4zg8FVwcPKG_yTkF z5#PqIHfX-KdzNXwp4sI)e4)?#dcwZ8uy13pFVO32fqt*AQU1x z&48N$Hv?`4+zhxGa5La$;QuHCyq}Ku&+&daUK=>+g$iK&Vh2xq`KVcY)chvD$|NGG zHhZpBJn!#Yr+B3b-2=cDxzHC}W5<7_1_d9}HX_pD9TOEtB}7W>+iocGe*rsCth zel4cDkZUg0C!)-R2$>-L;7n~yelM&$d9UBc6+Wf_#zSh8Ajch0G{c|33< zRq^AhJU%`U{H!W@jswd#$)8XM{;uNH;j3u=_k{PAJ0s~lK~g37`x@A+xii zukXsh#{SfJI-U#k1UrIlt=*fNKkTH(A$lH4Y~MJ7V^|VzssZ-!AoH=l57m{R^#nhHCw0!S{n|e2u6z z&%EMeg7^1U>*Hz-*%7nv6)mEtCcd!W+-~Ky?otaVUEcNLE$oM=ZgfAa6Fzask!PR6 zk2~;76wdc!_I3q29_)Xg4x0##M{NKf5B@vl%n$ANr*Zi{PrB6h;^PsE^L!9^t@yty z_5GqgfDRguOaGIic)sX}=hwh#+=FWWwfvtKu=f?t&l|q)lD}HxHbLOQJbCmIC^%Xz zee-#=c)q=g>$#40csugkCjBp-KieoEf^`dK`$iopGtS6YZQP5Ln6 z3DlTx`=Gy?f()2?d_OM(-%#yBa_0fR0C`TSJj?$*Lh=KNFE)4s`0BbA5eikye7LV& zP`CKHes2jsk05>;cfZQ#X63F~;?=&1yKxEpR^SwmGe5J0*QoRO7I4a^^E!r3e)4B46`t{5BX03NXM z-0fWg-?M}tkti5NqckxQOo)ZL7Tw6|394)y|kC$ddB2WK= zH&V&q6&+i(k3%^lBNn2aH!vj=aMMf zG3|(NOQ(gtBX(_XI0lo_xE|GIZHlfB425?_^vJG$s`k-QhNVX|1#106LhrwES9oW% z53;J5lhuH%7qUjUc3@yQf>NDuZ!7|@sbt)Uqg?1(1e;9f^inZJ=Jv9gP)JtEsLGgg zFAGwBRJ9GxWihW$AsJMzBnLE$b`}qJ4kbg5u^hEc4ylgPDb6w#JyE5RQ-#uG77iiU z@nVttwJV*R*0SsT^T;jx zrTExupZI;AX@Hb$ji09swWDLV=l6c5m$9OvPWyh~?_ll4@$>qC=|*M8>r-9_vfEwg z;H|_ueqKi~?NJXDS{6{3?RnjJJuo~XEPGyWFy-|wRAf``m=!mpM{7%tpVuW!c^%I2 zvmVngz@FBs%v}ieew7(x14WYtact2F{HDqIN&huY}&~6`4c1#ED#^@`tMIUn5^E!+v$IEV*XZmf2 z{eCq7(^niPoX2N>-*?#a|7V!;|0!7CdHg?C_I&?*q+z1T%XT%_&h(^j^m>B8XY3r^LqE$EdbGaOk#brJ=519vD=G~Qf)Kozq9|l z!=B&Edz3xLsk~ap&-}aSP%Iq(Sjd!U%D%;M{sN}h`aX*usVH>|XZxj|AMBQ>HFqs* zRFo)(r&Z#~4?Qb5Z+!ou>w{yrnTs1}p^kQ!L&)QrQd;BGw*S+Wrp9uIfrAzQ1odlG A_y7O^ literal 0 HcmV?d00001 diff --git a/CPP/CRTP/infos.txt b/CPP/CRTP/infos.txt new file mode 100644 index 0000000..cf15738 --- /dev/null +++ b/CPP/CRTP/infos.txt @@ -0,0 +1,5 @@ +Curiously recurring template pattern (CRTP) + +https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern + +https://www.youtube.com/watch?v=7-nHdQjSRe0&t=480s diff --git a/scribbles_and_notes/pin_interface_CRTP_style/PIN_modeling.cpp b/scribbles_and_notes/pin_interface_CRTP_style/PIN_modeling.cpp new file mode 100644 index 0000000..84c524a --- /dev/null +++ b/scribbles_and_notes/pin_interface_CRTP_style/PIN_modeling.cpp @@ -0,0 +1,28 @@ +#include + +struct Pin +{ + virtual void set(bool logic); + + virtual void toggle(); + + virtual bool get(void); +}; + +// https://www.modernescpp.com/index.php/c-is-still-lazy + +// curiously recurring template pattern +template +struct PinCRTP : public Pin +{ + virtual override set(bool logic) + { + static_cast<> + } +}; + + +int main(void) +{ + return 0; +} \ No newline at end of file