handle String objects in pso_packet
This commit is contained in:
parent
c6ad5f4be6
commit
47a07a63ae
@ -100,10 +100,26 @@ pub fn pso_packet(attr: TokenStream, item: TokenStream) -> TokenStream {
|
|||||||
dbg_write_vars.push(quote! {
|
dbg_write_vars.push(quote! {
|
||||||
write!(f, " {}: {:?}\n", #ident_str, self.#ident).unwrap();
|
write!(f, " {}: {:?}\n", #ident_str, self.#ident).unwrap();
|
||||||
});
|
});
|
||||||
|
let ty = path.path.segments[0].ident.to_string();
|
||||||
|
|
||||||
|
// as_bytes
|
||||||
|
match ty.as_str() {
|
||||||
|
"String" => {
|
||||||
|
as_bytes.push(quote! {
|
||||||
|
for c in self.#ident.as_str().encode_utf16() {
|
||||||
|
buf.extend_from_slice(&c.to_le_bytes());
|
||||||
|
}
|
||||||
|
//buf.extend_from_slice(&self.#ident.as_str().encode_utf16());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
as_bytes.push(quote! {
|
as_bytes.push(quote! {
|
||||||
buf.extend_from_slice(&self.#ident.to_le_bytes());
|
buf.extend_from_slice(&self.#ident.to_le_bytes());
|
||||||
});
|
});
|
||||||
let ty = path.path.segments[0].ident.to_string();
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// from_bytes
|
||||||
match ty.as_str() {
|
match ty.as_str() {
|
||||||
"u8" | "u8_str" => {
|
"u8" | "u8_str" => {
|
||||||
from_bytes.push(quote! {
|
from_bytes.push(quote! {
|
||||||
@ -153,6 +169,19 @@ pub fn pso_packet(attr: TokenStream, item: TokenStream) -> TokenStream {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
"String" => {
|
||||||
|
from_bytes.push(quote! {
|
||||||
|
#ident: {
|
||||||
|
let mut s = String::new();
|
||||||
|
if let Ok(len) = cur.read_to_string(&mut s) {
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Err(PacketParseError::NotEnoughBytes);
|
||||||
|
};
|
||||||
|
s
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
_ => {
|
_ => {
|
||||||
return syn::Error::new(path.path.segments[0].ident.span(), "type not supported")
|
return syn::Error::new(path.path.segments[0].ident.span(), "type not supported")
|
||||||
.to_compile_error().into();
|
.to_compile_error().into();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user