pso_packet: u16 and u32 arrays
This commit is contained in:
		
							parent
							
								
									0a26d1d8c6
								
							
						
					
					
						commit
						48599ee116
					
				| @ -8,5 +8,6 @@ edition = "2018" | ||||
| proc-macro = true | ||||
| 
 | ||||
| [dependencies] | ||||
| syn = {version = "0.15", features=["full", "extra-traits", "parsing"]} | ||||
| quote = "0.6" | ||||
| syn = {version = "1.0", features=["full", "extra-traits", "parsing"]} | ||||
| quote = "1.0" | ||||
| proc-macro2 = "1.0" | ||||
|  | ||||
| @ -80,6 +80,40 @@ pub fn pso_packet(attr: TokenStream, item: TokenStream) -> TokenStream { | ||||
|                                         }, | ||||
|                                     }); | ||||
|                                 }, | ||||
|                                 "u16" => { | ||||
|                                     from_bytes.push(quote! { | ||||
|                                         #ident: { | ||||
|                                             let mut b: [u16; #array_length] = [0; #array_length]; | ||||
|                                             if let Ok(len) = cur.read(&mut b) { | ||||
|                                                 if len != #array_length { | ||||
|                                                     return Err(PacketParseError::NotEnoughBytes); | ||||
|                                                 } | ||||
|                                             } | ||||
|                                             else { | ||||
|                                                 return Err(PacketParseError::NotEnoughBytes); | ||||
|                                             }; | ||||
|                                             b | ||||
|                                         }, | ||||
|                                     }); | ||||
|                                 }, | ||||
|                                 "u32" => { | ||||
|                                     from_bytes.push(quote! { | ||||
|                                         #ident: { | ||||
|                                             let mut b: [u32; #array_length] = [0; #array_length]; | ||||
|                                             if let Ok(len) = cur.read(&mut b) { | ||||
|                                                 if len != #array_length { | ||||
|                                                     return Err(PacketParseError::NotEnoughBytes); | ||||
|                                                 } | ||||
|                                             } | ||||
|                                             else { | ||||
|                                                 return Err(PacketParseError::NotEnoughBytes); | ||||
|                                             }; | ||||
|                                             b | ||||
|                                         }, | ||||
|                                     }); | ||||
|                                 }, | ||||
| 
 | ||||
| 
 | ||||
|                                 _ => { | ||||
|                                     return syn::Error::new(path.path.segments[0].ident.span(), "type not supported") | ||||
|                                         .to_compile_error().into(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user