1
1
import { BACK_SLASH , COMMA , CHAR_F , BRACE_LEFT , BRACKET_LEFT , CHAR_N , QUOTE , BRACE_RIGHT , BRACKET_RIGHT , CHAR_T , COLON } from "../../custom/chars" ;
2
2
import { isSpace } from "../../util" ;
3
+ import { ptrToStr } from "../../util/ptrToStr" ;
3
4
4
5
export function deserializeObject < T > ( srcStart : usize , srcEnd : usize , dst : usize ) : T {
6
+ const out = changetype < T > ( dst ) ;
5
7
const srcPtr = srcStart ;
6
8
7
9
let keyStart : usize = 0 ;
@@ -20,7 +22,7 @@ export function deserializeObject<T>(srcStart: usize, srcEnd: usize, dst: usize)
20
22
if ( isKey ) {
21
23
keyStart = lastIndex ;
22
24
keyEnd = srcStart ;
23
- console . log ( "Key: " + str ( lastIndex , srcStart ) ) ;
25
+ console . log ( "Key: " + ptrToStr ( lastIndex , srcStart ) ) ;
24
26
while ( isSpace ( ( code = load < u16 > ( ( srcStart += 2 ) ) ) ) ) {
25
27
/* empty */
26
28
}
@@ -43,9 +45,9 @@ export function deserializeObject<T>(srcStart: usize, srcEnd: usize, dst: usize)
43
45
while ( isSpace ( load < u16 > ( ( srcStart += 2 ) ) ) ) {
44
46
/* empty */
45
47
}
46
- console . log ( "Value (string): " + str ( lastIndex , srcStart ) ) ;
48
+ console . log ( "Value (string): " + ptrToStr ( lastIndex , srcStart ) ) ;
47
49
// @ts -ignore: exists
48
- dst . __DESERIALIZE ( keyStart , keyEnd , lastIndex , srcStart ) ;
50
+ out . __DESERIALIZE ( keyStart , keyEnd , lastIndex , srcStart , dst ) ;
49
51
keyStart = 0 ;
50
52
break ;
51
53
}
@@ -58,8 +60,8 @@ export function deserializeObject<T>(srcStart: usize, srcEnd: usize, dst: usize)
58
60
const code = load < u16 > ( srcStart ) ;
59
61
if ( code == COMMA || code == BRACE_RIGHT || isSpace ( code ) ) {
60
62
// @ts -ignore: exists
61
- dst . __DESERIALIZE ( keyStart , keyEnd , lastIndex , srcStart ) ;
62
- console . log ( "Value (number): " + str ( lastIndex , srcStart ) ) ;
63
+ out . __DESERIALIZE ( keyStart , keyEnd , lastIndex , srcStart , dst ) ;
64
+ console . log ( "Value (number): " + ptrToStr ( lastIndex , srcStart ) ) ;
63
65
while ( isSpace ( load < u16 > ( ( srcStart += 2 ) ) ) ) {
64
66
/* empty */
65
67
}
@@ -77,8 +79,8 @@ export function deserializeObject<T>(srcStart: usize, srcEnd: usize, dst: usize)
77
79
if ( ( ( code ^ BRACE_RIGHT ) | ( code ^ BRACKET_RIGHT ) ) == 32 ) {
78
80
if ( -- depth == 0 ) {
79
81
// @ts -ignore: exists
80
- dst . __DESERIALIZE ( keyStart , keyEnd , lastIndex , srcStart ) ;
81
- console . log ( "Value (object): " + str ( lastIndex , srcStart ) ) ;
82
+ out . __DESERIALIZE ( keyStart , keyEnd , lastIndex , srcStart , dst ) ;
83
+ console . log ( "Value (object): " + ptrToStr ( lastIndex , srcStart ) ) ;
82
84
keyStart = 0 ;
83
85
while ( isSpace ( load < u16 > ( ( srcStart += 2 ) ) ) ) {
84
86
/* empty */
@@ -91,8 +93,8 @@ export function deserializeObject<T>(srcStart: usize, srcEnd: usize, dst: usize)
91
93
} else if ( code == CHAR_T ) {
92
94
if ( load < u64 > ( srcStart ) == 28429475166421108 ) {
93
95
// @ts -ignore: exists
94
- dst . __DESERIALIZE ( keyStart , keyEnd , srcStart , ( srcStart += 8 ) ) ;
95
- console . log ( "Value (bool): " + str ( srcStart - 8 , srcStart ) ) ;
96
+ out . __DESERIALIZE ( keyStart , keyEnd , srcStart , ( srcStart += 8 ) , dst ) ;
97
+ console . log ( "Value (bool): " + ptrToStr ( srcStart - 8 , srcStart ) ) ;
96
98
while ( isSpace ( load < u16 > ( ( srcStart += 2 ) ) ) ) {
97
99
/* empty */
98
100
}
@@ -101,8 +103,8 @@ export function deserializeObject<T>(srcStart: usize, srcEnd: usize, dst: usize)
101
103
} else if ( code == CHAR_F ) {
102
104
if ( load < u64 > ( srcStart , 2 ) == 28429466576093281 ) {
103
105
// @ts -ignore: exists
104
- dst . __DESERIALIZE ( keyStart , keyEnd , srcStart , ( srcStart += 10 ) ) ;
105
- console . log ( "Value (bool): " + str ( srcStart - 10 , srcStart ) ) ;
106
+ out . __DESERIALIZE ( keyStart , keyEnd , srcStart , ( srcStart += 10 ) , dst ) ;
107
+ console . log ( "Value (bool): " + ptrToStr ( srcStart - 10 , srcStart ) ) ;
106
108
while ( isSpace ( load < u16 > ( ( srcStart += 2 ) ) ) ) {
107
109
/* empty */
108
110
}
@@ -111,21 +113,14 @@ export function deserializeObject<T>(srcStart: usize, srcEnd: usize, dst: usize)
111
113
} else if ( code == CHAR_N ) {
112
114
if ( load < u64 > ( srcStart ) == 30399761348886638 ) {
113
115
// @ts -ignore: exists
114
- dst . __DESERIALIZE ( keyStart , keyEnd , srcStart , ( srcStart += 8 ) ) ;
115
- console . log ( "Value (null): " + str ( srcStart - 8 , srcStart ) ) ;
116
+ out . __DESERIALIZE ( keyStart , keyEnd , srcStart , ( srcStart += 8 ) , dst ) ;
117
+ console . log ( "Value (null): " + ptrToStr ( srcStart - 8 , srcStart ) ) ;
116
118
while ( isSpace ( load < u16 > ( ( srcStart += 2 ) ) ) ) {
117
119
/* empty */
118
120
}
119
121
}
120
122
}
121
123
}
122
124
}
123
- return dst ;
124
- }
125
-
126
- function str ( start : usize , end : usize ) : string {
127
- const size = end - start ;
128
- const out = __new ( size , idof < string > ( ) ) ;
129
- memory . copy ( out , start , size ) ;
130
- return changetype < string > ( out ) ;
125
+ return out ;
131
126
}
0 commit comments