Line data Source code
1 : /* File: ctrl_undo_redo_entry.inl; Copyright and License: see below */
2 :
3 : #include "entity/data_feature_type.h"
4 : #include <assert.h>
5 :
6 680 : static inline void ctrl_undo_redo_entry_init_empty ( ctrl_undo_redo_entry_t *this_ )
7 : {
8 680 : (*this_).action_type = CTRL_UNDO_REDO_ENTRY_TYPE_BOUNDARY;
9 680 : }
10 :
11 93 : static inline void ctrl_undo_redo_entry_init ( ctrl_undo_redo_entry_t *this_, ctrl_undo_redo_entry_type_t action_type )
12 : {
13 93 : (*this_).action_type = action_type;
14 93 : }
15 :
16 682 : static inline void ctrl_undo_redo_entry_reinit ( ctrl_undo_redo_entry_t *this_, ctrl_undo_redo_entry_type_t action_type )
17 : {
18 682 : (*this_).action_type = action_type;
19 682 : }
20 :
21 731 : static inline void ctrl_undo_redo_entry_destroy ( ctrl_undo_redo_entry_t *this_ )
22 : {
23 731 : }
24 :
25 36315 : static inline ctrl_undo_redo_entry_type_t ctrl_undo_redo_entry_get_action_type ( const ctrl_undo_redo_entry_t *this_ )
26 : {
27 36315 : return (*this_).action_type;
28 : }
29 :
30 37 : static inline data_classifier_t *ctrl_undo_redo_entry_get_classifier_before_action_ptr ( ctrl_undo_redo_entry_t *this_ )
31 : {
32 37 : return &((*this_).data_before_action.classifier);
33 : }
34 :
35 : static inline const data_classifier_t *ctrl_undo_redo_entry_get_classifier_before_action_const ( const ctrl_undo_redo_entry_t *this_ )
36 : {
37 : return &((*this_).data_before_action.classifier);
38 : }
39 :
40 175 : static inline data_diagram_t *ctrl_undo_redo_entry_get_diagram_before_action_ptr ( ctrl_undo_redo_entry_t *this_ )
41 : {
42 175 : return &((*this_).data_before_action.diagram);
43 : }
44 :
45 0 : static inline const data_diagram_t *ctrl_undo_redo_entry_get_diagram_before_action_const ( const ctrl_undo_redo_entry_t *this_ )
46 : {
47 0 : return &((*this_).data_before_action.diagram);
48 : }
49 :
50 63 : static inline data_diagramelement_t *ctrl_undo_redo_entry_get_diagramelement_before_action_ptr ( ctrl_undo_redo_entry_t *this_ )
51 : {
52 63 : return &((*this_).data_before_action.diagramelement);
53 : }
54 :
55 0 : static inline const data_diagramelement_t *ctrl_undo_redo_entry_get_diagramelement_before_action_const ( const ctrl_undo_redo_entry_t *this_ )
56 : {
57 0 : return &((*this_).data_before_action.diagramelement);
58 : }
59 :
60 27 : static inline data_relationship_t *ctrl_undo_redo_entry_get_relationship_before_action_ptr ( ctrl_undo_redo_entry_t *this_ )
61 : {
62 27 : return &((*this_).data_before_action.relationship);
63 : }
64 :
65 0 : static inline const data_relationship_t *ctrl_undo_redo_entry_get_relationship_before_action_const ( const ctrl_undo_redo_entry_t *this_ )
66 : {
67 0 : return &((*this_).data_before_action.relationship);
68 : }
69 :
70 53 : static inline data_feature_t *ctrl_undo_redo_entry_get_feature_before_action_ptr ( ctrl_undo_redo_entry_t *this_ )
71 : {
72 53 : return &((*this_).data_before_action.feature);
73 : }
74 :
75 0 : static inline const data_feature_t *ctrl_undo_redo_entry_get_feature_before_action_const ( const ctrl_undo_redo_entry_t *this_ )
76 : {
77 0 : return &((*this_).data_before_action.feature);
78 : }
79 :
80 39 : static inline data_classifier_t *ctrl_undo_redo_entry_get_classifier_after_action_ptr ( ctrl_undo_redo_entry_t *this_ )
81 : {
82 39 : return &((*this_).data_after_action.classifier);
83 : }
84 :
85 0 : static inline const data_classifier_t *ctrl_undo_redo_entry_get_classifier_after_action_const ( const ctrl_undo_redo_entry_t *this_ )
86 : {
87 0 : return &((*this_).data_after_action.classifier);
88 : }
89 :
90 309 : static inline data_diagram_t *ctrl_undo_redo_entry_get_diagram_after_action_ptr ( ctrl_undo_redo_entry_t *this_ )
91 : {
92 309 : return &((*this_).data_after_action.diagram);
93 : }
94 :
95 0 : static inline const data_diagram_t *ctrl_undo_redo_entry_get_diagram_after_action_const ( const ctrl_undo_redo_entry_t *this_ )
96 : {
97 0 : return &((*this_).data_after_action.diagram);
98 : }
99 :
100 64 : static inline data_diagramelement_t *ctrl_undo_redo_entry_get_diagramelement_after_action_ptr ( ctrl_undo_redo_entry_t *this_ )
101 : {
102 64 : return &((*this_).data_after_action.diagramelement);
103 : }
104 :
105 0 : static inline const data_diagramelement_t *ctrl_undo_redo_entry_get_diagramelement_after_action_const ( const ctrl_undo_redo_entry_t *this_ )
106 : {
107 0 : return &((*this_).data_after_action.diagramelement);
108 : }
109 :
110 27 : static inline data_relationship_t *ctrl_undo_redo_entry_get_relationship_after_action_ptr ( ctrl_undo_redo_entry_t *this_ )
111 : {
112 27 : return &((*this_).data_after_action.relationship);
113 : }
114 :
115 0 : static inline const data_relationship_t *ctrl_undo_redo_entry_get_relationship_after_action_const ( const ctrl_undo_redo_entry_t *this_ )
116 : {
117 0 : return &((*this_).data_after_action.relationship);
118 : }
119 :
120 52 : static inline data_feature_t *ctrl_undo_redo_entry_get_feature_after_action_ptr ( ctrl_undo_redo_entry_t *this_ )
121 : {
122 52 : return &((*this_).data_after_action.feature);
123 : }
124 :
125 0 : static inline const data_feature_t *ctrl_undo_redo_entry_get_feature_after_action_const ( const ctrl_undo_redo_entry_t *this_ )
126 : {
127 0 : return &((*this_).data_after_action.feature);
128 : }
129 :
130 188 : static inline void ctrl_undo_redo_entry_to_statistics ( const ctrl_undo_redo_entry_t *this_, bool undo, bool err, data_stat_t *io_stat )
131 : {
132 188 : assert( NULL != io_stat );
133 :
134 188 : data_stat_table_t table = DATA_STAT_TABLE_LIFELINE;
135 188 : data_stat_series_t series = DATA_STAT_SERIES_ERROR;
136 188 : switch( (*this_).action_type )
137 : {
138 1 : case CTRL_UNDO_REDO_ENTRY_TYPE_DELETE_DIAGRAM:
139 : {
140 1 : table = DATA_STAT_TABLE_DIAGRAM;
141 1 : series = undo ? DATA_STAT_SERIES_CREATED : DATA_STAT_SERIES_DELETED;
142 : }
143 1 : break;
144 :
145 10 : case CTRL_UNDO_REDO_ENTRY_TYPE_UPDATE_DIAGRAM:
146 : {
147 10 : table = DATA_STAT_TABLE_DIAGRAM;
148 10 : series = DATA_STAT_SERIES_MODIFIED;
149 : }
150 10 : break;
151 :
152 134 : case CTRL_UNDO_REDO_ENTRY_TYPE_CREATE_DIAGRAM:
153 : {
154 134 : table = DATA_STAT_TABLE_DIAGRAM;
155 134 : series = undo ? DATA_STAT_SERIES_DELETED : DATA_STAT_SERIES_CREATED;
156 : }
157 134 : break;
158 :
159 2 : case CTRL_UNDO_REDO_ENTRY_TYPE_DELETE_DIAGRAMELEMENT:
160 : {
161 2 : table = DATA_STAT_TABLE_DIAGRAMELEMENT;
162 2 : series = undo ? DATA_STAT_SERIES_CREATED : DATA_STAT_SERIES_DELETED;
163 : }
164 2 : break;
165 :
166 8 : case CTRL_UNDO_REDO_ENTRY_TYPE_UPDATE_DIAGRAMELEMENT:
167 : {
168 8 : table = DATA_STAT_TABLE_DIAGRAMELEMENT;
169 8 : series = DATA_STAT_SERIES_MODIFIED;
170 : }
171 8 : break;
172 :
173 2 : case CTRL_UNDO_REDO_ENTRY_TYPE_CREATE_DIAGRAMELEMENT:
174 : {
175 2 : table = DATA_STAT_TABLE_DIAGRAMELEMENT;
176 2 : series = undo ? DATA_STAT_SERIES_DELETED : DATA_STAT_SERIES_CREATED;
177 : }
178 2 : break;
179 :
180 3 : case CTRL_UNDO_REDO_ENTRY_TYPE_DELETE_CLASSIFIER:
181 : {
182 3 : table = DATA_STAT_TABLE_CLASSIFIER;
183 3 : series = undo ? DATA_STAT_SERIES_CREATED : DATA_STAT_SERIES_DELETED;
184 : }
185 3 : break;
186 :
187 2 : case CTRL_UNDO_REDO_ENTRY_TYPE_UPDATE_CLASSIFIER:
188 : {
189 2 : table = DATA_STAT_TABLE_CLASSIFIER;
190 2 : series = DATA_STAT_SERIES_MODIFIED;
191 : }
192 2 : break;
193 :
194 2 : case CTRL_UNDO_REDO_ENTRY_TYPE_CREATE_CLASSIFIER:
195 : {
196 2 : table = DATA_STAT_TABLE_CLASSIFIER;
197 2 : series = undo ? DATA_STAT_SERIES_DELETED : DATA_STAT_SERIES_CREATED;
198 : }
199 2 : break;
200 :
201 7 : case CTRL_UNDO_REDO_ENTRY_TYPE_DELETE_FEATURE:
202 : {
203 7 : const data_feature_t *const old_feat = &((*this_).data_before_action.feature);
204 7 : const data_feature_type_t feat_type = data_feature_get_main_type( old_feat );
205 7 : table = (feat_type == DATA_FEATURE_TYPE_LIFELINE) ? DATA_STAT_TABLE_LIFELINE : DATA_STAT_TABLE_FEATURE;
206 7 : series = undo ? DATA_STAT_SERIES_CREATED : DATA_STAT_SERIES_DELETED;
207 : }
208 7 : break;
209 :
210 4 : case CTRL_UNDO_REDO_ENTRY_TYPE_UPDATE_FEATURE:
211 : {
212 4 : const data_feature_t *const old_feat = &((*this_).data_before_action.feature);
213 4 : const data_feature_type_t feat_type = data_feature_get_main_type( old_feat );
214 4 : table = (feat_type == DATA_FEATURE_TYPE_LIFELINE) ? DATA_STAT_TABLE_LIFELINE : DATA_STAT_TABLE_FEATURE;
215 4 : series = DATA_STAT_SERIES_MODIFIED;
216 : }
217 4 : break;
218 :
219 4 : case CTRL_UNDO_REDO_ENTRY_TYPE_CREATE_FEATURE:
220 : {
221 4 : const data_feature_t *const new_feat = &((*this_).data_after_action.feature);
222 4 : const data_feature_type_t feat_type = data_feature_get_main_type( new_feat );
223 4 : table = (feat_type == DATA_FEATURE_TYPE_LIFELINE) ? DATA_STAT_TABLE_LIFELINE : DATA_STAT_TABLE_FEATURE;
224 4 : series = undo ? DATA_STAT_SERIES_DELETED : DATA_STAT_SERIES_CREATED;
225 : }
226 4 : break;
227 :
228 5 : case CTRL_UNDO_REDO_ENTRY_TYPE_DELETE_RELATIONSHIP:
229 : {
230 5 : table = DATA_STAT_TABLE_RELATIONSHIP;
231 5 : series = undo ? DATA_STAT_SERIES_CREATED : DATA_STAT_SERIES_DELETED;
232 : }
233 5 : break;
234 :
235 2 : case CTRL_UNDO_REDO_ENTRY_TYPE_UPDATE_RELATIONSHIP:
236 : {
237 2 : table = DATA_STAT_TABLE_RELATIONSHIP;
238 2 : series = DATA_STAT_SERIES_MODIFIED;
239 : }
240 2 : break;
241 :
242 2 : case CTRL_UNDO_REDO_ENTRY_TYPE_CREATE_RELATIONSHIP:
243 : {
244 2 : table = DATA_STAT_TABLE_RELATIONSHIP;
245 2 : series = undo ? DATA_STAT_SERIES_DELETED : DATA_STAT_SERIES_CREATED;
246 : }
247 2 : break;
248 :
249 0 : case CTRL_UNDO_REDO_ENTRY_TYPE_BOUNDARY:
250 : {
251 : /* nothing to count */
252 : }
253 0 : break;
254 :
255 0 : default :
256 : {
257 : /* internal error, switch-case statement incomplete */
258 0 : U8_LOG_ERROR("incomplete switch statement in ctrl_undo_redo_entry_to_statistics");
259 : }
260 0 : break;
261 : }
262 :
263 188 : data_stat_inc_count ( io_stat, table, (err ? DATA_STAT_SERIES_ERROR : series) );
264 188 : }
265 :
266 :
267 : /*
268 : Copyright 2016-2025 Andreas Warnke
269 :
270 : Licensed under the Apache License, Version 2.0 (the "License");
271 : you may not use this file except in compliance with the License.
272 : You may obtain a copy of the License at
273 :
274 : http://www.apache.org/licenses/LICENSE-2.0
275 :
276 : Unless required by applicable law or agreed to in writing, software
277 : distributed under the License is distributed on an "AS IS" BASIS,
278 : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
279 : See the License for the specific language governing permissions and
280 : limitations under the License.
281 : */
|