lua_protobuf_rs/
message_macros.rs

1#[macro_export]
2macro_rules! add_message_trait_method {
3    ($methods:ident, $target:ty, $wrapper:ty) => {
4        $methods.add_method("is_initialized", |_, this, ()| { 
5            Ok(protobuf::Message::is_initialized(&**this))
6        });
7        
8        $methods.add_method("compute_size", |_, this, ()| { 
9            Ok(protobuf::Message::compute_size(&**this))
10        });
11        
12        $methods.add_method("cached_size", |_, this, ()| { 
13            Ok(protobuf::Message::cached_size(&**this)) 
14        });
15        
16        $methods.add_method("write_length_delimited_to_vec", |_, this, ()| { 
17            let mut vec = Vec::new();
18            protobuf::Message::write_length_delimited_to_vec(&**this, &mut vec).map_err(|e|anyhow::anyhow!(e))?;
19            Ok(vec) 
20        });
21        
22        $methods.add_method_mut("merge_from_bytes", |_, this, bytes: Vec<u8>| { 
23            protobuf::Message::merge_from_bytes(&mut **this, &bytes).map_err(|e|anyhow::anyhow!(e))?;
24            Ok(()) 
25        });
26        
27        $methods.add_function("parse_from_bytes", |_, bytes: Vec<u8>| { 
28            let myself: $target = <$target as protobuf::Message>::parse_from_bytes(&bytes).map_err(|e|anyhow::anyhow!(e))?;
29            let myself: $wrapper = myself.into();
30            Ok(myself) 
31        });
32        
33        $methods.add_method("check_initialized", |_, this, ()| {
34            Ok(protobuf::Message::check_initialized(&**this).map_err(|e|anyhow::anyhow!(e))?)
35        });
36        
37        $methods.add_method("write_to_vec", |_, this, ()| { 
38            let mut vec = Vec::new();
39            protobuf::Message::write_to_vec(&**this, &mut vec).map_err(|e|anyhow::anyhow!(e))?;
40            Ok(vec) 
41        });
42        
43        $methods.add_method("write_to_bytes", |_, this, ()| { 
44            let bytes = protobuf::Message::write_to_bytes(&**this).map_err(|e|anyhow::anyhow!(e))?;
45            Ok(bytes) 
46        });
47        
48        $methods.add_method("write_length_delimited_to_bytes", |_, this, ()| { 
49            let bytes = protobuf::Message::write_length_delimited_to_bytes(&**this).map_err(|e|anyhow::anyhow!(e))?;
50            Ok(bytes) 
51        });
52        
53        $methods.add_function("new", |_, ()| { 
54            let myself: $target = <$target as protobuf::Message>::new();
55            let myself: $wrapper = myself.into();
56            Ok(myself) 
57        });
58        
59        $methods.add_method_mut("clear", |_, this, ()| { 
60            Ok(protobuf::Message::clear(&mut **this))
61        });
62        
63        $methods.add_function("default_instance", |_, ()| { 
64            let myself = <$target as protobuf::Message>::default_instance().clone();
65            let myself: $wrapper = myself.into();
66            Ok(myself)
67        });
68    };
69}