From a97769e934266c556305ddc6e62a6597a9e46c86 Mon Sep 17 00:00:00 2001 From: Flare Microsystems Date: Thu, 3 Feb 2022 20:04:49 -0800 Subject: [PATCH] Initial commit --- .classpath | 6 + .project | 17 ++ .../sds/SDSBinaryDataType.class | Bin 0 -> 1537 bytes .../sds/SDSBooleanType.class | Bin 0 -> 1418 bytes .../flaremicrosystems/sds/SDSByteType.class | Bin 0 -> 1385 bytes .../flaremicrosystems/sds/SDSCharType.class | Bin 0 -> 1410 bytes .../flaremicrosystems/sds/SDSDoubleType.class | Bin 0 -> 1408 bytes .../flaremicrosystems/sds/SDSFloatType.class | Bin 0 -> 1396 bytes .../flaremicrosystems/sds/SDSIntType.class | Bin 0 -> 1388 bytes .../sds/SDSInvalidSizeException.class | Bin 0 -> 483 bytes .../flaremicrosystems/sds/SDSListType.class | Bin 0 -> 3413 bytes .../flaremicrosystems/sds/SDSLongType.class | Bin 0 -> 1386 bytes .../sds/SDSNameMapType.class | Bin 0 -> 9258 bytes .../flaremicrosystems/sds/SDSNullType.class | Bin 0 -> 695 bytes bin/com/flaremicrosystems/sds/SDSObject.class | Bin 0 -> 4882 bytes .../flaremicrosystems/sds/SDSShortType.class | Bin 0 -> 1396 bytes .../flaremicrosystems/sds/SDSStringType.class | Bin 0 -> 1577 bytes .../sds/SDSTotalFailureException.class | Bin 0 -> 514 bytes .../sds/SDSUndefinedException.class | Bin 0 -> 470 bytes .../sds/SDSBinaryDataType.java | 35 ++++ .../flaremicrosystems/sds/SDSBooleanType.java | 32 +++ .../flaremicrosystems/sds/SDSByteType.java | 31 +++ .../flaremicrosystems/sds/SDSCharType.java | 31 +++ .../flaremicrosystems/sds/SDSDoubleType.java | 31 +++ .../flaremicrosystems/sds/SDSFloatType.java | 31 +++ src/com/flaremicrosystems/sds/SDSIntType.java | 31 +++ .../sds/SDSInvalidSizeException.java | 14 ++ .../flaremicrosystems/sds/SDSListType.java | 71 +++++++ .../flaremicrosystems/sds/SDSLongType.java | 31 +++ .../flaremicrosystems/sds/SDSNameMapType.java | 191 ++++++++++++++++++ .../flaremicrosystems/sds/SDSNullType.java | 13 ++ src/com/flaremicrosystems/sds/SDSObject.java | 98 +++++++++ .../flaremicrosystems/sds/SDSShortType.java | 31 +++ .../flaremicrosystems/sds/SDSStringType.java | 36 ++++ .../sds/SDSTotalFailureException.java | 14 ++ .../sds/SDSUndefinedException.java | 14 ++ 36 files changed, 758 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 bin/com/flaremicrosystems/sds/SDSBinaryDataType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSBooleanType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSByteType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSCharType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSDoubleType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSFloatType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSIntType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSInvalidSizeException.class create mode 100644 bin/com/flaremicrosystems/sds/SDSListType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSLongType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSNameMapType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSNullType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSObject.class create mode 100644 bin/com/flaremicrosystems/sds/SDSShortType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSStringType.class create mode 100644 bin/com/flaremicrosystems/sds/SDSTotalFailureException.class create mode 100644 bin/com/flaremicrosystems/sds/SDSUndefinedException.class create mode 100644 src/com/flaremicrosystems/sds/SDSBinaryDataType.java create mode 100644 src/com/flaremicrosystems/sds/SDSBooleanType.java create mode 100644 src/com/flaremicrosystems/sds/SDSByteType.java create mode 100644 src/com/flaremicrosystems/sds/SDSCharType.java create mode 100644 src/com/flaremicrosystems/sds/SDSDoubleType.java create mode 100644 src/com/flaremicrosystems/sds/SDSFloatType.java create mode 100644 src/com/flaremicrosystems/sds/SDSIntType.java create mode 100644 src/com/flaremicrosystems/sds/SDSInvalidSizeException.java create mode 100644 src/com/flaremicrosystems/sds/SDSListType.java create mode 100644 src/com/flaremicrosystems/sds/SDSLongType.java create mode 100644 src/com/flaremicrosystems/sds/SDSNameMapType.java create mode 100644 src/com/flaremicrosystems/sds/SDSNullType.java create mode 100644 src/com/flaremicrosystems/sds/SDSObject.java create mode 100644 src/com/flaremicrosystems/sds/SDSShortType.java create mode 100644 src/com/flaremicrosystems/sds/SDSStringType.java create mode 100644 src/com/flaremicrosystems/sds/SDSTotalFailureException.java create mode 100644 src/com/flaremicrosystems/sds/SDSUndefinedException.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..d171cd4 --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..a3beb69 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + SDS + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/bin/com/flaremicrosystems/sds/SDSBinaryDataType.class b/bin/com/flaremicrosystems/sds/SDSBinaryDataType.class new file mode 100644 index 0000000000000000000000000000000000000000..333eba0f82530620ee2864cf63c37cbc0ad38ed2 GIT binary patch literal 1537 zcmbtTYi|-k6g>m9TejPGOP{E{wMUBaEnm zAq+E26bzHUY&H(LUD6NhoMF0PRrGpUw+*om4kPZd;V`Th29oxxOf$s#u}FG=xA`wX znNlg8CA6W$K`vR2f;1|a!7QDe>Gh_k`9wd{wYqNBG{197k5tJnhR{Kd5*^pFDKVZX zc$tQ!2{ZSb?rGC4x;EDvY2lB&_pZWEUBfaR3Cj#K?d<%1CnD^NE11WEgqVzLxGrIp zVWFM+E3kq!++Y}aYa1@ln>3V2BA+aa%3BI7XtziIOq{A082LyaVaT+~2+h%v&QAoNKOJLYEx*n)cw zF~aJy$Q1Kg=yp@~BB4hpW69&Q0=~GKy1+_G{e-D+xN>=ptL^V|-0Vu2rcz**1kYiL zh*s#yh!%Yr@s5l*5=i#R5HVkdiWD^>WDFDe67FDwzC+MFLFGV@qNdJq_v;8bpnjlu zueHn6=1LE*(&1I`5RdwJMa<`Yj4g@?lV1>rnA@n-?)T064uu#lXyo0=jRx>tPsND< N4dIEmZU-%-e*)LsOk)55 literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSBooleanType.class b/bin/com/flaremicrosystems/sds/SDSBooleanType.class new file mode 100644 index 0000000000000000000000000000000000000000..d1a18b08091df387adad9fe2fa2b2a9dbca44af0 GIT binary patch literal 1418 zcmbtTTTc@~7(LULt}I&+TJC}(UfL~E6|b~b!o`H7u_h&b;BDIuWyyAz>`qbslMk9G z7$1z!{wU)&yKB1;(wLY{W_EVYo^$4W-~9Uh{Re<2*iaB-$Tpo$;lMIn-Z7i5+NR@J+_3jfkGX;b!}36MwQr#E3VKNE{EE9rZ=)|zPgTC|7mV%oM)*F_pT{;$V!FE?#m$JPM3-}7udP#oP@L- zqs6dsF^pY1lEvVvg$HC9u9BK^m0+fBdjTS%rG52e8ieYy-&f7P{~@6 zK%Z%Nju#Ay-v-qK*-QJmNKHa4HCfEG8D=l!6X7R7s?Ejbso)iEx5c4<4|W;Un$vZg z{EaC)K7H|atxB^D>;IBk=?YWjB9^F^;&ih?ZBG4)B#jEK)@Ww(tA37apXntAl}43j zIVLbd51<7gnp3or1fw)cf-)f`HmT>&F?N|DTCJrV$o%W^(lc3eK z&-yN8%}CbSy#59AKe2d*TW7e_*BJGWG(j3^dNRJ#Kqu4F$v{Wm*IB^>!uNGnNil|k zueTHGrS$w69)82qub9_A`G9^LGbAt@5lQt#Qh14VU!;f<%`%u3e@zmJk3AllIV{*=b-0-jN2bfLR=HO6(qDmLGE+G=P7S?dSZ!VI7qWG! zJ1%u^GE7C!1G9u+7&^+)XvnJNYbd#YLjLrcXJmQ{!A}1s5GiH%Q1l)^Z;4_ zqB%t?Nia&IBq$M5Vw1W21;z#$Qa(~LOb4itf$-GAlf=PfQ`6ZrVG^{O@mb%6tZB(Q zm(P8{!cQ!nAS6?(6M`dZ}Fg z91p+Y=~pb|KKX!t9J3@a7ZFMIL{fNxm%c~=MVe(W>;9S~5+8d!GId}v5@{^th~brw JDj~4-`VVKEE@l7# literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSCharType.class b/bin/com/flaremicrosystems/sds/SDSCharType.class new file mode 100644 index 0000000000000000000000000000000000000000..4793ac43417ba6d66c3cef8c8c8d57648cf40de5 GIT binary patch literal 1410 zcmbtTTTc@~7(LULF05NYD0e{-kzSBh@!ndA1(PO?H7V))upP>hc9-lZ$9dV2p7($X^v}!xz zUAMCYr0@#a zh7uoB;x`y3qoAH+LNE*+@phN2OkT=C`@VEN+FuC&w_S6KOJ3{B!>+7LPw-B_qi=t- z#G$lZ$Ja2!FcDZHbfwncQGVtOq%k=HhMNY)v7ka2xDSnKxOK*Gz9=1wSTb-2%M2qH zmD=dJr^L%TRuf&v74yHac!Jv}xI56e9+Wgr8WZ%S1E)QmbYCZp9P)wA8txN*ptDYjF_?kg zcBq%iD0e{-m0pCZc*E98q?nL2)}*BGOFNV$?Jn7!Mfp!YXrf?z zFh2XEjNiquYPybh;tAgM z3SP@A)GPIh zgQhy5wl906lI^QU0HyAVSvJG$xpey236N@Y@#;kID!1F>K=uC)>D3+IZSvQa>hyCz z)tYq5u<uf&v8S_7|c#4~+xE*PXs4I<=#socSD$PxsM7E#W6zyvwb3|o=6HCc&DA6o~SygKwJ~sHFM}-hrp+2#I@z1!vtqZO}Vx9hg=$aVNJA@-esAzQgrv~RG$kjYjK>?7N1+iuHJ8--k5 zDqok%BMjqFK+i5A7>17Qc9(pNTsTjAf$)6Vn+wl6p0#NUyV@0pT~QN0w>yeM-+JHR zhr;pPK*JQnn6g6X?P`BVdYLhh!FUP`Hw=toPTqdtIy9x>Cgn8vtS+Nt9t#F;W067M zlZC1GY*Wr<9d~h0!xF>PAK~*h4P=p{qwjo2aK%W)$(CgRaj#2-o9P+(+YJdxf=!0? zvoUPDkrXbkRCqOpRLyC*w&==KH~y2ZXqE~(9%5C)BZkT7)g#sn>UIh(Ma63NqkL-M z8P*syRs8Cn?4NQjQVWHowu(6}!}OVKBHRQ>x43wHEO>>xEwQiqew%Wxd0oH3%Z}{u zk?6m)B5g9P{YzfO3x-MsEKv8v=^qBQHFYSGG-|Y3rJ2dE<|(dxqL&zS8g-iGn7~zf z0HX(@IZZ1`aE(SuP$HznCe8dQhR-vk6;d)x^iUxK;i;3yh=Vf3IPFakCPAx7#rig6 z%}Cbiy!jckKQMoSTPL_P(72|qG)fv{^kkINo=&E(lYxo6(pkoR!Vh#-NHGRW>1~C2 zX)}L<2Ve2z3ueua3NVOciUg)3BI&+J8qe`Ui4;(zSq8JL)+C{Q=<~?bfw@Sev5+H% LmkL!v&(^Eof%G!3 literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSIntType.class b/bin/com/flaremicrosystems/sds/SDSIntType.class new file mode 100644 index 0000000000000000000000000000000000000000..34b7b093e21599120e59cd14ab4de281a38f9074 GIT binary patch literal 1388 zcmbtTZBNrs7(I6zE7T4I#=D>h;?^Nm@s-VK1WcAJ&SYfY%XS$hTT9wol>g)hO%#kD zjGz5c#^<(mD}*d2rpdj%_nw|}o^zl6`u+U}fJb<#Ai=QObh^et$8>quYPybh>IvTU z46o%G^__af7JH}1TtSLqWgxP)f5e-DAziX;OOzRsxqO2mwe7UHiX=uf3?a=hR<&&Y z*6;3fchB7KaE6Jh(=;)g$x7G&-i;HfWo-xm(OP zr1EvCJkBr`hlF+s!7y}Uc6{4z2It8ZCRkf&W8R8QS zPw|ZQf~&6`$o{G1WA_jRPK}kYY=*fD*~GXBkZE)A`c&{Lx7*^7L9IK!+vIO7+1q3N ze`rJ6W7ztaoJv<%DHpL!U6Z7L7u3+ynMl*9&}x%rCU^C741cDV1XLPTn&p_nHF^Lo z1ks$Kl_VIYQ4*91DY0q2aE`Id44D8a8Ky&2#6WoJ;7Q_OvZv{6nlLF^%>=CPBG#;A zoh#^Hu<#R0XSj8S)xO4PP|^fxOwyALoQ68to=z4z3W3f#?h(GPvq6dp7=hkyq?geP zXSn|jkH2C;{}cfFam6UpE?wgQnNR%n*NtOsk7P(Jo}Wa_|TEYd{8kw7Ux Jy+CNI{09_JF>wF@ literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSInvalidSizeException.class b/bin/com/flaremicrosystems/sds/SDSInvalidSizeException.class new file mode 100644 index 0000000000000000000000000000000000000000..6bee5d1c9bba65367134fee10f62d7c88f159082 GIT binary patch literal 483 zcmb7AO;5r=5PegDngWU_m=G`C{77t!-Y{H16HMd5D)*(VxTf8j?v|+k%9Du)e}F&A zI7Jc;#)Es9+4pwl&71xFdj9}$iftDT;W$bY|1K7pOjMMm=Gj=87~f2c9}dEyo{3mZ zLiHlgpCb8aRjOT-2%QHp6Mii8)W6QPRmt+5&@eJnA|A=iaQ*FYK%h%Py`O4hg|;IR z=d#QuibI6TnbOMk2(7(fsT1lU=L@4#siS)37wHiEB3G0E<@+wcpGP@DuSQ45+ z8u3WMgBdT#lD$`ka1#7`$u7Gxa|4C+FH;0BO!F*~7pfS(^T$^m6^+;hv31@Q9h6bw z>@sq&$~P85m1B*W9&--o%E93q>aX*fb&lQ-%e^idjN1#mfhHra$0oMsS}jHn+TWZB BcN+iz literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSListType.class b/bin/com/flaremicrosystems/sds/SDSListType.class new file mode 100644 index 0000000000000000000000000000000000000000..4ee403c66b3dbebcaaf07e20aba4a03e3a256f54 GIT binary patch literal 3413 zcmbtWOLG%P5dKCFuPv{!k->l;fO!Nah;+$(PIi+&SCI28r;(Rl!XY9C?%0a80?w;0y5zQL8rD(!2ZDTQO3N*#6oaMv?yaS;H0pCyDMr6*TmfnW1%JuA-6T9n*0H-IAkz9Vc*-ycVoa8Gs}w z0yvE`8eS7Ptf<;0n2rI21ezb(mSZMz4)+fvLJQJiM8_b8sH4U<2%9Vngk0FFM5?ru zkF_F-VGZZXg|E}<7{Tjwn=>EL`+>3t)f}a=$^92}yn#0bv}L0(t4x`}ZRU|La$EPm zv&Ai|=7z*V@4KNB5UXtSz3WtIpov{v#2VS_R#?_J+_6)Jin86N{-?WGI6fA@HN36iy1=2@ZmNN%BOyCbV;5)GOR_)T z)iI6B>}M%+NtV4et78uDvARZv$sR1BtL=%7;4DW?N@o$czK`-^pq#FZhFh- zmX|msh(xH7+?d!cE80!KVo|s1$8+{ICpj$hIWy${|4^x z1P;kZ3rX(ac%<_=$6(*^-00kWPcmP$)8;ix-d-Iwm*H87PT=!cYIJA(cq0VG+?KSv<^1N2+ZvF{tSKc&u# zPCobXA83V-6=_Es4sfM&H}~Kmy7+&nPI8zl&J?=gK@Z=3T=lA0KT+bNWHcOkj-!$A zGqk^izJ=pkI8|AMXEqTW{0?UYUcx&&6xqU2F3$^mvHiP5cChBr1tC>_#jhWo*1fouGX$-^Yk3LLV`VGfSDrah2^T?PVUWRlH(#iP{Ou zTi|(xehtxmbTx^~6jxK7qJaljRLZ~dO_Dy$G_H<&aL7uIEfoNAutoKE8J^Mwu$=Z#`dgi(Az$MOKK> z!|b03GYVsfxMd~X%0x?fc_=rS1HS~w#v*g@)F78u61l6pOWg!lL3p;Aj8B7*BM=4q zMDW^4Q|}fnqtYe(M8WvM z_}L$2eC}=8%3_F#X>xDxy{G4#=iH~iet-V~;0ZP*Bp8;OPDeYmbl2#ZP1o_xJm2Ve zn%DBQ`gXnQ*zNtZ6GK9ZVewjM?cmsG`V8r^X`6n9A(<~U7*bnK%aD=8kb(iE8Aht6 zZM+RS2Zp<^A6N#%Xw_-zRzr79zK%9i{*mc1ELX1;z4TXN7|U0W^;2E5bi1wb{ZgU9 zb+cUeCc}9AJTyxPhJjPv3dlva|8qL>e8;7ux#&~V(YAG8uLb@|;MaZE&^v-c-ucip zPJGj`Jqc4}MHnIUZmoO5t;{IMVSES-w-k(Gj+fr^9C?y(n_;-O%}bFnj|ByHvB)rF z(MBWmOcC$NSi-V|`wUZ;vi&9%&9TGog#Wl}AX+(OV3g zS2NhPV-Z|`M^Rm*UpL#f?gu>5t^cGetCf`~-**}0x)Zof+cxvG>;$Xa~>1={9DOybm)^}u< zv*tMKbW#0+*`Js{$DMQB>uC&&l152mjGmlu8tUY_IytB)3Y`a7A$(6~mG~3Tgx*f1 zmr;x7c=!!ZzhYMXBmliQrbu8qCX(rjWbgtng-8iynt3oQVhtp-gCDy@Ja%9%mT58~ NN#K=0RS^2x_yabAE@S`z literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSNameMapType.class b/bin/com/flaremicrosystems/sds/SDSNameMapType.class new file mode 100644 index 0000000000000000000000000000000000000000..fea798bcc8fcca25c53a698da01e8692972f6319 GIT binary patch literal 9258 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 Xnk!O`dD))B{|r>ak9lg5O{(^FfOStv literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSNullType.class b/bin/com/flaremicrosystems/sds/SDSNullType.class new file mode 100644 index 0000000000000000000000000000000000000000..b45c09942396390932b1dd002ea29b3786ab624c GIT binary patch literal 695 zcma)($x6de6o&tsq^+H-R;_MD!~roISGEKv1R>N#LKp7R^qSt1CXzwuJGpTsxbOjd zDDm8+qODN6`44Bvcm8|w`Stz*;0!w@C=B~jnz$k z-<~}25;TUrg`@ZV5qA@YVn+lbF&NatqaK5H9S(Q}D#|q!P-JMBBH-P0+~<+)^nK3I zG(*?%drl-|J}qj=P{a%e=E9{v{@M(!Sqhn+l1`RGbZonA5U1|(Z&-QF+7(jSmZMeDT0TIrPTA^Ar9m0F$2zIR85HH0 miuyvT;+IwY!&3gSWF==cu`$om=2_LHSPC|!6KtWC#qDnuxsUY# literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSObject.class b/bin/com/flaremicrosystems/sds/SDSObject.class new file mode 100644 index 0000000000000000000000000000000000000000..d66b783e46684d8e1764c4b65b86afc72b27cc14 GIT binary patch literal 4882 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 Mc%e`g1h!uO2DRxk=l}o! literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSStringType.class b/bin/com/flaremicrosystems/sds/SDSStringType.class new file mode 100644 index 0000000000000000000000000000000000000000..da0fa9625ad70f3282f20626019f3b830ca250cd GIT binary patch literal 1577 zcmbtUTTdE66#fR0#Vvw(SL&@=&p4P5Ls!%zS*`Io~;FfB*S;4d4|v75EtDidHrKsiN6>)hODQbMA1x z>ZF~LlP;_m3fwl#^4@t(SKw!uZVTQ$I?;=qA&@mpgRd}j#1jV${xz$ltLQ*i2%QKp zMDm8I@6@YDy1l0zRdj~lyj9dH2byh&vv=v|$A-g@$hQ@3Mwnq3i04nVGc8@w%yQa& z$s`Vhc8}1G-a)tl6M~`hOsmvoB=-pD(czX&k7FLaVWrnKuI<)&tdpX4I+)^6iP1Tz{!KL)zM@Hm8Cj0pppvR+gQCK!5}*KRs0rZBDG3B&LW z`Q1=Lm_e8!_}MnNzQ4Cgb+GDGmQh#Zq2Q@V6-z5ItlrLW%WO%oeI2~08M+Ea+0=Ml z7`FDGblK!eM#VEMD41s$YR$MMv=GvG&Y(~oN;2R6c%sEmuMZe}hRHB;%Y_yeYM<`1 z&U5En&+BHHAItvT3gQhl0MX7bsTjvn2+Md!?s`ya(7}hA?l33NS%H2}?#2^`IRzgW zW^QuWH=TN|X4zaXZJ0%?L}S+I5e7!)%{C%!hZSKLxK=#f)@t71s0FKT7xhg;j@GRy zUJ&vO%l}f#?0pYcGSq(L3w=L8^F+oVK&wKhMcSFTO z(cVobK@g@@5UdbVU<1k26(V;T!i0=ShCvtQF%X_6sE;_9m??T2Bo05Fh9v8@#~Kx^ zBdO$f#C~D?5|d4Vu*|2A1p3iK6e3JlB-#*(;wfgO$QMi!at3xa~Y43mEy p(s4JP3A&ji$EI4uVxCxp_EmhOf9B}FRKOiYy1yoaU5A^}#$Ts~WvKuF literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSTotalFailureException.class b/bin/com/flaremicrosystems/sds/SDSTotalFailureException.class new file mode 100644 index 0000000000000000000000000000000000000000..b51e4c22fa91b190381c80b86e0d97052dbd5472 GIT binary patch literal 514 zcmb7AO-}+b5Pe;NH7f|BAR+PK&5y)Q3^xoHkVLcbAjrKeRcdy(rtSLivpku2@CW## zjI%3|#OT2uX8K-VXWq>F$Lkw_4q7f8hT~Ah{&mE)h-Ijic`{bS#y2zLj|QW$vOF4c z8KqjBK8E7XN|m@MFtl&^J@+G?-1wJiVr9I1XQ&yWC66XT8`58$4H(!tL#3}0V|ijH zJW558Tx5qalul$KZI7X~7cA?3H|*|D7z%wg6CPHuUWSM25AAra)dQbKBG*;}nTU%t zo(etANQQc#LNdh37U2b1uybh`I>G;U(4~o}Y~xqE4BkkkIut{h_1^hwkw@9A*af4h zXb)(kh!SO&kb_maQ6;QVEECfs&Y@g7IDA3nIoH%EdS5L4b+JLXxxjU75+Xge(8y~w I2|3vQ1fO+*IRF3v literal 0 HcmV?d00001 diff --git a/bin/com/flaremicrosystems/sds/SDSUndefinedException.class b/bin/com/flaremicrosystems/sds/SDSUndefinedException.class new file mode 100644 index 0000000000000000000000000000000000000000..aab38c5b2785df761a9719f0c3fce75fcb3babc0 GIT binary patch literal 470 zcmb7AO;5r=5PegDngW6#m~ivvM`B~*4Z{UA(KKEv+?RI2HSN}P7o$JRlZgj^fIrGO ztwaxcaSt>5-p;%?v+p0TZvalQ>%t-UQI`6PMC3A6QJ$G6V`XZ56B|FAgi{^Mh0-!U ze~je4Rhf2CA$0G=gYXlfm;Uzyp>1TYL^6}P;lk<~Y;F3TtXrI*8l8KE-HV(DQ6TMc-q6Iub!a=l9DGQSb?L=rkd7O|yZW5#Q; zVsDipoCN>eZOAj3(!LP>H4?!KvsE6+3sqPT{`{Zgq78c>9-Fts09DjDyNn!c@{MIs t=h$Fo#GJ#qc6juH=5txo;^=*`-0PyvxWC5R=rH1Xbg@%v^%yzme*#W;ak>Bi literal 0 HcmV?d00001 diff --git a/src/com/flaremicrosystems/sds/SDSBinaryDataType.java b/src/com/flaremicrosystems/sds/SDSBinaryDataType.java new file mode 100644 index 0000000..5fde378 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSBinaryDataType.java @@ -0,0 +1,35 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSBinaryDataType extends SDSObject{ + + public SDSBinaryDataType() + { + } + + public SDSBinaryDataType(byte[] data) + { + this.value = data; + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeInt(value.length); + out.write(value); + } + + public SDSObject load(DataInputStream in) throws IOException, SDSUndefinedException + { + value = new byte[in.readInt()]; + return this; + } + + @Override + public int getByteLength() { + return 4 + value.length; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSBooleanType.java b/src/com/flaremicrosystems/sds/SDSBooleanType.java new file mode 100644 index 0000000..d573e93 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSBooleanType.java @@ -0,0 +1,32 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSBooleanType extends SDSObject{ + + public SDSBooleanType() { + super(); + } + public SDSBooleanType(Boolean value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeBoolean(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readBoolean(); + return this; + } + @Override + public int getByteLength() { + return 1; + } + +} diff --git a/src/com/flaremicrosystems/sds/SDSByteType.java b/src/com/flaremicrosystems/sds/SDSByteType.java new file mode 100644 index 0000000..85e9f6d --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSByteType.java @@ -0,0 +1,31 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSByteType extends SDSObject{ + + public SDSByteType() { + super(); + } + public SDSByteType(Byte value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeByte(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readByte(); + return this; + } + @Override + public int getByteLength() { + return 1; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSCharType.java b/src/com/flaremicrosystems/sds/SDSCharType.java new file mode 100644 index 0000000..5e7b928 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSCharType.java @@ -0,0 +1,31 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSCharType extends SDSObject{ + + public SDSCharType() { + super(); + } + public SDSCharType(Character value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeChar(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readChar(); + return this; + } + @Override + public int getByteLength() { + return 2; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSDoubleType.java b/src/com/flaremicrosystems/sds/SDSDoubleType.java new file mode 100644 index 0000000..87fa4d8 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSDoubleType.java @@ -0,0 +1,31 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSDoubleType extends SDSObject{ + + public SDSDoubleType() { + super(); + } + public SDSDoubleType(Double value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeDouble(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readDouble(); + return this; + } + @Override + public int getByteLength() { + return 8; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSFloatType.java b/src/com/flaremicrosystems/sds/SDSFloatType.java new file mode 100644 index 0000000..4176f95 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSFloatType.java @@ -0,0 +1,31 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSFloatType extends SDSObject{ + + public SDSFloatType() { + super(); + } + public SDSFloatType(Float value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeFloat(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readFloat(); + return this; + } + @Override + public int getByteLength() { + return 4; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSIntType.java b/src/com/flaremicrosystems/sds/SDSIntType.java new file mode 100644 index 0000000..07e5afd --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSIntType.java @@ -0,0 +1,31 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSIntType extends SDSObject{ + + public SDSIntType() { + super(); + } + public SDSIntType(Integer value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeInt(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readInt(); + return this; + } + @Override + public int getByteLength() { + return 4; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSInvalidSizeException.java b/src/com/flaremicrosystems/sds/SDSInvalidSizeException.java new file mode 100644 index 0000000..16c5f16 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSInvalidSizeException.java @@ -0,0 +1,14 @@ +package com.flaremicrosystems.sds; + +public class SDSInvalidSizeException extends RuntimeException { + + public SDSInvalidSizeException(String string) { + super(string); + } + + /** + * + */ + private static final long serialVersionUID = 1L; + +} diff --git a/src/com/flaremicrosystems/sds/SDSListType.java b/src/com/flaremicrosystems/sds/SDSListType.java new file mode 100644 index 0000000..eee804b --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSListType.java @@ -0,0 +1,71 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; + +public class SDSListType extends SDSObject>> implements Iterable { + + public SDSListType() { + this.value = new ArrayList>(); + } + + public void store(DataOutputStream out) throws IOException { + super.store(out); + out.writeInt(value.size()); + Iterator> keyIter = value.iterator(); + while (keyIter.hasNext()) { + SDSObject k = keyIter.next(); + k.store(out); + } + } + + @SuppressWarnings("unchecked") + public SDSObject load(DataInputStream in) throws IOException { + int len = in.readInt(); + for (int i = 0; i < len; i++) { + try { + SDSObject value = SDSObject.readObject(in); + this.value.add((SDSObject) value); + } catch (SDSUndefinedException e) { + e.printStackTrace(); + } + } + return this; + } + + @Override + public int getByteLength() { + int length = 4; + for (SDSObject obj : value) + length += OPCODE_BYTES + LENGTH_BYTES + obj.getByteLength(); + return length; + } + + public void add(SDSObject val) { + value.add(val); + } + + @SuppressWarnings("unchecked") + public Iterator iterator() { + return (Iterator) value.iterator(); + } + + public int size() { + return value.size(); + } + + public SDSObject get(int index) { + return value.get(index); + } + + public T[] asArray(T[] container) { + for(int i = 0; i < container.length && i < value.size(); i++) + { + container[i] = value.get(i).value; + } + return container; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSLongType.java b/src/com/flaremicrosystems/sds/SDSLongType.java new file mode 100644 index 0000000..217ae62 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSLongType.java @@ -0,0 +1,31 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSLongType extends SDSObject{ + + public SDSLongType() { + super(); + } + public SDSLongType(Long value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeLong(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readLong(); + return this; + } + @Override + public int getByteLength() { + return 8; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSNameMapType.java b/src/com/flaremicrosystems/sds/SDSNameMapType.java new file mode 100644 index 0000000..d5da03a --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSNameMapType.java @@ -0,0 +1,191 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Iterator; +import java.util.TreeMap; + +public class SDSNameMapType extends SDSObject>>{ + public SDSNameMapType() + { + this.value = new TreeMap>(); + } + + public Boolean getBooleanValue(String key, Boolean fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSBooleanType)) + return fallback; + else return (Boolean) obj.value; + } + + public Byte getByteValue(String key, Byte fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSByteType)) + return fallback; + else return (Byte) obj.value; + } + + public Short getShortValue(String key, Short fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSShortType)) + return fallback; + else return (Short) obj.value; + } + + public Integer getIntValue(String key, Integer fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSIntType)) + return fallback; + else return (Integer) obj.value; + } + + public Character getCharacterValue(String key, Character fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSCharType)) + return fallback; + else return (Character) obj.value; + } + + public Long getLongValue(String key, Long fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSLongType)) + return fallback; + else return (Long) obj.value; + } + + public Float getFloatValue(String key, Float fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSFloatType)) + return fallback; + else return (Float) obj.value; + } + + public Double getDoubleValue(String key, Double fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSDoubleType)) + return fallback; + else return (Double) obj.value; + } + + public String getStringValue(String key, String fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSStringType)) + return fallback; + else return (String) obj.value; + } + + public SDSListType getArrayValue(String key, SDSListType fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSListType)) + return fallback; + else return (SDSListType)obj; + } + + public SDSNameMapType getNameMapping(String key, SDSNameMapType fallback) + { + SDSObject obj = this.value.get(key); + if(obj == null || !(obj instanceof SDSNameMapType)) + return fallback; + else return (SDSNameMapType)obj; + } + + public SDSObject getSDSObject(String key) + { + return this.value.get(key); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeInt(value.size()); + Iterator keyIter = value.keySet().iterator(); + while(keyIter.hasNext()) + { + String k = keyIter.next(); + SDSObject v = value.get(k); + out.writeUTF(k); + v.store(out); + } + } + + public SDSObject load(DataInputStream in) throws IOException + { + int len = in.readInt(); + for(int i = 0; i < len; i++) + { + String key = in.readUTF(); + try { + SDSObject value = SDSObject.readObject(in); + this.value.put(key, value); + } catch (SDSUndefinedException e) { + e.printStackTrace(); + } + } + return this; + } + + public void put(String name, SDSObject sdsObject) { + if(sdsObject == null) + value.remove(name); + else value.put(name, sdsObject); + } + + @Override + public int getByteLength() { + int length = 4; + Iterator keyIter = value.keySet().iterator(); + while(keyIter.hasNext()) + { + String k = keyIter.next(); + try { + length += k.getBytes("UTF-8").length; + } catch (UnsupportedEncodingException e) { + length += k.getBytes().length; + } + SDSObject v = value.get(k); + length += OPCODE_BYTES + LENGTH_BYTES + v.getByteLength(); + } + return length; + } + + public void putBoolean(String name, boolean val) { + this.put(name, new SDSBooleanType(val)); + } + public void putByte(String name, byte val) { + this.put(name, new SDSByteType(val)); + } + public void putShort(String name, short val) { + this.put(name, new SDSShortType(val)); + } + public void putChar(String name, char val) { + this.put(name, new SDSCharType(val)); + } + public void putInt(String name, int val) { + this.put(name, new SDSIntType(val)); + } + public void putLong(String name, long val) { + this.put(name, new SDSLongType(val)); + } + public void putFloat(String name, float val) { + this.put(name, new SDSFloatType(val)); + } + public void putDouble(String name, double val) { + this.put(name, new SDSDoubleType(val)); + } + + public boolean hasOfType(String name, Class tester) { + return this.value.containsKey(name) && tester.isInstance(this.value.get(name)); + } +} diff --git a/src/com/flaremicrosystems/sds/SDSNullType.java b/src/com/flaremicrosystems/sds/SDSNullType.java new file mode 100644 index 0000000..27691f1 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSNullType.java @@ -0,0 +1,13 @@ +package com.flaremicrosystems.sds; + +public class SDSNullType extends SDSObject{ + @Override + public int getByteLength() { + return 0; + } + @Override + public boolean isNull() + { + return true; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSObject.java b/src/com/flaremicrosystems/sds/SDSObject.java new file mode 100644 index 0000000..8e95cfa --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSObject.java @@ -0,0 +1,98 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; + +public abstract class SDSObject { + T value; + static ArrayList ids = new ArrayList(); + static ArrayList> objects = new ArrayList>(); + static ArrayList> dataTypes = new ArrayList>(); + static final int OPCODE_BYTES = 4; + static final int LENGTH_BYTES = 4; + + static { + registerDataStore(0, SDSBooleanType.class, Boolean.class); + registerDataStore(1, SDSByteType.class, Byte.class); + registerDataStore(2, SDSShortType.class, Short.class); + registerDataStore(3, SDSIntType.class, Integer.class); + registerDataStore(4, SDSCharType.class, Character.class); + registerDataStore(5, SDSLongType.class, Long.class); + registerDataStore(6, SDSFloatType.class, Float.class); + registerDataStore(7, SDSDoubleType.class, Double.class); + registerDataStore(8, SDSStringType.class, String.class); + registerDataStore(9, SDSListType.class, ArrayList.class); + registerDataStore(10, SDSNameMapType.class, HashMap.class); + registerDataStore(11, SDSBinaryDataType.class, byte[].class); + registerDataStore(12, SDSNullType.class, null); + } + + public SDSObject() { + } + + public SDSObject(T value) { + this.value = value; + } + + public T getValue() { + return value; + } + + public boolean isNull() + { + return false; + } + + public abstract int getByteLength(); + + public void setValue(T newVal) { + value = newVal; + } + + @Override + public String toString() + { + return this.value.toString(); + } + + public void store(DataOutputStream out) throws IOException { + int id = ids.get(objects.indexOf(this.getClass())); + out.writeInt(id); + int length = getByteLength(); + out.writeInt(length); + } + + public static void registerDataStore(int id, Class obj, Class dataType) { + ids.add(id); + objects.add(obj); + dataTypes.add(dataType); + } + + public SDSObject load(DataInputStream in) throws IOException, SDSUndefinedException { + return this; + } + + public static SDSObject readObject(DataInputStream in) throws IOException, SDSUndefinedException { + int id = in.readInt(); + int length = in.readInt(); + if (!ids.contains(id)) + { + in.read(new byte[length]); + throw new SDSUndefinedException("Unknown identifier: " + id); + } + @SuppressWarnings({ "rawtypes", "unchecked" }) + Class obj = (Class) objects.get(ids.get(id)); + try { + return obj.newInstance().load(in); + } catch (InstantiationException e) { + e.printStackTrace(); + throw new SDSTotalFailureException(e); + } catch (IllegalAccessException e) { + e.printStackTrace(); + throw new SDSTotalFailureException(e); + } + } +} diff --git a/src/com/flaremicrosystems/sds/SDSShortType.java b/src/com/flaremicrosystems/sds/SDSShortType.java new file mode 100644 index 0000000..a339469 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSShortType.java @@ -0,0 +1,31 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class SDSShortType extends SDSObject{ + + public SDSShortType() { + super(); + } + public SDSShortType(Short value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeShort(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readShort(); + return this; + } + @Override + public int getByteLength() { + return 2; + } +} diff --git a/src/com/flaremicrosystems/sds/SDSStringType.java b/src/com/flaremicrosystems/sds/SDSStringType.java new file mode 100644 index 0000000..6a42599 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSStringType.java @@ -0,0 +1,36 @@ +package com.flaremicrosystems.sds; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; + +public class SDSStringType extends SDSObject{ + + public SDSStringType() { + super(); + } + public SDSStringType(String value) { + super(value); + } + + public void store(DataOutputStream out) throws IOException + { + super.store(out); + out.writeUTF(value); + } + + public SDSObject load(DataInputStream in) throws IOException + { + value = in.readUTF(); + return this; + } + @Override + public int getByteLength() { + try { + return value.getBytes("UTF-8").length; + } catch (UnsupportedEncodingException e) { + return value.getBytes().length; + } + } +} diff --git a/src/com/flaremicrosystems/sds/SDSTotalFailureException.java b/src/com/flaremicrosystems/sds/SDSTotalFailureException.java new file mode 100644 index 0000000..ab47e34 --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSTotalFailureException.java @@ -0,0 +1,14 @@ +package com.flaremicrosystems.sds; + +public class SDSTotalFailureException extends RuntimeException { + + public SDSTotalFailureException(Exception e) { + super(e); + } + + /** + * + */ + private static final long serialVersionUID = 1L; + +} diff --git a/src/com/flaremicrosystems/sds/SDSUndefinedException.java b/src/com/flaremicrosystems/sds/SDSUndefinedException.java new file mode 100644 index 0000000..dd3e24b --- /dev/null +++ b/src/com/flaremicrosystems/sds/SDSUndefinedException.java @@ -0,0 +1,14 @@ +package com.flaremicrosystems.sds; + +public class SDSUndefinedException extends Exception { + + public SDSUndefinedException(String string) { + super(string); + } + + /** + * + */ + private static final long serialVersionUID = 1L; + +}