Coverage Report

Created: 2026-09-28 06:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/dispersion_collection.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "dispersion_collection.h"
6
7
OpenAPI_dispersion_collection_t *OpenAPI_dispersion_collection_create(
8
    OpenAPI_user_location_t *ue_loc,
9
    OpenAPI_snssai_t *snssai,
10
    OpenAPI_list_t *supis,
11
    OpenAPI_list_t *gpsis,
12
    OpenAPI_list_t *app_volumes,
13
    bool is_disper_amount,
14
    int disper_amount,
15
    OpenAPI_dispersion_class_e disper_class,
16
    bool is_usage_rank,
17
    int usage_rank,
18
    bool is_percentile_rank,
19
    int percentile_rank,
20
    bool is_ue_ratio,
21
    int ue_ratio,
22
    bool is_confidence,
23
    int confidence
24
)
25
0
{
26
0
    OpenAPI_dispersion_collection_t *dispersion_collection_local_var = ogs_malloc(sizeof(OpenAPI_dispersion_collection_t));
27
0
    ogs_assert(dispersion_collection_local_var);
28
29
0
    dispersion_collection_local_var->ue_loc = ue_loc;
30
0
    dispersion_collection_local_var->snssai = snssai;
31
0
    dispersion_collection_local_var->supis = supis;
32
0
    dispersion_collection_local_var->gpsis = gpsis;
33
0
    dispersion_collection_local_var->app_volumes = app_volumes;
34
0
    dispersion_collection_local_var->is_disper_amount = is_disper_amount;
35
0
    dispersion_collection_local_var->disper_amount = disper_amount;
36
0
    dispersion_collection_local_var->disper_class = disper_class;
37
0
    dispersion_collection_local_var->is_usage_rank = is_usage_rank;
38
0
    dispersion_collection_local_var->usage_rank = usage_rank;
39
0
    dispersion_collection_local_var->is_percentile_rank = is_percentile_rank;
40
0
    dispersion_collection_local_var->percentile_rank = percentile_rank;
41
0
    dispersion_collection_local_var->is_ue_ratio = is_ue_ratio;
42
0
    dispersion_collection_local_var->ue_ratio = ue_ratio;
43
0
    dispersion_collection_local_var->is_confidence = is_confidence;
44
0
    dispersion_collection_local_var->confidence = confidence;
45
46
0
    return dispersion_collection_local_var;
47
0
}
48
49
void OpenAPI_dispersion_collection_free(OpenAPI_dispersion_collection_t *dispersion_collection)
50
0
{
51
0
    OpenAPI_lnode_t *node = NULL;
52
53
0
    if (NULL == dispersion_collection) {
54
0
        return;
55
0
    }
56
0
    if (dispersion_collection->ue_loc) {
57
0
        OpenAPI_user_location_free(dispersion_collection->ue_loc);
58
0
        dispersion_collection->ue_loc = NULL;
59
0
    }
60
0
    if (dispersion_collection->snssai) {
61
0
        OpenAPI_snssai_free(dispersion_collection->snssai);
62
0
        dispersion_collection->snssai = NULL;
63
0
    }
64
0
    if (dispersion_collection->supis) {
65
0
        OpenAPI_list_for_each(dispersion_collection->supis, node) {
66
0
            ogs_free(node->data);
67
0
        }
68
0
        OpenAPI_list_free(dispersion_collection->supis);
69
0
        dispersion_collection->supis = NULL;
70
0
    }
71
0
    if (dispersion_collection->gpsis) {
72
0
        OpenAPI_list_for_each(dispersion_collection->gpsis, node) {
73
0
            ogs_free(node->data);
74
0
        }
75
0
        OpenAPI_list_free(dispersion_collection->gpsis);
76
0
        dispersion_collection->gpsis = NULL;
77
0
    }
78
0
    if (dispersion_collection->app_volumes) {
79
0
        OpenAPI_list_for_each(dispersion_collection->app_volumes, node) {
80
0
            OpenAPI_application_volume_free(node->data);
81
0
        }
82
0
        OpenAPI_list_free(dispersion_collection->app_volumes);
83
0
        dispersion_collection->app_volumes = NULL;
84
0
    }
85
0
    ogs_free(dispersion_collection);
86
0
}
87
88
cJSON *OpenAPI_dispersion_collection_convertToJSON(OpenAPI_dispersion_collection_t *dispersion_collection)
89
0
{
90
0
    cJSON *item = NULL;
91
0
    OpenAPI_lnode_t *node = NULL;
92
93
0
    if (dispersion_collection == NULL) {
94
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [DispersionCollection]");
95
0
        return NULL;
96
0
    }
97
98
0
    item = cJSON_CreateObject();
99
0
    if (dispersion_collection->ue_loc) {
100
0
    cJSON *ue_loc_local_JSON = OpenAPI_user_location_convertToJSON(dispersion_collection->ue_loc);
101
0
    if (ue_loc_local_JSON == NULL) {
102
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [ue_loc]");
103
0
        goto end;
104
0
    }
105
0
    cJSON_AddItemToObject(item, "ueLoc", ue_loc_local_JSON);
106
0
    if (item->child == NULL) {
107
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [ue_loc]");
108
0
        goto end;
109
0
    }
110
0
    }
111
112
0
    if (dispersion_collection->snssai) {
113
0
    cJSON *snssai_local_JSON = OpenAPI_snssai_convertToJSON(dispersion_collection->snssai);
114
0
    if (snssai_local_JSON == NULL) {
115
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [snssai]");
116
0
        goto end;
117
0
    }
118
0
    cJSON_AddItemToObject(item, "snssai", snssai_local_JSON);
119
0
    if (item->child == NULL) {
120
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [snssai]");
121
0
        goto end;
122
0
    }
123
0
    }
124
125
0
    if (dispersion_collection->supis) {
126
0
    cJSON *supisList = cJSON_AddArrayToObject(item, "supis");
127
0
    if (supisList == NULL) {
128
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [supis]");
129
0
        goto end;
130
0
    }
131
0
    OpenAPI_list_for_each(dispersion_collection->supis, node) {
132
0
        if (cJSON_AddStringToObject(supisList, "", (char*)node->data) == NULL) {
133
0
            ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [supis]");
134
0
            goto end;
135
0
        }
136
0
    }
137
0
    }
138
139
0
    if (dispersion_collection->gpsis) {
140
0
    cJSON *gpsisList = cJSON_AddArrayToObject(item, "gpsis");
141
0
    if (gpsisList == NULL) {
142
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [gpsis]");
143
0
        goto end;
144
0
    }
145
0
    OpenAPI_list_for_each(dispersion_collection->gpsis, node) {
146
0
        if (cJSON_AddStringToObject(gpsisList, "", (char*)node->data) == NULL) {
147
0
            ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [gpsis]");
148
0
            goto end;
149
0
        }
150
0
    }
151
0
    }
152
153
0
    if (dispersion_collection->app_volumes) {
154
0
    cJSON *app_volumesList = cJSON_AddArrayToObject(item, "appVolumes");
155
0
    if (app_volumesList == NULL) {
156
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [app_volumes]");
157
0
        goto end;
158
0
    }
159
0
    OpenAPI_list_for_each(dispersion_collection->app_volumes, node) {
160
0
        cJSON *itemLocal = OpenAPI_application_volume_convertToJSON(node->data);
161
0
        if (itemLocal == NULL) {
162
0
            ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [app_volumes]");
163
0
            goto end;
164
0
        }
165
0
        cJSON_AddItemToArray(app_volumesList, itemLocal);
166
0
    }
167
0
    }
168
169
0
    if (dispersion_collection->is_disper_amount) {
170
0
    if (cJSON_AddNumberToObject(item, "disperAmount", dispersion_collection->disper_amount) == NULL) {
171
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [disper_amount]");
172
0
        goto end;
173
0
    }
174
0
    }
175
176
0
    if (dispersion_collection->disper_class != OpenAPI_dispersion_class_NULL) {
177
0
    if (cJSON_AddStringToObject(item, "disperClass", OpenAPI_dispersion_class_ToString(dispersion_collection->disper_class)) == NULL) {
178
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [disper_class]");
179
0
        goto end;
180
0
    }
181
0
    }
182
183
0
    if (dispersion_collection->is_usage_rank) {
184
0
    if (cJSON_AddNumberToObject(item, "usageRank", dispersion_collection->usage_rank) == NULL) {
185
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [usage_rank]");
186
0
        goto end;
187
0
    }
188
0
    }
189
190
0
    if (dispersion_collection->is_percentile_rank) {
191
0
    if (cJSON_AddNumberToObject(item, "percentileRank", dispersion_collection->percentile_rank) == NULL) {
192
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [percentile_rank]");
193
0
        goto end;
194
0
    }
195
0
    }
196
197
0
    if (dispersion_collection->is_ue_ratio) {
198
0
    if (cJSON_AddNumberToObject(item, "ueRatio", dispersion_collection->ue_ratio) == NULL) {
199
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [ue_ratio]");
200
0
        goto end;
201
0
    }
202
0
    }
203
204
0
    if (dispersion_collection->is_confidence) {
205
0
    if (cJSON_AddNumberToObject(item, "confidence", dispersion_collection->confidence) == NULL) {
206
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed [confidence]");
207
0
        goto end;
208
0
    }
209
0
    }
210
211
0
end:
212
0
    return item;
213
0
}
214
215
OpenAPI_dispersion_collection_t *OpenAPI_dispersion_collection_parseFromJSON(cJSON *dispersion_collectionJSON)
216
0
{
217
0
    OpenAPI_dispersion_collection_t *dispersion_collection_local_var = NULL;
218
0
    OpenAPI_lnode_t *node = NULL;
219
0
    cJSON *ue_loc = NULL;
220
0
    OpenAPI_user_location_t *ue_loc_local_nonprim = NULL;
221
0
    cJSON *snssai = NULL;
222
0
    OpenAPI_snssai_t *snssai_local_nonprim = NULL;
223
0
    cJSON *supis = NULL;
224
0
    OpenAPI_list_t *supisList = NULL;
225
0
    cJSON *gpsis = NULL;
226
0
    OpenAPI_list_t *gpsisList = NULL;
227
0
    cJSON *app_volumes = NULL;
228
0
    OpenAPI_list_t *app_volumesList = NULL;
229
0
    cJSON *disper_amount = NULL;
230
0
    cJSON *disper_class = NULL;
231
0
    OpenAPI_dispersion_class_e disper_classVariable = 0;
232
0
    cJSON *usage_rank = NULL;
233
0
    cJSON *percentile_rank = NULL;
234
0
    cJSON *ue_ratio = NULL;
235
0
    cJSON *confidence = NULL;
236
0
    ue_loc = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "ueLoc");
237
0
    if (ue_loc) {
238
0
    ue_loc_local_nonprim = OpenAPI_user_location_parseFromJSON(ue_loc);
239
0
    if (!ue_loc_local_nonprim) {
240
0
        ogs_error("OpenAPI_user_location_parseFromJSON failed [ue_loc]");
241
0
        goto end;
242
0
    }
243
0
    }
244
245
0
    snssai = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "snssai");
246
0
    if (snssai) {
247
0
    snssai_local_nonprim = OpenAPI_snssai_parseFromJSON(snssai);
248
0
    if (!snssai_local_nonprim) {
249
0
        ogs_error("OpenAPI_snssai_parseFromJSON failed [snssai]");
250
0
        goto end;
251
0
    }
252
0
    }
253
254
0
    supis = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "supis");
255
0
    if (supis) {
256
0
        cJSON *supis_local = NULL;
257
0
        if (!cJSON_IsArray(supis)) {
258
0
            ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [supis]");
259
0
            goto end;
260
0
        }
261
262
0
        supisList = OpenAPI_list_create();
263
264
0
        cJSON_ArrayForEach(supis_local, supis) {
265
0
            double *localDouble = NULL;
266
0
            int *localInt = NULL;
267
0
            if (!cJSON_IsString(supis_local)) {
268
0
                ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [supis]");
269
0
                goto end;
270
0
            }
271
0
            OpenAPI_list_add(supisList, ogs_strdup(supis_local->valuestring));
272
0
        }
273
0
    }
274
275
0
    gpsis = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "gpsis");
276
0
    if (gpsis) {
277
0
        cJSON *gpsis_local = NULL;
278
0
        if (!cJSON_IsArray(gpsis)) {
279
0
            ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [gpsis]");
280
0
            goto end;
281
0
        }
282
283
0
        gpsisList = OpenAPI_list_create();
284
285
0
        cJSON_ArrayForEach(gpsis_local, gpsis) {
286
0
            double *localDouble = NULL;
287
0
            int *localInt = NULL;
288
0
            if (!cJSON_IsString(gpsis_local)) {
289
0
                ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [gpsis]");
290
0
                goto end;
291
0
            }
292
0
            OpenAPI_list_add(gpsisList, ogs_strdup(gpsis_local->valuestring));
293
0
        }
294
0
    }
295
296
0
    app_volumes = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "appVolumes");
297
0
    if (app_volumes) {
298
0
        cJSON *app_volumes_local = NULL;
299
0
        if (!cJSON_IsArray(app_volumes)) {
300
0
            ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [app_volumes]");
301
0
            goto end;
302
0
        }
303
304
0
        app_volumesList = OpenAPI_list_create();
305
306
0
        cJSON_ArrayForEach(app_volumes_local, app_volumes) {
307
0
            if (!cJSON_IsObject(app_volumes_local)) {
308
0
                ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [app_volumes]");
309
0
                goto end;
310
0
            }
311
0
            OpenAPI_application_volume_t *app_volumesItem = OpenAPI_application_volume_parseFromJSON(app_volumes_local);
312
0
            if (!app_volumesItem) {
313
0
                ogs_error("No app_volumesItem");
314
0
                goto end;
315
0
            }
316
0
            OpenAPI_list_add(app_volumesList, app_volumesItem);
317
0
        }
318
0
    }
319
320
0
    disper_amount = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "disperAmount");
321
0
    if (disper_amount) {
322
0
    if (!cJSON_IsNumber(disper_amount)) {
323
0
        ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [disper_amount]");
324
0
        goto end;
325
0
    }
326
0
    }
327
328
0
    disper_class = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "disperClass");
329
0
    if (disper_class) {
330
0
    if (!cJSON_IsString(disper_class)) {
331
0
        ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [disper_class]");
332
0
        goto end;
333
0
    }
334
0
    disper_classVariable = OpenAPI_dispersion_class_FromString(disper_class->valuestring);
335
0
    }
336
337
0
    usage_rank = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "usageRank");
338
0
    if (usage_rank) {
339
0
    if (!cJSON_IsNumber(usage_rank)) {
340
0
        ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [usage_rank]");
341
0
        goto end;
342
0
    }
343
0
    }
344
345
0
    percentile_rank = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "percentileRank");
346
0
    if (percentile_rank) {
347
0
    if (!cJSON_IsNumber(percentile_rank)) {
348
0
        ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [percentile_rank]");
349
0
        goto end;
350
0
    }
351
0
    }
352
353
0
    ue_ratio = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "ueRatio");
354
0
    if (ue_ratio) {
355
0
    if (!cJSON_IsNumber(ue_ratio)) {
356
0
        ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [ue_ratio]");
357
0
        goto end;
358
0
    }
359
0
    }
360
361
0
    confidence = cJSON_GetObjectItemCaseSensitive(dispersion_collectionJSON, "confidence");
362
0
    if (confidence) {
363
0
    if (!cJSON_IsNumber(confidence)) {
364
0
        ogs_error("OpenAPI_dispersion_collection_parseFromJSON() failed [confidence]");
365
0
        goto end;
366
0
    }
367
0
    }
368
369
0
    dispersion_collection_local_var = OpenAPI_dispersion_collection_create (
370
0
        ue_loc ? ue_loc_local_nonprim : NULL,
371
0
        snssai ? snssai_local_nonprim : NULL,
372
0
        supis ? supisList : NULL,
373
0
        gpsis ? gpsisList : NULL,
374
0
        app_volumes ? app_volumesList : NULL,
375
0
        disper_amount ? true : false,
376
0
        disper_amount ? disper_amount->valuedouble : 0,
377
0
        disper_class ? disper_classVariable : 0,
378
0
        usage_rank ? true : false,
379
0
        usage_rank ? usage_rank->valuedouble : 0,
380
0
        percentile_rank ? true : false,
381
0
        percentile_rank ? percentile_rank->valuedouble : 0,
382
0
        ue_ratio ? true : false,
383
0
        ue_ratio ? ue_ratio->valuedouble : 0,
384
0
        confidence ? true : false,
385
0
        confidence ? confidence->valuedouble : 0
386
0
    );
387
388
0
    return dispersion_collection_local_var;
389
0
end:
390
0
    if (ue_loc_local_nonprim) {
391
0
        OpenAPI_user_location_free(ue_loc_local_nonprim);
392
0
        ue_loc_local_nonprim = NULL;
393
0
    }
394
0
    if (snssai_local_nonprim) {
395
0
        OpenAPI_snssai_free(snssai_local_nonprim);
396
0
        snssai_local_nonprim = NULL;
397
0
    }
398
0
    if (supisList) {
399
0
        OpenAPI_list_for_each(supisList, node) {
400
0
            ogs_free(node->data);
401
0
        }
402
0
        OpenAPI_list_free(supisList);
403
0
        supisList = NULL;
404
0
    }
405
0
    if (gpsisList) {
406
0
        OpenAPI_list_for_each(gpsisList, node) {
407
0
            ogs_free(node->data);
408
0
        }
409
0
        OpenAPI_list_free(gpsisList);
410
0
        gpsisList = NULL;
411
0
    }
412
0
    if (app_volumesList) {
413
0
        OpenAPI_list_for_each(app_volumesList, node) {
414
0
            OpenAPI_application_volume_free(node->data);
415
0
        }
416
0
        OpenAPI_list_free(app_volumesList);
417
0
        app_volumesList = NULL;
418
0
    }
419
0
    return NULL;
420
0
}
421
422
OpenAPI_dispersion_collection_t *OpenAPI_dispersion_collection_copy(OpenAPI_dispersion_collection_t *dst, OpenAPI_dispersion_collection_t *src)
423
0
{
424
0
    cJSON *item = NULL;
425
0
    char *content = NULL;
426
427
0
    ogs_assert(src);
428
0
    item = OpenAPI_dispersion_collection_convertToJSON(src);
429
0
    if (!item) {
430
0
        ogs_error("OpenAPI_dispersion_collection_convertToJSON() failed");
431
0
        return NULL;
432
0
    }
433
434
0
    content = cJSON_Print(item);
435
0
    cJSON_Delete(item);
436
437
0
    if (!content) {
438
0
        ogs_error("cJSON_Print() failed");
439
0
        return NULL;
440
0
    }
441
442
0
    item = cJSON_Parse(content);
443
0
    ogs_free(content);
444
0
    if (!item) {
445
0
        ogs_error("cJSON_Parse() failed");
446
0
        return NULL;
447
0
    }
448
449
0
    OpenAPI_dispersion_collection_free(dst);
450
0
    dst = OpenAPI_dispersion_collection_parseFromJSON(item);
451
0
    cJSON_Delete(item);
452
453
0
    return dst;
454
0
}
455