mirror of
https://github.com/open5gs/open5gs.git
synced 2026-05-04 22:30:09 +00:00
OpenAPI: Move any_type.[ch] from custom/ into sbi/openapi/model/
This makes it possible to have object values of type "any_type" in OpenAPI specifications.
This commit is contained in:
parent
b06569da28
commit
36734cac7c
8 changed files with 180 additions and 3 deletions
120
lib/sbi/openapi/model/any_type.c
Normal file
120
lib/sbi/openapi/model/any_type.c
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
#include "any_type.h"
|
||||
|
||||
bool OpenAPI_IsInvalid(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_Invalid;
|
||||
}
|
||||
bool OpenAPI_IsFalse(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_False;
|
||||
}
|
||||
bool OpenAPI_IsTrue(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xff) == OpenAPI_True;
|
||||
}
|
||||
bool OpenAPI_IsBool(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & (OpenAPI_True | OpenAPI_False)) != 0;
|
||||
}
|
||||
bool OpenAPI_IsNull(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_NULL;
|
||||
}
|
||||
bool OpenAPI_IsNumber(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_Number;
|
||||
}
|
||||
bool OpenAPI_IsString(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_String;
|
||||
}
|
||||
bool OpenAPI_IsArray(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_Array;
|
||||
}
|
||||
bool OpenAPI_IsObject(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_Object;
|
||||
}
|
||||
bool OpenAPI_IsRaw(const OpenAPI_any_type_t * const item)
|
||||
{
|
||||
if (item == NULL) return false;
|
||||
|
||||
return (item->type & 0xFF) == OpenAPI_Raw;
|
||||
}
|
||||
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_true(void)
|
||||
{
|
||||
return OpenAPI_any_type_create_bool(true);
|
||||
}
|
||||
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_false(void)
|
||||
{
|
||||
return OpenAPI_any_type_create_bool(false);
|
||||
}
|
||||
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_bool(bool boolean)
|
||||
{
|
||||
OpenAPI_any_type_t *any_type = NULL;
|
||||
|
||||
any_type = ogs_calloc(1, sizeof(*any_type));
|
||||
if (any_type) {
|
||||
any_type->type = boolean ? OpenAPI_True : OpenAPI_False;
|
||||
}
|
||||
|
||||
return any_type;
|
||||
}
|
||||
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_number(double num)
|
||||
{
|
||||
OpenAPI_any_type_t *any_type = NULL;
|
||||
|
||||
any_type = ogs_calloc(1, sizeof(*any_type));
|
||||
if (any_type) {
|
||||
any_type->type = OpenAPI_Number;
|
||||
any_type->valuedouble = num;
|
||||
}
|
||||
|
||||
return any_type;
|
||||
}
|
||||
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_string(const char *string)
|
||||
{
|
||||
OpenAPI_any_type_t *any_type = NULL;
|
||||
|
||||
any_type = ogs_calloc(1, sizeof(*any_type));
|
||||
if (any_type) {
|
||||
any_type->type = OpenAPI_String;
|
||||
any_type->valuestring = ogs_strdup(string);
|
||||
}
|
||||
|
||||
return any_type;
|
||||
}
|
||||
|
||||
void OpenAPI_any_type_free(OpenAPI_any_type_t *any_type)
|
||||
{
|
||||
if (any_type) {
|
||||
if (any_type->type == OpenAPI_String) {
|
||||
ogs_free(any_type->valuestring);
|
||||
}
|
||||
ogs_free(any_type);
|
||||
}
|
||||
}
|
||||
53
lib/sbi/openapi/model/any_type.h
Normal file
53
lib/sbi/openapi/model/any_type.h
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
#ifndef OGS_SBI_ANY_TYPE_H
|
||||
#define OGS_SBI_ANY_TYPE_H
|
||||
|
||||
#include "ogs-core.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define OpenAPI_Invalid (0)
|
||||
#define OpenAPI_False (1 << 0)
|
||||
#define OpenAPI_True (1 << 1)
|
||||
#define OpenAPI_NULL (1 << 2)
|
||||
#define OpenAPI_Number (1 << 3)
|
||||
#define OpenAPI_String (1 << 4)
|
||||
#define OpenAPI_Array (1 << 5)
|
||||
#define OpenAPI_Object (1 << 6)
|
||||
#define OpenAPI_Raw (1 << 7) /* raw json */
|
||||
|
||||
#define OpenAPI_IsReference 256
|
||||
#define OpenAPI_StringIsConst 512
|
||||
|
||||
typedef struct OpenAPI_any_type_s OpenAPI_any_type_t;
|
||||
typedef struct OpenAPI_any_type_s {
|
||||
int type;
|
||||
|
||||
char *valuestring;
|
||||
double valuedouble;
|
||||
} OpenAPI_any_type_t;
|
||||
|
||||
bool OpenAPI_IsInvalid(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsFalse(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsTrue(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsBool(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsNull(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsNumber(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsString(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsArray(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsObject(const OpenAPI_any_type_t * const item);
|
||||
bool OpenAPI_IsRaw(const OpenAPI_any_type_t * const item);
|
||||
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_true(void);
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_false(void);
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_bool(bool boolean);
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_number(double num);
|
||||
OpenAPI_any_type_t *OpenAPI_any_type_create_string(const char *string);
|
||||
void OpenAPI_any_type_free(OpenAPI_any_type_t *any_type);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* OGS_SBI_ANY_TYPE_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue