From a2de37264a4a2e9eb4b2f50baebfa9a75d8e19ad Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Wed, 2 Jun 2021 18:36:12 +0200 Subject: [PATCH] Cleanup --- Hazelnupp.vpp | Bin 708608 -> 747520 bytes Hazelnupp/FloatValue.cpp | 35 +++++++++++++ Hazelnupp/FloatValue.h | 16 ++++++ Hazelnupp/IntValue.cpp | 35 +++++++++++++ Hazelnupp/IntValue.h | 17 +++++++ Hazelnupp/ListValue.cpp | 32 ++++++++++++ Hazelnupp/ListValue.h | 16 ++++++ Hazelnupp/StringValue.cpp | 32 ++++++++++++ Hazelnupp/StringValue.h | 16 ++++++ Hazelnupp/Value.cpp | 100 ++++++++++++++++++-------------------- Hazelnupp/Value.h | 24 ++++----- Hazelnupp/VoidValue.cpp | 32 ++++++++++++ Hazelnupp/VoidValue.h | 16 ++++++ Hazelnupp/main.cpp | 4 +- 14 files changed, 309 insertions(+), 66 deletions(-) diff --git a/Hazelnupp.vpp b/Hazelnupp.vpp index 6a76eddb9cc015839b7badf0fe2df9bbbfcaaf56..3a19a326312e70ec2089b36066bb8fd480f829da 100644 GIT binary patch delta 36631 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 v6j%{9)g zXZTtm8Cng4HN|Bz+>QP@EjG$4XAs&8Ti&ZMcxI0A*2Xh0Qofz z0Q*}lQX|#Kv0sf=HF0=MEnapTBxX^7kwvn(Mux%V{$8WR`m6_PyKeBHsgR1U#v4_*ROz}w&huoql#cJpu|&v+Wi0-UQ&`sBw1AxY|? zN>Si0_yybqSHMMZ7JLJafkR*)*afzOEnp*94_1TaU=er+%m%N68DKJa6}$pMU;a3wE8sCu1f&DufGc1G90h~`del$U66!Uo1u5bFKRAsFV1Sz`03G-z z4M35>O-YYd=gF|6qzAa+r_=yFyhIHg040?;Goq&H;TCFuBqMs71}>vUzLtd;;2f+@ z{E#Pph`?&p03$3+H1tHXM}?S0qN$<*NZ~9hfCjis%u@tTCGK^kLUPbWwje#UI|+zF zqr>-Y@V*V)w|@K9ci;N#+Y9^FW8b>%Ti1Q-vTw0O3#{+kwSBv~Z&&v1$9=oJZo#h=zk`Scry!Xefz> zf@sKz22V6NqQMdk8PSj;h65lWZeoZAX>2F}4T2~f9=S)n05=Mzp#ikXG(a=Z6TAeU zr2zurH7dXu=B5Sc2`6cRdNlm>06-6T)zbr*7ElNU!DK^#5-gpEVdEPDm*^QlF|>=U zj_kkMxPAyag1Fbg-X3ZB@Y5mSKy3ODKu8}#`-(7g0jE(w5AY87f~EjY1CBs2kPH+6 z4>LJIF<38*j5gB(`~+tmKpFu703%=r05r}l1Q}vaqCvt*H0IH3I$@Lx3TbIBs0>s% zY8gPP1EzU_;Rc#v$u7ok02R88uf~pG%xTJHg+X(g(n~~#@~{@ z8i8zma3^8K}1RbJ;(r><6M9~3eZQcIs`}s3XzBC z74k6cq3O}W$kTNedCD%KVRSkADS8;a45B~=P#9DNjX^gs0(p*$!6xK6UxL*fk@jsJ zMph5s8pq&a!*PrxA#W5@gRYMx!>C~m&|JvPMPG&~TFCN{?kWHv@H``%B_RW(P+$fi zg$yM}V4W9a_FC2}R>8*f+MKIN&If|8vRy2{XMfoE0#oD&Dwips!7dXC*c+$`d-} z+H@pFqdNP?NdPj&oeyy23o<5nPZ3K2G4!4|u5KKJ6v54pekAkkyyN_BAN}WBU|))^ z^oft7ijhf4v|3o21jbY~^7N_zzPdchmBtn>#{BFau4?8hshAg}T9=WO7#)l#!mf9vi8?QfUMsHZ7P+?J^;kH}Wl*-x+J^^ko~w9aojd~KvEYEcmY8O_+pu-K5Pd#}x?KsGLX6#~4lSjZwq3;b|g5;BRxq7%bN0~d)qv`P~ zjJdR|W1~+rCt&WFQF@dGO2FP!AYpv#sAbcvV!{{{vn@8gC!V0-ZJGJsHt|DZOYD7ImZ~5Ex_K(VX_i>(2JTzZwhG;e} zJ}EM@_|iOK98v4>dfO?ETV9jgHTM~-yqsdPSoc)-eBu2=&ZK!iMw;3g=RNK2$5c9+ zAB;H9&~LjqN>JtNZ{~!1=3TrT-%x)w@vtyMT2P)lEeUUw8qBSPb*b+rL(`y9DEQ+c zEJtAt9u4bJ;TB*{N*oiMz=gd9XP4k9;TL^4E*3c%X&EIRWlDUwy04$B-9=l1QL!x{ z%*4NbhKvM*M<<}r3CKvbhsvNGIzZrgPv(Zkq&r=?0H@58`NB8m$R5L1JUEJsTz?sQ zq!iaFktPeG1W+gez#iQSETpM35!#o?lmWum7g$9Aw)#MJh!#1~Enb=&FUBM$hMb?_ zTkDx53J|@o^umv1n8Hy+b$AQ~F);vbjza!FMxHiKg76O6djM{xCL@8>s<2wrQ8&+A zaiK!eU_u?dRCfgC_(t{_R{ToF1-lR8@o**$mKo0dj&vet>+A3!2G2@~$2kRgd-?jo zh7mYUSWNyjousf7 z9;*UB!ePCkjh9RUETKvt)~I_2&q{FSCZ*f)zxno^>r_p|q&p#add&3s7U$;b5YkoadG@>K)I-+cO-o3W64%2C25QKA5{>uwq(`S|4I{mMJ)US8L% zsV!Xw^<^LH_C6=;yk5N=^pVML<~@^t)pH5^Yj-u)b`B+?tI~exOMazPZYirzAUuvMm7ksC902say*BqVH{iXw> zLEf|0qISLs3KIIrwWgkw)Y8G7D2C?1kW>28h%4|VXHeZ4Pl_XWi}5yJzI2RSc~nF$ z;0i}a-sSuN&|a|8qubyrd6J)`m;z7ocMf(}1)ImwW$dvW?-*DYX@YFPOLYENVs0cC zX=q+?*Y!V)iJRtrTDKvg_l)W@f6{uOVSm2&_`@M{p(TTJuDgu}0T!>0&1x7mYg|4y zTQFEP8%jv>C2dl)d2g14z?o90FsmSpbxiNkY92acqet*szZ2gHF&D3LTNL8qiMYqru(>DARqf_)+dRHSW7%FmM3- z9ZqG#Qo;9Wuw1Ye8b_A#DDXJ-X=2j>Q5(p-1TBf$$l&IcgjFT6YH>$r~~ zUjrR_tfwpL@erlDZ>7miUSJ#;6mU1}$1n%E|78k?^F zpd25xEN3ltuy)g;xuhHZ(aNCLX3@|tWmV12pZnAG*d1>Dd)`9@r8BOsFJMyp21;}j zI~_&a_Vs(LF_87PF53z7a;IzCl<$?>kJj5)aL&BGOtJ0HRd7b>bHm2h?^%6T+Zot5JT&uPoov7y~jMd zF6Z|kN&APKpCz81ka{7zF)~2FXjsMO!`U4?>JhsLcBsmgl8CydQ|qt)5w(c$KHJku|*KAW2f{X~_6v$&i*J09#~#Wrt6# z{M$hG;o}UuiARSh4qOkVJ6o-V?Nq^)nY|QTIrUKa!O=>Kir$eW;CbxfNW+rb-_AV> zSAS#`T00T%Vh>^Ovh)ycY3!m8n2+jvrd>UE()elLGeK*GiOQ}P@@pQA!g|rgH)3CV zf@t|8Bi0k%%t6*u@-5Gu#zz_!Tmq?_rfM_wAL&0@7M@D)P|0}uwKc~=;P4hh^4TLd z+lGvmb)BVze^lpqjr2H-&bV8ZPTd8o9n%n6yRDD;aHZ%z<@<;a&c`cmiUJ9Kbq^`i)UU$D;UQ=uxD=||Bu`E0gP4Wb83ZoZs5j#nmk z2%fsq_-$Eo{3*1HYGbxd>2fkCm1N-2;CGoAYJNMm{fMz3q9*)1*R1r)^5jOXa&*n= z*hv8^fhqsY3!M|3?G6<}E2RmC?oHWU@|t2V?Bvsm<{kF^aPtHOTUhzasz!?M^|G#~ z^Gq5BKz_{v04z^_!%e|?ESmZ3_M5ZJ=V?vWWgggJ@Axi5^B&ToJjYA8RYRRMk!wWS z;i0i?i-V>WXN%51KwU-+L|r;LH?$zVa!)r@LRVwJaXB_?TZYR=$X=DvK<4nRDfahF zqdL*0uXN5El(36Yy!RhmUg~Q#xY1YHWyCG*;8K48WXo~5?|EcNV2nVoC_dQK%c0h2 zB($7U;rGfPdSzw$AuFu%Q_X{HQPCc++@p%5s$uR|wFa3@n#}s{FY`;6Z`X)#txB)4 zP35UXna;_|Gz3c7i=H|!rKD+m7?ORr zfq+-TM(ukGfpE$(tS`K7fF*x+QWz z7!f%l93tY$h--re5Fy9WA&8<85!t~NM3)dnAqq!Sg{T%0ksgI1szgMAC=yXD;#%w> zpG5j_AKCtaXb0J@K@@~25D^rBn2U&f5&0nUM&yOa1Cc8tWd4M9Mubokv;!i0M0SXX z9W2ouVn)P*h!qh+gwTf&@gqX~BeWnQAw)<|j+R0si%1U9VdSDY5FzJTqmVD5I1%w8 z2doewFbKtilyn>UL=r>sAwm)Yz97etP4qoPiHMRAB_N7NM4Vp~Bf5*I0MQ*p`G|61 zZ*x3-?IBVRfG}f$=LG=fj13GUOs;~%5qNLorhfN>KuZ*8iMU?@gh&JI1R8UL_DV2p zV}zB?pbT&)I&CNGjj<=t6oJfmF`<2jF8MqhLqmR!j(BgZWBr-_x!)Q7^pE|8vHpyI z*e_*@wWT^28^G|-eXejnE%`YTVj7h7W>^pdu>5goV*Tg1wEzMKiG$hhKg#Qf0v(a^ zrV?(tV!P0oG>R*3u&X;(2ySx69)-O%kU_gA2Y--QbdGutEEks z*^fdIq$qH0ApF7wcMzU$#Ig`iKJ-r)aT+9G!mzhV0ct}2C9D&GRYw8p=zO#cl5GbX z=!NgbV9yisVz4#IF}}Ljw&W{SyNJ6igYsQ$CraO(opoR(^d6dT_AOFUFOnS zJ9VT$@* zOMjFfy?80p$HUxHgd>B6X)QedyqMXIV@sO;ZP2*I*@yvwE8A`>`EQrZNa|E#vOL|y zL=w2JSK!KQ+*&KHU%wvy`SWMx$@2GR6h;e=!oM_bW#74Q;r_!9v?x}$0zbmV`r}e9 z&z5a2#_T;|H9+x_lcF@ZW-d8kFO!E-b-PQ@SC&2i6js>8Mcn<%(H1ZJdE=O79u(aP&r*df@OY=bKfy<&53zeFO zB}h1S4lsCdhR#g3%8uOX+HD`p_p-d#QkQV7T zB`f!5*HSWTk!H*MR-ZcWPcJPN1Yhm$9%cOSIEw9y4{3M4pEd1Udbi5!i@Zr(`JcNq z8=BMTkg{mKD^cN#iBSR!`W7-YMxi4{mreT}!I#||5U0+E)+I_w(uQ|8`^uD9Tm_om zZ?1H7LLRi7oX&R!4E)N`H=CM|^v$fj*0~qfebd5i)+46yO2O30XK8}{*aunO^ygl` z^L{pvilUSO4>F23dK{_Q;iYh2wx`Z12=`_g@Hz5k(Px{I;Q(z^R$GCBYx5E`T;LFY zm51z%F(HTEW8l$enpqg4S2@fGsHjLQ$=U~wjP&-uc)qGnEIwR%8>3d>z?aS&hi0Nd z3wcjOWfpCivRkHFo>+U@R!hgQ?O$l=<@DVoAz`q3x%-Z zajCSY@@gWzN#uEJKGrvG$NMJ)ota_4ePL!#^SJMCdG$)5k2Tmo|8916HuTftKqCta z3+-lg8VyojKIU-;C!k_IriXlF(%q~4j)|yu!whqiB(sTi=1Q*sNvd}%ro8?m)(wQC z*052?It4QtEdsAa;aCV9g1C7QkV3|7WHLZ1>gMd`*gK*n;JjMA?SDW80s4HMzeo=;1$Jlpc6@Ur> zV~Y%F^*hKQL2~rJ_w=r~a*#M!2>=9PAMES>#g}8S_YbTb;ro}e}VHQtPXh&w?{RskR!=Ek<8>)CP02&@f@1IX}Vpopsi;dKhE zJTc)DF!w4ME8L=ir6t~8SD52DZr{5TBy@>l6F)Psj)juWtT!O?rQH0+itOZX6SVjUBsyEWH@Q2J6V3=32+j zg1{MgS`aG$_xEF|2ul4}q)8jWYvNcQm}&rvESYSP(GhgJu>=qS_HWU+3|MWK3`fXo z!8(9|DLnF(Oktln5fJ9o3X+<*U2x&@hQFKPc;S@KWK0B&V(b&J{u~Z*BoO9yKM-dK z^GM+t;C^;;T7r=%c`6#FkRbmA_-ApEpCec$;uJu5zzTZ^e&~Wb1sMF(t62tNG#9xU z!BP^dh)l0taMJtJYrs4s^gt8=PLMi|?*(a)mXplo z;uhd^fy<7|-6@#Z53$1rmI$?z#9)8xjBNinYuI;VUH`phzyC)m^N>ab;#wT zJ^t0&M?t*Te{Z1Pe{7&Wzhe{Mf401Nkbv&S0ayTW#r{Q30{&3BkMT1gvL5swD20HT zA>M_c-z(Xcd;uh0I`V{Kka7~IIw5~i^~}*20!`F9zgH+rzQONI){F*^T_{R z=liZ=)W28RJFp&$$6$betD-CarHTf@A~Zc7aiXLD;2*=4fw(h&^%!gyp}FuFWad^i zZ(qyyqL-aupUgrhsg-l3I%U+e#9ZpJ&46PL3Y3H*;+Lau~yryLwoo+|m&NM&Sbuy3D z#jtwPKz@zoqISfdb;nwr7KO1*Na=5$vKtI0~-8f%Ux z)tyfsG4%)l$8OBZ_efFba37B0Cx7G{bne(j`DSJ`?VPn%L%pDNdDM+V8}R`o-{x1k zHf3LxDp}i9k5M|hBu_|p7k4Q;B-qP%x|^Lm<0WK?;nn{% z|C#SmT*g3M2EUu)PdyD8*9WedNj7N&V1}lU0>@)ZDCyX{n*qXbr z-7MUsxtD08^2D^92E>xm+y>r4+ssesZQq|}2`LkFR*EmWJPq9_*g3d%tH4ZOAh(Ps z&$HxG$czy4z&3NHCP7xKP&0PI!A~{bE%{x6RO9u6pr3b@;yZV*fbX`SR*9MH*rWS4 zS0J$U9;(w;)I% zSnZtXD;JW>uWp)(+PRyDy{~%{z??~flp*F&tmW)Q)k}uSGudC5NHEQf5gxL@IQhpe z{Rp>2+t9?WJC>}xgLfKbZU!AG_-;sXksczKPz@mnMtoo4HVwE(UU|sP-aHINF>VhT zGfuu@e&7;Ixz%v+>CATN>fn7%%+CSlr$;x*Z5rDj!yQ@IIz?ojMLuXN7Hx3aaFclA ze6#NdcH0+oP?!1w9=oS~kxdr{MH{Y!eh3rvBsXyoAkK5>!T`Ecte$bK=!2dc9HP!9e`Cl?=*`m~A4(O9_XsA+DqSMc0d zNgPu}MfZT&LlMAdSVi?PiXd_8t5mYOi`J9h>XATV)OC3l60Y)fBN1Wj8(J|so8 zZ)%{IgOL`yK?ipQ2zpfV)Y5iP`EfSu4 zznm50PWyUY=8+H&e^ph6b%Qpu(8s%`s|fjHaJ+4id$!{2!q#WhtOiF*v9W%5CHqBf zrFp5)4BTCoijM0VyBrXIjbB-Bqwf1-cUU7BwKg8TW;P+U&NFr}b`w6n;t|k*!s;~vYS?@4sWeIG8bnHs}N~>c&xjS!u52ENhlm(VFfia(Hu%Fvi|HGbNF~& z$b?WeT~(KUf{v4mpjAq-K+VJ2?<|ICJ!PLpKSpS=I5lXCK6!h6@WX+np(XYvMhn3_ zRyBjT+neWr`6hI?o?jOKfok>G#P_`7scUlE^Do{iQGalo3y^xsD7xah{CpIV#jx{El&S2@Q+1(yhWhx%=(1514ySN!=p5@wvEF zR#R(BI#DC0>}mO#lP#<7$4eKgv;DIDOidm!G>6ihevtL7SUk)4f(ql2?Oq4ZLc)3W z>a0^Ex?W>54puAeudU^s)I!k}b@{O&y4$Fpw_b}%pCqgHS*;3=JS!(?z~KNuh(lO6Gy}vi&d#LoEQ>? zFGjye%p5z8fy#sD?p42awGJ86878mp-L^L%N9EP6XxW1UMtH4TnK<~O+6R}#}5R(7WZ}VJt5p3 zK%M=$&2xf6%<{6mTDNoSOV0MO^JWy)uU-mPlv$l!aEi1|V6_}OH;f|jt%+A1jD;qQ z3RQy3@}abEU)^`tuK!%wXePTrM59T)6>SZ&Gs$vba_grWUd}iCysJ77OO9eDTfTGt zj6H&8w%fbNJR`=4iRv>$flD%*OOd4Ie!6h{=D;a!YmQ=y2XW_jetgedH{yK@rQB~% zA!{hG;LEACJCfx~gXZ#k8A=ttx?s&Ai7Mq-f%FnRmZv?R=V0>)q{8b-{%>fmbI;?o&>oW$ywjY@I7SVWYp!Dx&FAO<1Qm^FBp8=JdY=*QqUE?jm*AR#X=3nVY71-GRtGYU^S^1YbS!PFhF(U95jZ*SXODO$IbWw%P{=-WF# zZYw#>Lh+K~`P4YI0F%pPYg@sm;MnG-xA*%V4xUhUf#2TU`cWS(QYtp1Vu%d37%@2*QOuB2E>q9xfJQ>b<=<>TFZ{b1fzP-eztO2f;4WSb;hKkZu z6z|KUS6XzQ5Af+`bV7TU)JfED*AIVtqbMCG!;-~2+uql?6T)0L;FBfxI_XGv2m6pY z?Q%7b{UGn&xBB``4|e@+?aPY^l0sosDeQ8c{@>CLtn)_G=?2L~$Wa^c-SfeG?HxBu z&VxQKX&t`hqVUeg$G=c>jb1UqLD@RFAR(xWQl~jJAL1YUyfDW#A1pBUM);&ie$vJ` zr?>p`fbMk>2L^EkF&hqz#l)*CEi0@SN^Z8gg%^QU-x9Ft9D^H(CB_d zBya0oTY*(sr_hQ&m08~n_tWPI-3c3|TV8*2RtYjHDf!+2fv}{^n@uE85!iSqN!=s7R$iQd`3fea=$R2ui5uM zLa3aBf+~sc$CDGQhN}GrG6z2xA!7^D4Z>OJ^wVxDI~h}?Uuje3fOBgs(h z*6;{B{#=r$obS;9m(!+C^xyvOHtdW}2odzcmpKl}zf-MyHp~T?Z{NJ>=zr9#FW-GZ zQtV=7<@5RT9_}iL%W!ronK~|b?k;JkF1f(o+SQQa#Cu%t5#Kc5b^3ek~-q9)hBU|8va^7r@uxV$Oq6Gu|V2A_*(4V^u7^~=ly zoS1c1P5Cf04F&fd?3=lxOb1@uTpLG5)~=y@x(fRv>!WK|S>KTzzxpP8Ml}-a%OmI^ zeuZ<3M%CD5^;5BNOyLDKow;@k#|?>B;1$kzTLHWaQH`I zG!wR%l%Afa=m@O*#No_0Nfs+d>J8U{=k|A{2e}m=N8c>@R3g+iZO7dXP@SEj)xF$E z@!p;%Iy)K&v+AyNaqtd)u2c#ao^*QN<-v|RdtNJKEB%y1K@_Xkc5U!=^OT#X99(6s zD`xWE#*2$&l2<90LG?>l-HB_#CYcx7H&#>5WZz6!viHhR&b&h&>^*R=r~GWv{$j9_ z7_t~F^6256mqhO=&jiK;fW`RM*49L^KQ0>gYW$3Rt+_`nG3+|qq?Gp1>bP9t{puXn;c&J9r8+>S`QXO5L_o4ClW+Bp9IGQv(F&FQgRVNDnwR!4X%ELRf4%*;7JJ@ zlVnf!cV@!elVm&u{ulTu5Xgdkc(BRvb~ggNo4WCuAaDb=n*h1sZ$0>K!nzKY4uOkt z86gKQ{X3CUl2nkFmLd|lLD{=W^RD;bYDsGxfPc*quOqWc$-c6$J1WBCD<;`XNA^PIY zi#x21C7h(a+>I5I+?qeHx%8}rg8gUPOCGE&b{0RFs;)2@j3_eIKcg|t&Ntq#uy`<0 zr#$dPr?TdbNp%!MD6kG-kWqrA|)iI7*F;uZ5RPA@1=V3$Is?<>XMF z-1=bMDI6*Zf&@)QH;#^pUy7z()e`2JlyKDeA|fwE5!9_;Eddi=S8DSOXL_7-&-dPW z(k{(k6RKD4C33q=LG%J@{Md8qJeP~ZdaH{LeZ8Ccj?6(kEzhtwZKL?neAgTFH&X7- zt{Wu`X^uV||BSqP`h*ccjg=(dLN7!L93OomJ@NAGIq1pNQ>1xfj=LxeJ^^k@+8olI z{GPLs7oACF4CoD`Q*OfCpOlZZKO&)>?>NB|I>b=9_3Q^sJL%4hfR>3_kfh z-M?|-V~MuM@P|k_KcyAZ+oP7=nQ|LEh{eW;cND`I`lAa`sd!2tG>A@ zn(yE9T@fJpF5I->RiYJ}l|T6CXm$DQQx1%|8Lvqe+BY-KyVZ!Wb7? z_bdksKT|*69uMCVk$-=cu`J`5hx_X~8!w!AC`AwOoqF@AW%{jK-%~b^R*Wh$k@?+w z+?Og~W}VU(zb;Z9`qF$!IPKX_vRy)3WAIReBk?VR6Po(RE05V;8m#rTAcK%N7vf7K zH~*&Pdg%A{`oC+r9{PQ~{%>2Z|9!pw?^>>heqXQuyO!&r-`DH^uH|~@_x1X}Yq=i! zeZBtgTCS(~eZBs-<@zD~90)%g!Bas0d^7(S{{6q^TWh zW!o3-4$xn?bk>}gf`&wA^J~N2r|_bfaxR(CGz@>futuN0xHGUEFxXi{D)d@(U@UP_ zw`MBqb-f|kv!-^YerZB?x36}JMl9%B#m88{Bbu=MvUyV=n&GS7DTv(YtDdfcq-rvo z*yDymoovx!=#G+ zWZQPiUp7sJnTrEhqcBi@AKCf4uEmGh)p(!HnVvbV@F4IF|3kv6x(;1-D4D)zM!5+HSD^E7BPJU;dDv+_-}+Dj9IC>BFX ze?=1m6ScwFB$9;hzeg*4y#v1g>`hKTar z$BeSRp{i1Ho<_9~TMj(f$MzI-4{_Hw_9V>bOG1weSKTu8-F_}|o%whk z%?pqRb3|Pe;#qRO4-sqALcWX!#+psL4wn1Mrd>r*s@9oI7`zeadAw2@FyBKsFn<3g zq+gpfX*RmFc{JhT($HHJD+Pzeh*pN0-9oh23YTp{Xa1;7o0nFw?MjJ?EzrNnrpl+= zc#mzn|3C}xQF!!hSZqFD@5FMTEJWWO!cWPj$0MGcr#7o+W-TO%@HisYuaM)q^W?q2<=r;} z5!yx=4dt6J>e5x`e8Ab5*Zk6UY+EXxJQ;Y`ekI|J$1@CS<+GhV=-m~783mcp410Im zN1n5a#k<~z>f~^{$33~Q^`-u)#i*N9;dBv{hzYy z?nZi6+}yrpqMkY7J|5?JDyC_hNhapG2z|b()UBcu?5f;j=fk|CQ?BtR74{B=pBvy` zZk;avZcF8ADq~P$=5|mP+`jXvU~wQH{mm!7yI*o*#vNkJSYGGoV6bF8tviUZ+7+)_ z8Ay&$FtTG^33`an(>`=&M=<6&hBgIv1W)q-(6KAi+!_<~IKi$_LqST_ks8FupB^O3 z)x|r`FtsCbIQF`SeY()vWgZE2(h|=7x4dM7%?^KaJ2#V&>FHLnl6dv-xS05~`hl>Z z<8`|8!cb(uBUHa^#==lCF4?z3->p1gK2lx}2A2lg~#%v=$?)^})m zxq9pidRXoazVgWE!823ivF;YekABEkZlsO8_P%SlYJ|OG&$v=i?BxR<9C@Uib2T~; zeqCq5PAD{DlxQ9r8wOLSb=_RPccB z(PU`g<6NHES??7IMo&k%&&qFaxa0&|uYS3jzW8L#rr;Ze0Gavb1`uNPT1m%{{dib< zgJDWB_4x6X5BV!Y`a>5VYINAG&oa<*m+Qx{kuK;c1t*N(z5THLbNx5-c>V|5XYT48 zPkmPJU-d96;pBAT9<9@}1v{v->4f%>07PE;6zqV+pV;2P9S6}=;hRApAAPfWR?o@XF7Kf? zG_J-LM#$>|MT<*sY3UrJ5s{mHMr|%yexwzvnpYMw zop4Yc|Iy9ce$URAF`d^wkk`o)F?+w9BKbn^ zo%SC;D-O54J#!*_jrZ``!+DA?qm9^Q4D0UAx=uj3uh{KQUfb+*iC90_6*(@sXPW)E zU+JFR@aU=Ev*;_g-=IK#if3JaV%d3l|oI9 zV_}??6&toc=!(knTfIW{{;bP>JXNXP-KT`1ZMxRp6GGepq(&1CHbdrY_{QWbRAl|b zn{+g?>$<{scCTC|zZ?^`rGoDtkGmCD_jbO9#fNt@NG&h(d(EpgOkm)bPT%GNp{QHb z9vNQpWnEWIOg5}9@Vd=B50}HZQm`{;lBQBy@4mIRpD0=glsy?fOVC`&2scjbKE@9c#6Pc-9XDO=!rsN>?W&h*e`;p!_UfUlT_?4P8 zk8(f&<<}bxNxY~}8vV=(zU-QLP&kaz>(DJPy@1T(RliOF_AYiQWgU0r?I%!m+*IT! z$}L-SD>lnB1CGEsOJOji1`67JmGu4eVT}csiqix8VY|_&@b^p}pKsV?c(Ow~(g|J- zpL7bdfSx&*SD_jdEaAvYmKxSb`L;tOk@`!EE>dBejMP7? zJ6$LWdyoEXAW5ZEV|(`st=6hd5kOUP;cdO2^4Q?|iPmLqa11GwxERWByP=Qy2*;(8 z&WPaE9Z3!()&cH7I!LM{?iY^vk~Vasfu0Cv7MP1cRv*# z51s#pF1vYOmomATu-L;fQr+XFuUSTIl{Vq--}P$okS`RIXeR~MQE}+0b;#R{N__F! zwhDOC;ankVE75IpMdW>J>eCM0KT>;p@=9k~_@2y3F|jAm=g8%0 z!4>+9u}`awg~me?=EGytXF`ON!8&OXHVT!9Ig{X64joc3m- zW{%{vk&|i}0Uk9F{za-DU4m?ADNuGZlc!vIx zJpVfI4E-f}{&nCP`b+Xm1kc2G@$&z#$B9AzD^TngfM@7`1&aLw@C^O0K(Su{o}vF0 zDE14$GxWa##eM;JhW=Ne*e?Lj(Ekb)`vu?``d@)!`{3Cf=?CuoU&G7LpZW4H#mms2 z`SLHt%g~?s@-M~9(4YD8FU8BypZW4H#mms2`SLHt%g~?s@-M~9(4YD8f5FShFAbmz z{(r~I(4YD8FU8BypZW4H#mms2`SLHt%g~?s@-M~9(4YD8FU8BypZW4H#mms2`SLHt z%SZmqm;XQTviWa(`3v$JBN>qg!iX=u`2g4}q@<+gu}7%yTtLG=m9Zqh|1OjVP7wsc z_kS6R&<5j=5aayNcYifx`~zcz{tn3a2gV5f9gy)4j1l@fAmbkxBlLGb#y>Dd==YTg?dcQZ6L4?C?MF_eH_dw)dx1qN3iB+Q_>G-Q1q)=sWciau zAyJbraU+ba_^+|{WH+wvw4TG-aW-6&l?fJFPh??&idbE&Zz@Qj5`?zHp7Et5Yf{Ip zPjvg8d;1O58`~GUd)6*kQ2(B_J`!cyqyhTzkfPf=*%?1c4N`5o+-G^D==;s*tTT6m zuumGbuW^EytAL6|gK(53MM+{5?{eYE*}4ec!8Go)3D|a`BQIdTZitu)$Kr3-sx&`JmFM$@KL@J_HqJp1}a8 zC|0*2_WSooKa$qSbm-lj{lH+$$+4i4G0%+AqzBJX@Sc2f+t<@DteKQQt4+d!MW@)O zu|_dT_Fu8Yh22u(cPu`kBq3&wt#^{y&*{~~-$J5}O5bJz&x|h$gZ;kGyEB4$khpG*ZhHLCFLRz0T+Xb6+ zUOj!7dCz=k+AS7Y$7kFc-hi_M`jOwy6xn{=o1C)FogX^Y4DC&-96fA%Z9p)YzS=F! zr~TRGv;0@u&8Cn4pysscNNy8&Yt_Ool>K?eF-2gHogruT*~N6#g@Z>9B0<5E(sWF5 z2`+r|j0&yAqK~4bq{R+TvKK%_?1>+3lHUl&{}77rc%lk5YHmoZEftt`^X7(oKLcl+ zjiXLfQD|K|{l#_3PyMB>qlMo?C9S}M>-vUavY#X_7(Ry19BjYdaz{PN+Nd;d$dZ&7 zZEHk~&1FVnb6b0)9wKo*awlXvQSG0dbXR^iL`fO%m&cykd$>ea*LxxNdn72xK zqJGKEQvmusCgf|=TiE-syRehC@~NF`Uc&Ettn`L^{7u4(IWxNsE`JS}ItNqc3}-r? zJK=0ZS|>31Y9a)G*`P*j^O={5F#1T6-q}yZj>%eq+HEZ&9z~|Bv~lDUA2LIg?u8#> zDH?SW8D6^G#P68O=(vAr>0k9v%yV0&^+1u%#rzIb>*v{Ubsl%AGP?(!8CVne3wA>2 zJLOoSC!K0yFKQo}ISTXFS_#LNFHHK^TFF1OFumrZc|(t-KPTu^cmnk0y!mxw zFHb=a@+tm{28PG$|4&=z8O{c~#_@R7=rC(k?5(s$DQZ@$V((E@jnW7$Ma-(iR@G9Y zMX5%#R!}o4R%6FrjZw3;f;T00gp4Q~mNdqfgD5|KUKcdpVlu89$%=1`F@Ld#+ zI?6ozv$FGq|8oO@l41@836w=->Fsm;TFK8(FtnB~Exs)tP$Lhk$6p?L&oGrR72`T`f=h+8>TH~VfoYlY zyWTTN*g?09yl1Ut-OvE%ROC3)vi^Z4zWg1z>g#X=`%9VOM>zPNt|LyJ1wpu#FyV$XlR6Vq8V(&Rfh)O>ZuN|{}7;zpaH%gskvo0_vtJK4qE^1xeQHd_X!i|>XQ zS>Y=iSVJLKVI48}fGp|^Fr?#<>pVIjktAc5OQ!jDhu%L3tL0wbfPA;)v2V=tpZ+JF zn{${ev&?Y(NE-Y#ay56*;Nz3#uvhocP@iZ=iqF(Q|Gqz|>08*%r;D@8ZDc!?x8dS7f>++Rs~I;oF_u|N3w1NaLpE|M zs%vU%pXFwFK+JzDawUFG5tU_Fldan{ zWsB>Lv#GO;H~cz+ZN1OgyFSUwxEdq`U1yuWsBLa!oqz4YV`VNznd|XQ5tX0n*mP>q z$CLLqP@vjR%DP^1&?l^ZOW7HH{1dR;SjXLT^uKfQ@O_3X(^|a+uV;Z@;`*G*A!?@| zp*`8m_tj}1Mxz6lfOh4R=`@>XzgYLM4_1_auz2$Z!O*K>j2EYkY%#gP&*TSC`1#3j zxfnG5Jspx9hbBD|{#DAqN;BNMhSM}!!K!!2I#$}Q9PSET1cb7Gih-SZ-VGVB@jOQp zzD~hVW}fB;GdKC~2*5Gh?z`&>+4G$w)<~fgTK^1%F_E;p4wq`Z#Y`Q^pu)J?`><=6 z(WCs@ljV6Qe9dg7`g9qdd=_)0HKm9;I0~)~PIRtWWZ5$_&LcLf&y`tWj9Tln-_8Wm z{(DXoZ)2Qb+btnao^|;4coAqW#-J zab6xL>v+6iqvrA|CW~+zuvN!hl?NbSx(TQg>X>eQpv@7I0JxPWXwJ$gl9vLH>6Q$G z>5iR8-`1m5pr1gdXlSQQLfCpXPDnZG#WcaqUHId7(Zz2Y%#^_tcd3}x7EPB|e&^Zu zx|;!ijWfq4{B|Qr$sc(lymz9vLe&};e>{E~Kl`)dSB`f~^;PL*jWxwCO;fT##kl4y zIkd1pZsRY;WW)+l$2ek{$X-!>N=?&^_Hc*ew41F8O$dBo62p-%Wb9Fk21AM?=S6fM9;aHXEg5 zM4l!$XcGT0WzvhH_7Qg6c1Hrj##xha#+`0Yg9BiETabTXUR86<=b7u#kC79cZc^-k z_x#Y90ix=CtBjz9gBia_)(q{h!QDOS%|g*!s}DEB2d)^bYcv=h84qC$#?0g{VbgrS zpMmFaO1hqYVtxJfTB24kh#RI@@Vy;uuU2xifaY%N&{yokyY0@4)$3Q>rc~YPToYgM zF~=d`xv`&t=Z3qIkp~jbLuQRfkxCDh6BK!EUGK;g-5HyUJBAbE$U3zm<1`G6SfDD)tt(ci9~NLpi_=QS1Rm6RTsw$5suSlI{yHgZVU>%W zn5@fn(#TiysP@`2ViCoT%ak3b0Xw2P&tr}<5dNbZoboXPu!Orz=Yr@^fR6m~Sm7Y$ zHtCRX-;rVO(dx`3>POa)k$HGMIN5X`!$6)%qad4d_fYr?)uVV=PJ~pz6+y4KvftKe zXnUH@jgQCJJO~)(Y_{utu|9AI-B(tpWoEnmmHZ49yE5@k#pp&) zkaNr0NyL>WQ#(fj=hkTH=K<8EIrCIT@7P=54Mtzak3a_c$35mO|Lk;tJr0;wW1nyp6!tscnRz(Cq62yow@f^MTMs`|8ZSaQJUw<5?&CH$Yn6Z7<6dyxWV-%=sGM)aK60G}kB~2F~r3YOXg%V>o&%f-ZvcV3sTt8G(Yg$J2_2 z+qYXD2R9w>607ml1romZ&E(qr+F_$~e2pgM<=9~tUs&qBWOZ<;B%gC9cr-c$H@T~E zBDgcZp-pgod75CAD$ul|y}$ua?h8BFfDO^!ucbRy1!w|ldFS(77I~2Zt+9Gx@a31? zq9}&&&CZ{oluN3sIu%3po-SW#LUUdKyj8@su%P9Xg)-kGN5qOPo9U%Y+Mz~6qS zn`& FloatValue::GetList() const +{ + throw std::bad_cast(); +} \ No newline at end of file diff --git a/Hazelnupp/FloatValue.h b/Hazelnupp/FloatValue.h index c9b71c9..79a03f6 100644 --- a/Hazelnupp/FloatValue.h +++ b/Hazelnupp/FloatValue.h @@ -20,6 +20,22 @@ public: operator long double () const; operator double() const; + //! Will return the data as a long long int + long long int GetInt64() const override; + //! Will return the data as an int + int GetInt32() const override; + + //! Will return the data as a long double + long double GetFloat64() const override; + //! Will return the data as a double + double GetFloat32() const override; + + //! Will return the data as a string + std::string GetString() const override; + + //! Throws std::bad_cast + const std::vector& GetList() const override; + private: long double value; }; diff --git a/Hazelnupp/IntValue.cpp b/Hazelnupp/IntValue.cpp index 198e823..3399f12 100644 --- a/Hazelnupp/IntValue.cpp +++ b/Hazelnupp/IntValue.cpp @@ -35,3 +35,38 @@ IntValue::operator int() const { return (int)value; } + + + +long long int IntValue::GetInt64() const +{ + return value; +} + +int IntValue::GetInt32() const +{ + return (int)value; +} + +long double IntValue::GetFloat64() const +{ + return (long double)value; +} + +double IntValue::GetFloat32() const +{ + return (double)value; +} + +std::string IntValue::GetString() const +{ + std::stringstream ss; + ss << value; + + return ss.str(); +} + +const std::vector& IntValue::GetList() const +{ + throw std::bad_cast(); +} diff --git a/Hazelnupp/IntValue.h b/Hazelnupp/IntValue.h index 0e4042c..53855ea 100644 --- a/Hazelnupp/IntValue.h +++ b/Hazelnupp/IntValue.h @@ -19,6 +19,23 @@ public: operator long long int() const; operator int() const; + + //! Will return the data as a long long int + long long int GetInt64() const override; + //! Will return the data as an int + int GetInt32() const override; + + //! Will return the data as a long double + long double GetFloat64() const override; + //! Will return the data as a double + double GetFloat32() const override; + + //! Will return the data as a string + std::string GetString() const override; + + //! Throws std::bad_cast + const std::vector& GetList() const override; + private: long long int value; }; diff --git a/Hazelnupp/ListValue.cpp b/Hazelnupp/ListValue.cpp index 0935fe9..a0f16da 100644 --- a/Hazelnupp/ListValue.cpp +++ b/Hazelnupp/ListValue.cpp @@ -60,3 +60,35 @@ ListValue::operator std::vector() const { return value; } + + + +long long int ListValue::GetInt64() const +{ + throw std::bad_cast(); +} + +int ListValue::GetInt32() const +{ + throw std::bad_cast(); +} + +long double ListValue::GetFloat64() const +{ + throw std::bad_cast(); +} + +double ListValue::GetFloat32() const +{ + throw std::bad_cast(); +} + +std::string ListValue::GetString() const +{ + throw std::bad_cast(); +} + +const std::vector& ListValue::GetList() const +{ + return value; +} \ No newline at end of file diff --git a/Hazelnupp/ListValue.h b/Hazelnupp/ListValue.h index 206162e..1ecfe9a 100644 --- a/Hazelnupp/ListValue.h +++ b/Hazelnupp/ListValue.h @@ -22,6 +22,22 @@ public: operator std::vector() const; + //! Throws std::bad_cast + long long int GetInt64() const override; + //! Throws std::bad_cast + int GetInt32() const override; + + //! Throws std::bad_cast + long double GetFloat64() const override; + //! Throws std::bad_cast + double GetFloat32() const override; + + //! Throws std::bad_cast + std::string GetString() const override; + + //! Will return this values list + const std::vector& GetList() const override; + private: std::vector value; }; diff --git a/Hazelnupp/StringValue.cpp b/Hazelnupp/StringValue.cpp index 2849f00..17ba858 100644 --- a/Hazelnupp/StringValue.cpp +++ b/Hazelnupp/StringValue.cpp @@ -30,3 +30,35 @@ StringValue::operator std::string() const { return value; } + + + +long long int StringValue::GetInt64() const +{ + throw std::bad_cast(); +} + +int StringValue::GetInt32() const +{ + throw std::bad_cast(); +} + +long double StringValue::GetFloat64() const +{ + throw std::bad_cast(); +} + +double StringValue::GetFloat32() const +{ + throw std::bad_cast(); +} + +std::string StringValue::GetString() const +{ + return value; +} + +const std::vector& StringValue::GetList() const +{ + throw std::bad_cast(); +} diff --git a/Hazelnupp/StringValue.h b/Hazelnupp/StringValue.h index aa6aca1..937e11b 100644 --- a/Hazelnupp/StringValue.h +++ b/Hazelnupp/StringValue.h @@ -19,6 +19,22 @@ public: operator std::string() const; + //! Throws std::bad_cast + long long int GetInt64() const override; + //! Throws std::bad_cast + int GetInt32() const override; + + //! Throws std::bad_cast + long double GetFloat64() const override; + //! Throws std::bad_cast + double GetFloat32() const override; + + //! Will return this value as a string + std::string GetString() const override; + + //! Throws std::bad_cast + const std::vector& GetList() const override; + private: std::string value; }; diff --git a/Hazelnupp/Value.cpp b/Hazelnupp/Value.cpp index d69c0f6..128a784 100644 --- a/Hazelnupp/Value.cpp +++ b/Hazelnupp/Value.cpp @@ -1,8 +1,4 @@ #include "Value.h" -#include "IntValue.h" -#include "FloatValue.h" -#include "StringValue.h" -#include "ListValue.h" Value::Value(DATA_TYPE type) : @@ -15,51 +11,51 @@ DATA_TYPE Value::GetDataType() const { return type; } - -long long int Value::GetInt64() const -{ - if (type != DATA_TYPE::INT) - throw std::bad_cast(); - - return ((IntValue*)this)->GetValue(); -} - -int Value::GetInt32() const -{ - if (type != DATA_TYPE::INT) - throw std::bad_cast(); - - return (int)((IntValue*)this)->GetValue(); -} - -long double Value::GetFloat64() const -{ - if (type != DATA_TYPE::FLOAT) - throw std::bad_cast(); - - return ((FloatValue*)this)->GetValue(); -} - -double Value::GetFloat32() const -{ - if (type != DATA_TYPE::FLOAT) - throw std::bad_cast(); - - return (double)((FloatValue*)this)->GetValue(); -} - -const std::string& Value::GetString() const -{ - if (type != DATA_TYPE::STRING) - throw std::bad_cast(); - - return ((StringValue*)this)->GetValue(); -} - -const std::vector& Value::GetList() const -{ - if (type != DATA_TYPE::LIST) - throw std::bad_cast(); - - return ((ListValue*)this)->GetValue(); -} +// +//long long int Value::GetInt64() const +//{ +// if (type != DATA_TYPE::INT) +// throw std::bad_cast(); +// +// return ((IntValue*)this)->GetValue(); +//} +// +//int Value::GetInt32() const +//{ +// if (type != DATA_TYPE::INT) +// throw std::bad_cast(); +// +// return (int)((IntValue*)this)->GetValue(); +//} +// +//long double Value::GetFloat64() const +//{ +// if (type != DATA_TYPE::FLOAT) +// throw std::bad_cast(); +// +// return ((FloatValue*)this)->GetValue(); +//} +// +//double Value::GetFloat32() const +//{ +// if (type != DATA_TYPE::FLOAT) +// throw std::bad_cast(); +// +// return (double)((FloatValue*)this)->GetValue(); +//} +// +//const std::string& Value::GetString() const +//{ +// if (type != DATA_TYPE::STRING) +// throw std::bad_cast(); +// +// return ((StringValue*)this)->GetValue(); +//} +// +//const std::vector& Value::GetList() const +//{ +// if (type != DATA_TYPE::LIST) +// throw std::bad_cast(); +// +// return ((ListValue*)this)->GetValue(); +//} diff --git a/Hazelnupp/Value.h b/Hazelnupp/Value.h index 65cb082..dc8a5ad 100644 --- a/Hazelnupp/Value.h +++ b/Hazelnupp/Value.h @@ -22,21 +22,21 @@ public: return os << v.GetAsOsString(); } - //! Will attempt to return the integer data (long long), if the type matches - long long int GetInt64() const; - //! Will attempt to return the integer data (int), if the type matches - int GetInt32() const; + //! Will attempt to return the integer data (long long) + virtual long long int GetInt64() const = 0; + //! Will attempt to return the integer data (int) + virtual int GetInt32() const = 0; - //! Will attempt to return the floating-point data (long double), if the type matches - long double GetFloat64() const; - //! Will attempt to return the floating-point data (double), if the type matches - double GetFloat32() const; + //! Will attempt to return the floating-point data (long double) + virtual long double GetFloat64() const = 0; + //! Will attempt to return the floating-point data (double) + virtual double GetFloat32() const = 0; - //! Will attempt to return the string-data, if the type matches - const std::string& GetString() const; + //! Will attempt to return the string-data + virtual std::string GetString() const = 0; - //! Will attempt to return the list-data, if the type matches - const std::vector& GetList() const; + //! Will attempt to return the list-data + virtual const std::vector& GetList() const = 0; protected: Value(DATA_TYPE type); diff --git a/Hazelnupp/VoidValue.cpp b/Hazelnupp/VoidValue.cpp index 9bc48d2..b3671ad 100644 --- a/Hazelnupp/VoidValue.cpp +++ b/Hazelnupp/VoidValue.cpp @@ -16,3 +16,35 @@ std::string VoidValue::GetAsOsString() const { return "VoidValue"; } + + + +long long int VoidValue::GetInt64() const +{ + throw std::bad_cast(); +} + +int VoidValue::GetInt32() const +{ + throw std::bad_cast(); +} + +long double VoidValue::GetFloat64() const +{ + throw std::bad_cast(); +} + +double VoidValue::GetFloat32() const +{ + throw std::bad_cast(); +} + +std::string VoidValue::GetString() const +{ + throw std::bad_cast(); +} + +const std::vector& VoidValue::GetList() const +{ + throw std::bad_cast(); +} diff --git a/Hazelnupp/VoidValue.h b/Hazelnupp/VoidValue.h index bdba9ab..967c001 100644 --- a/Hazelnupp/VoidValue.h +++ b/Hazelnupp/VoidValue.h @@ -12,4 +12,20 @@ public: //! Will return a string suitable for an std::ostream; std::string GetAsOsString() const override; + + //! Throws std::bad_cast + long long int GetInt64() const override; + //! Throws std::bad_cast + int GetInt32() const override; + + //! Throws std::bad_cast + long double GetFloat64() const override; + //! Throws std::bad_cast + double GetFloat32() const override; + + //! Throws std::bad_cast + std::string GetString() const override; + + //! Throws std::bad_cast + const std::vector& GetList() const; }; diff --git a/Hazelnupp/main.cpp b/Hazelnupp/main.cpp index f5cff2c..c0bb028 100644 --- a/Hazelnupp/main.cpp +++ b/Hazelnupp/main.cpp @@ -9,7 +9,7 @@ int main(int argc, char** argv) std::vector testArgv = { "meinpfad", "-w", - "hallo", + "123", "--alfred", "apfel", "banane", @@ -31,7 +31,7 @@ int main(int argc, char** argv) if (args.HasParam("--word")) { - std::cout << *args["--word"] << std::endl; + std::cout << args["--word"]->GetString() << std::endl; } else {