From 304183221f870f5597a0355ac12c16365fe25ea9 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Tue, 24 Mar 2015 11:34:47 -0500 Subject: [PATCH] modified: maptest.exe modified: scroll.exe new file: src/lib/jsmn/example/JSONDUMP.EXE new file: src/lib/jsmn/example/MAPTEST.EXE new file: src/lib/jsmn/example/MAPTEST2.EXE new file: src/lib/jsmn/example/SIMPLE.EXE new file: src/lib/jsmn/example/jsondump new file: src/lib/jsmn/example/jsondump.c new file: src/lib/jsmn/example/maptest new file: src/lib/jsmn/example/maptest.c new file: src/lib/jsmn/example/maptest2 new file: src/lib/jsmn/example/maptest2.c new file: src/lib/jsmn/example/simple.c deleted: src/lib/jsmn/jsmn.7z modified: src/lib/mapread.c --- maptest.exe | Bin 31611 -> 31704 bytes scroll.exe | Bin 60771 -> 60579 bytes src/lib/jsmn/example/JSONDUMP.EXE | Bin 0 -> 12186 bytes src/lib/jsmn/example/MAPTEST.EXE | Bin 0 -> 14266 bytes src/lib/jsmn/example/MAPTEST2.EXE | Bin 0 -> 15196 bytes src/lib/jsmn/example/SIMPLE.EXE | Bin 0 -> 10506 bytes src/lib/jsmn/example/jsondump | Bin 0 -> 10160 bytes src/lib/jsmn/example/jsondump.c | 124 ++++++++++++++++++++++ src/lib/jsmn/example/maptest | Bin 0 -> 10128 bytes src/lib/jsmn/example/maptest.c | 122 +++++++++++++++++++++ src/lib/jsmn/example/maptest2 | Bin 0 -> 10845 bytes src/lib/jsmn/example/maptest2.c | 170 ++++++++++++++++++++++++++++++ src/lib/jsmn/example/simple.c | 75 +++++++++++++ src/lib/jsmn/jsmn.7z | Bin 27543 -> 0 bytes src/lib/mapread.c | 10 +- 15 files changed, 498 insertions(+), 3 deletions(-) create mode 100644 src/lib/jsmn/example/JSONDUMP.EXE create mode 100644 src/lib/jsmn/example/MAPTEST.EXE create mode 100644 src/lib/jsmn/example/MAPTEST2.EXE create mode 100644 src/lib/jsmn/example/SIMPLE.EXE create mode 100644 src/lib/jsmn/example/jsondump create mode 100644 src/lib/jsmn/example/jsondump.c create mode 100644 src/lib/jsmn/example/maptest create mode 100644 src/lib/jsmn/example/maptest.c create mode 100644 src/lib/jsmn/example/maptest2 create mode 100644 src/lib/jsmn/example/maptest2.c create mode 100644 src/lib/jsmn/example/simple.c delete mode 100644 src/lib/jsmn/jsmn.7z diff --git a/maptest.exe b/maptest.exe index 996e0fdf4d0c5ac210e9f6432a77062dfe1338fa..859234acc3b26b4442fb01ab7ca363600cfbae59 100644 GIT binary patch delta 8060 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 I4QkeZ01)5E`~Uy| delta 7897 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 diff --git a/src/lib/jsmn/example/JSONDUMP.EXE b/src/lib/jsmn/example/JSONDUMP.EXE new file mode 100644 index 0000000000000000000000000000000000000000..dccede190f93eb135398bcd2eaf3030a6bbf4591 GIT binary patch literal 12186 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 W%tzw9GM@dmnI&&KkxsuCCI1(-NK*R% literal 0 HcmV?d00001 diff --git a/src/lib/jsmn/example/MAPTEST2.EXE b/src/lib/jsmn/example/MAPTEST2.EXE new file mode 100644 index 0000000000000000000000000000000000000000..df045463757b24b4e9c512b18318774448d3465b GIT binary patch literal 15196 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 literal 0 HcmV?d00001 diff --git a/src/lib/jsmn/example/SIMPLE.EXE b/src/lib/jsmn/example/SIMPLE.EXE new file mode 100644 index 0000000000000000000000000000000000000000..77ee0f401cc91d2204f96d0a499d38233e5ef1d1 GIT binary patch literal 10506 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

5|yB*DlV<=(m zM5~=-wF%n5CE`e6uWZp3hjHBUfE;d_UmaF`PVGEn@l^z`?rxvMp5R=)CB%UKSY)kzT&h~J@-)uZLRvn7OoOeUQB{$ zFXUE52*qjC9{dCv@~m-(J^Pvar> zoEMr_;H$+VfrhP6c-Z73&&Yr<&$ui;fatY{HZx8vVJVG;ET!>Y2YbilmzE2`^IXOk zv~4x=Q2Knwp#Ch#S5X=XL~8;E8>Koz18|~UYT=(~pbs9L+6U_IQJdB9w2!h=P|Ryn z8$jChU-nFYx@Y>Yd#2MAHmIIf-`6J-h&4rRRgX>kXxeeiKBG3V*+#3{qDH12pJt-( zq}prsHK-MRhzkn;RQ0njtrzCf%>R0B~{idKr? zU56?;E#5VVWRM8nq5(0a%cUUqQGT0ZM~WL}#SFMi#00~^R-8U_;)k^FDEyoE={5E^ zOZ(X)LVMvmgX6R!W}F-ZIU)a%>mog?7PiqsgzzztHKNr1%r9Dc?t2>Y9Rb1$V^uFf z#G@o&`ymKu{jQ9|1@sKd+=#nRLBub{McfWotfwv1PUaaMH;-~nMYOV+!XCUi_vF|a z)HZ`I<6BO(oWRP&_;p}W9@dKN&l^{-+W=OsgK+1lecCmc2*9Abg|TOs?-DB4q_A&9G`HLRYtq zfyIU4-b9;VFSD9T*TH6zg|6BC!a+O9I##w&UFKBR+Ot{$k5FW%lT`;gAEwKk z6PwKWiOj&Rq-VJIDAJyyx|65FXgM-jEPq51%0!UA3l8I$e}%f46l1%B4TIRKYg3S7 z+n3cG;Njw~6SKOMm)Ui*%*EyzAD9m(sbxGst2;&H0F5`UQ^JC}7U0@!QE?2WT+qu% z=n~&8a`IQG5EsUR=Mc+st=$ez*(QvjDcNi73bKg+#bYPBR-|Y^ZLtNg?o&nKHd+zQ z`asDMY|sg6%U;eF>_pLtg`ei)#OyM=-+f zRM4Lw*=2m$OCS@k&tZwWE{V3y!L}??nxB|?3eI3ppqDmewfQF?lAPGqaxSYakcZ-O zm+IKZ9FHHGxEy821Vp?G6~ltTfZvP%^NeL@N$v3MXeZ1}gQt zOk}c+|FG7k7>$hT`AMk7(ly{J*elX9UcbX+*1b_3eSyz3VF!i)vID;%0MN^9)*9x& z=3p|;rKhGmSsfK>OpSQ^kmU1TVPDsQ)!?RJ^z$89m_bK^97Zm4V|=0gHlES)W-az{mk#daSp#Zi`j$B?%k($ z@=6kI!tXDB%;O5OQr03lVw&3Xy~Y>Fzk|?a>Wmd4?DO=j#xkdx!d=N~D4R#SRGB$M ziC^oSinQ;yx*m!9P0DS|0m4`URBJW!ak`8=)M{rog@x2f=I&lnbdp~)D!QuCY0jD?V7vd5v&4{96JP&JZ=r&TTI z(yAO8-5D3O>E^t7#^E6{(IDb}f)^9kWG(Fg#r-*MP8IEB8xYCq2Zmn!(5m_hy zoVKky?(qft@!Ov_Y{qB7zFPyI7#~;mqMq<6^SfS!^NMO$wp|oTMRrcr(Nl$%PdJ=a zoLQ@zxnqN!6h0Pw7pA0|%v?9LH}&FWBYA3d81Qg1X=;YBDlFjeGubv|+h68Nv+-Lf zRswD{U~PoMB)PgRUgRB8-JEWJjze{xm2O$#_Rf0T*+cd`%hA+lImQ946+d^eoJCY@ zF8LjKT6b)P!KdH65xM`zhmfC+Q~brH<7T?YJzlbD+lG?jag*KSiZ*QBybXPi6>VV! z?{UiJ4S37U$jF%Na=XWEEG<#C`_Z%7TI^>_$~F}jZ?V=Y8#b4)Mqu-X;*xP|cMz#) z^OoWbZn?z0y{Ob*>|U6^ICrM|dmCJ2@uQEUOztlJ@ph|Pj^Yh)AyeGT@W70zll(4X z;ex&g7*5wafe@Sap!a%593}MmEZkiZbkfKq=(=DpLV z|6s;__h%J7x_(3PV;eVZe*8yUwr(rg{zR!?Rsv-|e)1=TjJxTqB;IWP-&@=_hI#V! zcb*`Uz3~xukTNB1VF>$P!eF{jp#49pN-r1y literal 0 HcmV?d00001 diff --git a/src/lib/jsmn/example/jsondump b/src/lib/jsmn/example/jsondump new file mode 100644 index 0000000000000000000000000000000000000000..bf6541f53b4a5b65daf2baaf0c963ccae1322480 GIT binary patch literal 10160 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 +#include +#include +#include +#include "../jsmn.c" + +/* + * An example of reading JSON from stdin and printing its content to stdout. + * The output looks like YAML, but I'm not sure if it's really compatible. + */ +static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { + if (tok->type == JSMN_STRING && (int) strlen(s) == tok->end - tok->start && + strncmp(json + tok->start, s, tok->end - tok->start) == 0) { + return 0; + } + return -1; +} + +static int dump(const char *js, jsmntok_t *t, size_t count, int indent) { + int i, j, k; + if (count == 0) { + return 0; + } + if (t->type == JSMN_PRIMITIVE) { + printf("%.*s", t->end - t->start, js+t->start); + return 1; + } else if (t->type == JSMN_STRING) { + if(jsoneq(js, t, "data") == 0 ) + { +// printf("[[[[%d|%d]]]]\n", &(t+1)->size, (t+1)->size); + printf("\n%.*s[xx[%d|%d]xx]\n", (t+1)->end - (t+1)->start, js+(t+1)->start, &(t+1)->size, (t+1)->size); + } + printf("'%.*s'", t->end - t->start, js+t->start); + return 1; + } else if (t->type == JSMN_OBJECT) { + printf("\n"); + j = 0; + for (i = 0; i < t->size; i++) { + for (k = 0; k < indent; k++) printf(" "); + j += dump(js, t+1+j, count-j, indent+1); + printf(": "); + j += dump(js, t+1+j, count-j, indent+1); + printf("\n"); + } + return j+1; + } else if (t->type == JSMN_ARRAY) { + j = 0; + printf("\n"); + for (i = 0; i < t->size; i++) { + for (k = 0; k < indent-1; k++) printf(" "); + printf(" - "); + j += dump(js, t+1+j, count-j, indent+1); + printf("\n"); + } + return j+1; + } + return 0; +} + +int main() { + int r; + int eof_expected = 0; + char *js = NULL; + size_t jslen = 0; + char buf[BUFSIZ]; + + jsmn_parser p; + jsmntok_t *tok; + size_t tokcount = 2; + + /* Prepare parser */ + jsmn_init(&p); + + /* Allocate some tokens as a start */ + tok = malloc(sizeof(*tok) * tokcount); + if (tok == NULL) { + fprintf(stderr, "malloc(): errno=%d\n", errno); + return 3; + } + + for (;;) { + /* Read another chunk */ + r = fread(buf, 1, sizeof(buf), stdin); + if (r < 0) { + fprintf(stderr, "fread(): %d, errno=%d\n", r, errno); + return 1; + } + if (r == 0) { + if (eof_expected != 0) { + return 0; + } else { + fprintf(stderr, "fread(): unexpected EOF\n"); + return 2; + } + } + + js = realloc(js, jslen + r + 1); + if (js == NULL) { + fprintf(stderr, "realloc(): errno=%d\n", errno); + return 3; + } + strncpy(js + jslen, buf, r); + jslen = jslen + r; + +again: + r = jsmn_parse(&p, js, jslen, tok, tokcount); + if (r < 0) { + if (r == JSMN_ERROR_NOMEM) { + tokcount = tokcount * 2; + tok = realloc(tok, sizeof(*tok) * tokcount); + if (tok == NULL) { + fprintf(stderr, "realloc(): errno=%d\n", errno); + return 3; + } + goto again; + } + } else { + dump(js, tok, p.toknext, 0); + eof_expected = 1; + } + } + + return 0; +} diff --git a/src/lib/jsmn/example/maptest b/src/lib/jsmn/example/maptest new file mode 100644 index 0000000000000000000000000000000000000000..a72fa7f9f215fdb940dac204d401a2f9b47f1db2 GIT binary patch literal 10128 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 P%k`a@k3CpMu=V{fZjlZ1 literal 0 HcmV?d00001 diff --git a/src/lib/jsmn/example/maptest.c b/src/lib/jsmn/example/maptest.c new file mode 100644 index 00000000..7cceabb8 --- /dev/null +++ b/src/lib/jsmn/example/maptest.c @@ -0,0 +1,122 @@ +#include +#include +#include +//#include +#include "../jsmn.c" + +//#define BUFSIZ 2048 + +/* + * A small example of jsmn parsing when JSON structure is known and number of + * tokens is predictable. + */ + +/*char *json_string = + "{\"user\": \"johndoe\", \"admin\": false, \"uid\": 1000,\n " + "\"groups\": [\"users\", \"wheel\", \"audio\", \"video\"]}";*/ + +long int filesize(FILE *fp) +{ + long int save_pos, size_of_file; + + save_pos = ftell(fp); + fseek(fp, 0L, SEEK_END); + size_of_file = ftell(fp); + fseek(fp, save_pos, SEEK_SET); + return(size_of_file); +} + +static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { + if (tok->type == JSMN_STRING && (int) strlen(s) == tok->end - tok->start && + strncmp(json + tok->start, s, tok->end - tok->start) == 0) { + return 0; + } + return -1; +} + +int main() { + int i; + int r; + size_t z; + jsmn_parser p; + jsmntok_t t[(BUFSIZ/sizeof(jsmntok_t))*2]; /* We expect no more than 128 tokens */ + FILE *fh = fopen("../../../../data/test.map", "r"); + char *json_string = malloc(filesize(fh)); + + if(fh != NULL) + { + /*t = malloc(2048); + if (t == NULL) { + fprintf(stderr, "malloc(): errno=%d\n", errno); + return 3; + }*/ + //printf("\n%d\n\n", sizeof(*t)); + printf("\n%d", sizeof(*t)); + printf("\n%d", sizeof(t)); + printf("\n%d\n\n", sizeof(t)/sizeof(t[0])); + z = fread(json_string, 1, filesize(fh), fh); + //char json_s[2048]; + fclose(fh); fh = NULL; + printf("[%d]\n", z); + json_string[z] = '\0'; + // we can now close the file + //printf("]%s[\n", json_s); + //json_string=json_s; + //printf("[[%s]]\n", json_string); + + jsmn_init(&p); + r = jsmn_parse(&p, json_string, strlen(json_string), t, sizeof(t)/sizeof(t[0])); + //t[(BUFSIZ/sizeof(jsmntok_t))*2+1].type=JSMN_OBJECT; + printf("[\n%s\n]", json_string); + printf("[[%d]]\n",r); + if (r < 0) { + printf("Failed to parse JSON: %d\n", r); + return 1; + } + + /* Assume the top-level element is an object */ + if (r < 1 || t[0].type != JSMN_OBJECT) { + printf("Object expected\n"); + return 1; + } + + /* Loop over all keys of the root object */ + for (i = 1; i < r; i++) { + if (jsoneq(json_string, &t[i], "image") == 0) { + /* We may use strndup() to fetch string value */ + printf("- image: %.*s\n", t[i+1].end-t[i+1].start, + json_string + t[i+1].start); + i++; + } else if (jsoneq(json_string, &t[i], "admin") == 0) { + /* We may additionally check if the value is either "true" or "false" */ + printf("- Admin: %.*s\n", t[i+1].end-t[i+1].start, + json_string + t[i+1].start); + i++; + } else if (jsoneq(json_string, &t[i], "uid") == 0) { + /* We may want to do strtol() here to get numeric value */ + printf("- UID: %.*s\n", t[i+1].end-t[i+1].start, + json_string + t[i+1].start); + i++; + } else if (jsoneq(json_string, &t[i], "tilesets") == 0) { + int j; + printf("- tilesets:\n"); + if (t[i+1].type != JSMN_ARRAY) { + continue; /* We expect groups to be an array of strings */ + } + for (j = 0; j < t[i+1].size; j++) { + jsmntok_t *g = &t[i+j+2]; + printf(" * %.*s\n", g->end - g->start, json_string + g->start); + } + i += t[i+1].size + 1; + } else { + /*printf("Unexpected key: %.*s\n", t[i].end-t[i].start, + json_string + t[i].start);*/ + } + } + + //free(json_string); + } + if (fh != NULL) fclose(fh); + ////} + return 0; +} diff --git a/src/lib/jsmn/example/maptest2 b/src/lib/jsmn/example/maptest2 new file mode 100644 index 0000000000000000000000000000000000000000..abc5640f405dfdfdec94ce713a12ff4a0dc28cbb GIT binary patch literal 10845 zcmb_ieQ;aVmA|qTB8(F`!4yL>jV9}`32hW71V}??&Yc<;1g^IIUc!WzV z6^q0|aS=%5t?q>ksvLkpvp{pAmXim(`a$qfF9l{LkGff9;aJooR|vt%@uEucCGE%H zp*CW`y{Md*{4z8{kRJk%bsCtJe9pnT74lm#H){hhtL8QS-V8i>xe!l&&*@?ffXAx& zw}TIOPSN^TgxmJ52nUvj+aifhZ#?QPBUuJ{Fg1#2mC2TYWZ{pw6{0$5x=uwy7xJUVYj*8&wWQ@c*-#L zw?`vJ-1Nsx!w?9c7KY7r!q~P0)IeLrNW_By(HiXtMnv3rKMOuN4= zBDQSbwsDiO%Db}AtHTP)Z2vSWx6vGk^)eX;j0Ki?ZEXnAaxsKHX;l)JiKozK8HA56 zLV(g&vmh{pb~ZNiNwx^Izh{e}e3~ts`3zeG-Lq^Fu)}OI{yDZtiV?O*h!@x*_+Mg+ zq-~-Uwagz@=K24uf$7eb%@>UX$;9Pq4gp1vL__wDneX-c0^*XCR9WGjKo}3$U{6N zF;^E_N<1hrR~f1!?vb&@$%Tr6LSI$lXNpB-p) zfSPJ_rhR9}>s=U}M=#yz!e335$0+d2V^B;T&6O#sy}3$?fKZ*{2-kSMl-)zYc3HMKh`}vV%&g1U;9vJBKT$apTeCSKbT!s75K1rHm_Dn8F=GK{= z_|r2xnftOCnXE|W_L%#Vxo&e`k+$`V9++25=t;~^H=hM9RWb2G_t)@BZ4o|G?_?9PdV zyD&K&I(e;B0@+G>6(h$njH=SU9EbiLhMqf*boY!GbC!hMud3`TIB!TPxb$J)N4?!2 zEl!xy?h0vY_Jou=kG22y39X$@c25hsipsG(TAMv)X%-+Sk2`2~s!7?*3vJprO`G3^ z0yRe%@|gKvcmFayGCAUaYu(8jO|W~tU@?OrvpAXCV_32myZinb`e` zMO~+q#fgRUHg8_R1=YK7j{Xk$RqZ&DZmeW1HdZ3izLA(c3bWR)Ulgj8 zuYywP1vVnP1>EdfEmGv}YYHlsXuf?f5lv<8zKRR59PYk9aa#+Ui2Vo_?FYP?D>HF4 z+k8fvBeAxargp5hgedpU?#o_GSMcR`CQTKyf7X!;K4t{l9Lck=$dP6pooHUIJUbIi zg-D)s4^GY*oU9m}oIN<{9K;oeqUTD za({_ykiM{wV+~dSTbCyt%JPbidrkPflAbP4>}7o6I#Bx|9Dy{eOmAhZAxToNE*nd| zx%PPCMq=IyX~*Or1KKVlR zZaw$vWOtQFSQoY-nKQ7Z9~bQ781TdtZk2AV!c%bKb~&SKpt_%$;3$W*50;G*yo9T- zi;tMNsyVrYlOOPetx0V}&eWvqWxn7J?Q-bK{OSz6wOc7)MCCg^qjFO#haaHa#nnRj z5-RV6a(R+vPs&_Su66hGnnNSG8cb))-vhW9z(0L zh{=N_^T0X)f6QieP!1hYEJbV&g%KQ!}UG)T?KlFXt3aH|+AAvQD z3#-V!iA}`$avHHz$>Y&=vtXc6)CPvH=ok_H(C0(P(M{< zJMovp5;rBg&j?%(K@{12penx#B-SW7>Br-8_}Pby^)Z)Q!}Hx<Qppz`Yd?*>m3(30?)!{AW9fypm>l};?<_o4j&$?!DVyAkQHq2;@27RT3j3dbRrV?m|U z`7r1n(D)NTZc6DDb6uO~R^IHs#B_Fwo36a!>Q%Li$*)Hp`C~qRH(Ie_uB*RnL7y=s0?vL(M4{4%UzGv+LeFW=~(1oaQ0F2&hU!xK-BFRw1s{1K2n zI97M^4y?ex&8hjPLEedDXffIX|2{RphcwLF1U`LR;5Q`8%i?1jC{+t`Eo7dC%rERV zK&JfJG9?5V+PWQb8*rl=u*;S2E!fH@|9(7CP-kJTy~-AnPUE+i5mfdeD&M8@Ogq!( zbn!QUAw2G1ftJ6GEI`X8^PTfiV9rm>`Urme_~6rg)bmZeZv_q{@%|NU12Avoo<(I$ zRiWbKl7;8Wk*Az4n%;@ZxZrOK__;(J!u;%q(ek}M$MJU^8jABYx*l|#V|)-2*s5p^ zFuI?)@HZVj=(>KVYcuK{sI906P#;45F6s|ae~S7d>aS7%fchcoMeyAhEdNo@mQ9=1 zd6qT=_qF*Wp4Hy#y{ndAyG(UTdEhQzMIJgrc;j8|rhgw=ymgmtNcZq6Js9f{-bmC8 zdN*v`w%qjZx6uAb!n-fgh98L90>Voa^2bBM8|aEapK8sR;v5LZ;(Tu}#VlZe7Yl|d zuR0xJQ+V4VZTM>jJMp&_0IVnv3gHcgjMkXHJ!pgi7^#sOVfbS)f0r7e`(JH=7?k_l z+gdPj6bkXjD`!y}_r>GF+Y)VW4@OMA5&wslvBYU4 zV0eIaVeGQ3MAdR3#BvC7wUVR$Xt}L`jBn1%n12LvN6=@ivrvw;0Tt;Rr5tm@gHA2_ zrE<4{#=M{$bEN?t4|LKNG*TC1{|;2<3+0$w0RZNdE|g`t50!aAIp#zSjIqy4I_v$Y z%p>-hOY0$5hrWGYK*3)q@Uw>;!(0qQj`rBs!30X$;2C`M0&>3wpVLr|KRz70fZTt8Pv22a{>BZtY4jNfES#77 zJAtb84dTom#6>{c1eWX*XKivk+mAqwIim|@Sl>g{`c6Ua6y!LME?RdE1k!0AAD<>5 zC-1o}K`r+QF!j}0bjq!<`fSK!ELo&-3OE*lfA&bHoO5?-)E73C$RkG z5Um4uRIOk&jmD)zf=sfV-?ynhJNK?r|WLC)c*$BAn-B^PoRAi znD@Noe+>M_!?->m)QB$ueeYv9w=Mbkz^8zD|4BYzp>V#-K^S~o+cRJAC9>TgD}nWT zcxB!QtoO%({ka8LuZR5mh%Ns+M2#?k`5Q1Jdp_ppbHw+p_?cfeSNs5&Z`POz{0`y? zU|l@u`~q0-uLryHl8w*k`gdUNw;n%bVd|*D`rZfD@jD+U?#CtLFR>jC)VC1$@o(e0 zjF$G+qMiDd)5T{5;uR(G8%uB#u(r1f_WDcsU$bEk=IaGMZTV|n*%e{{*!~^JF`GQ? z`^OUeY6*S|xE}t!2eP#Hk0ty(@U%4_{o}Nqan$cA!PfxudJLA-w+{F#h^NICZUE+a zp!{DYZUNT$NBwsK^LPJROa5M9T|DS?*yOqXLnZw0+A!_=aS8r8Fz-L8b3U&qEip50 zCR$s)E%<8X=1n_|?b~)W;R70c+!Ea17RMd9VYVAB;b<>rx`NKxQ zjK<=IKhY_0W7`o9;&I%2?e*8xLGyWp4Bld^8)gGH!Lcqp_z0W+)N4-@C69_89R4_A0?{65J}F@o~ZLrto_Te7p|CroxiIO-4Z z?TGZJbd`RuVwX~%L)j_VZJS~EvZ|O_^qm%D<545zj|8xul25hN2Ux{}OTMeJGp&!W z>?E6~xi{+LuNi@r0)dAeEcwD~Mu1+#hhiOFc9P|B=@qHfXzegU2cZVfbQV*7^JUz8 rz}RVJ%%-qE9!CZl26j+~6}MKWRME!DS=&48vx0<=((Du&ZsLCd+V(-< literal 0 HcmV?d00001 diff --git a/src/lib/jsmn/example/maptest2.c b/src/lib/jsmn/example/maptest2.c new file mode 100644 index 00000000..017fbf85 --- /dev/null +++ b/src/lib/jsmn/example/maptest2.c @@ -0,0 +1,170 @@ +#include +#include +#include +#include +#include "../jsmn.c" +#include "../../../lib/types.h" + +/* + * An example of reading JSON from stdin and printing its content to stdout. + * The output looks like YAML, but I'm not sure if it's really compatible. + */ + +char *js_sv; + +typedef struct { + //bitmap_t *data; + byte *data; + word tileHeight; + word tileWidth; + unsigned int rows; + unsigned int cols; +} tiles_t; + +typedef struct { + byte *data; + tiles_t *tiles; + int width; + int height; +} map_t; + +static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { + if (tok->type == JSMN_STRING && (int) strlen(s) == tok->end - tok->start && + strncmp(json + tok->start, s, tok->end - tok->start) == 0) { + return 0; + } + return -1; +} + +static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char *js_sv,*/ map_t *map) { + int i, j, k; + if (count == 0) { + return 0; + } + /* We may want to do strtol() here to get numeric value */ + if (t->type == JSMN_PRIMITIVE) { + if(js_sv == "height") + { + map->height = (int)strtol(js+t->start, (char **)js+t->end, 10); + printf("h:[%d]\n", map->height); + }else if(js_sv == "width") + { + map->width = (int)strtol(js+t->start, (char **)js+t->end, 10); + printf("w:[%d]\n", map->width); + } + return 1; + /* We may use strndup() to fetch string value */ + } else if (t->type == JSMN_STRING) { + //printf("'%.*s'", t->end - t->start, js+t->start); + if (jsoneq(js, t, "height") == 0 && indent==1) + { + js_sv="height";//strdup(js+t->start);//, t->end - t->start); + printf("%s\n", js_sv); + }else if (jsoneq(js, t, "width") == 0 && indent==1) + { + js_sv="width";//strdup(js+t->start);//, t->end - t->start); + printf("%s\n", js_sv); + }else js_sv=NULL; + return 1; + } else if (t->type == JSMN_OBJECT) { + //printf("\n"); + j = 0; + for (i = 0; i < t->size; i++) { + //for (k = 0; k < indent; k++) printf("\t"); + j += dump(js, t+1+j, count-j, indent+1, map); + //printf(": "); + j += dump(js, t+1+j, count-j, indent+1, map); + //printf("\n"); + } + return j+1; + } else if (t->type == JSMN_ARRAY) { + j = 0; + //printf("==\n"); + for (i = 0; i < t->size; i++) { + //for (k = 0; k < indent-1; k++) printf("\t"); + //printf("\t-"); + j += dump(js, t+1+j, count-j, indent+1, map); + //printf("==\n"); + } + return j+1; + } + return 0; +} + +int loadmap(char *mn, map_t *map) +{ + int r; + int eof_expected = 0; + char *js = NULL; + size_t jslen = 0; + char buf[BUFSIZ]; + + jsmn_parser p; + jsmntok_t *tok; + size_t tokcount = 2; + + FILE *fh = fopen(mn, "r"); + + /* Prepare parser */ + jsmn_init(&p); + + /* Allocate some tokens as a start */ + tok = malloc(sizeof(*tok) * tokcount); + if (tok == NULL) { + fprintf(stderr, "malloc(): errno=%d\n", errno); + return 3; + } + + for (;;) { + /* Read another chunk */ + r = fread(buf, 1, sizeof(buf), fh); + if (r < 0) { + fprintf(stderr, "fread(): %d, errno=%d\n", r, errno); + return 1; + } + if (r == 0) { + if (eof_expected != 0) { + return 0; + } else { + fprintf(stderr, "fread(): unexpected EOF\n"); + return 2; + } + } + + js = realloc(js, jslen + r + 1); + if (js == NULL) { + fprintf(stderr, "realloc(): errno=%d\n", errno); + return 3; + } + strncpy(js + jslen, buf, r); + jslen = jslen + r; + +again: + r = jsmn_parse(&p, js, jslen, tok, tokcount); + if (r < 0) { + if (r == JSMN_ERROR_NOMEM) { + tokcount = tokcount * 2; + tok = realloc(tok, sizeof(*tok) * tokcount); + if (tok == NULL) { + fprintf(stderr, "realloc(): errno=%d\n", errno); + return 3; + } + goto again; + } + } else { + dump(js, tok, p.toknext, 0, map); + //fprintf(stdout, "[[[[%d]]]]\n", sizeof(tok)); + //printf("[\n%d\n]", jslen); + eof_expected = 1; + } + } + + return 0; +} + +int main() +{ + map_t map; + loadmap("../../../../data/test.map", &map); + return 0; +} diff --git a/src/lib/jsmn/example/simple.c b/src/lib/jsmn/example/simple.c new file mode 100644 index 00000000..ca2902b5 --- /dev/null +++ b/src/lib/jsmn/example/simple.c @@ -0,0 +1,75 @@ +#include +#include +#include "../jsmn.c" + +/* + * A small example of jsmn parsing when JSON structure is known and number of + * tokens is predictable. + */ + +const char *JSON_STRING = + "{\"user\": \"johndoe\", \"admin\": false, \"uid\": 1000,\n " + "\"groups\": [\"users\", \"wheel\", \"audio\", \"video\"]}"; + +static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { + if (tok->type == JSMN_STRING && (int) strlen(s) == tok->end - tok->start && + strncmp(json + tok->start, s, tok->end - tok->start) == 0) { + return 0; + } + return -1; +} + +int main() { + int i; + int r; + jsmn_parser p; + jsmntok_t t[128]; /* We expect no more than 128 tokens */ + + jsmn_init(&p); + r = jsmn_parse(&p, JSON_STRING, strlen(JSON_STRING), t, sizeof(t)/sizeof(t[0])); + if (r < 0) { + printf("Failed to parse JSON: %d\n", r); + return 1; + } + + /* Assume the top-level element is an object */ + if (r < 1 || t[0].type != JSMN_OBJECT) { + printf("Object expected\n"); + return 1; + } + + /* Loop over all keys of the root object */ + for (i = 1; i < r; i++) { + if (jsoneq(JSON_STRING, &t[i], "user") == 0) { + /* We may use strndup() to fetch string value */ + printf("- User: %.*s\n", t[i+1].end-t[i+1].start, + JSON_STRING + t[i+1].start); + i++; + } else if (jsoneq(JSON_STRING, &t[i], "admin") == 0) { + /* We may additionally check if the value is either "true" or "false" */ + printf("- Admin: %.*s\n", t[i+1].end-t[i+1].start, + JSON_STRING + t[i+1].start); + i++; + } else if (jsoneq(JSON_STRING, &t[i], "uid") == 0) { + /* We may want to do strtol() here to get numeric value */ + printf("- UID: %.*s\n", t[i+1].end-t[i+1].start, + JSON_STRING + t[i+1].start); + i++; + } else if (jsoneq(JSON_STRING, &t[i], "groups") == 0) { + int j; + printf("- Groups:\n"); + if (t[i+1].type != JSMN_ARRAY) { + continue; /* We expect groups to be an array of strings */ + } + for (j = 0; j < t[i+1].size; j++) { + jsmntok_t *g = &t[i+j+2]; + printf(" * %.*s\n", g->end - g->start, JSON_STRING + g->start); + } + i += t[i+1].size + 1; + } else { + printf("Unexpected key: %.*s\n", t[i].end-t[i].start, + JSON_STRING + t[i].start); + } + } + return 0; +} diff --git a/src/lib/jsmn/jsmn.7z b/src/lib/jsmn/jsmn.7z deleted file mode 100644 index 58ba68e0440513bb6976fbf8fb29aa2f32f33785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27543 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 diff --git a/src/lib/mapread.c b/src/lib/mapread.c index ed8ca99f..de1515a4 100644 --- a/src/lib/mapread.c +++ b/src/lib/mapread.c @@ -28,16 +28,19 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * */ //bgdata[q] = strtol(js+t->start, (char **)js+t->end, 10); //if(strtol(js+t->start, (char **)js+t->end, 10)==0){ /*printf("%d\n", sizeof(map->tiles->data->data));*/ fprintf(stderr, "\nFACK! %d\n", errno); exit(-1); } -// map->tiles->data->data[q] = (byte)strtol(js+t->start, (char **)js+t->end, 10); -// printf("%d[%d]", q, (byte)strtol(js+t->start, (char **)js+t->end, 10)); + //printf("%.*s", (t-1)->end - (t-1)->start, js+(t-1)->start); + map->tiles->data->data[q] = (byte)strtol(js+t->start, (char **)js+t->end, 0); + printf("[%d]", map->tiles->data->data[q]); } else if(js_sv == "height") { + //map->height = (int)malloc(sizeof(int)); map->height = (int)strtol(js+t->start, (char **)js+t->end, 10); printf("h:[%d]\n", map->height); }else if(js_sv == "width") { + //map->width = (int)malloc(sizeof(int)); map->width = (int)strtol(js+t->start, (char **)js+t->end, 10); printf("w:[%d]\n", map->width); } @@ -50,7 +53,7 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * { // printf("[[[[%d|%d]]]]\n", &(t+1)->size, (t+1)->size); printf("\n%.*s[xx[%d|%d]xx]\n", (t+1)->end - (t+1)->start, js+(t+1)->start, &(t+1)->size, (t+1)->size); - map->data = malloc(sizeof(byte) * (t+1)->size +1); + map->data = malloc(sizeof(byte) * (t+1)->size); map->tiles = malloc(sizeof(tiles_t)); map->tiles->data = malloc(sizeof(bitmap_t)); map->tiles->data->width = (16*2); @@ -161,6 +164,7 @@ again: } } else { //printf("================================================================================%s================================================================================", js); + js_sv=malloc(sizeof(char)*10); dump(js, tok, p.toknext, 0, map, 0); eof_expected = 1; } -- 2.39.5