lua_protobuf_rs/
message_macros.rs1#[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}