umya_spreadsheet/structs/
cache_field.rs1use crate::reader::driver::*;
3use crate::structs::SharedItems;
4use crate::structs::StringValue;
5use crate::structs::UInt32Value;
6use crate::writer::driver::*;
7use quick_xml::events::{BytesStart, Event};
8use quick_xml::Reader;
9use quick_xml::Writer;
10use std::io::Cursor;
11
12#[derive(Clone, Default, Debug)]
13pub struct CacheField {
14 name: StringValue,
15 number_format_id: UInt32Value,
16 shared_items: SharedItems,
17}
18impl CacheField {
19 pub fn get_name(&self) -> &str {
20 self.name.get_value_str()
21 }
22
23 pub(crate) fn set_name<S: Into<String>>(&mut self, value: S) -> &mut Self {
24 self.name.set_value(value);
25 self
26 }
27
28 pub fn get_number_format_id(&self) -> &u32 {
29 self.number_format_id.get_value()
30 }
31
32 pub fn set_number_format_id(&mut self, value: u32) -> &mut Self {
33 self.number_format_id.set_value(value);
34 self
35 }
36
37 pub fn get_shared_items(&self) -> &SharedItems {
38 &self.shared_items
39 }
40
41 pub fn get_shared_items_mut(&mut self) -> &mut SharedItems {
42 &mut self.shared_items
43 }
44
45 pub fn set_shared_items(&mut self, value: SharedItems) -> &mut Self {
46 self.shared_items = value;
47 self
48 }
49
50 pub(crate) fn set_attributes<R: std::io::BufRead>(
51 &mut self,
52 reader: &mut Reader<R>,
53 e: &BytesStart,
54 ) {
55 set_string_from_xml!(self, e, name, "name");
56 set_string_from_xml!(self, e, number_format_id, "numFmtId");
57
58 xml_read_loop!(
59 reader,
60 Event::Empty(ref e) => {
61 if e.name().into_inner() == b"sharedItems" {
62 let mut obj = SharedItems::default();
63 obj.set_attributes(reader, e);
64 self.set_shared_items(obj);
65 }
66 },
67 Event::End(ref e) => {
68 if e.name().into_inner() == b"cacheField" {
69 return
70 }
71 },
72 Event::Eof => panic!("Error: Could not find {} end element", "cacheField")
73 );
74 }
75
76 pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
77 write_start_tag(
79 writer,
80 "pivotField",
81 vec![
82 ("name", self.name.get_value_str()),
83 ("numFmtId", &self.number_format_id.get_value_string()),
84 ],
85 false,
86 );
87
88 self.shared_items.write_to(writer);
90
91 write_end_tag(writer, "pivotField");
92 }
93}