Skip to main content

excelize_rs/xml/
calc_chain.rs

1//! Calculation chain and volatile dependencies parts.
2//!
3//! Ported from Go `xmlCalcChain.go`.
4
5use serde::{Deserialize, Serialize};
6
7use super::common::XlsxExtLst;
8
9/// Directly maps the calcChain element.
10#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
11#[serde(rename = "calcChain", rename_all = "PascalCase")]
12pub struct XlsxCalcChain {
13    #[serde(rename = "c", default)]
14    pub c: Vec<XlsxCalcChainC>,
15}
16
17/// Directly maps the `c` element inside the calcChain.
18#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
19pub struct XlsxCalcChainC {
20    #[serde(rename = "@r", default)]
21    pub r: String,
22    #[serde(rename = "@i", default)]
23    pub i: i32,
24    #[serde(rename = "@l", default)]
25    pub l: bool,
26    #[serde(rename = "@s", default)]
27    pub s: bool,
28    #[serde(rename = "@t", default)]
29    pub t: bool,
30    #[serde(rename = "@a", default)]
31    pub a: bool,
32}
33
34/// Volatile dependencies part.
35#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
36#[serde(rename = "volTypes", rename_all = "PascalCase")]
37pub struct XlsxVolTypes {
38    #[serde(rename = "volType", default)]
39    pub vol_type: Vec<XlsxVolType>,
40    #[serde(rename = "extLst", default)]
41    pub ext_lst: Option<XlsxExtLst>,
42}
43
44#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
45pub struct XlsxVolType {
46    #[serde(rename = "@type", default)]
47    pub r#type: String,
48    #[serde(rename = "main", default)]
49    pub main: Vec<XlsxVolMain>,
50}
51
52#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
53pub struct XlsxVolMain {
54    #[serde(rename = "@first", default)]
55    pub first: String,
56    #[serde(rename = "tp", default)]
57    pub tp: Vec<XlsxVolTopic>,
58}
59
60#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
61pub struct XlsxVolTopic {
62    #[serde(rename = "@t", default)]
63    pub t: Option<String>,
64    #[serde(default)]
65    pub v: String,
66    #[serde(rename = "stp", default)]
67    pub stp: Vec<String>,
68    #[serde(rename = "tr", default)]
69    pub tr: Vec<XlsxVolTopicRef>,
70}
71
72#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
73pub struct XlsxVolTopicRef {
74    #[serde(rename = "@r", default)]
75    pub r: String,
76    #[serde(rename = "@s", default)]
77    pub s: i32,
78}