umya_spreadsheet/structs/
cache_fields.rs

1// cacheFields
2use crate::reader::driver::*;
3use crate::structs::BooleanValue;
4use crate::structs::ByteValue;
5use crate::structs::CacheField;
6use crate::structs::StringValue;
7use crate::structs::UInt32Value;
8use crate::writer::driver::*;
9use quick_xml::events::{BytesStart, Event};
10use quick_xml::Reader;
11use quick_xml::Writer;
12use std::io::Cursor;
13
14#[derive(Clone, Default, Debug)]
15pub struct CacheFields {
16    list: Vec<CacheField>,
17}
18impl CacheFields {
19    pub fn get_list(&self) -> &Vec<CacheField> {
20        &self.list
21    }
22
23    pub fn get_list_mut(&mut self) -> &mut Vec<CacheField> {
24        &mut self.list
25    }
26
27    pub fn add_list_mut(&mut self, value: CacheField) -> &mut Self {
28        self.list.push(value);
29        self
30    }
31
32    pub(crate) fn set_attributes<R: std::io::BufRead>(
33        &mut self,
34        reader: &mut Reader<R>,
35        e: &BytesStart,
36    ) {
37        xml_read_loop!(
38            reader,
39            Event::Start(ref e) => {
40                if e.name().into_inner() == b"cacheField" {
41                    let mut obj = CacheField::default();
42                    obj.set_attributes(reader, e);
43                    self.add_list_mut(obj);
44                }
45            },
46            Event::End(ref e) => {
47                if e.name().into_inner() == b"cacheFields" {
48                    return
49                }
50            },
51            Event::Eof => panic!("Error: Could not find {} end element", "cacheFields")
52        );
53    }
54
55    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
56        // cacheFields
57        write_start_tag(
58            writer,
59            "cacheFields",
60            vec![("count", &self.list.len().to_string())],
61            false,
62        );
63
64        // cacheField
65        for sheet_view in &self.list {
66            sheet_view.write_to(writer);
67        }
68
69        write_end_tag(writer, "cacheFields");
70    }
71}