osmpbf_parser/proto/
fileformat.rs1#![allow(non_snake_case)]
4#![allow(non_upper_case_globals)]
5#![allow(non_camel_case_types)]
6#![allow(unused_imports)]
7#![allow(unknown_lints)]
8#![allow(clippy::all)]
9#![cfg_attr(rustfmt, rustfmt_skip)]
10
11
12use quick_protobuf::{MessageRead, MessageWrite, BytesReader, Writer, WriterBackend, Result};
13use quick_protobuf::sizeofs::*;
14use super::*;
15
16#[derive(Debug, Default, PartialEq, Clone)]
17pub struct Blob {
18 pub raw: Option<Vec<u8>>,
19 pub raw_size: Option<i32>,
20 pub zlib_data: Option<Vec<u8>>,
21 pub lzma_data: Option<Vec<u8>>,
22}
23
24impl<'a> MessageRead<'a> for Blob {
25 fn from_reader(r: &mut BytesReader, bytes: &'a [u8]) -> Result<Self> {
26 let mut msg = Self::default();
27 while !r.is_eof() {
28 match r.next_tag(bytes) {
29 Ok(10) => msg.raw = Some(r.read_bytes(bytes)?.to_owned()),
30 Ok(16) => msg.raw_size = Some(r.read_int32(bytes)?),
31 Ok(26) => msg.zlib_data = Some(r.read_bytes(bytes)?.to_owned()),
32 Ok(34) => msg.lzma_data = Some(r.read_bytes(bytes)?.to_owned()),
33 Ok(t) => { r.read_unknown(bytes, t)?; }
34 Err(e) => return Err(e),
35 }
36 }
37 Ok(msg)
38 }
39}
40
41impl MessageWrite for Blob {
42 fn get_size(&self) -> usize {
43 0
44 + self.raw.as_ref().map_or(0, |m| 1 + sizeof_len((m).len()))
45 + self.raw_size.as_ref().map_or(0, |m| 1 + sizeof_varint(*(m) as u64))
46 + self.zlib_data.as_ref().map_or(0, |m| 1 + sizeof_len((m).len()))
47 + self.lzma_data.as_ref().map_or(0, |m| 1 + sizeof_len((m).len()))
48 }
49
50 fn write_message<W: WriterBackend>(&self, w: &mut Writer<W>) -> Result<()> {
51 if let Some(ref s) = self.raw { w.write_with_tag(10, |w| w.write_bytes(&**s))?; }
52 if let Some(ref s) = self.raw_size { w.write_with_tag(16, |w| w.write_int32(*s))?; }
53 if let Some(ref s) = self.zlib_data { w.write_with_tag(26, |w| w.write_bytes(&**s))?; }
54 if let Some(ref s) = self.lzma_data { w.write_with_tag(34, |w| w.write_bytes(&**s))?; }
55 Ok(())
56 }
57}
58
59#[derive(Debug, Default, PartialEq, Clone)]
60pub struct BlobHeader {
61 pub type_pb: String,
62 pub indexdata: Option<Vec<u8>>,
63 pub datasize: i32,
64}
65
66impl<'a> MessageRead<'a> for BlobHeader {
67 fn from_reader(r: &mut BytesReader, bytes: &'a [u8]) -> Result<Self> {
68 let mut msg = Self::default();
69 while !r.is_eof() {
70 match r.next_tag(bytes) {
71 Ok(10) => msg.type_pb = r.read_string(bytes)?.to_owned(),
72 Ok(18) => msg.indexdata = Some(r.read_bytes(bytes)?.to_owned()),
73 Ok(24) => msg.datasize = r.read_int32(bytes)?,
74 Ok(t) => { r.read_unknown(bytes, t)?; }
75 Err(e) => return Err(e),
76 }
77 }
78 Ok(msg)
79 }
80}
81
82impl MessageWrite for BlobHeader {
83 fn get_size(&self) -> usize {
84 0
85 + 1 + sizeof_len((&self.type_pb).len())
86 + self.indexdata.as_ref().map_or(0, |m| 1 + sizeof_len((m).len()))
87 + 1 + sizeof_varint(*(&self.datasize) as u64)
88 }
89
90 fn write_message<W: WriterBackend>(&self, w: &mut Writer<W>) -> Result<()> {
91 w.write_with_tag(10, |w| w.write_string(&**&self.type_pb))?;
92 if let Some(ref s) = self.indexdata { w.write_with_tag(18, |w| w.write_bytes(&**s))?; }
93 w.write_with_tag(24, |w| w.write_int32(*&self.datasize))?;
94 Ok(())
95 }
96}
97