mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-12 12:40:53 +00:00
Fix a few issues with the C generator (part 8) (#20378)
* [C] Deprecate *_create() to avoid *_free() confusion The behaviour of *_free() doesn't match *_create(), so the user should avoid using them together. But they still need *_free() to clean up library-allocated objects, so add a _library_owned flag to each struct as an attempt to tell them apart. This isn't perfect though, because the user may neglect to zero the field, but they would still see a warning once in a while so it serves its purpose. To prevent the new deprecation warnings (intended for the user) from showing up during the library build itself, define a new family of *_create_internal() functions, and turn *_create() into simple wrappers. * Update samples * add eafer to c technical committee --------- Co-authored-by: William Cheng <wing328hk@gmail.com>
This commit is contained in:
parent
85c81bee5b
commit
e154903743
@ -1210,7 +1210,7 @@ If you want to join the committee, please kindly apply by sending an email to te
|
||||
| Android | @jaz-ah (2017/09) |
|
||||
| Apex | |
|
||||
| Bash | @frol (2017/07) @bkryza (2017/08) @kenjones-cisco (2017/09) |
|
||||
| C | @zhemant (2018/11) @ityuhui (2019/12) @michelealbano (2020/03) |
|
||||
| C | @zhemant (2018/11) @ityuhui (2019/12) @michelealbano (2020/03) @eafer (2024/12) |
|
||||
| C++ | @ravinikam (2017/07) @stkrwork (2017/07) @etherealjoy (2018/02) @martindelille (2018/03) @muttleyxd (2019/08) |
|
||||
| C# | @mandrean (2017/08) @shibayan (2020/02) @Blackclaws (2021/03) @lucamazzanti (2021/05) @iBicha (2023/07) |
|
||||
| Clojure | |
|
||||
|
@ -119,7 +119,7 @@ char* {{classname}}_{{name}}_ToString({{projectName}}_{{classVarName}}_{{enumNam
|
||||
{{/isContainer}}
|
||||
{{/vars}}
|
||||
|
||||
{{classname}}_t *{{classname}}_create(
|
||||
static {{classname}}_t *{{classname}}_create_internal(
|
||||
{{#vars}}
|
||||
{{^isContainer}}
|
||||
{{^isPrimitiveType}}
|
||||
@ -205,14 +205,103 @@ char* {{classname}}_{{name}}_ToString({{projectName}}_{{classVarName}}_{{enumNam
|
||||
{{classname}}_local_var->{{{name}}} = {{{name}}};
|
||||
{{/vars}}
|
||||
|
||||
{{classname}}_local_var->_library_owned = 1;
|
||||
return {{classname}}_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) {{classname}}_t *{{classname}}_create(
|
||||
{{#vars}}
|
||||
{{^isContainer}}
|
||||
{{^isPrimitiveType}}
|
||||
{{#isModel}}
|
||||
{{#isEnum}}
|
||||
{{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{^-last}},{{/-last}}
|
||||
{{/isEnum}}
|
||||
{{^isEnum}}
|
||||
{{datatype}}_t *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isEnum}}
|
||||
{{/isModel}}
|
||||
{{^isModel}}
|
||||
{{^isFreeFormObject}}
|
||||
{{^isEnum}}
|
||||
{{datatype}}_t *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isEnum}}
|
||||
{{#isEnum}}
|
||||
{{projectName}}_{{dataType}}_{{enumName}}_e {{name}}{{^-last}},{{/-last}}
|
||||
{{/isEnum}}
|
||||
{{/isFreeFormObject}}
|
||||
{{/isModel}}
|
||||
{{#isUuid}}
|
||||
{{datatype}} *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isUuid}}
|
||||
{{#isEmail}}
|
||||
{{datatype}} *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isEmail}}
|
||||
{{#isFreeFormObject}}
|
||||
{{datatype}}_t *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isFreeFormObject}}
|
||||
{{/isPrimitiveType}}
|
||||
{{#isPrimitiveType}}
|
||||
{{#isNumeric}}
|
||||
{{datatype}} {{name}}{{^-last}},{{/-last}}
|
||||
{{/isNumeric}}
|
||||
{{#isBoolean}}
|
||||
{{datatype}} {{name}}{{^-last}},{{/-last}}
|
||||
{{/isBoolean}}
|
||||
{{#isEnum}}
|
||||
{{#isString}}
|
||||
{{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{^-last}},{{/-last}}
|
||||
{{/isString}}
|
||||
{{/isEnum}}
|
||||
{{^isEnum}}
|
||||
{{#isString}}
|
||||
{{datatype}} *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isString}}
|
||||
{{/isEnum}}
|
||||
{{#isByteArray}}
|
||||
{{datatype}} *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isByteArray}}
|
||||
{{#isBinary}}
|
||||
{{datatype}} {{name}}{{^-last}},{{/-last}}
|
||||
{{/isBinary}}
|
||||
{{#isDate}}
|
||||
{{datatype}} *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isDate}}
|
||||
{{#isDateTime}}
|
||||
{{datatype}} *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isDateTime}}
|
||||
{{/isPrimitiveType}}
|
||||
{{/isContainer}}
|
||||
{{#isContainer}}
|
||||
{{#isArray}}
|
||||
{{#isPrimitiveType}}
|
||||
{{datatype}}_t *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isPrimitiveType}}
|
||||
{{^isPrimitiveType}}
|
||||
{{datatype}}_t *{{name}}{{^-last}},{{/-last}}
|
||||
{{/isPrimitiveType}}
|
||||
{{/isArray}}
|
||||
{{#isMap}}
|
||||
{{datatype}} {{name}}{{^-last}},{{/-last}}
|
||||
{{/isMap}}
|
||||
{{/isContainer}}
|
||||
{{/vars}}
|
||||
) {
|
||||
return {{classname}}_create_internal (
|
||||
{{#vars}}
|
||||
{{name}}{{^-last}},{{/-last}}
|
||||
{{/vars}}
|
||||
);
|
||||
}
|
||||
|
||||
void {{classname}}_free({{classname}}_t *{{classname}}) {
|
||||
if(NULL == {{classname}}){
|
||||
return ;
|
||||
}
|
||||
if({{classname}}->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "{{classname}}_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
{{#vars}}
|
||||
{{^isContainer}}
|
||||
@ -859,7 +948,7 @@ fail:
|
||||
|
||||
{{/vars}}
|
||||
|
||||
{{classname}}_local_var = {{classname}}_create (
|
||||
{{classname}}_local_var = {{classname}}_create_internal (
|
||||
{{#vars}}
|
||||
{{^isContainer}}
|
||||
{{^isPrimitiveType}}
|
||||
|
@ -154,9 +154,10 @@ typedef struct {{classname}}_t {
|
||||
{{/isContainer}}
|
||||
{{/vars}}
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} {{classname}}_t;
|
||||
|
||||
{{classname}}_t *{{classname}}_create(
|
||||
__attribute__((deprecated)) {{classname}}_t *{{classname}}_create(
|
||||
{{#vars}}
|
||||
{{^isContainer}}
|
||||
{{^isPrimitiveType}}
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
api_response_t *api_response_create(
|
||||
static api_response_t *api_response_create_internal(
|
||||
int code,
|
||||
char *type,
|
||||
char *message
|
||||
@ -18,14 +18,30 @@ api_response_t *api_response_create(
|
||||
api_response_local_var->type = type;
|
||||
api_response_local_var->message = message;
|
||||
|
||||
api_response_local_var->_library_owned = 1;
|
||||
return api_response_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) api_response_t *api_response_create(
|
||||
int code,
|
||||
char *type,
|
||||
char *message
|
||||
) {
|
||||
return api_response_create_internal (
|
||||
code,
|
||||
type,
|
||||
message
|
||||
);
|
||||
}
|
||||
|
||||
void api_response_free(api_response_t *api_response) {
|
||||
if(NULL == api_response){
|
||||
return ;
|
||||
}
|
||||
if(api_response->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "api_response_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (api_response->type) {
|
||||
free(api_response->type);
|
||||
@ -113,7 +129,7 @@ api_response_t *api_response_parseFromJSON(cJSON *api_responseJSON){
|
||||
}
|
||||
|
||||
|
||||
api_response_local_var = api_response_create (
|
||||
api_response_local_var = api_response_create_internal (
|
||||
code ? code->valuedouble : 0,
|
||||
type && !cJSON_IsNull(type) ? strdup(type->valuestring) : NULL,
|
||||
message && !cJSON_IsNull(message) ? strdup(message->valuestring) : NULL
|
||||
|
@ -23,9 +23,10 @@ typedef struct api_response_t {
|
||||
char *type; // string
|
||||
char *message; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} api_response_t;
|
||||
|
||||
api_response_t *api_response_create(
|
||||
__attribute__((deprecated)) api_response_t *api_response_create(
|
||||
int code,
|
||||
char *type,
|
||||
char *message
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
category_t *category_create(
|
||||
static category_t *category_create_internal(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
@ -16,14 +16,28 @@ category_t *category_create(
|
||||
category_local_var->id = id;
|
||||
category_local_var->name = name;
|
||||
|
||||
category_local_var->_library_owned = 1;
|
||||
return category_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) category_t *category_create(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
return category_create_internal (
|
||||
id,
|
||||
name
|
||||
);
|
||||
}
|
||||
|
||||
void category_free(category_t *category) {
|
||||
if(NULL == category){
|
||||
return ;
|
||||
}
|
||||
if(category->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "category_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (category->name) {
|
||||
free(category->name);
|
||||
@ -87,7 +101,7 @@ category_t *category_parseFromJSON(cJSON *categoryJSON){
|
||||
}
|
||||
|
||||
|
||||
category_local_var = category_create (
|
||||
category_local_var = category_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
name && !cJSON_IsNull(name) ? strdup(name->valuestring) : NULL
|
||||
);
|
||||
|
@ -22,9 +22,10 @@ typedef struct category_t {
|
||||
long id; //numeric
|
||||
char *name; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} category_t;
|
||||
|
||||
category_t *category_create(
|
||||
__attribute__((deprecated)) category_t *category_create(
|
||||
long id,
|
||||
char *name
|
||||
);
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
MappedModel_t *MappedModel_create(
|
||||
static MappedModel_t *MappedModel_create_internal(
|
||||
int another_property,
|
||||
char *uuid_property
|
||||
) {
|
||||
@ -16,14 +16,28 @@ MappedModel_t *MappedModel_create(
|
||||
MappedModel_local_var->another_property = another_property;
|
||||
MappedModel_local_var->uuid_property = uuid_property;
|
||||
|
||||
MappedModel_local_var->_library_owned = 1;
|
||||
return MappedModel_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) MappedModel_t *MappedModel_create(
|
||||
int another_property,
|
||||
char *uuid_property
|
||||
) {
|
||||
return MappedModel_create_internal (
|
||||
another_property,
|
||||
uuid_property
|
||||
);
|
||||
}
|
||||
|
||||
void MappedModel_free(MappedModel_t *MappedModel) {
|
||||
if(NULL == MappedModel){
|
||||
return ;
|
||||
}
|
||||
if(MappedModel->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "MappedModel_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (MappedModel->uuid_property) {
|
||||
free(MappedModel->uuid_property);
|
||||
@ -87,7 +101,7 @@ MappedModel_t *MappedModel_parseFromJSON(cJSON *MappedModelJSON){
|
||||
}
|
||||
|
||||
|
||||
MappedModel_local_var = MappedModel_create (
|
||||
MappedModel_local_var = MappedModel_create_internal (
|
||||
another_property ? another_property->valuedouble : 0,
|
||||
uuid_property && !cJSON_IsNull(uuid_property) ? strdup(uuid_property->valuestring) : NULL
|
||||
);
|
||||
|
@ -22,9 +22,10 @@ typedef struct MappedModel_t {
|
||||
int another_property; //numeric
|
||||
char *uuid_property; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} MappedModel_t;
|
||||
|
||||
MappedModel_t *MappedModel_create(
|
||||
__attribute__((deprecated)) MappedModel_t *MappedModel_create(
|
||||
int another_property,
|
||||
char *uuid_property
|
||||
);
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
static model_with_set_propertes_t *model_with_set_propertes_create_internal(
|
||||
list_t *tag_set,
|
||||
list_t *string_set
|
||||
) {
|
||||
@ -16,14 +16,28 @@ model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
model_with_set_propertes_local_var->tag_set = tag_set;
|
||||
model_with_set_propertes_local_var->string_set = string_set;
|
||||
|
||||
model_with_set_propertes_local_var->_library_owned = 1;
|
||||
return model_with_set_propertes_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
list_t *tag_set,
|
||||
list_t *string_set
|
||||
) {
|
||||
return model_with_set_propertes_create_internal (
|
||||
tag_set,
|
||||
string_set
|
||||
);
|
||||
}
|
||||
|
||||
void model_with_set_propertes_free(model_with_set_propertes_t *model_with_set_propertes) {
|
||||
if(NULL == model_with_set_propertes){
|
||||
return ;
|
||||
}
|
||||
if(model_with_set_propertes->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "model_with_set_propertes_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (model_with_set_propertes->tag_set) {
|
||||
list_ForEach(listEntry, model_with_set_propertes->tag_set) {
|
||||
@ -146,7 +160,7 @@ model_with_set_propertes_t *model_with_set_propertes_parseFromJSON(cJSON *model_
|
||||
}
|
||||
|
||||
|
||||
model_with_set_propertes_local_var = model_with_set_propertes_create (
|
||||
model_with_set_propertes_local_var = model_with_set_propertes_create_internal (
|
||||
tag_set ? tag_setList : NULL,
|
||||
string_set ? string_setList : NULL
|
||||
);
|
||||
|
@ -23,9 +23,10 @@ typedef struct model_with_set_propertes_t {
|
||||
list_t *tag_set; //nonprimitive container
|
||||
list_t *string_set; //primitive container
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} model_with_set_propertes_t;
|
||||
|
||||
model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
__attribute__((deprecated)) model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
list_t *tag_set,
|
||||
list_t *string_set
|
||||
);
|
||||
|
@ -22,7 +22,7 @@ openapi_petstore_order_STATUS_e order_status_FromString(char* status){
|
||||
return 0;
|
||||
}
|
||||
|
||||
order_t *order_create(
|
||||
static order_t *order_create_internal(
|
||||
long id,
|
||||
long pet_id,
|
||||
int quantity,
|
||||
@ -41,14 +41,36 @@ order_t *order_create(
|
||||
order_local_var->status = status;
|
||||
order_local_var->complete = complete;
|
||||
|
||||
order_local_var->_library_owned = 1;
|
||||
return order_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) order_t *order_create(
|
||||
long id,
|
||||
long pet_id,
|
||||
int quantity,
|
||||
char *ship_date,
|
||||
openapi_petstore_order_STATUS_e status,
|
||||
int complete
|
||||
) {
|
||||
return order_create_internal (
|
||||
id,
|
||||
pet_id,
|
||||
quantity,
|
||||
ship_date,
|
||||
status,
|
||||
complete
|
||||
);
|
||||
}
|
||||
|
||||
void order_free(order_t *order) {
|
||||
if(NULL == order){
|
||||
return ;
|
||||
}
|
||||
if(order->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "order_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (order->ship_date) {
|
||||
free(order->ship_date);
|
||||
@ -195,7 +217,7 @@ order_t *order_parseFromJSON(cJSON *orderJSON){
|
||||
}
|
||||
|
||||
|
||||
order_local_var = order_create (
|
||||
order_local_var = order_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
pet_id ? pet_id->valuedouble : 0,
|
||||
quantity ? quantity->valuedouble : 0,
|
||||
|
@ -34,9 +34,10 @@ typedef struct order_t {
|
||||
openapi_petstore_order_STATUS_e status; //enum
|
||||
int complete; //boolean
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} order_t;
|
||||
|
||||
order_t *order_create(
|
||||
__attribute__((deprecated)) order_t *order_create(
|
||||
long id,
|
||||
long pet_id,
|
||||
int quantity,
|
||||
|
@ -22,7 +22,7 @@ openapi_petstore_pet_STATUS_e pet_status_FromString(char* status){
|
||||
return 0;
|
||||
}
|
||||
|
||||
pet_t *pet_create(
|
||||
static pet_t *pet_create_internal(
|
||||
long id,
|
||||
category_t *category,
|
||||
char *name,
|
||||
@ -41,14 +41,36 @@ pet_t *pet_create(
|
||||
pet_local_var->tags = tags;
|
||||
pet_local_var->status = status;
|
||||
|
||||
pet_local_var->_library_owned = 1;
|
||||
return pet_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) pet_t *pet_create(
|
||||
long id,
|
||||
category_t *category,
|
||||
char *name,
|
||||
list_t *photo_urls,
|
||||
list_t *tags,
|
||||
openapi_petstore_pet_STATUS_e status
|
||||
) {
|
||||
return pet_create_internal (
|
||||
id,
|
||||
category,
|
||||
name,
|
||||
photo_urls,
|
||||
tags,
|
||||
status
|
||||
);
|
||||
}
|
||||
|
||||
void pet_free(pet_t *pet) {
|
||||
if(NULL == pet){
|
||||
return ;
|
||||
}
|
||||
if(pet->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "pet_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (pet->category) {
|
||||
category_free(pet->category);
|
||||
@ -275,7 +297,7 @@ pet_t *pet_parseFromJSON(cJSON *petJSON){
|
||||
}
|
||||
|
||||
|
||||
pet_local_var = pet_create (
|
||||
pet_local_var = pet_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
category ? category_local_nonprim : NULL,
|
||||
strdup(name->valuestring),
|
||||
|
@ -36,9 +36,10 @@ typedef struct pet_t {
|
||||
list_t *tags; //nonprimitive container
|
||||
openapi_petstore_pet_STATUS_e status; //enum
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} pet_t;
|
||||
|
||||
pet_t *pet_create(
|
||||
__attribute__((deprecated)) pet_t *pet_create(
|
||||
long id,
|
||||
category_t *category,
|
||||
char *name,
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
tag_t *tag_create(
|
||||
static tag_t *tag_create_internal(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
@ -16,14 +16,28 @@ tag_t *tag_create(
|
||||
tag_local_var->id = id;
|
||||
tag_local_var->name = name;
|
||||
|
||||
tag_local_var->_library_owned = 1;
|
||||
return tag_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) tag_t *tag_create(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
return tag_create_internal (
|
||||
id,
|
||||
name
|
||||
);
|
||||
}
|
||||
|
||||
void tag_free(tag_t *tag) {
|
||||
if(NULL == tag){
|
||||
return ;
|
||||
}
|
||||
if(tag->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "tag_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (tag->name) {
|
||||
free(tag->name);
|
||||
@ -87,7 +101,7 @@ tag_t *tag_parseFromJSON(cJSON *tagJSON){
|
||||
}
|
||||
|
||||
|
||||
tag_local_var = tag_create (
|
||||
tag_local_var = tag_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
name && !cJSON_IsNull(name) ? strdup(name->valuestring) : NULL
|
||||
);
|
||||
|
@ -22,9 +22,10 @@ typedef struct tag_t {
|
||||
long id; //numeric
|
||||
char *name; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} tag_t;
|
||||
|
||||
tag_t *tag_create(
|
||||
__attribute__((deprecated)) tag_t *tag_create(
|
||||
long id,
|
||||
char *name
|
||||
);
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
user_t *user_create(
|
||||
static user_t *user_create_internal(
|
||||
long id,
|
||||
char *username,
|
||||
char *first_name,
|
||||
@ -32,14 +32,44 @@ user_t *user_create(
|
||||
user_local_var->extra = extra;
|
||||
user_local_var->preference = preference;
|
||||
|
||||
user_local_var->_library_owned = 1;
|
||||
return user_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) user_t *user_create(
|
||||
long id,
|
||||
char *username,
|
||||
char *first_name,
|
||||
char *last_name,
|
||||
char *email,
|
||||
char *password,
|
||||
char *phone,
|
||||
int user_status,
|
||||
list_t* extra,
|
||||
openapi_petstore_preference__e preference
|
||||
) {
|
||||
return user_create_internal (
|
||||
id,
|
||||
username,
|
||||
first_name,
|
||||
last_name,
|
||||
email,
|
||||
password,
|
||||
phone,
|
||||
user_status,
|
||||
extra,
|
||||
preference
|
||||
);
|
||||
}
|
||||
|
||||
void user_free(user_t *user) {
|
||||
if(NULL == user){
|
||||
return ;
|
||||
}
|
||||
if(user->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "user_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (user->username) {
|
||||
free(user->username);
|
||||
@ -320,7 +350,7 @@ user_t *user_parseFromJSON(cJSON *userJSON){
|
||||
}
|
||||
|
||||
|
||||
user_local_var = user_create (
|
||||
user_local_var = user_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
username && !cJSON_IsNull(username) ? strdup(username->valuestring) : NULL,
|
||||
first_name && !cJSON_IsNull(first_name) ? strdup(first_name->valuestring) : NULL,
|
||||
|
@ -32,9 +32,10 @@ typedef struct user_t {
|
||||
list_t* extra; //map
|
||||
openapi_petstore_preference__e preference; //referenced enum
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} user_t;
|
||||
|
||||
user_t *user_create(
|
||||
__attribute__((deprecated)) user_t *user_create(
|
||||
long id,
|
||||
char *username,
|
||||
char *first_name,
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
api_response_t *api_response_create(
|
||||
static api_response_t *api_response_create_internal(
|
||||
int code,
|
||||
char *type,
|
||||
char *message
|
||||
@ -18,14 +18,30 @@ api_response_t *api_response_create(
|
||||
api_response_local_var->type = type;
|
||||
api_response_local_var->message = message;
|
||||
|
||||
api_response_local_var->_library_owned = 1;
|
||||
return api_response_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) api_response_t *api_response_create(
|
||||
int code,
|
||||
char *type,
|
||||
char *message
|
||||
) {
|
||||
return api_response_create_internal (
|
||||
code,
|
||||
type,
|
||||
message
|
||||
);
|
||||
}
|
||||
|
||||
void api_response_free(api_response_t *api_response) {
|
||||
if(NULL == api_response){
|
||||
return ;
|
||||
}
|
||||
if(api_response->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "api_response_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (api_response->type) {
|
||||
free(api_response->type);
|
||||
@ -113,7 +129,7 @@ api_response_t *api_response_parseFromJSON(cJSON *api_responseJSON){
|
||||
}
|
||||
|
||||
|
||||
api_response_local_var = api_response_create (
|
||||
api_response_local_var = api_response_create_internal (
|
||||
code ? code->valuedouble : 0,
|
||||
type && !cJSON_IsNull(type) ? strdup(type->valuestring) : NULL,
|
||||
message && !cJSON_IsNull(message) ? strdup(message->valuestring) : NULL
|
||||
|
@ -23,9 +23,10 @@ typedef struct api_response_t {
|
||||
char *type; // string
|
||||
char *message; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} api_response_t;
|
||||
|
||||
api_response_t *api_response_create(
|
||||
__attribute__((deprecated)) api_response_t *api_response_create(
|
||||
int code,
|
||||
char *type,
|
||||
char *message
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
category_t *category_create(
|
||||
static category_t *category_create_internal(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
@ -16,14 +16,28 @@ category_t *category_create(
|
||||
category_local_var->id = id;
|
||||
category_local_var->name = name;
|
||||
|
||||
category_local_var->_library_owned = 1;
|
||||
return category_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) category_t *category_create(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
return category_create_internal (
|
||||
id,
|
||||
name
|
||||
);
|
||||
}
|
||||
|
||||
void category_free(category_t *category) {
|
||||
if(NULL == category){
|
||||
return ;
|
||||
}
|
||||
if(category->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "category_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (category->name) {
|
||||
free(category->name);
|
||||
@ -87,7 +101,7 @@ category_t *category_parseFromJSON(cJSON *categoryJSON){
|
||||
}
|
||||
|
||||
|
||||
category_local_var = category_create (
|
||||
category_local_var = category_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
name && !cJSON_IsNull(name) ? strdup(name->valuestring) : NULL
|
||||
);
|
||||
|
@ -22,9 +22,10 @@ typedef struct category_t {
|
||||
long id; //numeric
|
||||
char *name; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} category_t;
|
||||
|
||||
category_t *category_create(
|
||||
__attribute__((deprecated)) category_t *category_create(
|
||||
long id,
|
||||
char *name
|
||||
);
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
MappedModel_t *MappedModel_create(
|
||||
static MappedModel_t *MappedModel_create_internal(
|
||||
int another_property,
|
||||
char *uuid_property
|
||||
) {
|
||||
@ -16,14 +16,28 @@ MappedModel_t *MappedModel_create(
|
||||
MappedModel_local_var->another_property = another_property;
|
||||
MappedModel_local_var->uuid_property = uuid_property;
|
||||
|
||||
MappedModel_local_var->_library_owned = 1;
|
||||
return MappedModel_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) MappedModel_t *MappedModel_create(
|
||||
int another_property,
|
||||
char *uuid_property
|
||||
) {
|
||||
return MappedModel_create_internal (
|
||||
another_property,
|
||||
uuid_property
|
||||
);
|
||||
}
|
||||
|
||||
void MappedModel_free(MappedModel_t *MappedModel) {
|
||||
if(NULL == MappedModel){
|
||||
return ;
|
||||
}
|
||||
if(MappedModel->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "MappedModel_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (MappedModel->uuid_property) {
|
||||
free(MappedModel->uuid_property);
|
||||
@ -87,7 +101,7 @@ MappedModel_t *MappedModel_parseFromJSON(cJSON *MappedModelJSON){
|
||||
}
|
||||
|
||||
|
||||
MappedModel_local_var = MappedModel_create (
|
||||
MappedModel_local_var = MappedModel_create_internal (
|
||||
another_property ? another_property->valuedouble : 0,
|
||||
uuid_property && !cJSON_IsNull(uuid_property) ? strdup(uuid_property->valuestring) : NULL
|
||||
);
|
||||
|
@ -22,9 +22,10 @@ typedef struct MappedModel_t {
|
||||
int another_property; //numeric
|
||||
char *uuid_property; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} MappedModel_t;
|
||||
|
||||
MappedModel_t *MappedModel_create(
|
||||
__attribute__((deprecated)) MappedModel_t *MappedModel_create(
|
||||
int another_property,
|
||||
char *uuid_property
|
||||
);
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
static model_with_set_propertes_t *model_with_set_propertes_create_internal(
|
||||
list_t *tag_set,
|
||||
list_t *string_set
|
||||
) {
|
||||
@ -16,14 +16,28 @@ model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
model_with_set_propertes_local_var->tag_set = tag_set;
|
||||
model_with_set_propertes_local_var->string_set = string_set;
|
||||
|
||||
model_with_set_propertes_local_var->_library_owned = 1;
|
||||
return model_with_set_propertes_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
list_t *tag_set,
|
||||
list_t *string_set
|
||||
) {
|
||||
return model_with_set_propertes_create_internal (
|
||||
tag_set,
|
||||
string_set
|
||||
);
|
||||
}
|
||||
|
||||
void model_with_set_propertes_free(model_with_set_propertes_t *model_with_set_propertes) {
|
||||
if(NULL == model_with_set_propertes){
|
||||
return ;
|
||||
}
|
||||
if(model_with_set_propertes->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "model_with_set_propertes_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (model_with_set_propertes->tag_set) {
|
||||
list_ForEach(listEntry, model_with_set_propertes->tag_set) {
|
||||
@ -146,7 +160,7 @@ model_with_set_propertes_t *model_with_set_propertes_parseFromJSON(cJSON *model_
|
||||
}
|
||||
|
||||
|
||||
model_with_set_propertes_local_var = model_with_set_propertes_create (
|
||||
model_with_set_propertes_local_var = model_with_set_propertes_create_internal (
|
||||
tag_set ? tag_setList : NULL,
|
||||
string_set ? string_setList : NULL
|
||||
);
|
||||
|
@ -23,9 +23,10 @@ typedef struct model_with_set_propertes_t {
|
||||
list_t *tag_set; //nonprimitive container
|
||||
list_t *string_set; //primitive container
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} model_with_set_propertes_t;
|
||||
|
||||
model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
__attribute__((deprecated)) model_with_set_propertes_t *model_with_set_propertes_create(
|
||||
list_t *tag_set,
|
||||
list_t *string_set
|
||||
);
|
||||
|
@ -22,7 +22,7 @@ openapi_petstore_order_STATUS_e order_status_FromString(char* status){
|
||||
return 0;
|
||||
}
|
||||
|
||||
order_t *order_create(
|
||||
static order_t *order_create_internal(
|
||||
long id,
|
||||
long pet_id,
|
||||
int quantity,
|
||||
@ -41,14 +41,36 @@ order_t *order_create(
|
||||
order_local_var->status = status;
|
||||
order_local_var->complete = complete;
|
||||
|
||||
order_local_var->_library_owned = 1;
|
||||
return order_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) order_t *order_create(
|
||||
long id,
|
||||
long pet_id,
|
||||
int quantity,
|
||||
char *ship_date,
|
||||
openapi_petstore_order_STATUS_e status,
|
||||
int complete
|
||||
) {
|
||||
return order_create_internal (
|
||||
id,
|
||||
pet_id,
|
||||
quantity,
|
||||
ship_date,
|
||||
status,
|
||||
complete
|
||||
);
|
||||
}
|
||||
|
||||
void order_free(order_t *order) {
|
||||
if(NULL == order){
|
||||
return ;
|
||||
}
|
||||
if(order->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "order_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (order->ship_date) {
|
||||
free(order->ship_date);
|
||||
@ -195,7 +217,7 @@ order_t *order_parseFromJSON(cJSON *orderJSON){
|
||||
}
|
||||
|
||||
|
||||
order_local_var = order_create (
|
||||
order_local_var = order_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
pet_id ? pet_id->valuedouble : 0,
|
||||
quantity ? quantity->valuedouble : 0,
|
||||
|
@ -34,9 +34,10 @@ typedef struct order_t {
|
||||
openapi_petstore_order_STATUS_e status; //enum
|
||||
int complete; //boolean
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} order_t;
|
||||
|
||||
order_t *order_create(
|
||||
__attribute__((deprecated)) order_t *order_create(
|
||||
long id,
|
||||
long pet_id,
|
||||
int quantity,
|
||||
|
@ -22,7 +22,7 @@ openapi_petstore_pet_STATUS_e pet_status_FromString(char* status){
|
||||
return 0;
|
||||
}
|
||||
|
||||
pet_t *pet_create(
|
||||
static pet_t *pet_create_internal(
|
||||
long id,
|
||||
category_t *category,
|
||||
char *name,
|
||||
@ -41,14 +41,36 @@ pet_t *pet_create(
|
||||
pet_local_var->tags = tags;
|
||||
pet_local_var->status = status;
|
||||
|
||||
pet_local_var->_library_owned = 1;
|
||||
return pet_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) pet_t *pet_create(
|
||||
long id,
|
||||
category_t *category,
|
||||
char *name,
|
||||
list_t *photo_urls,
|
||||
list_t *tags,
|
||||
openapi_petstore_pet_STATUS_e status
|
||||
) {
|
||||
return pet_create_internal (
|
||||
id,
|
||||
category,
|
||||
name,
|
||||
photo_urls,
|
||||
tags,
|
||||
status
|
||||
);
|
||||
}
|
||||
|
||||
void pet_free(pet_t *pet) {
|
||||
if(NULL == pet){
|
||||
return ;
|
||||
}
|
||||
if(pet->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "pet_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (pet->category) {
|
||||
category_free(pet->category);
|
||||
@ -275,7 +297,7 @@ pet_t *pet_parseFromJSON(cJSON *petJSON){
|
||||
}
|
||||
|
||||
|
||||
pet_local_var = pet_create (
|
||||
pet_local_var = pet_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
category ? category_local_nonprim : NULL,
|
||||
strdup(name->valuestring),
|
||||
|
@ -36,9 +36,10 @@ typedef struct pet_t {
|
||||
list_t *tags; //nonprimitive container
|
||||
openapi_petstore_pet_STATUS_e status; //enum
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} pet_t;
|
||||
|
||||
pet_t *pet_create(
|
||||
__attribute__((deprecated)) pet_t *pet_create(
|
||||
long id,
|
||||
category_t *category,
|
||||
char *name,
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
tag_t *tag_create(
|
||||
static tag_t *tag_create_internal(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
@ -16,14 +16,28 @@ tag_t *tag_create(
|
||||
tag_local_var->id = id;
|
||||
tag_local_var->name = name;
|
||||
|
||||
tag_local_var->_library_owned = 1;
|
||||
return tag_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) tag_t *tag_create(
|
||||
long id,
|
||||
char *name
|
||||
) {
|
||||
return tag_create_internal (
|
||||
id,
|
||||
name
|
||||
);
|
||||
}
|
||||
|
||||
void tag_free(tag_t *tag) {
|
||||
if(NULL == tag){
|
||||
return ;
|
||||
}
|
||||
if(tag->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "tag_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (tag->name) {
|
||||
free(tag->name);
|
||||
@ -87,7 +101,7 @@ tag_t *tag_parseFromJSON(cJSON *tagJSON){
|
||||
}
|
||||
|
||||
|
||||
tag_local_var = tag_create (
|
||||
tag_local_var = tag_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
name && !cJSON_IsNull(name) ? strdup(name->valuestring) : NULL
|
||||
);
|
||||
|
@ -22,9 +22,10 @@ typedef struct tag_t {
|
||||
long id; //numeric
|
||||
char *name; // string
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} tag_t;
|
||||
|
||||
tag_t *tag_create(
|
||||
__attribute__((deprecated)) tag_t *tag_create(
|
||||
long id,
|
||||
char *name
|
||||
);
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
|
||||
user_t *user_create(
|
||||
static user_t *user_create_internal(
|
||||
long id,
|
||||
char *username,
|
||||
char *first_name,
|
||||
@ -32,14 +32,44 @@ user_t *user_create(
|
||||
user_local_var->extra = extra;
|
||||
user_local_var->preference = preference;
|
||||
|
||||
user_local_var->_library_owned = 1;
|
||||
return user_local_var;
|
||||
}
|
||||
|
||||
__attribute__((deprecated)) user_t *user_create(
|
||||
long id,
|
||||
char *username,
|
||||
char *first_name,
|
||||
char *last_name,
|
||||
char *email,
|
||||
char *password,
|
||||
char *phone,
|
||||
int user_status,
|
||||
list_t* extra,
|
||||
openapi_petstore_preference__e preference
|
||||
) {
|
||||
return user_create_internal (
|
||||
id,
|
||||
username,
|
||||
first_name,
|
||||
last_name,
|
||||
email,
|
||||
password,
|
||||
phone,
|
||||
user_status,
|
||||
extra,
|
||||
preference
|
||||
);
|
||||
}
|
||||
|
||||
void user_free(user_t *user) {
|
||||
if(NULL == user){
|
||||
return ;
|
||||
}
|
||||
if(user->_library_owned != 1){
|
||||
fprintf(stderr, "WARNING: %s() does NOT free objects allocated by the user\n", "user_free");
|
||||
return ;
|
||||
}
|
||||
listEntry_t *listEntry;
|
||||
if (user->username) {
|
||||
free(user->username);
|
||||
@ -320,7 +350,7 @@ user_t *user_parseFromJSON(cJSON *userJSON){
|
||||
}
|
||||
|
||||
|
||||
user_local_var = user_create (
|
||||
user_local_var = user_create_internal (
|
||||
id ? id->valuedouble : 0,
|
||||
username && !cJSON_IsNull(username) ? strdup(username->valuestring) : NULL,
|
||||
first_name && !cJSON_IsNull(first_name) ? strdup(first_name->valuestring) : NULL,
|
||||
|
@ -32,9 +32,10 @@ typedef struct user_t {
|
||||
list_t* extra; //map
|
||||
openapi_petstore_preference__e preference; //referenced enum
|
||||
|
||||
int _library_owned; // Is the library responsible for freeing this object?
|
||||
} user_t;
|
||||
|
||||
user_t *user_create(
|
||||
__attribute__((deprecated)) user_t *user_create(
|
||||
long id,
|
||||
char *username,
|
||||
char *first_name,
|
||||
|
Loading…
x
Reference in New Issue
Block a user