From 7cf7f61340dae7d30a1f1631fd70bf77b7d07d70 Mon Sep 17 00:00:00 2001
From: polymurph <eddyed.k@gmail.com>
Date: Sun, 1 Aug 2021 17:15:12 +0200
Subject: [PATCH] layed out basic example structure of CRTP

---
 .../pin_modleing_with_CRTP/main.cpp           |  27 +++++++++++++++++-
 .../pin_modleing_with_CRTP/runtest            | Bin 17952 -> 18216 bytes
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/scribbles_and_notes/pin_interface_CRTP_style/pin_modleing_with_CRTP/main.cpp b/scribbles_and_notes/pin_interface_CRTP_style/pin_modleing_with_CRTP/main.cpp
index 0c05c7f..4bbbd67 100644
--- a/scribbles_and_notes/pin_interface_CRTP_style/pin_modleing_with_CRTP/main.cpp
+++ b/scribbles_and_notes/pin_interface_CRTP_style/pin_modleing_with_CRTP/main.cpp
@@ -14,7 +14,6 @@
 template <typename Derived>
 struct PinBase
 {
-
     void set(bool logic)
     {
         static_cast<Derived*>(this)->setImp(logic);
@@ -59,6 +58,11 @@ struct PinBase
 
 struct STM32_Pin : PinBase<STM32_Pin>
 {
+    STM32_Pin()
+    {
+        std::cout << "created STM32_Pin" << std::endl;
+    }
+
     void setImp(bool logic)
     {
         std::cout << "stm32 pin set to " << logic << std::endl;
@@ -73,10 +77,21 @@ struct STM32_Pin : PinBase<STM32_Pin>
     {
         return true;
     }
+
+
+    void STM32_stuff()
+    {
+        std::cout << "STM_32 specific stuff" << std::endl;
+    }
 };
 
 struct AVR_Pin : PinBase<AVR_Pin>
 {
+    AVR_Pin()
+    {
+        std::cout << "created AVR_Pin" << std::endl;
+    }
+
     void setImp(bool logic)
     {
         std::cout << "AVR pin set to " << logic << std::endl;
@@ -91,6 +106,11 @@ struct AVR_Pin : PinBase<AVR_Pin>
     {
         return true;
     }
+
+    void avr_stuff()
+    {
+        std::cout << "AVR specific stuff" << std::endl;
+    }
 };
 
 template<typename T>
@@ -106,6 +126,11 @@ int main(void)
     STM32_Pin pin1;
     AVR_Pin pin2;
 
+
+    pin1.STM32_stuff();
+
+    pin2.avr_stuff();
+
     foo(pin1);
     foo(pin2);
 
diff --git a/scribbles_and_notes/pin_interface_CRTP_style/pin_modleing_with_CRTP/runtest b/scribbles_and_notes/pin_interface_CRTP_style/pin_modleing_with_CRTP/runtest
index 8f3b9a12dfbb3538947be2d5148fca3bf9597a98..12fab27070845bc5d45643fc5c6be533c96c9ce1 100755
GIT binary patch
delta 2188
zcmZuy3v5$W7{2Fr9oyJOA1lq+!rINThpe?_WsE(bt;4$n5QfNWFy>%(YQ|(hB9E{|
zlnp2j{)B)*Qj8&s8Xh(fH8qAo6rv$uViY92#H1KShA4z|)bHGT+hVhuG~ai>^L_t+
z?w_->z%Dkpn+=qTgERJ&U(4`o1^Mx7$-r#sz7*xvM|x(YX7;HyU{RE03@Ne@qB8Nj
zoK06xIfup^xSd+i*tetn=!M_AT^ECCnm&zaG6eUg>N3)=pt9u8>Q13gbXV#RBQ5zG
zo=E-QhIcZVM>&5%;j-=!6MD14W!*0l>C1|G?Sc?~{Yf+``AxHJ-0JFtB<<ARtpK3d
zM7pjoDTaP2i!ayZ!xerwf<*riY+Gd8H&Xvk;rsNKA#dvu#daNf_)En$?o`8re%W$4
zp0g)%A3+>Ae`a8z)c>3G_8&T_f6F8ETcZ@(#|ym~&pn*Xw<Q;QW3=3IzpGIRuHeDy
zc<}2)uyVAZ-&LaICh;7L=e8$ukqB)xOxXH3Qy#<}EQHTS<Uu69@K;5^WU3RvqYy{=
z!qZBj057yDo@0sJhS74xe%Apd=;J|eJb3=u_-N`Qbl7MjlW~W5Yy>n{yfs20V=-%^
zfN=ubM<d1(v#(ST7E1n#F5rUMWqkH&;o#$7P0q=Ty_Rf!+uGHw>sGI_EO=?o6lcr4
zj!w$56c^#GWs1|%-L<-{qrIce(!Fkdd%F<xx?gT;nMZa@(N?fz6OJp()70=oKOVoH
zzoOAJ9Mv1Z=YaQsKSTfV9%hQ8I(ax6E!7CZdY}Z{!4bY8pbx0KAC2|_CEy^i2Y3$n
zIWW8sB=v7JK%shIDR4c|2mB1!2fPOy1de}zAkYa60~Z6+(69&S1Kt202MPk+wG=WP
z>8*CwMQ&?J?%-Wm`HK4F1Do-iPKT{|+Rb21)C+bHtVh;DVEgH&wSXO$-y?WGCwua-
z<$t->Pz#ogudKqF;Lg^)D|)k1*Jh64o$~Q(#`-(xyy)q5u}L=Y_03q<lDiOn!3t#-
z0-H&#(5`~bqF%5Fm`B#~@!1mBifh3le@3H?|Ev9cyf(i?iis8FrEUh(4O3x}C;cpF
zDK^Z4y*b`=3RI-w%A$`e+Qn_Apuu)Q1EgCH8w-%$X%<&ngXPXiBKw}^SDLx=wMv_~
z>KS^!(q;%)c;m#gAcd|}?q(;b!}TIY_Jyl}Euzb=67h!|5~tdhm~s?vof;XyRtkk|
zq1>Pd@(e*gRP{%yKTq|4g)7w{juW<-R6&K)bkk*a{Gz79N!3o`I2h1nK&RO8rzby;
zc#750o+>k2Mwh0V9k0U4_j4+#Z=b4Lj7l=L&;7)ZJw~}zc1K9{ELJ^p)Gn7){aRA?
z4z*U9bN^9SUs3lQOJ&mhY35c3zL)RkNK&?u&jGqcox^gq*Ams=lr-l~RZpIC4-I4g
z2YD|?P_5ac*2Hm>pEGK9K&?4R)o=1tih%#7I3`A|FivF?g)%U{>*Q%wLpP9H%n6>D
zwpYxqj^9;YXTt`XQBzBS>0`4T4n>#mDw?aEPRDDOjh$O1-&P%+UI(St){S2p7phw~
ztZk9aDB`Z&u3I|ysmczBhf*fe?b`P;<0a58xTda)1#i@^)QH0=<nh=tVrL46f1_s>
z`+!b+?E2UNk70<I*KSy8Rb~*wG)>Ustryuv>TRgXm|3l?uF%p@!_@Rc^~&oQa?dRI
E4?p&Pa{vGU

delta 1546
zcmZ8hZ%kWN6o2=&Wu@Uy``S{QvaKz!jtM0jbYKQZ#~&-s83snD(}^x7?!%l0O|w8`
zIv2Xh0-Tu{)+~H5WN{ito-;8L1KZRv7m_6!g%~4djs37-nS7eq=kNBt7Q;<$f9IUv
z`Q3Z&dH446IX3YD8`;h$nn!p1W*IO_nK57_nFTFTgXTsJ)XBc_^>{URBgVC`6sJo5
zgX5=h-`t%CEhi6us@%JCwq&OLV0cI|8-@%#VN=HPtd{&+ST-_T_=<t9SQm@>nef`v
zk=Xai&lugXRhCWFNK*1*T2&*%&i<gFLzfVWoHcC`9uoIcu^ecOrH0y9L9P{woTkS>
zCjCMdyI%Zd`)cgFNbKiiSPMXWp<0MD!GbhR*q#1wHDMY=a^c^M5P65!^M0fy*-pn~
zbM3g6IxAA+TI%{9U+1*8b?s?rOZ>f>E-G~0xwM6<Tq*nMs-uJ|9B245X_|7l`I$7`
zc2w|-8IR3Vp)=r$R!Y*-k>Tn=VE4YtMC84D=H!iklqa0mEQ-}^Wn<nV@_NhZsMq_B
zBr%U+&qw$wGUn~SRP`>fDy6Cg=yfCT3;4bjRsC4>9(amN(x~u(lfZJsSAlK7s{5*X
z1b6~?3OEJ430wx=75v|-YJ~0pupD@7GmJJE=YdCn)4-d+(p3~-pcj39Hb^IZHSBkq
z@&()vp*}O}$&OMOhcHi&&F?Yw!@5i>K95P<vYAY58rCv(`L~AOf;Iq83Kv;V^VY(=
zmkTzDwMsG9FcUay6EMd|*ZES^&dFBhF*U;SQWva4u(r_~u*9wOXJT<!+eNHm8rJl(
zsy_bz6?t1`NwMRv;1je`=E+-wl}eFZzBgZV!i-ijWz<<~p^0iU-T{45{VMNsC~|P#
z0Hi;523Zf;cDYyzzfPrjm&{q5y6Rja`Dk5`_m$CjT~N+GJyC%eYX(}ZJICIn*FsOR
z2z?dW$^x_y3h?W8;=6-klU>WpGy&!as_{!jQc{n5G+OGx!<Tun)aTFxI($w`A(#7Y
zJXjg35vvw{SZC)1Ybp{fg}I$o5vzCYY=AHJnB1_(LBws6TY9NQlUvawF^*GjeT{oS
zR}G3gi}9oe(iqLwyEb3a*#|Z)oMo>ep4offqMk9Y>+5y>eUX7`toq4b(Bm8@7FF)u
z&><J%_y%?^)zS)1(<wTGyyLoFFIsv|*AMFYZTh-Vp)y|3S20PGx%FlQqqICioDzE)
zsM{2x*BhUw#l{BO(eyseHeI1#j1Fa_`B|p?`Dm|!FX3;uHE79x6Wo(`TRYeRnrp4G
yWiLV&<CNc4Bd5Gt6<HkON@rU$XDt-#sJC2g(Ab2LZguRoe5hZFO^hrpTmA#YjGwvy