Coverage Report

Created: 2026-06-30 06:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/trajectory.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "trajectory.h"
6
7
OpenAPI_trajectory_t *OpenAPI_trajectory_create(
8
    OpenAPI_list_t *scheduled_area_list,
9
    OpenAPI_list_t *segment_list,
10
    bool is_acceptable_deviation_time,
11
    int acceptable_deviation_time
12
)
13
0
{
14
0
    OpenAPI_trajectory_t *trajectory_local_var = ogs_malloc(sizeof(OpenAPI_trajectory_t));
15
0
    ogs_assert(trajectory_local_var);
16
17
0
    trajectory_local_var->scheduled_area_list = scheduled_area_list;
18
0
    trajectory_local_var->segment_list = segment_list;
19
0
    trajectory_local_var->is_acceptable_deviation_time = is_acceptable_deviation_time;
20
0
    trajectory_local_var->acceptable_deviation_time = acceptable_deviation_time;
21
22
0
    return trajectory_local_var;
23
0
}
24
25
void OpenAPI_trajectory_free(OpenAPI_trajectory_t *trajectory)
26
0
{
27
0
    OpenAPI_lnode_t *node = NULL;
28
29
0
    if (NULL == trajectory) {
30
0
        return;
31
0
    }
32
0
    if (trajectory->scheduled_area_list) {
33
0
        OpenAPI_list_for_each(trajectory->scheduled_area_list, node) {
34
0
            OpenAPI_scheduled_area_free(node->data);
35
0
        }
36
0
        OpenAPI_list_free(trajectory->scheduled_area_list);
37
0
        trajectory->scheduled_area_list = NULL;
38
0
    }
39
0
    if (trajectory->segment_list) {
40
0
        OpenAPI_list_for_each(trajectory->segment_list, node) {
41
0
            OpenAPI_trajectory_segment_free(node->data);
42
0
        }
43
0
        OpenAPI_list_free(trajectory->segment_list);
44
0
        trajectory->segment_list = NULL;
45
0
    }
46
0
    ogs_free(trajectory);
47
0
}
48
49
cJSON *OpenAPI_trajectory_convertToJSON(OpenAPI_trajectory_t *trajectory)
50
0
{
51
0
    cJSON *item = NULL;
52
0
    OpenAPI_lnode_t *node = NULL;
53
54
0
    if (trajectory == NULL) {
55
0
        ogs_error("OpenAPI_trajectory_convertToJSON() failed [Trajectory]");
56
0
        return NULL;
57
0
    }
58
59
0
    item = cJSON_CreateObject();
60
0
    if (trajectory->scheduled_area_list) {
61
0
    cJSON *scheduled_area_listList = cJSON_AddArrayToObject(item, "scheduledAreaList");
62
0
    if (scheduled_area_listList == NULL) {
63
0
        ogs_error("OpenAPI_trajectory_convertToJSON() failed [scheduled_area_list]");
64
0
        goto end;
65
0
    }
66
0
    OpenAPI_list_for_each(trajectory->scheduled_area_list, node) {
67
0
        cJSON *itemLocal = OpenAPI_scheduled_area_convertToJSON(node->data);
68
0
        if (itemLocal == NULL) {
69
0
            ogs_error("OpenAPI_trajectory_convertToJSON() failed [scheduled_area_list]");
70
0
            goto end;
71
0
        }
72
0
        cJSON_AddItemToArray(scheduled_area_listList, itemLocal);
73
0
    }
74
0
    }
75
76
0
    if (trajectory->segment_list) {
77
0
    cJSON *segment_listList = cJSON_AddArrayToObject(item, "segmentList");
78
0
    if (segment_listList == NULL) {
79
0
        ogs_error("OpenAPI_trajectory_convertToJSON() failed [segment_list]");
80
0
        goto end;
81
0
    }
82
0
    OpenAPI_list_for_each(trajectory->segment_list, node) {
83
0
        cJSON *itemLocal = OpenAPI_trajectory_segment_convertToJSON(node->data);
84
0
        if (itemLocal == NULL) {
85
0
            ogs_error("OpenAPI_trajectory_convertToJSON() failed [segment_list]");
86
0
            goto end;
87
0
        }
88
0
        cJSON_AddItemToArray(segment_listList, itemLocal);
89
0
    }
90
0
    }
91
92
0
    if (trajectory->is_acceptable_deviation_time) {
93
0
    if (cJSON_AddNumberToObject(item, "acceptableDeviationTime", trajectory->acceptable_deviation_time) == NULL) {
94
0
        ogs_error("OpenAPI_trajectory_convertToJSON() failed [acceptable_deviation_time]");
95
0
        goto end;
96
0
    }
97
0
    }
98
99
0
end:
100
0
    return item;
101
0
}
102
103
OpenAPI_trajectory_t *OpenAPI_trajectory_parseFromJSON(cJSON *trajectoryJSON)
104
0
{
105
0
    OpenAPI_trajectory_t *trajectory_local_var = NULL;
106
0
    OpenAPI_lnode_t *node = NULL;
107
0
    cJSON *scheduled_area_list = NULL;
108
0
    OpenAPI_list_t *scheduled_area_listList = NULL;
109
0
    cJSON *segment_list = NULL;
110
0
    OpenAPI_list_t *segment_listList = NULL;
111
0
    cJSON *acceptable_deviation_time = NULL;
112
0
    scheduled_area_list = cJSON_GetObjectItemCaseSensitive(trajectoryJSON, "scheduledAreaList");
113
0
    if (scheduled_area_list) {
114
0
        cJSON *scheduled_area_list_local = NULL;
115
0
        if (!cJSON_IsArray(scheduled_area_list)) {
116
0
            ogs_error("OpenAPI_trajectory_parseFromJSON() failed [scheduled_area_list]");
117
0
            goto end;
118
0
        }
119
120
0
        scheduled_area_listList = OpenAPI_list_create();
121
122
0
        cJSON_ArrayForEach(scheduled_area_list_local, scheduled_area_list) {
123
0
            if (!cJSON_IsObject(scheduled_area_list_local)) {
124
0
                ogs_error("OpenAPI_trajectory_parseFromJSON() failed [scheduled_area_list]");
125
0
                goto end;
126
0
            }
127
0
            OpenAPI_scheduled_area_t *scheduled_area_listItem = OpenAPI_scheduled_area_parseFromJSON(scheduled_area_list_local);
128
0
            if (!scheduled_area_listItem) {
129
0
                ogs_error("No scheduled_area_listItem");
130
0
                goto end;
131
0
            }
132
0
            OpenAPI_list_add(scheduled_area_listList, scheduled_area_listItem);
133
0
        }
134
0
    }
135
136
0
    segment_list = cJSON_GetObjectItemCaseSensitive(trajectoryJSON, "segmentList");
137
0
    if (segment_list) {
138
0
        cJSON *segment_list_local = NULL;
139
0
        if (!cJSON_IsArray(segment_list)) {
140
0
            ogs_error("OpenAPI_trajectory_parseFromJSON() failed [segment_list]");
141
0
            goto end;
142
0
        }
143
144
0
        segment_listList = OpenAPI_list_create();
145
146
0
        cJSON_ArrayForEach(segment_list_local, segment_list) {
147
0
            if (!cJSON_IsObject(segment_list_local)) {
148
0
                ogs_error("OpenAPI_trajectory_parseFromJSON() failed [segment_list]");
149
0
                goto end;
150
0
            }
151
0
            OpenAPI_trajectory_segment_t *segment_listItem = OpenAPI_trajectory_segment_parseFromJSON(segment_list_local);
152
0
            if (!segment_listItem) {
153
0
                ogs_error("No segment_listItem");
154
0
                goto end;
155
0
            }
156
0
            OpenAPI_list_add(segment_listList, segment_listItem);
157
0
        }
158
0
    }
159
160
0
    acceptable_deviation_time = cJSON_GetObjectItemCaseSensitive(trajectoryJSON, "acceptableDeviationTime");
161
0
    if (acceptable_deviation_time) {
162
0
    if (!cJSON_IsNumber(acceptable_deviation_time)) {
163
0
        ogs_error("OpenAPI_trajectory_parseFromJSON() failed [acceptable_deviation_time]");
164
0
        goto end;
165
0
    }
166
0
    }
167
168
0
    trajectory_local_var = OpenAPI_trajectory_create (
169
0
        scheduled_area_list ? scheduled_area_listList : NULL,
170
0
        segment_list ? segment_listList : NULL,
171
0
        acceptable_deviation_time ? true : false,
172
0
        acceptable_deviation_time ? acceptable_deviation_time->valuedouble : 0
173
0
    );
174
175
0
    return trajectory_local_var;
176
0
end:
177
0
    if (scheduled_area_listList) {
178
0
        OpenAPI_list_for_each(scheduled_area_listList, node) {
179
0
            OpenAPI_scheduled_area_free(node->data);
180
0
        }
181
0
        OpenAPI_list_free(scheduled_area_listList);
182
0
        scheduled_area_listList = NULL;
183
0
    }
184
0
    if (segment_listList) {
185
0
        OpenAPI_list_for_each(segment_listList, node) {
186
0
            OpenAPI_trajectory_segment_free(node->data);
187
0
        }
188
0
        OpenAPI_list_free(segment_listList);
189
0
        segment_listList = NULL;
190
0
    }
191
0
    return NULL;
192
0
}
193
194
OpenAPI_trajectory_t *OpenAPI_trajectory_copy(OpenAPI_trajectory_t *dst, OpenAPI_trajectory_t *src)
195
0
{
196
0
    cJSON *item = NULL;
197
0
    char *content = NULL;
198
199
0
    ogs_assert(src);
200
0
    item = OpenAPI_trajectory_convertToJSON(src);
201
0
    if (!item) {
202
0
        ogs_error("OpenAPI_trajectory_convertToJSON() failed");
203
0
        return NULL;
204
0
    }
205
206
0
    content = cJSON_Print(item);
207
0
    cJSON_Delete(item);
208
209
0
    if (!content) {
210
0
        ogs_error("cJSON_Print() failed");
211
0
        return NULL;
212
0
    }
213
214
0
    item = cJSON_Parse(content);
215
0
    ogs_free(content);
216
0
    if (!item) {
217
0
        ogs_error("cJSON_Parse() failed");
218
0
        return NULL;
219
0
    }
220
221
0
    OpenAPI_trajectory_free(dst);
222
0
    dst = OpenAPI_trajectory_parseFromJSON(item);
223
0
    cJSON_Delete(item);
224
225
0
    return dst;
226
0
}
227