Skip to content

Commit 6cd0d16

Browse files
committed
V1.4.6_7 | json.h metaprogramming indexed tags updated [TESTED]
1 parent aab074f commit 6cd0d16

3 files changed

Lines changed: 114 additions & 170 deletions

File tree

include/nodepp/json.h

Lines changed: 75 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ namespace nodepp { class json_t {
6565

6666
if ( data.empty() || data[x] == ',' ) /*---*/ { return nullptr; }
6767
elif( data[x] == '"' ) /*---------------*/ {
68-
return data.slice( x+1, get_next_sec( x, data ) ); }
68+
return data.slice( x+1, get_next_sec( x, data) ); }
6969
elif( data[x] == '{' ) /*---------------*/ { return parse( data ); }
7070
elif( data[x] == '[' ) /*---------------*/ { return parse( data ); }
7171
elif( data.find("false") ) /*---------------*/ { return (bool) 0; }
@@ -132,7 +132,7 @@ public: json_t() noexcept {}
132132
} elif( str[x] == ']' || str[x] == '}' || str[x] == ')' ){
133133
return nullptr;
134134
} else {
135-
if( string::is_space( str[x] ) )
135+
if( string::is_space( str[x]) )
136136
{ continue; } data.push( str[x] );
137137
}
138138

@@ -163,126 +163,118 @@ public: json_t() noexcept {}
163163

164164
switch( obj.get_type_id() ){
165165

166-
case 0x0001: return string::to_string( obj.as<int>() ); break;
167-
case 0x0002: return string::to_string( obj.as<uint>() ); break;
168-
case 0x0003: return obj.as<bool>() ? "true" : "false"; break;
169-
case 0x0004: return string::format("\"%c\"",obj.as<char>()); break;
170-
case 0x0005: return string::to_string( obj.as<long>() ); break;
171-
case 0x0006: return string::to_string( obj.as<short>() ); break;
172-
case 0x0007: return string::to_string( obj.as<uchar>() ); break;
173-
case 0x0008: return string::to_string( obj.as<llong>() ); break;
174-
case 0x0009: return string::to_string( obj.as<ulong>() ); break;
175-
case 0x000a: return string::to_string( obj.as<ushort>() ); break;
176-
case 0x000b: return string::to_string( obj.as<ullong>() ); break;
177-
case 0x000c: return string::to_string( obj.as<wchar_t>() ); break;
178-
case 0x000d: return string::to_string( obj.as<char16_t>() ); break;
179-
case 0x000e: return string::to_string( obj.as<char32_t>() ); break;
180-
case 0x000f: return string::to_string( obj.as<float>() ); break;
181-
case 0x0010: return string::to_string( obj.as<double>() ); break;
182-
case 0x0011: return string::to_string( obj.as<ldouble>() ); break;
183-
case 0x0012: return regex ::format("\"${0}\"",obj.as<string_t>().get()); break;
184-
185-
case 0xfA03: do { out.push('[');
166+
case 0x0001: return string::to_string( obj.as<int> () ); break;
167+
case 0x0002: return string::to_string( obj.as<uint> () ); break;
168+
case 0x0003: return obj.as<bool>() ? "true" : "false"; break;
169+
case 0x0004: return string::format("\"%c\"",obj.as<char>()); break;
170+
case 0x0005: return string::to_string( obj.as<long> () ); break;
171+
case 0x0006: return string::to_string( obj.as<short> () ); break;
172+
case 0x0007: return string::to_string( obj.as<uchar> () ); break;
173+
case 0x0008: return string::to_string( obj.as<llong> () ); break;
174+
case 0x0009: return string::to_string( obj.as<ulong> () ); break;
175+
case 0x000A: return string::to_string( obj.as<ushort> () ); break;
176+
case 0x000B: return string::to_string( obj.as<ullong> () ); break;
177+
case 0x000C: return string::to_string( obj.as<wchar_t> () ); break;
178+
case 0x000D: return string::to_string( obj.as<float> () ); break;
179+
case 0x000E: return string::to_string( obj.as<double> () ); break;
180+
case 0x000F: return string::to_string( obj.as<ldouble> () ); break;
181+
case 0x0010: return regex ::format("\"${0}\"",obj.as<string_t>()); break;
182+
183+
case 0xFA03: do { out.push('[');
186184
for( auto &x: obj.as<array_t<bool>>() )
187185
{ out += regex::format("\"${0}\",",x ? "true":"false" ); }
188186
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
189187
out.push(']'); } while(0); break;
190188

191-
case 0xfA04: do { out.push('[');
189+
case 0xFA04: do { out.push('[');
192190
for( auto &x: obj.as<array_t<char>>() )
193191
{ out += string::format("\"%c\",", x ); }
194192
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
195193
out.push(']'); } while(0); break;
196194

197-
case 0xfA12: do { out.push('[');
195+
case 0xFA10: do { out.push('[');
198196
for( auto &x: obj.as<array_t<string_t>>() )
199197
{ out += regex::format("\"${0}\",", x.get() ); }
200198
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
201199
out.push(']'); } while(0); break;
202200

203-
case 0xfA01: return regex::format("[${0}]",obj.as<array_t<int>>() .join().get()); break;
204-
case 0xfA02: return regex::format("[${0}]",obj.as<array_t<uint>>() .join().get()); break;
205-
case 0xfA05: return regex::format("[${0}]",obj.as<array_t<long>>() .join().get()); break;
206-
case 0xfA06: return regex::format("[${0}]",obj.as<array_t<short>>() .join().get()); break;
207-
case 0xfA07: return regex::format("[${0}]",obj.as<array_t<uchar>>() .join().get()); break;
208-
case 0xfA08: return regex::format("[${0}]",obj.as<array_t<llong>>() .join().get()); break;
209-
case 0xfA09: return regex::format("[${0}]",obj.as<array_t<ulong>>() .join().get()); break;
210-
case 0xfA0a: return regex::format("[${0}]",obj.as<array_t<ushort>>() .join().get()); break;
211-
case 0xfA0b: return regex::format("[${0}]",obj.as<array_t<ullong>>() .join().get()); break;
212-
case 0xfA0c: return regex::format("[${0}]",obj.as<array_t<wchar_t>>() .join().get()); break;
213-
case 0xfA0d: return regex::format("[${0}]",obj.as<array_t<char16_t>>().join().get()); break;
214-
case 0xfA0e: return regex::format("[${0}]",obj.as<array_t<char32_t>>().join().get()); break;
215-
case 0xfA0f: return regex::format("[${0}]",obj.as<array_t<float>>() .join().get()); break;
216-
case 0xfA10: return regex::format("[${0}]",obj.as<array_t<double>>() .join().get()); break;
217-
case 0xfA11: return regex::format("[${0}]",obj.as<array_t<ldouble>>() .join().get()); break;
218-
219-
case 0xf603: do { out.push('[');
201+
case 0xFA01: return regex::format("[${0}]",string::join(obj.as<array_t<int>> ()) ); break;
202+
case 0xFA02: return regex::format("[${0}]",string::join(obj.as<array_t<uint>> ()) ); break;
203+
case 0xFA05: return regex::format("[${0}]",string::join(obj.as<array_t<long>> ()) ); break;
204+
case 0xFA06: return regex::format("[${0}]",string::join(obj.as<array_t<short>> ()) ); break;
205+
case 0xFA07: return regex::format("[${0}]",string::join(obj.as<array_t<uchar>> ()) ); break;
206+
case 0xFA08: return regex::format("[${0}]",string::join(obj.as<array_t<llong>> ()) ); break;
207+
case 0xFA09: return regex::format("[${0}]",string::join(obj.as<array_t<ulong>> ()) ); break;
208+
case 0xFA0A: return regex::format("[${0}]",string::join(obj.as<array_t<ushort>> ()) ); break;
209+
case 0xFA0B: return regex::format("[${0}]",string::join(obj.as<array_t<ullong>> ()) ); break;
210+
case 0xFA0C: return regex::format("[${0}]",string::join(obj.as<array_t<wchar_t>>()) ); break;
211+
case 0xFA0D: return regex::format("[${0}]",string::join(obj.as<array_t<float>> ()) ); break;
212+
case 0xFA0E: return regex::format("[${0}]",string::join(obj.as<array_t<double>> ()) ); break;
213+
case 0xFA0F: return regex::format("[${0}]",string::join(obj.as<array_t<ldouble>>()) ); break;
214+
215+
case 0xF603: do { out.push('[');
220216
for( auto &x: obj.as<ptr_t<bool>>() )
221217
{ out += regex::format("\"${0}\",",x ? "true":"false" ); }
222218
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
223219
out.push(']'); } while(0); break;
224220

225-
case 0xf604: do { out.push('[');
221+
case 0xF604: do { out.push('[');
226222
for( auto &x: obj.as<ptr_t<char>>() )
227223
{ out += string::format("\"%c\",", x ); }
228224
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
229225
out.push(']'); } while(0); break;
230226

231-
case 0xf612: do { out.push('[');
227+
case 0xF610: do { out.push('[');
232228
for( auto &x: obj.as<ptr_t<string_t>>() )
233229
{ out += regex::format("\"${0}\",", x.get() ); }
234230
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
235231
out.push(']'); } while(0); break;
236232

237-
case 0xf601: return regex::format("[${0}]",array_t<int>(obj.as<ptr_t<int>>()) .join().get()); break;
238-
case 0xf602: return regex::format("[${0}]",array_t<uint>(obj.as<ptr_t<uint>>()) .join().get()); break;
239-
case 0xf605: return regex::format("[${0}]",array_t<long>(obj.as<ptr_t<long>>()) .join().get()); break;
240-
case 0xf606: return regex::format("[${0}]",array_t<short>(obj.as<ptr_t<short>>()) .join().get()); break;
241-
case 0xf607: return regex::format("[${0}]",array_t<uchar>(obj.as<ptr_t<uchar>>()) .join().get()); break;
242-
case 0xf608: return regex::format("[${0}]",array_t<llong>(obj.as<ptr_t<llong>>()) .join().get()); break;
243-
case 0xf609: return regex::format("[${0}]",array_t<ulong>(obj.as<ptr_t<ulong>>()) .join().get()); break;
244-
case 0xf60a: return regex::format("[${0}]",array_t<ushort>(obj.as<ptr_t<ushort>>()) .join().get()); break;
245-
case 0xf60b: return regex::format("[${0}]",array_t<ullong>(obj.as<ptr_t<ullong>>()) .join().get()); break;
246-
case 0xf60c: return regex::format("[${0}]",array_t<wchar_t>(obj.as<ptr_t<wchar_t>>()) .join().get()); break;
247-
case 0xf60d: return regex::format("[${0}]",array_t<char16_t>(obj.as<ptr_t<char16_t>>()).join().get()); break;
248-
case 0xf60e: return regex::format("[${0}]",array_t<char32_t>(obj.as<ptr_t<char32_t>>()).join().get()); break;
249-
case 0xf60f: return regex::format("[${0}]",array_t<float>(obj.as<ptr_t<float>>()) .join().get()); break;
250-
case 0xf610: return regex::format("[${0}]",array_t<double>(obj.as<ptr_t<double>>()) .join().get()); break;
251-
case 0xf611: return regex::format("[${0}]",array_t<ldouble>(obj.as<ptr_t<ldouble>>()) .join().get()); break;
252-
253-
case 0xf803: do { out.push('[');
254-
for( auto &x: obj.as<queue_t<bool>>().data() )
255-
{ out += regex::format("\"${0}\",",x ? "true":"false" ); }
233+
case 0xF601: return regex::format("[${0}]",string::join(obj.as<ptr_t<int>> ()) ); break;
234+
case 0xF602: return regex::format("[${0}]",string::join(obj.as<ptr_t<uint>> ()) ); break;
235+
case 0xF605: return regex::format("[${0}]",string::join(obj.as<ptr_t<long>> ()) ); break;
236+
case 0xF606: return regex::format("[${0}]",string::join(obj.as<ptr_t<short>> ()) ); break;
237+
case 0xF607: return regex::format("[${0}]",string::join(obj.as<ptr_t<uchar>> ()) ); break;
238+
case 0xF608: return regex::format("[${0}]",string::join(obj.as<ptr_t<llong>> ()) ); break;
239+
case 0xF609: return regex::format("[${0}]",string::join(obj.as<ptr_t<ulong>> ()) ); break;
240+
case 0xF60A: return regex::format("[${0}]",string::join(obj.as<ptr_t<ushort>> ()) ); break;
241+
case 0xF60B: return regex::format("[${0}]",string::join(obj.as<ptr_t<ullong>> ()) ); break;
242+
case 0xF60C: return regex::format("[${0}]",string::join(obj.as<ptr_t<wchar_t>>()) ); break;
243+
case 0xF60D: return regex::format("[${0}]",string::join(obj.as<ptr_t<float>> ()) ); break;
244+
case 0xF60E: return regex::format("[${0}]",string::join(obj.as<ptr_t<double>> ()) ); break;
245+
case 0xF60F: return regex::format("[${0}]",string::join(obj.as<ptr_t<ldouble>>()) ); break;
246+
247+
case 0xF803: do { out.push('[');
248+
obj.as<queue_t<bool>>().map([&]( bool x )
249+
{ out += regex::format("\"${0}\",",x ? "true":"false" ); });
256250
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
257251
out.push(']'); } while(0); break;
258252

259-
case 0xf804: do { out.push('[');
260-
for( auto &x: obj.as<queue_t<char>>().data() )
261-
{ out += string::format("\"%c\",", x ); }
253+
case 0xF804: do { out.push('[');
254+
obj.as<queue_t<char>>().map([&]( char x )
255+
{ out += string::format("\"%c\",", x ); });
262256
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
263257
out.push(']'); } while(0); break;
264258

265-
case 0xf812: do { out.push('[');
266-
for( auto &x: obj.as<queue_t<string_t>>().data() )
267-
{ out += regex::format("\"${0}\",", x.get() ); }
259+
case 0xF810: do { out.push('[');
260+
obj.as<queue_t<string_t>>().map([&]( string_t x )
261+
{ out += regex::format("\"${0}\",", x.get() ); });
268262
if ( out[ out.size()-1 ] == ',' ){ out.pop(); }
269263
out.push(']'); } while(0); break;
270264

271-
case 0xf801: return regex::format("[${0}]",array_t<int>(obj.as<queue_t<int>>().data()) .join().get()); break;
272-
case 0xf802: return regex::format("[${0}]",array_t<uint>(obj.as<queue_t<uint>>().data()) .join().get()); break;
273-
case 0xf805: return regex::format("[${0}]",array_t<long>(obj.as<queue_t<long>>().data()) .join().get()); break;
274-
case 0xf806: return regex::format("[${0}]",array_t<short>(obj.as<queue_t<short>>().data()) .join().get()); break;
275-
case 0xf807: return regex::format("[${0}]",array_t<uchar>(obj.as<queue_t<uchar>>().data()) .join().get()); break;
276-
case 0xf808: return regex::format("[${0}]",array_t<llong>(obj.as<queue_t<llong>>().data()) .join().get()); break;
277-
case 0xf809: return regex::format("[${0}]",array_t<ulong>(obj.as<queue_t<ulong>>().data()) .join().get()); break;
278-
case 0xf80a: return regex::format("[${0}]",array_t<ushort>(obj.as<queue_t<ushort>>().data()) .join().get()); break;
279-
case 0xf80b: return regex::format("[${0}]",array_t<ullong>(obj.as<queue_t<ullong>>().data()) .join().get()); break;
280-
case 0xf80c: return regex::format("[${0}]",array_t<wchar_t>(obj.as<queue_t<wchar_t>>().data()) .join().get()); break;
281-
case 0xf80d: return regex::format("[${0}]",array_t<char16_t>(obj.as<queue_t<char16_t>>().data()).join().get()); break;
282-
case 0xf80e: return regex::format("[${0}]",array_t<char32_t>(obj.as<queue_t<char32_t>>().data()).join().get()); break;
283-
case 0xf80f: return regex::format("[${0}]",array_t<float>(obj.as<queue_t<float>>().data()) .join().get()); break;
284-
case 0xf810: return regex::format("[${0}]",array_t<double>(obj.as<queue_t<double>>().data()) .join().get()); break;
285-
case 0xf811: return regex::format("[${0}]",array_t<ldouble>(obj.as<queue_t<ldouble>>().data()) .join().get()); break;
265+
case 0xF801: return regex::format("[${0}]",string::join(obj.as<queue_t<int>> ()) ); break;
266+
case 0xF802: return regex::format("[${0}]",string::join(obj.as<queue_t<uint>> ()) ); break;
267+
case 0xF805: return regex::format("[${0}]",string::join(obj.as<queue_t<long>> ()) ); break;
268+
case 0xF806: return regex::format("[${0}]",string::join(obj.as<queue_t<short>> ()) ); break;
269+
case 0xF807: return regex::format("[${0}]",string::join(obj.as<queue_t<uchar>> ()) ); break;
270+
case 0xF808: return regex::format("[${0}]",string::join(obj.as<queue_t<llong>> ()) ); break;
271+
case 0xF809: return regex::format("[${0}]",string::join(obj.as<queue_t<ulong>> ()) ); break;
272+
case 0xF80A: return regex::format("[${0}]",string::join(obj.as<queue_t<ushort>> ()) ); break;
273+
case 0xF80B: return regex::format("[${0}]",string::join(obj.as<queue_t<ullong>> ()) ); break;
274+
case 0xF80C: return regex::format("[${0}]",string::join(obj.as<queue_t<wchar_t>>()) ); break;
275+
case 0xF80D: return regex::format("[${0}]",string::join(obj.as<queue_t<float>> ()) ); break;
276+
case 0xF80E: return regex::format("[${0}]",string::join(obj.as<queue_t<double>> ()) ); break;
277+
case 0xF80F: return regex::format("[${0}]",string::join(obj.as<queue_t<ldouble>>()) ); break;
286278

287279
default: return "{}"; break;
288280
}

0 commit comments

Comments
 (0)