diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache index 3a513e9c2cd5..1f28e05e9099 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache @@ -136,6 +136,11 @@ char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName {{datatype}}_t *{{name}}{{^-last}},{{/-last}} {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + {{datatype}}_t *{{name}}{{^-last}},{{/-last}} + {{/isFreeFormObject}} + {{/isModel}} {{#isUuid}} {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isUuid}} @@ -220,6 +225,14 @@ void {{classname}}_free({{classname}}_t *{{classname}}) { } {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + if ({{{classname}}}->{{{name}}}) { + {{{complexType}}}_free({{{classname}}}->{{{name}}}); + {{classname}}->{{name}} = NULL; + } + {{/isFreeFormObject}} + {{/isModel}} {{#isUuid}} if ({{{classname}}}->{{{name}}}) { free({{{classname}}}->{{{name}}}); @@ -398,6 +411,18 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { } {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + cJSON *{{{name}}}_local_JSON = {{complexType}}_convertToJSON({{{classname}}}->{{{name}}}); + if({{{name}}}_local_JSON == NULL) { + goto fail; // custom + } + cJSON_AddItemToObject(item, "{{{baseName}}}", {{{name}}}_local_JSON); + if(item->child == NULL) { + goto fail; + } + {{/isFreeFormObject}} + {{/isModel}} {{#isUuid}} if(cJSON_AddStringToObject(item, "{{{baseName}}}", {{{classname}}}->{{{name}}}) == NULL) { goto fail; //uuid @@ -528,6 +553,7 @@ fail: {{classname}}_t *{{classname}}_local_var = NULL; {{#vars}} + {{^isContainer}} {{^isPrimitiveType}} {{#isModel}} {{^isEnum}} @@ -536,7 +562,15 @@ fail: {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + // define the local variable for {{{classname}}}->{{{name}}} + {{complexType}}_t *{{name}}_local_nonprim = NULL; + + {{/isFreeFormObject}} + {{/isModel}} {{/isPrimitiveType}} + {{/isContainer}} {{/vars}} {{#vars}} // {{{classname}}}->{{{name}}} @@ -629,6 +663,12 @@ fail: {{{name}}}_local_nonprim = {{complexType}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_parseFromJSON({{{name}}}); //nonprimitive {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + {{^required}}if ({{{name}}}) { {{/required}} + {{{name}}}_local_nonprim = {{complexType}}_parseFromJSON({{{name}}}); //custom + {{/isFreeFormObject}} + {{/isModel}} {{#isUuid}} {{^required}}if ({{{name}}}) { {{/required}} if(!cJSON_IsString({{{name}}})) @@ -779,6 +819,11 @@ fail: {{^required}}{{{name}}} ? {{/required}}{{{name}}}_local_nonprim{{^required}} : NULL{{/required}}{{^-last}},{{/-last}} {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}_local_nonprim{{^required}} : NULL{{/required}}{{^-last}},{{/-last}} + {{/isFreeFormObject}} + {{/isModel}} {{#isUuid}} {{^required}}{{{name}}} ? {{/required}}strdup({{{name}}}->valuestring){{^required}} : NULL{{/required}}{{^-last}},{{/-last}} {{/isUuid}} @@ -849,6 +894,14 @@ end: } {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + if ({{{name}}}_local_nonprim) { + {{complexType}}_free({{{name}}}_local_nonprim); + {{{name}}}_local_nonprim = NULL; + } + {{/isFreeFormObject}} + {{/isModel}} {{/isPrimitiveType}} {{/isContainer}} {{/vars}} diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache index 5bdff9f1dbfe..81aee8c17a38 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/model-header.mustache @@ -86,6 +86,11 @@ typedef struct {{classname}}_t { struct {{datatype}}_t *{{name}}; //model {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + {{datatype}}_t *{{name}}; // custom + {{/isFreeFormObject}} + {{/isModel}} {{#isUuid}} {{datatype}} *{{name}}; // uuid {{/isUuid}} @@ -156,6 +161,11 @@ typedef struct {{classname}}_t { {{datatype}}_t *{{name}}{{^-last}},{{/-last}} {{/isEnum}} {{/isModel}} + {{^isModel}} + {{^isFreeFormObject}} + {{datatype}}_t *{{name}}{{^-last}},{{/-last}} + {{/isFreeFormObject}} + {{/isModel}} {{#isUuid}} {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isUuid}} diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/model_doc.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/model_doc.mustache index 77f14ca235c9..823834d7ae3f 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/model_doc.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/model_doc.mustache @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- {{#vars}} -**{{name}}** | {{^isContainer}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}**{{projectName}}_{{classVarName}}_{{enumName}}_e**{{/isEnum}}{{^isEnum}}[**{{datatype}}_t**]({{complexType}}.md) \*{{/isEnum}}{{/isModel}}{{#isUuid}}**{{datatype}} \***{{/isUuid}}{{#isEmail}}**{{datatype}} \***{{/isEmail}}{{#isFreeFormObject}}[**{{datatype}}_t**]({{complexType}}.md) \*{{/isFreeFormObject}}{{/isPrimitiveType}}{{#isPrimitiveType}}{{#isNumeric}}**{{datatype}}**{{/isNumeric}}{{#isBoolean}}**{{datatype}}**{{/isBoolean}}{{#isEnum}}{{#isString}}**{{projectName}}_{{classVarName}}_{{enumName}}_e**{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}**{{datatype}} \***{{/isString}}{{/isEnum}}{{#isByteArray}}**{{datatype}} \***{{/isByteArray}}{{#isBinary}}**{{datatype}}**{{/isBinary}}{{#isDate}}**{{datatype}} \***{{/isDate}}{{#isDateTime}}**{{datatype}} \***{{/isDateTime}}{{/isPrimitiveType}}{{/isContainer}}{{#isContainer}}{{#isArray}}{{#isPrimitiveType}}**{{datatype}}_t \***{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{datatype}}_t**]({{complexType}}.md) \*{{/isPrimitiveType}}{{/isArray}}{{#isMap}}**{{datatype}}**{{/isMap}}{{/isContainer}} | {{description}} | {{^required}}[optional] {{/required}}{{#isReadOnly}}[readonly] {{/isReadOnly}}{{#defaultValue}}[default to {{{.}}}]{{/defaultValue}} +**{{name}}** | {{^isContainer}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}**{{projectName}}_{{classVarName}}_{{enumName}}_e**{{/isEnum}}{{^isEnum}}[**{{datatype}}_t**]({{complexType}}.md) \*{{/isEnum}}{{/isModel}}{{^isModel}}{{^isFreeFormObject}}**{{datatype}}_t \***{{/isFreeFormObject}}{{/isModel}}{{#isUuid}}**{{datatype}} \***{{/isUuid}}{{#isEmail}}**{{datatype}} \***{{/isEmail}}{{#isFreeFormObject}}[**{{datatype}}_t**]({{complexType}}.md) \*{{/isFreeFormObject}}{{/isPrimitiveType}}{{#isPrimitiveType}}{{#isNumeric}}**{{datatype}}**{{/isNumeric}}{{#isBoolean}}**{{datatype}}**{{/isBoolean}}{{#isEnum}}{{#isString}}**{{projectName}}_{{classVarName}}_{{enumName}}_e**{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}**{{datatype}} \***{{/isString}}{{/isEnum}}{{#isByteArray}}**{{datatype}} \***{{/isByteArray}}{{#isBinary}}**{{datatype}}**{{/isBinary}}{{#isDate}}**{{datatype}} \***{{/isDate}}{{#isDateTime}}**{{datatype}} \***{{/isDateTime}}{{/isPrimitiveType}}{{/isContainer}}{{#isContainer}}{{#isArray}}{{#isPrimitiveType}}**{{datatype}}_t \***{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{datatype}}_t**]({{complexType}}.md) \*{{/isPrimitiveType}}{{/isArray}}{{#isMap}}**{{datatype}}**{{/isMap}}{{/isContainer}} | {{description}} | {{^required}}[optional] {{/required}}{{#isReadOnly}}[readonly] {{/isReadOnly}}{{#defaultValue}}[default to {{{.}}}]{{/defaultValue}} {{/vars}} [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)