sz_rust_sdk/
flags.rs

1//! Flag definitions for Senzing SDK operations
2//!
3//! This module defines the bitflags used to control the behavior of various
4//! Senzing SDK operations, mirroring the C# SDK's SzFlag enumeration.
5//!
6//! For comprehensive flag documentation and usage examples, see:
7//! <https://www.senzing.com/docs/flags/4/>
8
9use bitflags::bitflags;
10
11bitflags! {
12    /// Bitflags for controlling Senzing SDK operations
13    ///
14    /// For detailed flag descriptions and usage patterns, see the official documentation:
15    /// <https://www.senzing.com/docs/flags/4/>
16    #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
17    #[repr(transparent)]
18    pub struct SzFlags: u64 {
19        // Export flags
20        const EXPORT_DEFAULT_FLAGS = 0;
21        const EXPORT_INCLUDE_MULTI_RECORD_ENTITIES = 1 << 0;
22        const EXPORT_INCLUDE_POSSIBLY_SAME = 1 << 1;
23        const EXPORT_INCLUDE_POSSIBLY_RELATED = 1 << 2;
24        const EXPORT_INCLUDE_NAME_ONLY = 1 << 3;
25        const EXPORT_INCLUDE_DISCLOSED = 1 << 4;
26        const EXPORT_INCLUDE_SINGLE_RECORD_ENTITIES = 1 << 5;
27        const EXPORT_INCLUDE_ALL_ENTITIES = Self::EXPORT_INCLUDE_MULTI_RECORD_ENTITIES.bits() |
28                                           Self::EXPORT_INCLUDE_SINGLE_RECORD_ENTITIES.bits();
29        const EXPORT_INCLUDE_ALL_HAVING_RELATIONSHIPS = Self::EXPORT_INCLUDE_POSSIBLY_SAME.bits() |
30                                                        Self::EXPORT_INCLUDE_POSSIBLY_RELATED.bits() |
31                                                        Self::EXPORT_INCLUDE_NAME_ONLY.bits() |
32                                                        Self::EXPORT_INCLUDE_DISCLOSED.bits();
33
34        // Entity flags
35        const ENTITY_DEFAULT_FLAGS = Self::ENTITY_INCLUDE_RECORD_SUMMARY.bits() |
36                                     Self::ENTITY_INCLUDE_RECORD_DATA.bits() |
37                                     Self::ENTITY_INCLUDE_RECORD_MATCHING_INFO.bits();
38        const ENTITY_INCLUDE_POSSIBLY_SAME_RELATIONS = 1 << 6;
39        const ENTITY_INCLUDE_POSSIBLY_RELATED_RELATIONS = 1 << 7;
40        const ENTITY_INCLUDE_NAME_ONLY_RELATIONS = 1 << 8;
41        const ENTITY_INCLUDE_DISCLOSED_RELATIONS = 1 << 9;
42        const ENTITY_INCLUDE_ALL_RELATIONS = Self::ENTITY_INCLUDE_POSSIBLY_SAME_RELATIONS.bits() |
43                                            Self::ENTITY_INCLUDE_POSSIBLY_RELATED_RELATIONS.bits() |
44                                            Self::ENTITY_INCLUDE_NAME_ONLY_RELATIONS.bits() |
45                                            Self::ENTITY_INCLUDE_DISCLOSED_RELATIONS.bits();
46        const ENTITY_INCLUDE_ALL_FEATURES = 1 << 10;
47        const ENTITY_INCLUDE_REPRESENTATIVE_FEATURES = 1 << 11;
48        const ENTITY_INCLUDE_ENTITY_NAME = 1 << 12;
49        const ENTITY_INCLUDE_RECORD_SUMMARY = 1 << 13;
50        const ENTITY_INCLUDE_RECORD_DATA = 1 << 14;
51        const ENTITY_INCLUDE_RECORD_MATCHING_INFO = 1 << 15;
52        const ENTITY_INCLUDE_RECORD_JSON_DATA = 1 << 16;
53        const ENTITY_INCLUDE_RECORD_UNMAPPED_DATA = 1 << 17;
54        const ENTITY_INCLUDE_RECORD_FEATURE_IDS = 1 << 18;
55        const ENTITY_INCLUDE_RELATED_ENTITY_NAME = 1 << 19;
56        const ENTITY_INCLUDE_RELATED_MATCHING_INFO = 1 << 20;
57        const ENTITY_INCLUDE_RELATED_RECORD_SUMMARY = 1 << 21;
58        const ENTITY_INCLUDE_RELATED_RECORD_DATA = 1 << 22;
59
60        // Record flags
61        const RECORD_DEFAULT_FLAGS = 0;
62
63        // Search flags
64        const SEARCH_BY_ATTRIBUTES_ALL = Self::SEARCH_BY_ATTRIBUTES_STRONG.bits() |
65                                        Self::SEARCH_BY_ATTRIBUTES_MINIMAL_STRONG.bits() |
66                                        Self::SEARCH_BY_ATTRIBUTES_MINIMAL_ALL.bits();
67        const SEARCH_BY_ATTRIBUTES_STRONG = 1 << 23;
68        const SEARCH_BY_ATTRIBUTES_MINIMAL_STRONG = 1 << 24;
69        const SEARCH_BY_ATTRIBUTES_MINIMAL_ALL = 1 << 25;
70        const SEARCH_BY_ATTRIBUTES_DEFAULT_FLAGS = Self::SEARCH_BY_ATTRIBUTES_ALL.bits();
71
72        // Find flags
73        const FIND_PATH_DEFAULT_FLAGS = Self::FIND_PATH_INCLUDE_MATCHING_INFO.bits();
74        const FIND_PATH_INCLUDE_MATCHING_INFO = 1 << 26;
75        const FIND_NETWORK_DEFAULT_FLAGS = Self::FIND_NETWORK_INCLUDE_MATCHING_INFO.bits();
76        const FIND_NETWORK_INCLUDE_MATCHING_INFO = 1 << 27;
77
78        // Why flags
79        const WHY_ENTITIES_DEFAULT_FLAGS = Self::WHY_ENTITY_INCLUDE_ENTITY_NAME.bits() |
80                                          Self::WHY_ENTITY_INCLUDE_RECORD_SUMMARY.bits();
81        const WHY_ENTITY_INCLUDE_POSSIBLY_SAME_RELATIONS = 1 << 28;
82        const WHY_ENTITY_INCLUDE_POSSIBLY_RELATED_RELATIONS = 1 << 29;
83        const WHY_ENTITY_INCLUDE_NAME_ONLY_RELATIONS = 1 << 30;
84        const WHY_ENTITY_INCLUDE_DISCLOSED_RELATIONS = 1 << 31;
85        const WHY_ENTITY_INCLUDE_ALL_RELATIONS = Self::WHY_ENTITY_INCLUDE_POSSIBLY_SAME_RELATIONS.bits() |
86                                                Self::WHY_ENTITY_INCLUDE_POSSIBLY_RELATED_RELATIONS.bits() |
87                                                Self::WHY_ENTITY_INCLUDE_NAME_ONLY_RELATIONS.bits() |
88                                                Self::WHY_ENTITY_INCLUDE_DISCLOSED_RELATIONS.bits();
89        const WHY_ENTITY_INCLUDE_ALL_FEATURES = 1 << 32;
90        const WHY_ENTITY_INCLUDE_REPRESENTATIVE_FEATURES = 1 << 33;
91        const WHY_ENTITY_INCLUDE_ENTITY_NAME = 1 << 34;
92        const WHY_ENTITY_INCLUDE_RECORD_SUMMARY = 1 << 35;
93        const WHY_ENTITY_INCLUDE_RECORD_DATA = 1 << 36;
94        const WHY_ENTITY_INCLUDE_RECORD_MATCHING_INFO = 1 << 37;
95        const WHY_ENTITY_INCLUDE_RECORD_JSON_DATA = 1 << 38;
96        const WHY_ENTITY_INCLUDE_RECORD_UNMAPPED_DATA = 1 << 39;
97        const WHY_ENTITY_INCLUDE_RECORD_FEATURE_IDS = 1 << 40;
98        const WHY_ENTITY_INCLUDE_RELATED_ENTITY_NAME = 1 << 41;
99        const WHY_ENTITY_INCLUDE_RELATED_MATCHING_INFO = 1 << 42;
100        const WHY_ENTITY_INCLUDE_RELATED_RECORD_SUMMARY = 1 << 43;
101        const WHY_ENTITY_INCLUDE_RELATED_RECORD_DATA = 1 << 44;
102
103        // Virtual entity flags
104        const VIRTUAL_ENTITY_DEFAULT_FLAGS = Self::ENTITY_INCLUDE_RECORD_SUMMARY.bits();
105
106        // How flags
107        const HOW_ENTITY_DEFAULT_FLAGS = Self::HOW_ENTITY_INCLUDE_NAME.bits();
108        const HOW_ENTITY_INCLUDE_NAME = 1 << 45;
109    }
110}
111
112impl Default for SzFlags {
113    fn default() -> Self {
114        SzFlags::empty()
115    }
116}
117
118impl SzFlags {
119    /// Default flags for adding records
120    pub const ADD_RECORD_DEFAULT: SzFlags = SzFlags::empty();
121
122    /// Default flags for deleting records
123    pub const DELETE_RECORD_DEFAULT: SzFlags = SzFlags::empty();
124
125    /// Default flags for reevaluating records
126    pub const REEVALUATE_RECORD_DEFAULT: SzFlags = SzFlags::empty();
127
128    /// Default flags for reevaluating entities
129    pub const REEVALUATE_ENTITY_DEFAULT: SzFlags = SzFlags::empty();
130
131    /// Default flags for getting entities
132    pub const GET_ENTITY_DEFAULT: SzFlags = SzFlags::ENTITY_DEFAULT_FLAGS;
133
134    /// Default flags for getting records
135    pub const GET_RECORD_DEFAULT: SzFlags = SzFlags::RECORD_DEFAULT_FLAGS;
136
137    /// Default flags for searching by attributes
138    pub const SEARCH_BY_ATTRIBUTES_DEFAULT: SzFlags = SzFlags::SEARCH_BY_ATTRIBUTES_DEFAULT_FLAGS;
139
140    /// Default flags for finding interesting entities
141    pub const FIND_INTERESTING_ENTITIES_DEFAULT: SzFlags = SzFlags::ENTITY_DEFAULT_FLAGS;
142
143    /// Default flags for finding paths
144    pub const FIND_PATH_DEFAULT: SzFlags = SzFlags::FIND_PATH_DEFAULT_FLAGS;
145
146    /// Default flags for finding networks
147    pub const FIND_NETWORK_DEFAULT: SzFlags = SzFlags::FIND_NETWORK_DEFAULT_FLAGS;
148
149    /// Default flags for why entity operations
150    pub const WHY_ENTITY_DEFAULT: SzFlags = SzFlags::WHY_ENTITIES_DEFAULT_FLAGS;
151
152    /// Default flags for why record operations
153    pub const WHY_RECORD_DEFAULT: SzFlags = SzFlags::WHY_ENTITIES_DEFAULT_FLAGS;
154
155    /// Default flags for why search operations
156    pub const WHY_SEARCH_DEFAULT: SzFlags = SzFlags::WHY_ENTITIES_DEFAULT_FLAGS;
157
158    /// Default flags for how entity operations
159    pub const HOW_ENTITY_DEFAULT: SzFlags = SzFlags::HOW_ENTITY_DEFAULT_FLAGS;
160
161    /// Default flags for virtual entity operations
162    pub const GET_VIRTUAL_ENTITY_DEFAULT: SzFlags = SzFlags::VIRTUAL_ENTITY_DEFAULT_FLAGS;
163}