From f006c19db6324bd2f1a08b695aded013f526f1d6 Mon Sep 17 00:00:00 2001 From: Speiger Date: Sun, 24 Jan 2021 07:39:13 +0100 Subject: [PATCH] Latest changes. -Added: Maps -Added: UnaryOperator -Changed: Variables for better naming. -Upgraded: Simple CodeGenerator bugs with recursion were fixed. --- libs/Simple Code Generator-1.0.1-sources.jar | Bin 13065 -> 13289 bytes libs/Simple Code Generator-1.0.1.jar | Bin 26428 -> 26884 bytes .../src/builder/example/ClassType.java | 18 -- .../src/builder/example/GlobalVariables.java | 75 ++++--- .../src/builder/example/TestBuilder.java | 19 +- .../functions/function/BiFunction.template | 26 --- .../functions/function/UnaryOperator.template | 25 +++ .../templates/lists/ArrayList.template | 6 +- .../collections/templates/lists/List.template | 6 +- .../templates/maps/interfaces/Map.template | 196 ++++++++++++++++++ .../templates/utils/maps/Maps.template | 32 +++ 11 files changed, 327 insertions(+), 76 deletions(-) delete mode 100644 src/main/resources/speiger/assets/collections/templates/functions/function/BiFunction.template create mode 100644 src/main/resources/speiger/assets/collections/templates/functions/function/UnaryOperator.template create mode 100644 src/main/resources/speiger/assets/collections/templates/maps/interfaces/Map.template create mode 100644 src/main/resources/speiger/assets/collections/templates/utils/maps/Maps.template diff --git a/libs/Simple Code Generator-1.0.1-sources.jar b/libs/Simple Code Generator-1.0.1-sources.jar index ed45e4882ce20e256b7b6ca545611a879c204473..9b3630f7054d7ed4d6385522c11a77420b23ae03 100644 GIT binary patch delta 3495 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 delta 3274 zcmZXWcR1Wx7stma5i>d?MjJia7&7W8VT=-Ogf&EoE(|705G4~WqYr+}B8a+Dh$tZ> z1W}Szq9j2OC4yi{mX%TS+U)!6KJUBt{&T+fIp=%-`P_5QXWtYbcDy+w6B`J`$_fgo zP^)K0Gq4|(t6jW37&;}v2m(n1RtyH@R7n6|?!(QioE(m2-o>Lc{ASVO=U-aRyip96 zpPph1`;HO#ZfZDg6%F3cl8NZpj+l$pt1}HTS7i&qIU3^>aXhaTXw`H**_=!kM*Erz zW%HO;$>1snQR_s6{&2osMF)v`-8kY>o}11AUe&6Xqoq{PrC-2EPCgRiB|v^txg=*> zv!q(m5xRAz;r_CgIpS4H?uh0U?FvVOR`?-2@*;PVIV>Fz-ta+bkvaP}A&mkGwDC^P z5`E62t4*@2A3qJ}5B2pxb^7>GC1Ywg-Wp{nrSoPj<2=AtTV?K%F+BNrC)4MNrDkvr z9mRfIa~aRTPOqRAidE**9CFq9F`2ldh%*6j%GtiWxX?iF`z`N8I)xq5HBxmiE zD{ix){Zp>5e@gEYAE5-9KBwGn)Xif7o8XyF+JO69u*bv$j`K zvud|=i!|6<+9~3D!_90a&18sq!N?tFlPs-f0-y({aPa(kw;Kx`*X%CK)b<$S&22uI z=Pzpwnd)J$?t~SO{3PO5I7*FJurI}gO~#L8_)*2t6y5}<(15$Exiuem7p-ZgyBl9a z7q7{tCdA+-IKn4H=;X^!#0*BNc>C^3Oa{ysEITPwuIuZtd0N;oxz`NjX+RG)#pq|V zH1M*C6Z4+-b6fWsZ~I0jcB7p%i^I|Wy?BACZa3|+?Y9WF!bLVehK!oF+G$na3aCKNhUxgIqTTyr4-$y(98GI}Qi!j69(O}67>@9;-j{z}NC%N)yv zT=}Yx1Rv}KjwIZ;q_+$FK`JOLnzhgy>Tq#!y>l#^i)eUWRTA4`d(`-%U;({Z(keSK zsu2H{ki+eRsXyR}{VWAn8`oYNE?q91MBYz>DiG2McGFGwZW|DU+MG;Z2hTn)uF&~X zcRlB4p8lS$Fj0oIhDAA7fiF{HZK}7935W|XYKMMfHKA+;9Zm)=b)3?Bv-l!__*wQ=yQTray1nwwpKy-LqN=DWnq4LBJpCcgp$!$sH z^(97fh&21DR^!W9doP1V=ECiVK&O+DUz@MPfi1e)tWsCjLh^!Cy%b3+y;+jYvCz#g zr8cR|lTKG<)XX%}J0M>y3?maOzmU;WOguvBVkTdbPk%vYQutje5);dM0>X-yjKA%T z#P@Ua?nGgFsRuU?YsBVet-2<2(-Wh5XmFXb+5pRQAq^6j&v_7M+p}PJH;0lYHyVP=uFU1oj}HCq zSMs~{RTL34*EScVqQgne+dA4wjLNOtn3?ToClVLlzVbP&GYb6BLbtLR#9q4UX#JWN z{JKEseNxrs2G0RU7&%01SeB#sbfaJHEb|z4-z(><+1+{_jlt$;T6gnrmD9ZHJDo+Z zW;t2pGEvXKod%nWjV-jNEuxC`4c*E5UO_bn zLulC~DO2*DW9C1*KOlsH17Q%pAFy)r6>-a+pzMi?Y7aU=+4uxyrN2?0=HnsTS^kN# z?)3Bc|DtU0sP<2kh4$;8dYo&%y zhqv|*P3~7Zj|b)rlEn$-feXg^?wdjFJP5udHGh+@;->wzs>wb=;lfd_*mN@;;qu4rlM zyC^@^AQu>w%$u@A=PX$*;hp#%ynQ!!Q=2rI#eH)Xjm}yjTLxBk+eD~W84Ks?k=COl z5LPQs_pYKeUCt&LRLs=V6y8)la9|N2(u?9A1Z;!hm*- z>JyP}*sW(gFnBEoL^-UGsNddGzP=jNzE4H>VSUSDgVX1WM51wNU9}CV9?$~wBr)izpv>87aI$$H*Uqb)gUvM|`o9)5oWc7wl zNZ$2P*IgWS*!$_d3=Fi*WM9f7hUU}eu5ax!Q%tUTbt_uQy&i$&)ZAC%lExaJWp`PA z+Q%c4X3?>;y;EJ&|H}BLC)?;ct1^EeXOTv%+CbrYEZ3V_gFZ)BlzG-_Vdqu>HCseB zV!AK8u0B~;^Nqz*jmCw+<;!u$Ds6!nzLBQ#PtOt`Ks!3;_dWMd{WGEHo`Bg{BVcig z`$bKR&2s8=g8vDkJ<>f{V*KR4=^QA#meu3%I*3EC8O*5N8JBP;0~jd8|M*ww=I%?{I~cW}QrwPUd~HFh`w@!|%e0=+5v!5^ZG$bQ`Nft!^!qwEAa-;4|1s;>UO=DUQHjy3uT}4(#^(xTd1me zEFQ)VFIb$8Hp9K@Cg*jvf9-zxlTEzz=1OOa#i%slCHj_U%JG@XH2KEKnfLZG2Wc`c z0=AJY!e7SEN_c4(^t=gl_&r|wSqnk0inBuwfj%WDeH@=XlvZ~sPm3i)kfPjEHBf8d zcw6au+El>H?v#c0i>8y(!f9NY6BmRw%r(g|I+Vt9Y@w$m?H$OSNowh5d@5(-ms;6Z zB{P#SpH8d8-Gx`5xH6a$8mDfTRuHtnO0c9k`-0jnY5qwqCTc$Z@YrFZOtCReL8G>= zML8^alg4ZMa;ZtMc#N>0RkFSyWM@bt#Ev^dQtCPX@Z;@MuNY{)zgp2yR|Fxp-D`MN zQ8Y+xhs@=SUJE!4iAv7OsC2;1hj5wTu-%?>rH~JG4ZV_T)xaMcMJwXdSjC%!V-IJ# znO*BO!G5bvnV&`Y#Il>&%vWfZ0S^@jU#IOM7-5-XZ{au*ErnqlV!a>g+K} z?ndGO6p)!mcM0* zk_Pz3X#ANH%UDNEr%vAVnD@fHXLw^C%6(zuNmhRiMf^IldErF<^#|>qprb zN))^Z`*9_giWV3o_#^aF!GIm%fQpb1(4`^|&iN~3RfUWF>tX(nxhi0wY6o6GoS49X z8&YgQi>f?WO#E+&k>CKh&&h)WB>#IP3Iv}>Vd))7d!FA~zgcVMk6E+UbWOm8Ps3rVDj*A=Nc>MJ-eZ(kkWKypazSGgg zm(&x#qA!Yg6V9iiv|L=`Fg;{E9oghb)L|*X=c+XQ^ZcB@$>gkJ_xxPy9j^%Tw;w&p z3H4UJKe^m@d%WL$>gEQzPbYXmohLS7>5b2FIn^T?Mc)v^fOPku=W)9jj(xrgfksf# zf=yopB+-gZ#4xVBv+bF-{7r5l(aKGCB;5^}Q9xmM7n5a}$ipb*1N;7Ea=?9q_I+&1 z1~camy1J6hqt|02O)K&5OFNnC zVq@7SS2)TzIEB}te#-iLmP#ynp3|d&^azJjvV=wgx0Ggfa@CF#qRFGhmYmM5y?SG+ zHl6x?0GZRstHKg%KP@kz3^7RE^@UI_X-t2%MQ#BMp)S2}Y-#zr?fSy@LuSxPTWuUcNoPxn65Sysz*--y*> z`S-J|oZCZX*Vp{uVb&{_Vk{b6qw=2&2U3o_;_{=jT`J5>|=-zy0Id724 z1URSQtb5LMn{pPbJXIqd3o#GD6oXP#nK9#+5iv!VB{3$W>H`Ry1L1ENvseV}@n2l*a0nH!~CG6>Cb#J60TTw+yPLrmi+FEV|u2T1i z;)a44Y3Ar+j7y-0!1HWKF}@iCc~Ji#Z`Zi5AVtfWnP4IPynp;%8^#ZBa1cAb3%}#) zQu!t}_&!=J!v|EI?0p|l6q6+Hrz(hrozt+L-C@-_pq_u4%ivdfF$Vptz)ac*d?GmT z$hLJmW#z_>p^rj~38$R;J|Xx?ajG~cy>RM%M8A@M#N=77;)2O^qT4tH&ZY7x3MAc7J%Z=8hcsjHF7ad_2!MCw=W{fXmUw7yH_yhr)PvX0# z2YWq5cgRn?*fQ<6x8jx@5)$3mfJ=SNdfd2owVz+a?#;Un<-BjQCx)et$-wrM=Z_k8 zDm^~Z`{J z_+ixtqdQ(tGs;!kYBnKBb3!Hy`-jRoPWOtOw3mse%j#le-UN&7z(_u08*vN{CIBiHKQ?$; zI3lYUFDY$z=)bYi;MvmXNdKT~c_$o~$HNIH9lZ;lP~<*s%0XG{yI+lZax`pb zUe^0MFjwjtP41_s>IbW>&1X^P?1S&u1+$OcpZ^|(nhc8;n7sq^k`T<9v0}kwc-Z-d z=LIjG$B>&xFC@R|5`Rv2LW!~EdM%OwY@=#|{RZtLw4@3V)sm5A$QkGfeiC%+LiX(< zR26d6zon!Ykx^U@p?@$HQ+5tSJNYDAh>u7FWx^u@ zdrBktcxN^tWA^YvvIm)*;jc#io&ZteTvQ(;$ zD=59B$ul{gOBU)3bL!wx>9-DJh5ArEy!ob2hbS+bCl;D$xyL@;D+p1nACL24dW;ir z!+!Prx?5WoyTAI$4^rD^VD~beL>G%xq4 zG)2;4ixFM6D_Zge$5$EpNa7e@POPwkM&&G1cGvklOWDu@OH@r3mqZ8{y*R@WGIA1> z`xC0g@kK_YG{a4z?>pL>`blYMD_u&d=g0VXY=_f$wt~0ctGuA-L(S4GJf<14G%Y5f z$ z2BG%*u+blWoe7EzG2XrM#PbrU{&(XDdYC0>yZB65pZB1(`8vOL5GS=ytD4W7U!wxf9(sxc)Rh7o`fHb@SX^v_kR^00E z#ek&|_xI$OOP-r+@gda%O;>_+h}=`kEn3vMiDvCnPBzG;^iWw_;TAU#P_u>JRADO@ z70d3bGxVaZbW3PCIF|I%V2Ho1qA(rNdDBqwcJ^$k{7s)XQ_rx|mhid45O!PnmfXr~ z^-~vHJow7I5#)3CHTqdGMX|2(Z-!<(bObk7AhzvatZN>Mbb=Xp#xD(gJIIeEyp7Zb zt6Vo}l%)=eRcj2<_sC~~Rk%ANSv6@7cU8}& ztr^iWf3vYVHES5-P4!qVji@Ywf5%P;_|$@Tka=6`9elwTuEs$NKX%&&71>%=K60_#C!{m5*~*kfX8-B_u_l0i#79O58o*RNx$mzLuq=j zBMRF{lRtc)sl^QNyf_aP($C%GXNNqW+%I&1>l{v%I|MbGkirVHjHLF`r=#*RU@p;JwXuh8Ys)Bfem-tVbCUZDfTdvbz+ri|(63JGbwi5?>?RUQU6{)=# zCQk~7pk16Vy)2w@GU8VK^5k#JFGbNp5XvVYy9nh&?li$+l1guBTo`g&0}sJwi7Ke- zrB?lJW;x#KTtQ|!A7d7E_immzwZz~YesD(&3UL?>HpIz7Pcinj@^f|@o3<-->$aBH zF9;a#ByB7Q+G3P`sr#B!=!k^Zl%!R4hQ*3oXc2yIET8D-C$)?uqvvfGhn25)VS z3yY(I8NwP`le>1ufLGvP;iCc;X2#ZMz`hxJYG<54n06uK(>)rjZ7w0Z zjl>Nm*BV;o<9$v)Xh4RRy*nElY+xWYc}E9;3@eEc&~*grKI zH0hT1!){*AGJeyXJiI~g1_~RDC6biEend(M+u^QifhqorD%wa^x$J_OLt5U{$mx+x zpWE+4h0V^s+})r>Do9LSOQBseEtMCrFG39z3K+dTjxB_}_X}beA#YIBf@rQIW_y8u z2PP>-0yx}1N$sWgebyQx2;`3e0Q?XtVoCc1x;WE8`zkNeYR)VCVlfz-4zLUeLlFju{tw-sTQq`nScd(_s)8{WG zqZaz<+2ur zE_w-^FyWh6WWjSym*utvt%ep${I< zCaW~kFugiqIa98GNAwK>oxT<*N0hZR7KTB zr&TWcrql(*WqCOkkrFi-Bqf$)1B<=(rnE_byTeY&CCTu~E`51g?kIH5f4tly*Cz^d zrmmCz0E5N5HG5i+Mk3J~MgR?5;rJOMX>HUR*?iiBB9JvXO`B=O0R@j;6if7ko(8D$ zYj!*xHH;bY>62$bov>}scK$-k`6D^E?gmkIlTuHIWn!wrca;zoOKo=~ur;h=qAUiG zDctxT>B#DuA^#=2KctMSp08wCYA(lE?Ha4Qnm*#ZDV#i!Q?iGjM0V|fQNH{w<`rGwl=n#9 z)~5@HNws0ZIG||DFo3}AcX>^r^;QOPZHlW{0>FOdTY z;Npr8iE#uo2rV_A?Fbz~ybbuZE{a`ni{Lyp89w`0?rGR>yb3DG&q7`8yWFaqK77OR zp_oI(f1-rDYp5PiRuoroV9W*>#gLI`B>#Nog*`Wy_(vofh1^QrRfMD_Rp6R^!pggpzQ zPwBPYH$%=pQRD6W)wrx`e^06sfq!y`KaIl_yxZC>QErzZQ$~l<)hXZy{dixM(k&`i z&Z>LMAx74;dKPgS(2maXJ+2O z;t|g#SKxBkk8)JL_OAdHvXpx{W+c%@ZW!J{W|+j!JgxQ>{i_m z(^0)4-%fd5JoPe{37n`+ntgPidb0O2{TZJLnfeWH5cVnh`RALgDfW-a63MdZOO?Xw zbaz@~xYm?wgu|E9lHG=!NU=~_kt5P(rA>*jQUee1=|Nw>p9%m~y_%XGul*@3Gac5L z)M`b6cv>rb+-t5{zDsWVbc{AcPNNbdLygiQ6V0>m48sGq(6 zIwc@(i=PUtCfTAycE;+NNW0^*Hd0%UC}_frWiGFnXT0I6k-zYTE*;U59oa9b4|2!* z5!Jai#T7q4s|9Q+-4Qd|>}=t(;=U1E<^B5I$#9S~J@xzslnV#n5^fD4XaC|8_0@}C zMB|oqt|#jmR%lm>HbQf4DpOY$8fn=Q20p)n0#pv$xgedQol(Srb6Qk3>9ea}zG`&8 zhgQaxc68A!bq0$O?G>~ENUvjr60YV{c(@@27Q&z_U_iK5-Eu`sY~^>pPM<3x=kN9C z-x2Sjhzyoou5R@c0&>LsDd;-sK7>&fCLV}kJHKEvvMG47=#qI4h9p`Oyh#fdJPz>A5}6Ubtv#r^0=8x{UxXb zk~4_Z!Eddk^2Zb}42nbLoZk?=HZ;HToBj2GUG>*5{a84Gi!SJy+lim;WlNqL zdMcx`zY5~t#&|76F4g!m_50Hf0FjHfQ-IKTxr!y}3j>(zWo>c`wAE?Af~PMD!fapF z*|6kPSd>_~=-i{pH@^sNEL@KKTF3ahVTvovh~BXgvDSNSxcyt_dq&ofg=Bq*+8nD= zi=k;g`OgndrHl(-Ts-YYIpx`QPB+?jJt`r&lgTOg5W-4NL;h0bio~Ns;A`HiI?m!( ziDo!bOh-d5lt%hb_AXlX>@ci~5hJ~f+z+zb?GIw*L!1m_%}AKxsqVaYo`uCAb3PA$ zI>5A`hMQ0jYk*-=G{1D=^>PvMJ1b{7RW<^Dq|p2mtowH-h+D#4)`XNNXWg-hcnb+{CQEj0zJI%I5`)NIl*sV*F2c&lFfR??l^ex9tmU_5}S55l8%x^*>?TDZKpb}->2|i_4(T!&H{;hVt_quE7uR7B=&Qt zyuM7arCo%bRv%fE;P`3QTPemHj4en4=z=$Fr!CLo19mT5C>*&!^slU}cM+jf@1lZa zsF=ktpJ@FeRnMj33akoo@fu$ym1F;fEV2`1Al}+KKVFZGig)lsRjBuks5wQy*%=j^ zXfJMWqwFhc-L#fiaSdQdBSJfI(+4(2(>lf)15PkO`&7V278p5VLV=ii)ynAMU#w+B z0)8KK{4MC{Xd~~r!Fz^GIh#9kqpu<7xhMNWKL&ZtrN7;XW@)~0mAkeH$DgX+C_f|1 zLH~p!Oj>BclZ^pW`E0Q=4j#ZD)q&aHPJl12zAIjF`t6-kZKVP#*t8X;{8RM>(G2qR zbDJu3{3$OKzQ}oCMn;l;bI!MM;7HN7TU$VhW2g<<0&AYavid0!qpoiJ!eguj#vA

1@ob9w;2Vxf6}P}R;YjEO^~xQdYk|3PS1)8r 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 Nd+0HWzs2t<{s+D$-&g" : ""); + addSimpleMapper(" KEY_KEY_GENERIC_TYPE", type.isObject() ? "<"+type.getKeyType()+", "+type.getKeyType()+">" : ""); addSimpleMapper(" VALUE_GENERIC_TYPE", valueType.isObject() ? "<"+valueType.getValueType()+">" : ""); + addSimpleMapper(" VALUE_VALUE_GENERIC_TYPE", valueType.isObject() ? "<"+valueType.getValueType()+", "+valueType.getValueType()+">" : ""); addSimpleMapper(" KEY_VALUE_GENERIC_TYPE", type.isObject() ? (valueType.isObject() ? "<"+type.getKeyType()+", "+valueType.getValueType()+">" : "<"+type.getKeyType()+">") : (valueType.isObject() ? "<"+valueType.getValueType()+">" : "")); - addSimpleMapper(" KEY_KEY_VALUE_GENERIC_TYPE", type.isObject() ? (valueType.isObject() ? "<"+type.getKeyType()+", "+type.getKeyType()+", "+valueType.getValueType()+">" : "<"+type.getKeyType()+", "+type.getKeyType()+">") : (valueType.isObject() ? "<"+valueType.getValueType()+">" : "")); + addSimpleMapper(" KEY_VALUE_VALUE_GENERIC_TYPE", type.isObject() ? (valueType.isObject() ? "<"+type.getKeyType()+", "+valueType.getValueType()+", "+valueType.getValueType()+">" : "<"+type.getKeyType()+">") : (valueType.isObject() ? "<"+valueType.getValueType()+", "+valueType.getValueType()+">" : "")); addSimpleMapper(" NO_GENERIC_TYPE", type.isObject() ? "" : ""); addSimpleMapper(" KEY_COMPAREABLE_TYPE", type.isObject() ? "<"+type.getKeyType()+" extends Comparable>" : ""); addSimpleMapper(" KEY_SUPER_GENERIC_TYPE", type.isObject() ? "" : ""); addSimpleMapper(" VALUE_SUPER_GENERIC_TYPE", valueType.isObject() ? "" : ""); addSimpleMapper(" KEY_VALUE_SUPER_GENERIC_TYPE", type.isObject() ? (valueType.isObject() ? "" : "") : (valueType.isObject() ? "" : "")); + addSimpleMapper(" GENERIC_KEY_BRACES", type.isObject() ? " <"+type.getKeyType()+">" : ""); addSimpleMapper(" GENERIC_VALUE_BRACES", type.isObject() ? " <"+valueType.getValueType()+">" : ""); addSimpleMapper(" GENERIC_KEY_VALUE_BRACES", type.isObject() ? (valueType.isObject() ? " <"+type.getKeyType()+", "+valueType.getValueType()+">" : " <"+type.getKeyType()+">") : (valueType.isObject() ? " <"+valueType.getValueType()+">" : "")); @@ -71,6 +75,8 @@ public class GlobalVariables addInjectMapper("KEY_EQUALS_NULL", type.getComparableValue()+" == "+(type.isPrimitiveBlocking() ? type.getEmptyValue() : (type.needsCast() ? type.getEmptyValue() : "0"))).removeBraces(); addArgumentMapper("KEY_EQUALS_NOT", type.getEquals(true)).removeBraces(); addArgumentMapper("KEY_EQUALS", type.getEquals(false)).removeBraces(); + addArgumentMapper("VALUE_EQUALS_NOT", valueType.getEquals(true)).removeBraces(); + addArgumentMapper("VALUE_EQUALS", valueType.getEquals(false)).removeBraces(); addArgumentMapper("COMPARE_TO_KEY", type.isObject() ? "((Comparable)%1$s).compareTo((T)%2$s)" : type.getClassType()+".compare(%1$s, %2$s)").removeBraces(); addArgumentMapper("COMPARE_TO", type.isObject() ? "%1$s.compareTo(%2$s)" : type.getClassType()+".compare(%1$s, %2$s)").removeBraces(); @@ -81,7 +87,7 @@ public class GlobalVariables addInjectMapper("VALUE_TO_OBJ", valueType.isObject() ? "%s" : valueType.getClassType()+".valueOf(%s)").removeBraces(); addInjectMapper("OBJ_TO_VALUE", valueType.isObject() ? "%s" : "%s."+valueType.getKeyType()+"Value()").removeBraces(); - addInjectMapper("CLASS_TO_VALUE", "(("+valueType.getClassType()+")%s)."+valueType.getKeyType()+"Value()").removeBraces(); + addInjectMapper("CLASS_TO_VALUE", "(("+valueType.getClassValueType()+")%s)."+valueType.getValueType()+"Value()").removeBraces(); addInjectMapper("KEY_TO_HASH", type.isObject() ? "%s.hashCode()" : type.getClassType()+".hashCode(%s)").removeBraces(); @@ -97,13 +103,19 @@ public class GlobalVariables return this; } + public GlobalVariables createPreFunctions() + { + addSimpleMapper("ENTRY_SET", type.getFileType().toLowerCase()+"2"+valueType.getFileType()+"EntrySet"); + return this; + } + public GlobalVariables createClassTypes() { addSimpleMapper("JAVA_PREDICATE", type.isPrimitiveBlocking() ? "" : type.getCustomJDKType().getFileType()+"Predicate"); addSimpleMapper("JAVA_CONSUMER", type.isPrimitiveBlocking() ? "" : "java.util.function."+type.getCustomJDKType().getFileType()+"Consumer"); addSimpleMapper("JAVA_FUNCTION", type.getFunctionClass(valueType)); - addSimpleMapper("JAVA_BI_FUNCTION", type.getBiFunctionClass(valueType)); - addSimpleMapper("UNARY_OPERATOR", type.isObject() ? "" : type == ClassType.BOOLEAN ? "BinaryOperator" : type.getCustomJDKType().getFileType()+"UnaryOperator"); + addSimpleMapper("JAVA_BINARY_OPERATOR", type == ClassType.BOOLEAN ? "" : (type.isObject() ? "java.util.function.BinaryOperator" : "java.util.function."+type.getCustomJDKType().getFileType()+"BinaryOperator")); + addSimpleMapper("JAVA_UNARY_OPERATOR", type.isObject() ? "BinaryOperator" : type == ClassType.BOOLEAN ? "" : type.getCustomJDKType().getFileType()+"UnaryOperator"); //Final Classes addClassMapper("ARRAY_LIST", "ArrayList"); @@ -130,18 +142,19 @@ public class GlobalVariables addClassMapper("COLLECTIONS", "Collections"); addClassMapper("ARRAYS", "Arrays"); addClassMapper("ITERATORS", "Iterators"); + addBiClassMapper("MAPS", "Maps", "2"); //Interfaces addClassMapper("LIST_ITERATOR", "ListIterator"); addClassMapper("BI_ITERATOR", "BidirectionalIterator"); addBiClassMapper("BI_CONSUMER", "Consumer", ""); - addBiClassMapper("BI_FUNCTION", "BiFunction", "2"); addClassMapper("ITERATOR", "Iterator"); addClassMapper("ITERABLE", "Iterable"); addClassMapper("COLLECTION", "Collection"); addBiClassMapper("FUNCTION", "Function", "2"); addClassMapper("LIST_ITER", "ListIter"); addClassMapper("LIST", "List"); + addBiClassMapper("MAP", "Map", "2"); addClassMapper("NAVIGABLE_SET", "NavigableSet"); addClassMapper("PRIORITY_QUEUE", "PriorityQueue"); addClassMapper("PRIORITY_DEQUEUE", "PriorityDequeue"); @@ -149,6 +162,7 @@ public class GlobalVariables addClassMapper("SET", "Set"); addClassMapper("STRATEGY", "Strategy"); addClassMapper("STACK", "Stack"); + addBiClassMapper("UNARY_OPERATOR", "UnaryOperator", ""); if(type.isObject()) { addSimpleMapper("CONSUMER", "Consumer"); @@ -166,30 +180,38 @@ public class GlobalVariables public GlobalVariables createFunctions() { - addSimpleMapper("APPLY_VALUE", "applyAs"+valueType.getCustomJDKType().getNonFileType()); - addSimpleMapper("APPLY", "applyAs"+type.getCustomJDKType().getNonFileType()); - addFunctionMapper("NEXT", "next"); - addSimpleMapper("TO_ARRAY", "to"+type.getNonFileType()+"Array"); - addFunctionMapper("GET_KEY", "get"); - addFunctionValueMapper("GET_VALUE", "get"); + addSimpleMapper("APPLY_VALUE", "applyAs"+valueType.getNonFileType()); + addSimpleMapper("APPLY_CAST", "applyAs"+type.getCustomJDKType().getNonFileType()); + addSimpleMapper("APPLY", "applyAs"+type.getNonFileType()); + addFunctionValueMappers("COMPUTE_IF_ABSENT", "compute%sIfAbsent"); + addFunctionValueMappers("COMPUTE_IF_PRESENT", "compute%sIfPresent"); + addFunctionValueMapper("COMPUTE", "compute"); addFunctionMapper("ENQUEUE_FIRST", "enqueueFirst"); addFunctionMapper("ENQUEUE", "enqueue"); addFunctionMapper("DEQUEUE_LAST", "dequeueLast"); addFunctionMapper("DEQUEUE", "dequeue"); - addFunctionMapper("REMOVE_KEY", "rem"); - addFunctionMapper("REMOVE_LAST", "removeLast"); - addFunctionMapper("REMOVE", "remove"); + addFunctionMappers("ENTRY_KEY", "get%sKey"); + addFunctionValueMappers("ENTRY_VALUE", "get%sValue"); + addFunctionMapper("POLL_FIRST_KEY", "pollFirst"); + addFunctionMapper("POLL_LAST_KEY", "pollLast"); + addFunctionMapper("FIRST_KEY", "first"); + addFunctionMapper("GET_KEY", "get"); + addFunctionValueMapper("GET_VALUE", "get"); + addFunctionMapper("LAST_KEY", "last"); + addFunctionValueMapper("MERGE", "merge"); + addFunctionMapper("NEXT", "next"); addFunctionMapper("PREVIOUS", "previous"); addFunctionMapper("PEEK", "peek"); addFunctionMapper("POP", "pop"); addFunctionMapper("PUSH", "push"); - addFunctionMapper("TOP", "top"); - addFunctionMappers("REPLACE", "replace%ss"); + addFunctionMapper("REMOVE_KEY", "rem"); + addFunctionMapper("REMOVE_LAST", "removeLast"); + addFunctionMapper("REMOVE", "remove"); + addFunctionValueMappers("REPLACE_VALUES", valueType.isObject() ? "replaceObjects" : "replace%ss"); + addFunctionMappers("REPLACE", type.isObject() ? "replaceObjects" : "replace%ss"); addFunctionMappers("SORT", "sort%ss"); - addFunctionMapper("POLL_FIRST_KEY", "pollFirst"); - addFunctionMapper("FIRST_KEY", "first"); - addFunctionMapper("POLL_LAST_KEY", "pollLast"); - addFunctionMapper("LAST_KEY", "last"); + addSimpleMapper("TO_ARRAY", "to"+type.getNonFileType()+"Array"); + addFunctionMapper("TOP", "top"); return this; } @@ -199,10 +221,9 @@ public class GlobalVariables flags.add("VALUE_"+valueType.getCapType()); if(type == valueType) flags.add("SAME_TYPE"); if(type.hasFunction(valueType)) flags.add("JDK_FUNCTION"); - if(type.hasBiFunction(valueType)) flags.add("JDK_BI_FUNCTION"); if(!type.needsCustomJDKType()) flags.add("JDK_TYPE"); if(!type.isPrimitiveBlocking()) flags.add("PRIMITIVES"); - if(valueType.isPrimitiveBlocking()) flags.add("VALUE_PRIMITIVES"); + if(!valueType.isPrimitiveBlocking()) flags.add("VALUE_PRIMITIVES"); if(valueType.needsCustomJDKType()) flags.add("JDK_VALUE"); return this; } @@ -232,14 +253,15 @@ public class GlobalVariables private void addClassMapper(String pattern, String replacement) { - operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, type.getFileType()+replacement)); operators.add(new SimpleMapper(type.name()+"[VALUE_"+pattern+"]", "VALUE_"+pattern, valueType.getFileType()+replacement)); + operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, type.getFileType()+replacement)); } private void addBiClassMapper(String pattern, String replacement, String splitter) { + operators.add(new SimpleMapper(type.name()+"[KEY_"+pattern+"]", "KEY_"+pattern, type.getFileType()+splitter+type.getFileType()+replacement)); + operators.add(new SimpleMapper(type.name()+"[VALUE_"+pattern+"]", "VALUE_"+pattern, valueType.getFileType()+splitter+valueType.getFileType()+replacement)); operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, type.getFileType()+splitter+valueType.getFileType()+replacement)); - } private void addAbstractMapper(String pattern, String replacement) @@ -262,6 +284,11 @@ public class GlobalVariables operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, String.format(replacement, type.getNonFileType()))); } + private void addFunctionValueMappers(String pattern, String replacement) + { + operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, String.format(replacement, valueType.getNonFileType()))); + } + private void addSimpleMapper(String pattern, String replacement) { operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, replacement)); diff --git a/src/main/java/speiger/src/builder/example/TestBuilder.java b/src/main/java/speiger/src/builder/example/TestBuilder.java index 38dcf088..8a0e4296 100644 --- a/src/main/java/speiger/src/builder/example/TestBuilder.java +++ b/src/main/java/speiger/src/builder/example/TestBuilder.java @@ -27,6 +27,11 @@ public class TestBuilder extends TemplateProcessor super(Paths.get("src/main/resources/speiger/assets/collections/templates/"), Paths.get("src/main/java/speiger/src/collections/"), Paths.get("src/main/resources/speiger/assets/collections/")); } + public TestBuilder(Path sourceFolder, Path outputFolder, Path dataFolder) + { + super(sourceFolder, outputFolder, dataFolder); + } + @Override protected boolean isFileValid(Path fileName) { @@ -58,7 +63,9 @@ public class TestBuilder extends TemplateProcessor } biRequired.put("BiConsumer", ""); biRequired.put("Function", "2"); - biRequired.put("BiFunction", "2"); + biRequired.put("UnaryOperator", ""); + biRequired.put("Map", "2"); + biRequired.put("Maps", "2"); nameRemapper.put("BiConsumer", "%sConsumer"); nameRemapper.put("IArray", "I%sArray"); nameRemapper.put("AbstractCollection", "Abstract%sCollection"); @@ -74,6 +81,7 @@ public class TestBuilder extends TemplateProcessor type.createFlags(); type.createHelperVariables(); type.createVariables(); + type.createPreFunctions(); type.createClassTypes(); type.createFunctions(); if(mainType == subType) variables.add(type); @@ -122,7 +130,14 @@ public class TestBuilder extends TemplateProcessor { try { - new TestBuilder().process(false); + if(args.length == 0) { + new TestBuilder().process(false); + } else if(args.length == 3) { + new TestBuilder(Paths.get(args[0]), Paths.get(args[1]), Paths.get(args[2])).process(false); + } else { + System.out.println("Invalid argument count passed in"); + System.exit(1); + } } catch(InterruptedException e) { diff --git a/src/main/resources/speiger/assets/collections/templates/functions/function/BiFunction.template b/src/main/resources/speiger/assets/collections/templates/functions/function/BiFunction.template deleted file mode 100644 index 21217246..00000000 --- a/src/main/resources/speiger/assets/collections/templates/functions/function/BiFunction.template +++ /dev/null @@ -1,26 +0,0 @@ -package speiger.src.collections.PACKAGE.functions.function; - -@FunctionalInterface -#if JDK_BI_FUNCTION -public interface BI_FUNCTION KEY_VALUE_GENERIC_TYPE extends JAVA_BI_FUNCTION KEY_KEY_VALUE_GENERIC_TYPE -#else -public interface BI_FUNCTION KEY_VALUE_GENERIC_TYPE -#endif -{ - public VALUE_TYPE GET_VALUE(KEY_TYPE k, KEY_TYPE v); -#if JDK_BI_FUNCTION -#if VALUE_BOOLEAN - - @Override - public default VALUE_TYPE test(KEY_TYPE k, KEY_TYPE v) { return GET_VALUE(k, v); } -#else if VALUE_OBJECT - - @Override - public default VALUE_TYPE apply(KEY_TYPE k, KEY_TYPE v) { return GET_VALUE(k, v); } -#else - - @Override - public default VALUE_TYPE APPLY_VALUE(KEY_TYPE k, KEY_TYPE v) { return GET_VALUE(k, v); } -#endif -#endif -} \ No newline at end of file diff --git a/src/main/resources/speiger/assets/collections/templates/functions/function/UnaryOperator.template b/src/main/resources/speiger/assets/collections/templates/functions/function/UnaryOperator.template new file mode 100644 index 00000000..14750b50 --- /dev/null +++ b/src/main/resources/speiger/assets/collections/templates/functions/function/UnaryOperator.template @@ -0,0 +1,25 @@ +package speiger.src.collections.PACKAGE.functions.function; + +import java.util.function.BiFunction; + +#if !SAME_TYPE || TYPE_BOOLEAN || !JDK_TYPE +public interface UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE extends BiFunction +#else +#if SAME_TYPE && TYPE_OBJECT +public interface UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE extends BiFunction +#else +public interface UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE extends BiFunction, JAVA_BINARY_OPERATOR +#endif +#endif +{ +#if TYPE_OBJECT && VALUE_OBJECT +#else if SAME_TYPE && !TYPE_OBJECT && JDK_TYPE && !TYPE_BOOLEAN + @Override + public default CLASS_VALUE_TYPE apply(CLASS_TYPE k, CLASS_VALUE_TYPE v) { return VALUE_TO_OBJ(APPLY_VALUE(OBJ_TO_KEY(k), OBJ_TO_VALUE(v))); } +#else + public VALUE_TYPE APPLY_VALUE(KEY_TYPE k, VALUE_TYPE v); + + @Override + public default CLASS_VALUE_TYPE apply(CLASS_TYPE k, CLASS_VALUE_TYPE v) { return VALUE_TO_OBJ(APPLY_VALUE(OBJ_TO_KEY(k), OBJ_TO_VALUE(v))); } +#endif +} \ No newline at end of file diff --git a/src/main/resources/speiger/assets/collections/templates/lists/ArrayList.template b/src/main/resources/speiger/assets/collections/templates/lists/ArrayList.template index bd4159eb..b957b27d 100644 --- a/src/main/resources/speiger/assets/collections/templates/lists/ArrayList.template +++ b/src/main/resources/speiger/assets/collections/templates/lists/ArrayList.template @@ -14,7 +14,7 @@ import java.util.function.Predicate; import java.util.function.UnaryOperator; #if PRIMITIVES import java.util.function.JAVA_PREDICATE; -import java.util.function.UNARY_OPERATOR; +import java.util.function.JAVA_UNARY_OPERATOR; #endif import speiger.src.collections.PACKAGE.collections.COLLECTION; @@ -595,10 +595,10 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE * @throws NullPointerException if o is null */ @Override - public void REPLACE(UNARY_OPERATOR o) { + public void REPLACE(JAVA_UNARY_OPERATOR o) { for(int i = 0;i, FUNCTION KEY_VALUE_GENERIC_TYPE +{ + public VALUE_TYPE getDefaultReturnValue(); + public MAP KEY_VALUE_GENERIC_TYPE setDefaultReturnValue(VALUE_TYPE v); + + public VALUE_TYPE put(KEY_TYPE key, VALUE_TYPE value); + public VALUE_TYPE putIfAbsent(KEY_TYPE key, VALUE_TYPE value); +#if VALUE_PRIMITIVES + public boolean addTo(KEY_TYPE key, VALUE_TYPE value); +#endif + + public void putAll(MAP KEY_VALUE_GENERIC_TYPE m); + +#if !TYPE_OBJECT + public boolean containsKey(KEY_TYPE key); + + @Override + public default boolean containsKey(Object key) { + return key instanceof CLASS_TYPE && containsKey(CLASS_TO_KEY(key)); + } + +#endif +#if !VALUE_OBJECT + public boolean containsValue(VALUE_TYPE value); + + @Override + public default boolean containsValue(Object value) { + return value instanceof CLASS_VALUE_TYPE && containsValue(CLASS_TO_VALUE(value)); + } + +#endif +#if !TYPE_OBJECT + public VALUE_TYPE remove(KEY_TYPE key); + + @Override + public default CLASS_VALUE_TYPE remove(Object key) { + return key instanceof CLASS_TYPE ? VALUE_TO_OBJ(remove(CLASS_TO_KEY(key))) : VALUE_TO_OBJ(getDefaultReturnValue()); + } + +#endif +#if !TYPE_OBJECT || !VALUE_OBJECT + public boolean remove(KEY_TYPE key, VALUE_TYPE value); + + @Override + public default boolean remove(Object key, Object value) { +#if TYPE_OBJECT + return value instanceof CLASS_VALUE_TYPE && remove((KEY_TYPE)key, CLASS_TO_VALUE(value)); +#else if VALUE_OBJECT + return key instanceof CLASS_TYPE && remove(CLASS_TO_KEY(key), (VALUE_TYPE)value); +#else + return key instanceof CLASS_TYPE && value instanceof CLASS_VALUE_TYPE && remove(CLASS_TO_KEY(key), CLASS_TO_VALUE(value)); +#endif + } +#endif + + public boolean replace(KEY_TYPE key, VALUE_TYPE oldValue, VALUE_TYPE newValue); + public VALUE_TYPE replace(KEY_TYPE key, VALUE_TYPE value); + public void REPLACE_VALUES(UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE mappingFunction); + public VALUE_TYPE COMPUTE(KEY_TYPE key, UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE mappingFunction); + public VALUE_TYPE COMPUTE_IF_ABSENT(KEY_TYPE key, FUNCTION KEY_VALUE_GENERIC_TYPE mappingFunction); + public VALUE_TYPE COMPUTE_IF_PRESENT(KEY_TYPE key, UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE mappingFunction); + public VALUE_TYPE MERGE(KEY_TYPE key, VALUE_TYPE value, VALUE_UNARY_OPERATOR VALUE_VALUE_GENERIC_TYPE mappingFunction); + +#if !TYPE_OBJECT || !VALUE_OBJECT + @Override + public default boolean replace(CLASS_TYPE key, CLASS_VALUE_TYPE oldValue, CLASS_VALUE_TYPE newValue) { + return replace(OBJ_TO_KEY(key), OBJ_TO_VALUE(oldValue), OBJ_TO_VALUE(newValue)); + } + + @Override + public default CLASS_VALUE_TYPE replace(CLASS_TYPE key, CLASS_VALUE_TYPE value) { + return VALUE_TO_OBJ(replace(OBJ_TO_KEY(key), OBJ_TO_VALUE(value))); + } + + @Override + public VALUE_TYPE GET_VALUE(KEY_TYPE key); + public VALUE_TYPE getOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue); + + @Override + public default CLASS_VALUE_TYPE get(Object key) { +#if TYPE_OBJECT + return VALUE_TO_OBJ(GET_VALUE((CLASS_TYPE)key)); +#else + return VALUE_TO_OBJ(key instanceof CLASS_TYPE ? GET_VALUE(CLASS_TO_KEY(key)) : getDefaultReturnValue()); +#endif + } + + @Override + public default CLASS_VALUE_TYPE getOrDefault(Object key, CLASS_VALUE_TYPE defaultValue) { +#if TYPE_OBJECT + CLASS_VALUE_TYPE value = VALUE_TO_OBJ(GET_VALUE((CLASS_TYPE)key)); +#else + CLASS_VALUE_TYPE value = VALUE_TO_OBJ(key instanceof CLASS_TYPE ? GET_VALUE(CLASS_TO_KEY(key)) : getDefaultReturnValue()); +#endif + return VALUE_EQUALS_NOT(value, getDefaultReturnValue()) || containsKey(key) ? value : defaultValue; + } + +#endif + @Override + public default void replaceAll(BiFunction mappingFunction) { + REPLACE_VALUES(mappingFunction instanceof UNARY_OPERATOR ? (UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE)mappingFunction : (K, V) -> OBJ_TO_VALUE(mappingFunction.apply(KEY_TO_OBJ(K), VALUE_TO_OBJ(V)))); + } + + @Override + public default CLASS_VALUE_TYPE compute(CLASS_TYPE key, BiFunction mappingFunction) { + return VALUE_TO_OBJ(COMPUTE(OBJ_TO_KEY(key), mappingFunction instanceof UNARY_OPERATOR ? (UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE)mappingFunction : (K, V) -> OBJ_TO_VALUE(mappingFunction.apply(KEY_TO_OBJ(K), VALUE_TO_OBJ(V))))); + } + + @Override + public default CLASS_VALUE_TYPE computeIfAbsent(CLASS_TYPE key, Function mappingFunction) { + return VALUE_TO_OBJ(COMPUTE_IF_ABSENT(OBJ_TO_KEY(key), mappingFunction instanceof FUNCTION ? (FUNCTION KEY_VALUE_GENERIC_TYPE)mappingFunction : K -> OBJ_TO_VALUE(mappingFunction.apply(KEY_TO_OBJ(K))))); + } + + @Override + public default CLASS_VALUE_TYPE computeIfPresent(CLASS_TYPE key, BiFunction mappingFunction) { + return VALUE_TO_OBJ(COMPUTE_IF_PRESENT(OBJ_TO_KEY(key), mappingFunction instanceof UNARY_OPERATOR ? (UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE)mappingFunction : (K, V) -> OBJ_TO_VALUE(mappingFunction.apply(KEY_TO_OBJ(K), VALUE_TO_OBJ(V))))); + } + + @Override + public default CLASS_VALUE_TYPE merge(CLASS_TYPE key, CLASS_VALUE_TYPE value, BiFunction mappingFunction) { + return VALUE_TO_OBJ(MERGE(OBJ_TO_KEY(key), OBJ_TO_VALUE(value), mappingFunction instanceof VALUE_UNARY_OPERATOR ? (VALUE_UNARY_OPERATOR VALUE_VALUE_GENERIC_TYPE)mappingFunction : (K, V) -> OBJ_TO_VALUE(mappingFunction.apply(VALUE_TO_OBJ(K), VALUE_TO_OBJ(V))))); + } + + public void forEach(BI_CONSUMER KEY_VALUE_GENERIC_TYPE action); + + @Override + public default void forEach(BiConsumer action) { + forEach(action instanceof BI_CONSUMER ? (BI_CONSUMER KEY_VALUE_GENERIC_TYPE)action : (K, V) -> action.accept(KEY_TO_OBJ(K), VALUE_TO_OBJ(V))); + } + + @Override + public SET KEY_GENERIC_TYPE keySet(); + @Override + public VALUE_COLLECTION VALUE_GENERIC_TYPE values(); + @Override + public ObjectSet> entrySet(); + public ObjectSet ENTRY_SET(); + +#if !TYPE_OBJECT || !VALUE_OBJECT + @Override + public default CLASS_VALUE_TYPE put(CLASS_TYPE key, CLASS_VALUE_TYPE value) { + return VALUE_TO_OBJ(put(OBJ_TO_KEY(key), OBJ_TO_VALUE(value))); + } + + @Override + public default CLASS_VALUE_TYPE putIfAbsent(CLASS_TYPE key, CLASS_VALUE_TYPE value) { + return VALUE_TO_OBJ(put(OBJ_TO_KEY(key), OBJ_TO_VALUE(value))); + } +#endif + public interface FastEntrySet KEY_VALUE_GENERIC_TYPE extends ObjectSet + { + public ObjectIterator fastIterator(); + public default void fastForEach(Consumer action) { + forEach(action); + } + } + + public interface Entry KEY_VALUE_GENERIC_TYPE extends Map.Entry + { +#if !TYPE_OBJECT + public KEY_TYPE ENTRY_KEY(); + public default CLASS_TYPE getKey() { return KEY_TO_OBJ(ENTRY_KEY()); } +#endif + +#if !VALUE_OBJECT + public VALUE_TYPE ENTRY_VALUE(); + public VALUE_TYPE setValue(VALUE_TYPE value); + public default CLASS_VALUE_TYPE getValue() { return VALUE_TO_OBJ(ENTRY_VALUE()); } + public default CLASS_VALUE_TYPE setValue(CLASS_VALUE_TYPE value) { return VALUE_TO_OBJ(setValue(OBJ_TO_VALUE(value))); } +#endif + } +} \ No newline at end of file diff --git a/src/main/resources/speiger/assets/collections/templates/utils/maps/Maps.template b/src/main/resources/speiger/assets/collections/templates/utils/maps/Maps.template new file mode 100644 index 00000000..fd6aeb61 --- /dev/null +++ b/src/main/resources/speiger/assets/collections/templates/utils/maps/Maps.template @@ -0,0 +1,32 @@ +package speiger.src.collections.PACKAGE.utils.maps; + +import java.util.function.Consumer; + +import speiger.src.collections.objects.collections.ObjectIterable; +import speiger.src.collections.objects.collections.ObjectIterator; +import speiger.src.collections.PACKAGE.maps.interfaces.MAP; +import speiger.src.collections.objects.sets.ObjectSet; + +public class MAPS +{ + public static GENERIC_KEY_VALUE_BRACES ObjectIterator fastIterator(MAP KEY_VALUE_GENERIC_TYPE map) { + ObjectSet entries = map.ENTRY_SET(); + return entries instanceof MAP.FastEntrySet ? ((MAP.FastEntrySet KEY_VALUE_GENERIC_TYPE)entries).fastIterator() : entries.iterator(); + } + + public static GENERIC_KEY_VALUE_BRACES ObjectIterable fastIterable(MAP KEY_VALUE_GENERIC_TYPE map) { + ObjectSet entries = map.ENTRY_SET(); + return map instanceof MAP.FastEntrySet ? new ObjectIterable(){ + @Override + public ObjectIterator iterator() { return ((MAP.FastEntrySet KEY_VALUE_GENERIC_TYPE)entries).fastIterator(); } + @Override + public void forEach(Consumer action) { ((MAP.FastEntrySet KEY_VALUE_GENERIC_TYPE)entries).fastForEach(action); } + } : entries; + } + + public static GENERIC_KEY_VALUE_BRACES void fastForEach(MAP KEY_VALUE_GENERIC_TYPE map, Consumer action) { + ObjectSet entries = map.ENTRY_SET(); + if(entries instanceof MAP.FastEntrySet) ((MAP.FastEntrySet KEY_VALUE_GENERIC_TYPE)entries).fastForEach(action); + else entries.forEach(action); + } +} \ No newline at end of file