umya_spreadsheet/structs/
cache_fields.rs1use 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 write_start_tag(
58 writer,
59 "cacheFields",
60 vec![("count", &self.list.len().to_string())],
61 false,
62 );
63
64 for sheet_view in &self.list {
66 sheet_view.write_to(writer);
67 }
68
69 write_end_tag(writer, "cacheFields");
70 }
71}