Coverage Report

Created: 2026-11-06 06:15

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/snssai_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "snssai_info.h"
6
7
OpenAPI_snssai_info_t *OpenAPI_snssai_info_create(
8
    OpenAPI_list_t *dnn_infos
9
)
10
5
{
11
5
    OpenAPI_snssai_info_t *snssai_info_local_var = ogs_malloc(sizeof(OpenAPI_snssai_info_t));
12
5
    ogs_assert(snssai_info_local_var);
13
14
5
    snssai_info_local_var->dnn_infos = dnn_infos;
15
16
5
    return snssai_info_local_var;
17
5
}
18
19
void OpenAPI_snssai_info_free(OpenAPI_snssai_info_t *snssai_info)
20
1.57k
{
21
1.57k
    OpenAPI_lnode_t *node = NULL;
22
23
1.57k
    if (NULL == snssai_info) {
24
1.57k
        return;
25
1.57k
    }
26
5
    if (snssai_info->dnn_infos) {
27
5
        OpenAPI_list_for_each(snssai_info->dnn_infos, node) {
28
4
            OpenAPI_dnn_info_free(node->data);
29
4
        }
30
5
        OpenAPI_list_free(snssai_info->dnn_infos);
31
5
        snssai_info->dnn_infos = NULL;
32
5
    }
33
5
    ogs_free(snssai_info);
34
5
}
35
36
cJSON *OpenAPI_snssai_info_convertToJSON(OpenAPI_snssai_info_t *snssai_info)
37
0
{
38
0
    cJSON *item = NULL;
39
0
    OpenAPI_lnode_t *node = NULL;
40
41
0
    if (snssai_info == NULL) {
42
0
        ogs_error("OpenAPI_snssai_info_convertToJSON() failed [SnssaiInfo]");
43
0
        return NULL;
44
0
    }
45
46
0
    item = cJSON_CreateObject();
47
0
    if (!snssai_info->dnn_infos) {
48
0
        ogs_error("OpenAPI_snssai_info_convertToJSON() failed [dnn_infos]");
49
0
        return NULL;
50
0
    }
51
0
    cJSON *dnn_infosList = cJSON_AddArrayToObject(item, "dnnInfos");
52
0
    if (dnn_infosList == NULL) {
53
0
        ogs_error("OpenAPI_snssai_info_convertToJSON() failed [dnn_infos]");
54
0
        goto end;
55
0
    }
56
0
    OpenAPI_list_for_each(snssai_info->dnn_infos, node) {
57
0
        cJSON *itemLocal = OpenAPI_dnn_info_convertToJSON(node->data);
58
0
        if (itemLocal == NULL) {
59
0
            ogs_error("OpenAPI_snssai_info_convertToJSON() failed [dnn_infos]");
60
0
            goto end;
61
0
        }
62
0
        cJSON_AddItemToArray(dnn_infosList, itemLocal);
63
0
    }
64
65
0
end:
66
0
    return item;
67
0
}
68
69
OpenAPI_snssai_info_t *OpenAPI_snssai_info_parseFromJSON(cJSON *snssai_infoJSON)
70
820
{
71
820
    OpenAPI_snssai_info_t *snssai_info_local_var = NULL;
72
820
    OpenAPI_lnode_t *node = NULL;
73
820
    cJSON *dnn_infos = NULL;
74
820
    OpenAPI_list_t *dnn_infosList = NULL;
75
820
    dnn_infos = cJSON_GetObjectItemCaseSensitive(snssai_infoJSON, "dnnInfos");
76
820
    if (!dnn_infos) {
77
713
        ogs_error("OpenAPI_snssai_info_parseFromJSON() failed [dnn_infos]");
78
713
        goto end;
79
713
    }
80
107
        cJSON *dnn_infos_local = NULL;
81
107
        if (!cJSON_IsArray(dnn_infos)) {
82
66
            ogs_error("OpenAPI_snssai_info_parseFromJSON() failed [dnn_infos]");
83
66
            goto end;
84
66
        }
85
86
41
        dnn_infosList = OpenAPI_list_create();
87
88
41
        cJSON_ArrayForEach(dnn_infos_local, dnn_infos) {
89
41
            if (!cJSON_IsObject(dnn_infos_local)) {
90
1
                ogs_error("OpenAPI_snssai_info_parseFromJSON() failed [dnn_infos]");
91
1
                goto end;
92
1
            }
93
40
            OpenAPI_dnn_info_t *dnn_infosItem = OpenAPI_dnn_info_parseFromJSON(dnn_infos_local);
94
40
            if (!dnn_infosItem) {
95
35
                ogs_error("No dnn_infosItem");
96
35
                goto end;
97
35
            }
98
5
            OpenAPI_list_add(dnn_infosList, dnn_infosItem);
99
5
        }
100
101
5
    snssai_info_local_var = OpenAPI_snssai_info_create (
102
5
        dnn_infosList
103
5
    );
104
105
5
    return snssai_info_local_var;
106
815
end:
107
815
    if (dnn_infosList) {
108
36
        OpenAPI_list_for_each(dnn_infosList, node) {
109
1
            OpenAPI_dnn_info_free(node->data);
110
1
        }
111
36
        OpenAPI_list_free(dnn_infosList);
112
36
        dnn_infosList = NULL;
113
36
    }
114
815
    return NULL;
115
41
}
116
117
OpenAPI_snssai_info_t *OpenAPI_snssai_info_copy(OpenAPI_snssai_info_t *dst, OpenAPI_snssai_info_t *src)
118
0
{
119
0
    cJSON *item = NULL;
120
0
    char *content = NULL;
121
122
0
    ogs_assert(src);
123
0
    item = OpenAPI_snssai_info_convertToJSON(src);
124
0
    if (!item) {
125
0
        ogs_error("OpenAPI_snssai_info_convertToJSON() failed");
126
0
        return NULL;
127
0
    }
128
129
0
    content = cJSON_Print(item);
130
0
    cJSON_Delete(item);
131
132
0
    if (!content) {
133
0
        ogs_error("cJSON_Print() failed");
134
0
        return NULL;
135
0
    }
136
137
0
    item = cJSON_Parse(content);
138
0
    ogs_free(content);
139
0
    if (!item) {
140
0
        ogs_error("cJSON_Parse() failed");
141
0
        return NULL;
142
0
    }
143
144
0
    OpenAPI_snssai_info_free(dst);
145
0
    dst = OpenAPI_snssai_info_parseFromJSON(item);
146
0
    cJSON_Delete(item);
147
148
0
    return dst;
149
0
}
150