@@ -10,6 +10,16 @@ use crate::utils::cast_num_to_u32;
10
10
* @brief getter methods for extracting array types out of a JSON struct
11
11
**/
12
12
impl <let NumBytes : u32 , let NumPackedFields : u32 , let MaxNumTokens : u32 , let MaxNumValues : u32 , let MaxKeyFields : u32 > JSON <NumBytes , NumPackedFields , MaxNumTokens , MaxNumValues , MaxKeyFields > {
13
+ /**
14
+ * @brief Updates the JSON object to point to a specific array entry
15
+ **/
16
+ pub (crate ) fn update_json_array (mut self , entry : JSONEntry , key_index : u32 ) -> Self {
17
+ self .layer_type_of_root = cast_num_to_u32 (entry .parent_index );
18
+ self .root_id = entry .id ;
19
+ self .layer_type_of_root = ARRAY_LAYER ;
20
+ self .root_index_in_transcript = key_index ;
21
+ self
22
+ }
13
23
14
24
/**
15
25
* @brief if the root JSON is an array, return its length
@@ -34,14 +44,10 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
34
44
"key does not describe an object" ,
35
45
);
36
46
37
- let mut r = self ;
38
- r .layer_type_of_root = cast_num_to_u32 (entry .parent_index );
39
- r .root_id = entry .id ;
40
- r .layer_type_of_root = ARRAY_LAYER ;
41
- r .root_index_in_transcript = key_index ;
47
+ let result = self .update_json_array (entry , key_index );
42
48
43
49
if exists {
44
- Option ::some (r )
50
+ Option ::some (result )
45
51
} else {
46
52
Option ::none ()
47
53
}
@@ -57,13 +63,7 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
57
63
let (entry , key_index ) = self .get_json_entry_unchecked_with_key_index (key );
58
64
assert (entry .entry_type == END_ARRAY_TOKEN as Field , "key does not describe an object" );
59
65
60
- let mut r = self ;
61
- r .layer_type_of_root = cast_num_to_u32 (entry .parent_index );
62
- r .root_id = entry .id ;
63
- r .layer_type_of_root = ARRAY_LAYER ;
64
- r .root_index_in_transcript = key_index ;
65
-
66
- r
66
+ self .update_json_array (entry , key_index )
67
67
}
68
68
69
69
/**
@@ -85,14 +85,10 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
85
85
);
86
86
}
87
87
88
- let mut r = self ;
89
- r .layer_type_of_root = cast_num_to_u32 (entry .parent_index );
90
- r .root_id = entry .id ;
91
- r .layer_type_of_root = ARRAY_LAYER ;
92
- r .root_index_in_transcript = key_index ;
88
+ let result = self .update_json_array (entry , key_index );
93
89
94
90
if exists {
95
- Option ::some (r )
91
+ Option ::some (result )
96
92
} else {
97
93
Option ::none ()
98
94
}
@@ -110,13 +106,7 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
110
106
let (entry , key_index ) = self .get_json_entry_unchecked_with_key_index_var (key );
111
107
assert (entry .entry_type == END_ARRAY_TOKEN as Field , "key does not describe an object" );
112
108
113
- let mut r = self ;
114
- r .layer_type_of_root = cast_num_to_u32 (entry .parent_index );
115
- r .root_id = entry .id ;
116
- r .layer_type_of_root = ARRAY_LAYER ;
117
- r .root_index_in_transcript = key_index ;
118
-
119
- r
109
+ self .update_json_array (entry , key_index )
120
110
}
121
111
122
112
/**
@@ -143,14 +133,10 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
143
133
);
144
134
}
145
135
146
- let mut r = self ;
147
- r .layer_type_of_root = cast_num_to_u32 (entry .parent_index );
148
- r .root_id = entry .id ;
149
- r .layer_type_of_root = ARRAY_LAYER ;
150
- r .root_index_in_transcript = cast_num_to_u32 (entry_index );
136
+ let result = self .update_json_array (entry , cast_num_to_u32 (entry_index ));
151
137
152
138
if valid {
153
- Option ::some (r )
139
+ Option ::some (result )
154
140
} else {
155
141
Option ::none ()
156
142
}
@@ -177,12 +163,7 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
177
163
"get_array_from_array_unchecked: entry exists but is not an array!" ,
178
164
);
179
165
180
- let mut r = self ;
181
- r .layer_type_of_root = cast_num_to_u32 (entry .parent_index );
182
- r .root_id = entry .id ;
183
- r .layer_type_of_root = ARRAY_LAYER ;
184
- r .root_index_in_transcript = cast_num_to_u32 (entry_index );
185
- r
166
+ self .update_json_array (entry , cast_num_to_u32 (entry_index ))
186
167
}
187
168
188
169
/**
0 commit comments