Coverage Report

Created: 2026-11-12 06:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/ssc_modes.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "ssc_modes.h"
6
7
OpenAPI_ssc_modes_t *OpenAPI_ssc_modes_create(
8
    OpenAPI_ssc_mode_e default_ssc_mode,
9
    OpenAPI_list_t *allowed_ssc_modes
10
)
11
645
{
12
645
    OpenAPI_ssc_modes_t *ssc_modes_local_var = ogs_malloc(sizeof(OpenAPI_ssc_modes_t));
13
645
    ogs_assert(ssc_modes_local_var);
14
15
645
    ssc_modes_local_var->default_ssc_mode = default_ssc_mode;
16
645
    ssc_modes_local_var->allowed_ssc_modes = allowed_ssc_modes;
17
18
645
    return ssc_modes_local_var;
19
645
}
20
21
void OpenAPI_ssc_modes_free(OpenAPI_ssc_modes_t *ssc_modes)
22
645
{
23
645
    OpenAPI_lnode_t *node = NULL;
24
25
645
    if (NULL == ssc_modes) {
26
0
        return;
27
0
    }
28
645
    if (ssc_modes->allowed_ssc_modes) {
29
115
        OpenAPI_list_free(ssc_modes->allowed_ssc_modes);
30
115
        ssc_modes->allowed_ssc_modes = NULL;
31
115
    }
32
645
    ogs_free(ssc_modes);
33
645
}
34
35
cJSON *OpenAPI_ssc_modes_convertToJSON(OpenAPI_ssc_modes_t *ssc_modes)
36
0
{
37
0
    cJSON *item = NULL;
38
0
    OpenAPI_lnode_t *node = NULL;
39
40
0
    if (ssc_modes == NULL) {
41
0
        ogs_error("OpenAPI_ssc_modes_convertToJSON() failed [SscModes]");
42
0
        return NULL;
43
0
    }
44
45
0
    item = cJSON_CreateObject();
46
0
    if (ssc_modes->default_ssc_mode == OpenAPI_ssc_mode_NULL) {
47
0
        ogs_error("OpenAPI_ssc_modes_convertToJSON() failed [default_ssc_mode]");
48
0
        return NULL;
49
0
    }
50
0
    if (cJSON_AddStringToObject(item, "defaultSscMode", OpenAPI_ssc_mode_ToString(ssc_modes->default_ssc_mode)) == NULL) {
51
0
        ogs_error("OpenAPI_ssc_modes_convertToJSON() failed [default_ssc_mode]");
52
0
        goto end;
53
0
    }
54
55
0
    if (ssc_modes->allowed_ssc_modes != OpenAPI_ssc_mode_NULL) {
56
0
    cJSON *allowed_ssc_modesList = cJSON_AddArrayToObject(item, "allowedSscModes");
57
0
    if (allowed_ssc_modesList == NULL) {
58
0
        ogs_error("OpenAPI_ssc_modes_convertToJSON() failed [allowed_ssc_modes]");
59
0
        goto end;
60
0
    }
61
0
    OpenAPI_list_for_each(ssc_modes->allowed_ssc_modes, node) {
62
0
        if (cJSON_AddStringToObject(allowed_ssc_modesList, "", OpenAPI_ssc_mode_ToString((intptr_t)node->data)) == NULL) {
63
0
            ogs_error("OpenAPI_ssc_modes_convertToJSON() failed [allowed_ssc_modes]");
64
0
            goto end;
65
0
        }
66
0
    }
67
0
    }
68
69
0
end:
70
0
    return item;
71
0
}
72
73
OpenAPI_ssc_modes_t *OpenAPI_ssc_modes_parseFromJSON(cJSON *ssc_modesJSON)
74
973
{
75
973
    OpenAPI_ssc_modes_t *ssc_modes_local_var = NULL;
76
973
    OpenAPI_lnode_t *node = NULL;
77
973
    cJSON *default_ssc_mode = NULL;
78
973
    OpenAPI_ssc_mode_e default_ssc_modeVariable = 0;
79
973
    cJSON *allowed_ssc_modes = NULL;
80
973
    OpenAPI_list_t *allowed_ssc_modesList = NULL;
81
973
    default_ssc_mode = cJSON_GetObjectItemCaseSensitive(ssc_modesJSON, "defaultSscMode");
82
973
    if (!default_ssc_mode) {
83
162
        ogs_error("OpenAPI_ssc_modes_parseFromJSON() failed [default_ssc_mode]");
84
162
        goto end;
85
162
    }
86
811
    if (!cJSON_IsString(default_ssc_mode)) {
87
2
        ogs_error("OpenAPI_ssc_modes_parseFromJSON() failed [default_ssc_mode]");
88
2
        goto end;
89
2
    }
90
809
    default_ssc_modeVariable = OpenAPI_ssc_mode_FromString(default_ssc_mode->valuestring);
91
92
809
    allowed_ssc_modes = cJSON_GetObjectItemCaseSensitive(ssc_modesJSON, "allowedSscModes");
93
809
    if (allowed_ssc_modes) {
94
279
        cJSON *allowed_ssc_modes_local = NULL;
95
279
        if (!cJSON_IsArray(allowed_ssc_modes)) {
96
2
            ogs_error("OpenAPI_ssc_modes_parseFromJSON() failed [allowed_ssc_modes]");
97
2
            goto end;
98
2
        }
99
100
277
        allowed_ssc_modesList = OpenAPI_list_create();
101
102
2.03k
        cJSON_ArrayForEach(allowed_ssc_modes_local, allowed_ssc_modes) {
103
2.03k
            OpenAPI_ssc_mode_e localEnum = OpenAPI_ssc_mode_NULL;
104
2.03k
            if (!cJSON_IsString(allowed_ssc_modes_local)) {
105
40
                ogs_error("OpenAPI_ssc_modes_parseFromJSON() failed [allowed_ssc_modes]");
106
40
                goto end;
107
40
            }
108
1.99k
            localEnum = OpenAPI_ssc_mode_FromString(allowed_ssc_modes_local->valuestring);
109
1.99k
            if (!localEnum) {
110
1.43k
                ogs_info("Enum value \"%s\" for field \"allowed_ssc_modes\" is not supported. Ignoring it ...",
111
1.43k
                         allowed_ssc_modes_local->valuestring);
112
1.43k
            } else {
113
564
                OpenAPI_list_add(allowed_ssc_modesList, (void *)localEnum);
114
564
            }
115
1.99k
        }
116
237
        if (allowed_ssc_modesList->count == 0) {
117
122
            ogs_error("OpenAPI_ssc_modes_parseFromJSON() failed: Expected allowed_ssc_modesList to not be empty (after ignoring unsupported enum values).");
118
122
            goto end;
119
122
        }
120
237
    }
121
122
645
    ssc_modes_local_var = OpenAPI_ssc_modes_create (
123
645
        default_ssc_modeVariable,
124
645
        allowed_ssc_modes ? allowed_ssc_modesList : NULL
125
645
    );
126
127
645
    return ssc_modes_local_var;
128
328
end:
129
328
    if (allowed_ssc_modesList) {
130
162
        OpenAPI_list_free(allowed_ssc_modesList);
131
162
        allowed_ssc_modesList = NULL;
132
162
    }
133
328
    return NULL;
134
809
}
135
136
OpenAPI_ssc_modes_t *OpenAPI_ssc_modes_copy(OpenAPI_ssc_modes_t *dst, OpenAPI_ssc_modes_t *src)
137
0
{
138
0
    cJSON *item = NULL;
139
0
    char *content = NULL;
140
141
0
    ogs_assert(src);
142
0
    item = OpenAPI_ssc_modes_convertToJSON(src);
143
0
    if (!item) {
144
0
        ogs_error("OpenAPI_ssc_modes_convertToJSON() failed");
145
0
        return NULL;
146
0
    }
147
148
0
    content = cJSON_Print(item);
149
0
    cJSON_Delete(item);
150
151
0
    if (!content) {
152
0
        ogs_error("cJSON_Print() failed");
153
0
        return NULL;
154
0
    }
155
156
0
    item = cJSON_Parse(content);
157
0
    ogs_free(content);
158
0
    if (!item) {
159
0
        ogs_error("cJSON_Parse() failed");
160
0
        return NULL;
161
0
    }
162
163
0
    OpenAPI_ssc_modes_free(dst);
164
0
    dst = OpenAPI_ssc_modes_parseFromJSON(item);
165
0
    cJSON_Delete(item);
166
167
0
    return dst;
168
0
}
169