From 7b33197c9fe3cbd41356ccf6dceb5cb7ae5f6ff2 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sun, 22 Mar 2015 21:14:36 -0500 Subject: [PATCH] modified: data/test0.map modified: src/lib/jsmn/example/MAPTEST.EXE modified: src/lib/jsmn/example/MAPTEST2.EXE modified: src/lib/jsmn/example/maptest modified: src/lib/jsmn/example/maptest.c modified: src/lib/jsmn/example/maptest2.c --- data/test0.map | 37 +++++++ src/lib/jsmn/example/MAPTEST.EXE | Bin 14272 -> 14250 bytes src/lib/jsmn/example/MAPTEST2.EXE | Bin 14180 -> 14126 bytes src/lib/jsmn/example/maptest | Bin 10120 -> 10096 bytes src/lib/jsmn/example/maptest.c | 23 +++- src/lib/jsmn/example/maptest2.c | 169 +++++++++++++++--------------- 6 files changed, 142 insertions(+), 87 deletions(-) diff --git a/data/test0.map b/data/test0.map index 56eb3dd5..e5dce468 100644 --- a/data/test0.map +++ b/data/test0.map @@ -1,4 +1,41 @@ { "backgroundcolor":"#000000", "height":30, + "layers":[ + { + "data":[30, 30, 30, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 30, 30, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1], + "height":30, + "name":"Tile Layer 1", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":40, + "x":0, + "y":0 + }], + "orientation":"orthogonal", + "properties": + { + + }, + "renderorder":"right-down", + "tileheight":16, + "tilesets":[ + { + "firstgid":1, + "image":"bakapi.png", + "imageheight":240, + "imagewidth":320, + "margin":0, + "name":"wwww", + "properties": + { + + }, + "spacing":0, + "tileheight":16, + "tilewidth":16 + }], + "tilewidth":16, + "version":1, "width":40 } \ No newline at end of file diff --git a/src/lib/jsmn/example/MAPTEST.EXE b/src/lib/jsmn/example/MAPTEST.EXE index db505eb8d486e239bce3960403141e111347158c..4b6028638dbaf6330f5f02b625e99549f49c5b4d 100644 GIT binary patch delta 3663 zcmZWseNwIHW>6iqHfCghvj9-Zda(LU;dWgdy}5JiEdX8Vlc7N$}22d zLw>3m5J)Hcj3d@Da;}v_=@-&ZkU{n!55rE7PLM)>dXHE(Ms9<|%!}3uvCvNj)~zpl zTG>oM>_M(LuaF!iy`6(cgrQq)zX17xeUUh61A`O;&ccw0~u$MM-tHLAA`vGaaq z572&+uWuL{Cmu4Uh(DUx1@0)4a$rfPvLvv1OezHCu)>JeF{gXme>j3s=H{_&uYSdoTW7B-2jSao1d)@X)z8}f^-p0^ zIN@~LO~CUt6XUsJjek5@A*3B}#0uC&AichSptg_hEvoZ_deR@&_kwz)qAqTp@ICHC zzPC`@p?hnJlr@omT=O-OPqiJpr}TiLv|2h1`cauiI;wn5)}c;!2ScI+Vgk7$ORy*NSml)DW4HP;g%|J^jjJnDD8V-DF_cI@ z32hiL6Af42r=G48S8AA%KBPW1`&n(xSin9bD-f`oAV7lqdDvzxoN&(BV;^vy*v2F+ zVykGXW;%|bR?Q;Lr=eAvFR+WIX&=EFTB&^n@1s|=iMW*tIuqVRXX=*X9J*1Lg%{F& zx;eOnp4Fvj;&|r;dqlgDY9`GvUgF5$`m&O>9#Ks~#Oyep7~xqW`y>@&bLkV4-iUby zZ_W}ImSN|JEg3>_v17X**`9^CIY+NfN~n4UiwjG!d@9|o%uUZ=*)2Y)Bd{Rjc14)0 zpA3WQ$6C?>&NXKmp21r}M4L+fkN_#)gm>FQ;gaumTK(8(3y>~(cR_wIHMx4LuD;AK z7HS{|q}`Zh>A@{v>b=y}Mj$o1p$Z<9l>RS>RS*cdp zKOlW9S5GVTmHG>Cmi=qrngE=8h7RjjuW!-UDEHBb%QftKz1BOjT+rAiL)MBbRm`sk z0-yt-k>zTQO(27T$QYiC{*D0cfq?uQ)9}O#Rud0ryEyVZ&wz!NNF#qjcNkg}I1*9)x@oe`mcYhW~_C}2CS)zeM zE_d?r%2XLrhI(ttCxmj2Q$a;<$_0AJjf<3}{VY6Ys!>)7u#}Nd}GkPM70cgIc zqs^07aq&7jKKXfEPRk?iUsbPHGV?tMMERY9eA2TR&5F+5P)2f2!F&itHPKWe0Uhi%Ew< zaeAtrx&mA1s;MbquPgD-L!SBk{_5;~luRv&Pg3&lh9gI9f^1RSe*uaEgTY(gBXRFc zi+RKdpa9RJ^<^N=%NGqs-g&~VAuubDM^1tNfflE;3^nPNuLO&lxDd2P>{HtsaP{~; zx^7x5HqzIpnN|V3Y*CSgFsVo%Ko9I7g(9XMA)R1HbSsZ!w-kd~`K9dU&7dr#zBE*B zmO>CaI+5;Hkj8VbB|wKRPMgc&QW_Su)&wBrCR;eUy`Zra!&Xy?M_eBvs&QWkhcbn7 zS{JndU#IS{jX)*Yq#)oauM-WYd3Sbhr2LB!(tn_ zA64|@Sfgw0#;NF-?ej;=x_F$wCvK z30PdI6_@KW1wdaz5bdYpp^T0#{qlzjU|-7@Bk$)MXYpR)I)_Z`Yx-z>Uh?0E+YNl% z1V{X}$E(K;d}X9#31<(f@d)zZLo0E`2)S6d63f3<`wjG1{DR3@!?oRj3~dG;R

v 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 Do+66A diff --git a/src/lib/jsmn/example/MAPTEST2.EXE b/src/lib/jsmn/example/MAPTEST2.EXE index 55724432696499671df4e03e0ab64b62ceee9268..bb07fc7fca4b69e0cce8283e709f522a9ea14ec6 100644 GIT binary patch delta 4553 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 diff --git a/src/lib/jsmn/example/maptest b/src/lib/jsmn/example/maptest index cccbd597aea49a8f8d2747eb77dc8044412ce3d5..4825f5a13c4b4be5121bcbb2247d070adce6eba2 100644 GIT binary patch delta 2363 zcma)8e@v8R9DknU4iCKGPLPA+$DweXO%ZUbbmoM~m9@%K13^5+M0)$7p+aiQPIj@$ z&THV4OEUCCHm$R8z9cFtBpUek`98;yTm9kP?)f~Q@AvzB ze?9N}JhyMf@Cz;3yt{SQrpz`gWArmHe9Vk-fRuf#H@3ANv&MBm*#Xkg+VezQ-Au;n z4(g3{g7clpo(1)ruAb_+m$Jq=rvBwLhx&3x#eP1**NH~m74M;--WWTLu^@07{I(P7 z;Egbbu@i)P#<~a*{}f>?W8H*Ucbd@1*g3*D#=a+vXDmcGow1(?O^mJf4H;D@0yOsa z<}&8@jcc0L)Ge;Wqxa#T`@ zcSugTD%r%3N=`W|bBMP{PPr?E#P<^SI;aR`AqncF0TrVZ6R(z>ic*#ncS}yiDQ@D$ zl2egN1@S`gqHF7$FZl+B-7l_EiUl;G1A61ia^v}mJor6eusr?;JmiNl z_{L)2v~|H1YwE7Ilr>-W4J9k2&_ce`=I?Izwgl?)SQkn1!{TYf>_t-fLqtisz$qs! z-@AkqtRYGIFsg4O@EHTiIK0%hbhUSWWH_ng)t&2&^J5=DJF!Db$NR|lb8$GK$om_1 zpG5S)Dd!neWd%|pY=A>eX6iv_mGq*qd~#!ap1pAg~1 zG;S965;NAI$^PX=ziY(T&3nT7fM<;N=g%Q&vHsDX=5tuN%B^HjyuG(&YCc36Z+#6%QAoh$7s&^>2h7Q~iCgh~j93Q{!T*nTkM&Hy$oTDTSzcAjD<# z_`iKx84WQXM+F|crtZY1lk$-RsM4DN^atZN7(yZRim^}B|6 zDB#wSZ}F=oKem>ZeI_h3s3-Gg*fz-in$U8N#-pF;|6*4-asS2%gxoXC>J#K6H>|#N zQ|2IF%)sWc$|_G_<9Kh`nj)=ywdz1EjlDfMc6~z`{?~I01Dz(kZR*7XNtM$&v9hsu zMQ3%=PM%vhf6K-?7VoH`Uwk~Pa@2S*#yfVzdsr1QPrUduxoI;`k6BDdAWlx!a$VEj z1y&7fS`c^wcn)|Gr~(rZ-iTdF#&b9aIBQJPmIIdo72rYOK43iFiXgBW#f5<(ac!nk zr@t;zQfBi{#iA5D9}txouZi6l?~B7y@)gED@e9Tu#oZLU&TvQAtXYP&cQmbBEV0^b zCHfu{XC=KQ-!3!haaAxnNp~T@F0swJn751L)`GNB9E53*x8asb2a=r)zn~bkF6BqW zW2s)=(fLK{%Q`QaLc?NM0s*U-;)#;e-A0obI+^gfFvTsBQwW;Guo;pEr+AX&?NdBi za=JKa62q{Aj4fbvCq@J*1nkHZ$2E&j{}fM^JS@(q7og6G^raSgz(UGd8mk2c#q$|< z-X^wWcr8aii1_8q!tCe|R%F;qqUkZD`y`~%bU4y+fk(?BeFb~ndzbBX;+1K%!2bL|G&rBadR$cZBd6=-d$a5?OT$Ul!)961Ks zmkXj5Gb*7?Tyj`N$YC;2!9lPb1MNh+lxOFe4Dt_*D9Xz*&;}e5m6%bnM?@oL)bxJw e31*aFSoGyNQSM!gX=0Ys$+N{X7^}rLr}ZBkl4{EU delta 2431 zcma)8YiyHM7=BMLTL+b`V^_A(aVg`HvCROYKp2+>Vj`5w2Fn<6!tg^8XIOQ!nRGB@1WXpAW-27b4EdH7Q=npn!RPayvPpm+eofDFp7Xxv zz4kk&;Z=>RTXRK!+oUZyUFk&pwGy5rA^}iqUs`NkZHLnndLiru>22$NCZREvsIlE* zYm`FlPWffSj??j*YM(DUe&FpBhx+f#z1p84_lt1Z; z$U9!yu<3i@_&Y1F30T?I+S$|bsr8geRCjE)&5nDjjtCvn0v{mW)AHcBqLm?Z-ygCY z-mw1beZznQOg*m%!>jA1f2oBg_rL=US8U;&JIuae$?y(nmtai4D;Fka`d*4zfVM{H zWJ^Pz&oDetg0&WRpGTi_hb`tdxr1u6t_|?!uOiBie_xPlbCe*c4Y8mtCg|ihVQ>XU z3YB-pHY>aSsHmC1uB>hv;Lv+0Z@bj;MV@_?^chX)cL$|85a|{*XmW#U@0i z>r?K_SxK3qPF6b7;$Mi0-u&rxGMtpU3AJi2w#?{m>V^JVkCw%5F5HTR3fqHaPc%Gp z#BlpPrP>hiYR&G5KOnk;mX?aB=w}C&j%>JmlAA(yv*;l=7m&r{@h={66aT;5_#Vw> z8N2!V=6~5NdZHW8h?`ox$tZ6_AhF?F)qA^E#wNOACLYTW#Up>zRAU_+fciO^oSY_n zaz=7~TorE{mYb3%#DcOfaEE*cpJbrej;aZFWT+IrxdX-ieKth}P7au}~vYsrQpqja5~ zip=ZJoX0Wj4`ny+m|ED2ZbYI%VDCNobLuox=(@b0 zI$20LDa|P^$|V?ol9d?$ko9WiFvgRz8{;W?CCyoU{kCCv;g^<-vo)BOK4mq%an^3J z&>Sok!|u|*4Py)L5?XE-v?9rB^3w7|vv*HilG)_lYhERb(=$Z1EK6S?K9}w31)1w{ zdS*hu3s+kfkoQi&Hy|&kFBZpSPKHnPc6^lavdPD)kdT?iF_1RO6BXwRktb%pKk-CH zxkGVw!4oqjD;^l-;}!22R3UZJWMZ}J5=aP}|2;nZ|mOThZARIUN zNIERv2tE>xpmf>^?vd`C0uh$p9H)rNc8u%g@toCIu}&;-L>|QIFlEqIoMk(tdt!kI zN-xG?`NhNn7nhg2;h;pi0S$H6fF~h?d*FQ6ZIS;>oF$?iF6TE^@vgi))oJA}t(U?z zC4miSC~c0+cR8)Gzbk88Q>@&Vh^)noQ|OY1G2>(dn5E00%WmaP^vD}nSO0iq=CmnR zF8)!u1T#+bnB0yT7d$N6Fyr8&^5nEUq{O D%gTp) diff --git a/src/lib/jsmn/example/maptest.c b/src/lib/jsmn/example/maptest.c index 1a3416cc..597b0001 100644 --- a/src/lib/jsmn/example/maptest.c +++ b/src/lib/jsmn/example/maptest.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "../jsmn.c" /* @@ -36,17 +37,28 @@ int main() { int r; size_t z; jsmn_parser p; - jsmntok_t t[128]; /* We expect no more than 128 tokens */ + jsmntok_t t[(BUFSIZ/sizeof(jsmntok_t))*2]; /* We expect no more than 128 tokens */ FILE *fh = fopen("../../../../data/test0.map", "r"); char *json_string = malloc(filesize(fh)); //memset(json_string, 0, sizeof(*json_string)); - memset(&p, 0, sizeof(p)); + //memset(&p, 0, sizeof(p)); + + //printf("\n[[[[%d]]]]\n\n", BUFSIZ); 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\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); + printf("[%d]\n", z); json_string[z] = '\0'; // we can now close the file //printf("]%s[\n", json_s); @@ -56,6 +68,7 @@ int main() { jsmn_init(&p); r = jsmn_parse(&p, json_string, strlen(json_string), t, sizeof(t)/sizeof(t[0])); printf("[\n%s\n]", json_string); + printf("[[%d]]\n",r); if (r < 0) { printf("Failed to parse JSON: %d\n", r); return 1; @@ -96,8 +109,8 @@ int main() { } i += t[i+1].size + 1; } else { - printf("Unexpected key: %.*s\n", t[i].end-t[i].start, - json_string + t[i].start); + /*printf("Unexpected key: %.*s\n", t[i].end-t[i].start, + json_string + t[i].start);*/ } } diff --git a/src/lib/jsmn/example/maptest2.c b/src/lib/jsmn/example/maptest2.c index ae663a2f..6e18a40d 100644 --- a/src/lib/jsmn/example/maptest2.c +++ b/src/lib/jsmn/example/maptest2.c @@ -1,110 +1,115 @@ #include -#include #include +#include +#include #include "../jsmn.c" /* - * A small example of jsmn parsing when JSON structure is known and number of - * tokens is predictable. + * 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 *JSON_S = - "{\"user\": \"johndoe\", \"admin\": false, \"uid\": 1000,\n " - "\"groups\": [\"users\", \"wheel\", \"audio\", \"video\"]}";*/ - -char *JSON_STRING; -char JSON_S[BUFSIZ]; - -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) { +static int dump(const char *js, jsmntok_t *t, size_t count, int indent) { + int i, j, k; + if (count == 0) { return 0; } - return -1; + if (t->type == JSMN_PRIMITIVE) { + printf("%.*s", t->end - t->start, js+t->start); + return 1; + } else if (t->type == JSMN_STRING) { + 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 i; int r; + int eof_expected = 0; + char *js = NULL; + size_t jslen = 0; + char buf[BUFSIZ]; + jsmn_parser p; - FILE *fh = fopen("../../../../data/test.map", "r"); - jsmntok_t *t; /* We expect no more than 128 tokens */ - size_t tokcount = 2048; - /* Allocate some tokens as a start */ - t = malloc(sizeof(*t) * tokcount); - //memset(JSON_S, 0, sizeof(JSON_S)); + jsmntok_t *tok; + size_t tokcount = 2; - if(fh != NULL) - { - fread(JSON_S, 1, filesize(fh), fh); - // we can now close the file - //printf("]%s[\n", JSON_S); - JSON_STRING=JSON_S; - //printf("[[%s]]\n", JSON_STRING); + FILE *fh = fopen("../../../../data/test.map", "r"); + /* Prepare parser */ jsmn_init(&p); - r = jsmn_parse(&p, JSON_STRING, filesize(fh), t, sizeof(t)/sizeof(t[0])); - fclose(fh); fh = NULL; - printf("%s", JSON_STRING); - 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; + /* Allocate some tokens as a start */ + tok = malloc(sizeof(*tok) * tokcount); + if (tok == NULL) { + fprintf(stderr, "malloc(): errno=%d\n", errno); + return 3; } - /* 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 (;;) { + /* 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; } - 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); + } + + 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; } - i += t[i+1].size + 1; } else { - printf("Unexpected key: %.*s\n", t[i].end-t[i].start, - JSON_STRING + t[i].start); + dump(js, tok, p.toknext, 0); + printf("[\n%d\n]", jslen); + eof_expected = 1; } } - //free(JSON_STRING); - } - if (fh != NULL) fclose(fh); - ////} return 0; } -- 2.39.5