Skip to main content

cdx_core/document/
extensions.rs

1use crate::extensions::academic::NumberingConfig;
2use crate::extensions::{Bibliography, CommentThread, FormData, JsonLdMetadata, PhantomClusters};
3use crate::Result;
4
5use super::define_extension_accessors;
6use super::Document;
7use super::MutableResource;
8
9// ===== Extension Accessor Methods =====
10//
11// Generated by `define_extension_accessors!` macro. Each invocation produces:
12//   - `$field(&self) -> Option<&$type>`
13//   - `${field}_mut(&mut self) -> Result<Option<&mut $type>>`
14//   - `has_${field}(&self) -> bool`
15//   - `set_${field}(&mut self, value: $type) -> Result<()>`
16//   - `clear_${field}(&mut self) -> Result<()>`
17
18impl Document {
19    define_extension_accessors!(
20        academic_numbering,
21        academic_numbering_mut,
22        has_academic_numbering,
23        set_academic_numbering,
24        clear_academic_numbering,
25        NumberingConfig,
26        "academic numbering"
27    );
28    define_extension_accessors!(
29        comments,
30        comments_mut,
31        has_comments,
32        set_comments,
33        clear_comments,
34        CommentThread,
35        "comments"
36    );
37    define_extension_accessors!(
38        phantom_clusters,
39        phantom_clusters_mut,
40        has_phantom_clusters,
41        set_phantom_clusters,
42        clear_phantom_clusters,
43        PhantomClusters,
44        "phantom clusters"
45    );
46    define_extension_accessors!(
47        form_data,
48        form_data_mut,
49        has_form_data,
50        set_form_data,
51        clear_form_data,
52        FormData,
53        "form data"
54    );
55    define_extension_accessors!(
56        bibliography,
57        bibliography_mut,
58        has_bibliography,
59        set_bibliography,
60        clear_bibliography,
61        Bibliography,
62        "bibliography"
63    );
64    define_extension_accessors!(
65        jsonld_metadata,
66        jsonld_metadata_mut,
67        has_jsonld_metadata,
68        set_jsonld_metadata,
69        clear_jsonld_metadata,
70        JsonLdMetadata,
71        "JSON-LD metadata"
72    );
73}