Skip to content

Commit 04c6f76

Browse files
committed
Revert "todo: try to fix some strange issue (?)"
This reverts commit d696972.
1 parent aadf69a commit 04c6f76

File tree

3 files changed

+259
-247
lines changed

3 files changed

+259
-247
lines changed

src/de_mut/group.rs

Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
use super::{DtError, GroupCursor, RefDtb, RegConfig};
2+
use serde::de;
3+
4+
#[allow(unused)]
5+
pub(super) struct GroupDeserializer<'de> {
6+
pub dtb: RefDtb<'de>,
7+
pub cursor: GroupCursor,
8+
pub reg: RegConfig,
9+
pub len_item: usize,
10+
pub len_name: usize,
11+
}
12+
13+
impl<'de, 'b> de::Deserializer<'de> for &'b mut GroupDeserializer<'de> {
14+
type Error = DtError;
15+
16+
fn deserialize_any<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
17+
where
18+
V: de::Visitor<'de>,
19+
{
20+
todo!("any")
21+
}
22+
23+
fn deserialize_bool<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
24+
where
25+
V: de::Visitor<'de>,
26+
{
27+
todo!("bool")
28+
}
29+
30+
fn deserialize_i8<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
31+
where
32+
V: de::Visitor<'de>,
33+
{
34+
todo!("i8")
35+
}
36+
37+
fn deserialize_i16<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
38+
where
39+
V: de::Visitor<'de>,
40+
{
41+
todo!("i16")
42+
}
43+
44+
fn deserialize_i32<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
45+
where
46+
V: de::Visitor<'de>,
47+
{
48+
todo!("i32")
49+
}
50+
51+
fn deserialize_i64<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
52+
where
53+
V: de::Visitor<'de>,
54+
{
55+
todo!("i64")
56+
}
57+
58+
fn deserialize_u8<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
59+
where
60+
V: de::Visitor<'de>,
61+
{
62+
todo!("u8")
63+
}
64+
65+
fn deserialize_u16<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
66+
where
67+
V: de::Visitor<'de>,
68+
{
69+
todo!("u16")
70+
}
71+
72+
fn deserialize_u32<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
73+
where
74+
V: de::Visitor<'de>,
75+
{
76+
todo!("u32")
77+
}
78+
79+
fn deserialize_u64<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
80+
where
81+
V: de::Visitor<'de>,
82+
{
83+
todo!("u64")
84+
}
85+
86+
fn deserialize_f32<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
87+
where
88+
V: de::Visitor<'de>,
89+
{
90+
todo!("f32")
91+
}
92+
93+
fn deserialize_f64<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
94+
where
95+
V: de::Visitor<'de>,
96+
{
97+
todo!("f64")
98+
}
99+
100+
fn deserialize_char<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
101+
where
102+
V: de::Visitor<'de>,
103+
{
104+
todo!("char")
105+
}
106+
107+
fn deserialize_str<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
108+
where
109+
V: de::Visitor<'de>,
110+
{
111+
todo!("str")
112+
}
113+
114+
fn deserialize_string<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
115+
where
116+
V: de::Visitor<'de>,
117+
{
118+
todo!("string")
119+
}
120+
121+
fn deserialize_bytes<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
122+
where
123+
V: de::Visitor<'de>,
124+
{
125+
todo!("bytes")
126+
}
127+
128+
fn deserialize_byte_buf<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
129+
where
130+
V: de::Visitor<'de>,
131+
{
132+
todo!("byte_buf")
133+
}
134+
135+
fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Self::Error>
136+
where
137+
V: de::Visitor<'de>,
138+
{
139+
visitor.visit_some(self)
140+
}
141+
142+
fn deserialize_unit<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
143+
where
144+
V: de::Visitor<'de>,
145+
{
146+
todo!("unit")
147+
}
148+
149+
fn deserialize_unit_struct<V>(
150+
self,
151+
_name: &'static str,
152+
_visitor: V,
153+
) -> Result<V::Value, Self::Error>
154+
where
155+
V: de::Visitor<'de>,
156+
{
157+
todo!("unit_struct")
158+
}
159+
160+
fn deserialize_newtype_struct<V>(
161+
self,
162+
name: &'static str,
163+
visitor: V,
164+
) -> Result<V::Value, Self::Error>
165+
where
166+
V: de::Visitor<'de>,
167+
{
168+
if name == "NodeSeq" {
169+
visitor.visit_borrowed_bytes(unsafe {
170+
core::slice::from_raw_parts(
171+
self as *const _ as *const u8,
172+
core::mem::size_of::<GroupDeserializer<'_>>(),
173+
)
174+
})
175+
} else {
176+
visitor.visit_newtype_struct(self)
177+
}
178+
}
179+
180+
fn deserialize_seq<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
181+
where
182+
V: de::Visitor<'de>,
183+
{
184+
todo!("seq")
185+
}
186+
187+
fn deserialize_tuple<V>(self, _len: usize, _visitor: V) -> Result<V::Value, Self::Error>
188+
where
189+
V: de::Visitor<'de>,
190+
{
191+
todo!("tuple")
192+
}
193+
194+
fn deserialize_tuple_struct<V>(
195+
self,
196+
_name: &'static str,
197+
_len: usize,
198+
_visitor: V,
199+
) -> Result<V::Value, Self::Error>
200+
where
201+
V: de::Visitor<'de>,
202+
{
203+
todo!("tuple_struct")
204+
}
205+
206+
fn deserialize_map<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
207+
where
208+
V: de::Visitor<'de>,
209+
{
210+
todo!("map")
211+
}
212+
213+
fn deserialize_struct<V>(
214+
self,
215+
_name: &'static str,
216+
_fields: &'static [&'static str],
217+
_visitor: V,
218+
) -> Result<V::Value, Self::Error>
219+
where
220+
V: de::Visitor<'de>,
221+
{
222+
todo!("struct")
223+
}
224+
225+
fn deserialize_enum<V>(
226+
self,
227+
_name: &'static str,
228+
_variants: &'static [&'static str],
229+
_visitor: V,
230+
) -> Result<V::Value, Self::Error>
231+
where
232+
V: de::Visitor<'de>,
233+
{
234+
todo!("enum")
235+
}
236+
237+
fn deserialize_identifier<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
238+
where
239+
V: de::Visitor<'de>,
240+
{
241+
todo!("identifer")
242+
}
243+
244+
fn deserialize_ignored_any<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
245+
where
246+
V: de::Visitor<'de>,
247+
{
248+
todo!("ignored_any")
249+
}
250+
}

src/de_mut/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use serde::de;
66

77
mod cursor;
88
mod data;
9+
mod group;
910
mod node_seq;
1011
mod reg;
1112
mod str_seq;
@@ -19,7 +20,7 @@ pub mod buildin {
1920

2021
use cursor::{BodyCursor, Cursor, GroupCursor, PropCursor};
2122
use data::BorrowedValueDeserializer;
22-
use node_seq::NodeSeq;
23+
use group::GroupDeserializer;
2324
use r#struct::StructDeserializer;
2425
use reg::RegConfig;
2526
use structs::{RefDtb, StructureBlock, BLOCK_LEN};
@@ -146,7 +147,7 @@ impl<'de, 'b> de::MapAccess<'de> for StructAccess<'de, 'b> {
146147
}
147148
Temp::Group(cursor, len_item, len_name) => {
148149
// 键是组名字,构造组反序列化器
149-
seed.deserialize(&mut NodeSeq {
150+
seed.deserialize(&mut GroupDeserializer {
150151
dtb: self.de.dtb,
151152
cursor,
152153
reg: self.de.reg,

0 commit comments

Comments
 (0)