Coverage Report

Created: 2026-08-14 06:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/dispersion_requirement.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "dispersion_requirement.h"
6
7
OpenAPI_dispersion_requirement_t *OpenAPI_dispersion_requirement_create(
8
    OpenAPI_dispersion_type_e disper_type,
9
    OpenAPI_list_t *class_criters,
10
    OpenAPI_list_t *rank_criters,
11
    OpenAPI_dispersion_ordering_criterion_e disp_order_criter,
12
    OpenAPI_matching_direction_e order
13
)
14
0
{
15
0
    OpenAPI_dispersion_requirement_t *dispersion_requirement_local_var = ogs_malloc(sizeof(OpenAPI_dispersion_requirement_t));
16
0
    ogs_assert(dispersion_requirement_local_var);
17
18
0
    dispersion_requirement_local_var->disper_type = disper_type;
19
0
    dispersion_requirement_local_var->class_criters = class_criters;
20
0
    dispersion_requirement_local_var->rank_criters = rank_criters;
21
0
    dispersion_requirement_local_var->disp_order_criter = disp_order_criter;
22
0
    dispersion_requirement_local_var->order = order;
23
24
0
    return dispersion_requirement_local_var;
25
0
}
26
27
void OpenAPI_dispersion_requirement_free(OpenAPI_dispersion_requirement_t *dispersion_requirement)
28
0
{
29
0
    OpenAPI_lnode_t *node = NULL;
30
31
0
    if (NULL == dispersion_requirement) {
32
0
        return;
33
0
    }
34
0
    if (dispersion_requirement->class_criters) {
35
0
        OpenAPI_list_for_each(dispersion_requirement->class_criters, node) {
36
0
            OpenAPI_class_criterion_free(node->data);
37
0
        }
38
0
        OpenAPI_list_free(dispersion_requirement->class_criters);
39
0
        dispersion_requirement->class_criters = NULL;
40
0
    }
41
0
    if (dispersion_requirement->rank_criters) {
42
0
        OpenAPI_list_for_each(dispersion_requirement->rank_criters, node) {
43
0
            OpenAPI_ranking_criterion_free(node->data);
44
0
        }
45
0
        OpenAPI_list_free(dispersion_requirement->rank_criters);
46
0
        dispersion_requirement->rank_criters = NULL;
47
0
    }
48
0
    ogs_free(dispersion_requirement);
49
0
}
50
51
cJSON *OpenAPI_dispersion_requirement_convertToJSON(OpenAPI_dispersion_requirement_t *dispersion_requirement)
52
0
{
53
0
    cJSON *item = NULL;
54
0
    OpenAPI_lnode_t *node = NULL;
55
56
0
    if (dispersion_requirement == NULL) {
57
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [DispersionRequirement]");
58
0
        return NULL;
59
0
    }
60
61
0
    item = cJSON_CreateObject();
62
0
    if (dispersion_requirement->disper_type == OpenAPI_dispersion_type_NULL) {
63
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [disper_type]");
64
0
        return NULL;
65
0
    }
66
0
    if (cJSON_AddStringToObject(item, "disperType", OpenAPI_dispersion_type_ToString(dispersion_requirement->disper_type)) == NULL) {
67
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [disper_type]");
68
0
        goto end;
69
0
    }
70
71
0
    if (dispersion_requirement->class_criters) {
72
0
    cJSON *class_critersList = cJSON_AddArrayToObject(item, "classCriters");
73
0
    if (class_critersList == NULL) {
74
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [class_criters]");
75
0
        goto end;
76
0
    }
77
0
    OpenAPI_list_for_each(dispersion_requirement->class_criters, node) {
78
0
        cJSON *itemLocal = OpenAPI_class_criterion_convertToJSON(node->data);
79
0
        if (itemLocal == NULL) {
80
0
            ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [class_criters]");
81
0
            goto end;
82
0
        }
83
0
        cJSON_AddItemToArray(class_critersList, itemLocal);
84
0
    }
85
0
    }
86
87
0
    if (dispersion_requirement->rank_criters) {
88
0
    cJSON *rank_critersList = cJSON_AddArrayToObject(item, "rankCriters");
89
0
    if (rank_critersList == NULL) {
90
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [rank_criters]");
91
0
        goto end;
92
0
    }
93
0
    OpenAPI_list_for_each(dispersion_requirement->rank_criters, node) {
94
0
        cJSON *itemLocal = OpenAPI_ranking_criterion_convertToJSON(node->data);
95
0
        if (itemLocal == NULL) {
96
0
            ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [rank_criters]");
97
0
            goto end;
98
0
        }
99
0
        cJSON_AddItemToArray(rank_critersList, itemLocal);
100
0
    }
101
0
    }
102
103
0
    if (dispersion_requirement->disp_order_criter != OpenAPI_dispersion_ordering_criterion_NULL) {
104
0
    if (cJSON_AddStringToObject(item, "dispOrderCriter", OpenAPI_dispersion_ordering_criterion_ToString(dispersion_requirement->disp_order_criter)) == NULL) {
105
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [disp_order_criter]");
106
0
        goto end;
107
0
    }
108
0
    }
109
110
0
    if (dispersion_requirement->order != OpenAPI_matching_direction_NULL) {
111
0
    if (cJSON_AddStringToObject(item, "order", OpenAPI_matching_direction_ToString(dispersion_requirement->order)) == NULL) {
112
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed [order]");
113
0
        goto end;
114
0
    }
115
0
    }
116
117
0
end:
118
0
    return item;
119
0
}
120
121
OpenAPI_dispersion_requirement_t *OpenAPI_dispersion_requirement_parseFromJSON(cJSON *dispersion_requirementJSON)
122
0
{
123
0
    OpenAPI_dispersion_requirement_t *dispersion_requirement_local_var = NULL;
124
0
    OpenAPI_lnode_t *node = NULL;
125
0
    cJSON *disper_type = NULL;
126
0
    OpenAPI_dispersion_type_e disper_typeVariable = 0;
127
0
    cJSON *class_criters = NULL;
128
0
    OpenAPI_list_t *class_critersList = NULL;
129
0
    cJSON *rank_criters = NULL;
130
0
    OpenAPI_list_t *rank_critersList = NULL;
131
0
    cJSON *disp_order_criter = NULL;
132
0
    OpenAPI_dispersion_ordering_criterion_e disp_order_criterVariable = 0;
133
0
    cJSON *order = NULL;
134
0
    OpenAPI_matching_direction_e orderVariable = 0;
135
0
    disper_type = cJSON_GetObjectItemCaseSensitive(dispersion_requirementJSON, "disperType");
136
0
    if (!disper_type) {
137
0
        ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [disper_type]");
138
0
        goto end;
139
0
    }
140
0
    if (!cJSON_IsString(disper_type)) {
141
0
        ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [disper_type]");
142
0
        goto end;
143
0
    }
144
0
    disper_typeVariable = OpenAPI_dispersion_type_FromString(disper_type->valuestring);
145
146
0
    class_criters = cJSON_GetObjectItemCaseSensitive(dispersion_requirementJSON, "classCriters");
147
0
    if (class_criters) {
148
0
        cJSON *class_criters_local = NULL;
149
0
        if (!cJSON_IsArray(class_criters)) {
150
0
            ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [class_criters]");
151
0
            goto end;
152
0
        }
153
154
0
        class_critersList = OpenAPI_list_create();
155
156
0
        cJSON_ArrayForEach(class_criters_local, class_criters) {
157
0
            if (!cJSON_IsObject(class_criters_local)) {
158
0
                ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [class_criters]");
159
0
                goto end;
160
0
            }
161
0
            OpenAPI_class_criterion_t *class_critersItem = OpenAPI_class_criterion_parseFromJSON(class_criters_local);
162
0
            if (!class_critersItem) {
163
0
                ogs_error("No class_critersItem");
164
0
                goto end;
165
0
            }
166
0
            OpenAPI_list_add(class_critersList, class_critersItem);
167
0
        }
168
0
    }
169
170
0
    rank_criters = cJSON_GetObjectItemCaseSensitive(dispersion_requirementJSON, "rankCriters");
171
0
    if (rank_criters) {
172
0
        cJSON *rank_criters_local = NULL;
173
0
        if (!cJSON_IsArray(rank_criters)) {
174
0
            ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [rank_criters]");
175
0
            goto end;
176
0
        }
177
178
0
        rank_critersList = OpenAPI_list_create();
179
180
0
        cJSON_ArrayForEach(rank_criters_local, rank_criters) {
181
0
            if (!cJSON_IsObject(rank_criters_local)) {
182
0
                ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [rank_criters]");
183
0
                goto end;
184
0
            }
185
0
            OpenAPI_ranking_criterion_t *rank_critersItem = OpenAPI_ranking_criterion_parseFromJSON(rank_criters_local);
186
0
            if (!rank_critersItem) {
187
0
                ogs_error("No rank_critersItem");
188
0
                goto end;
189
0
            }
190
0
            OpenAPI_list_add(rank_critersList, rank_critersItem);
191
0
        }
192
0
    }
193
194
0
    disp_order_criter = cJSON_GetObjectItemCaseSensitive(dispersion_requirementJSON, "dispOrderCriter");
195
0
    if (disp_order_criter) {
196
0
    if (!cJSON_IsString(disp_order_criter)) {
197
0
        ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [disp_order_criter]");
198
0
        goto end;
199
0
    }
200
0
    disp_order_criterVariable = OpenAPI_dispersion_ordering_criterion_FromString(disp_order_criter->valuestring);
201
0
    }
202
203
0
    order = cJSON_GetObjectItemCaseSensitive(dispersion_requirementJSON, "order");
204
0
    if (order) {
205
0
    if (!cJSON_IsString(order)) {
206
0
        ogs_error("OpenAPI_dispersion_requirement_parseFromJSON() failed [order]");
207
0
        goto end;
208
0
    }
209
0
    orderVariable = OpenAPI_matching_direction_FromString(order->valuestring);
210
0
    }
211
212
0
    dispersion_requirement_local_var = OpenAPI_dispersion_requirement_create (
213
0
        disper_typeVariable,
214
0
        class_criters ? class_critersList : NULL,
215
0
        rank_criters ? rank_critersList : NULL,
216
0
        disp_order_criter ? disp_order_criterVariable : 0,
217
0
        order ? orderVariable : 0
218
0
    );
219
220
0
    return dispersion_requirement_local_var;
221
0
end:
222
0
    if (class_critersList) {
223
0
        OpenAPI_list_for_each(class_critersList, node) {
224
0
            OpenAPI_class_criterion_free(node->data);
225
0
        }
226
0
        OpenAPI_list_free(class_critersList);
227
0
        class_critersList = NULL;
228
0
    }
229
0
    if (rank_critersList) {
230
0
        OpenAPI_list_for_each(rank_critersList, node) {
231
0
            OpenAPI_ranking_criterion_free(node->data);
232
0
        }
233
0
        OpenAPI_list_free(rank_critersList);
234
0
        rank_critersList = NULL;
235
0
    }
236
0
    return NULL;
237
0
}
238
239
OpenAPI_dispersion_requirement_t *OpenAPI_dispersion_requirement_copy(OpenAPI_dispersion_requirement_t *dst, OpenAPI_dispersion_requirement_t *src)
240
0
{
241
0
    cJSON *item = NULL;
242
0
    char *content = NULL;
243
244
0
    ogs_assert(src);
245
0
    item = OpenAPI_dispersion_requirement_convertToJSON(src);
246
0
    if (!item) {
247
0
        ogs_error("OpenAPI_dispersion_requirement_convertToJSON() failed");
248
0
        return NULL;
249
0
    }
250
251
0
    content = cJSON_Print(item);
252
0
    cJSON_Delete(item);
253
254
0
    if (!content) {
255
0
        ogs_error("cJSON_Print() failed");
256
0
        return NULL;
257
0
    }
258
259
0
    item = cJSON_Parse(content);
260
0
    ogs_free(content);
261
0
    if (!item) {
262
0
        ogs_error("cJSON_Parse() failed");
263
0
        return NULL;
264
0
    }
265
266
0
    OpenAPI_dispersion_requirement_free(dst);
267
0
    dst = OpenAPI_dispersion_requirement_parseFromJSON(item);
268
0
    cJSON_Delete(item);
269
270
0
    return dst;
271
0
}
272