daml_lf/convert/
wrapper.rs1use crate::convert::archive_payload::DamlArchivePayload;
2use crate::convert::data_payload::DamlDataPayload;
3#[cfg(feature = "full")]
4use crate::convert::defvalue_payload::DamlDefValuePayload;
5use crate::convert::module_payload::{DamlDefTypeSynPayload, DamlModulePayload};
6use crate::convert::package_payload::DamlPackagePayload;
7
8#[derive(Debug, Clone, Copy)]
9pub struct PayloadElementWrapper<'a, P> {
10 pub context: DamlPayloadParentContext<'a>,
11 pub payload: P,
12}
13
14impl<'a, P> PayloadElementWrapper<'a, P> {
15 pub const fn with_data<Q: 'a>(context: DamlPayloadParentContext<'a>, q: Q) -> PayloadElementWrapper<'a, Q> {
17 PayloadElementWrapper {
18 context,
19 payload: q,
20 }
21 }
22
23 pub fn wrap<Q: 'a>(self, q: &'a Q) -> PayloadElementWrapper<'a, &'a Q> {
25 PayloadElementWrapper {
26 context: self.context,
27 payload: q,
28 }
29 }
30}
31
32#[derive(Debug, Clone, Copy)]
36pub struct DamlPayloadParentContext<'a> {
37 pub archive: &'a DamlArchivePayload<'a>,
38 pub package: &'a DamlPackagePayload<'a>,
39 pub module: &'a DamlModulePayload<'a>,
40 pub parent: DamlPayloadParentContextType<'a>,
41}
42
43#[derive(Debug, Clone, Copy)]
45pub enum DamlPayloadParentContextType<'a> {
46 Data(&'a DamlDataPayload<'a>),
47 DefTypeSyn(&'a DamlDefTypeSynPayload<'a>),
48 #[cfg(feature = "full")]
49 Value(&'a DamlDefValuePayload<'a>),
50}