From 448b69c8e966904377cd871450b3764501e986a5 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Tue, 3 May 2022 01:16:55 +0300 Subject: [PATCH] simplified blank hashtables serialization --- DtsodParser/DtsodV24_serialize.c | 16 +++++++++++++++- tests/test_dtsod.c | 7 ++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/DtsodParser/DtsodV24_serialize.c b/DtsodParser/DtsodV24_serialize.c index ce632d0..4a6181e 100644 --- a/DtsodParser/DtsodV24_serialize.c +++ b/DtsodParser/DtsodV24_serialize.c @@ -74,6 +74,20 @@ Maybe __AppendValue(SerializeSharedData* shared, Unitype u){ } break; case HashtablePtr: + // check hashtable is blank + Hashtable_foreach(((Hashtable*)u.VoidPtr), __, ({ + goto hashtableNotBlank; + if(__.key); // weird way to disable warning + })); + + + // blank hashtable + addc('{'); + addc('}'); + break; + + // not blank hashtable + hashtableNotBlank: addc('\n'); AppendTabs(); addc('{'); @@ -94,7 +108,7 @@ Maybe __serialize(StringBuilder* _b, uint8 _tabs, Hashtable* dtsod){ .sh_tabs=_tabs }; SerializeSharedData* shared=&_shared; - + Hashtable_foreach(dtsod, p, ({ AppendTabs(); StringBuilder_append_cptr(b,p.key); diff --git a/tests/test_dtsod.c b/tests/test_dtsod.c index 54ed465..a42a970 100644 --- a/tests/test_dtsod.c +++ b/tests/test_dtsod.c @@ -11,7 +11,8 @@ const char text[]= " double: 965.557f;#another comment!\n" " text: \"_$\\\"\\\\'''a ыыы000;2;=:%d;```\";\n" " list: [10,20,30,0,0 ];" -"};"; +"};" +"h: { };"; void print_dtsod(Hashtable* dtsod){ printf("\e[92m"); @@ -47,7 +48,7 @@ void test_dtsod(){ tryLast(DtsodV24_serialize(dtsod),r) s=r.value.VoidPtr; })); - Hashtable_free(dtsod); + DtsodV24_free(dtsod); printf("\e[92m%s",s); optime("reserialize",10,({ @@ -56,7 +57,7 @@ void test_dtsod(){ free(s); tryLast(DtsodV24_serialize(dtsod),rr) s=rr.value.VoidPtr; - Hashtable_free(dtsod); + DtsodV24_free(dtsod); })); free(s);