From 62bd4b557008aaa059f9c8a2f03ec338046315e3 Mon Sep 17 00:00:00 2001 From: Matteo Ferrari Date: Tue, 24 Feb 2026 01:36:12 +0100 Subject: [PATCH] wip --- .../resources/C-libcurl/model-body.mustache | 72 ++++++++++++++++--- .../resources/C-libcurl/model-header.mustache | 8 +-- 2 files changed, 68 insertions(+), 12 deletions(-) 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 70f2106ba847..b52947b8d488 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 @@ -153,10 +153,10 @@ static {{classname}}_t *{{classname}}_create_internal( {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{datatype}} {{name}}{{^-last}},{{/-last}} + {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isNumeric}} {{#isBoolean}} - {{datatype}} {{name}}{{^-last}},{{/-last}} + {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isBoolean}} {{#isEnum}} {{#isString}} @@ -243,10 +243,10 @@ __attribute__((deprecated)) {{classname}}_t *{{classname}}_create( {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{datatype}} {{name}}{{^-last}},{{/-last}} + {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isNumeric}} {{#isBoolean}} - {{datatype}} {{name}}{{^-last}},{{/-last}} + {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isBoolean}} {{#isEnum}} {{#isString}} @@ -344,6 +344,18 @@ void {{classname}}_free({{classname}}_t *{{classname}}) { {{/isFreeFormObject}} {{/isPrimitiveType}} {{#isPrimitiveType}} + {{#isNumeric}} + if ({{{classname}}}->{{{name}}}) { + free({{{classname}}}->{{{name}}}); + {{classname}}->{{name}} = NULL; + } + {{/isNumeric}} + {{#isBoolean}} + if ({{{classname}}}->{{{name}}}) { + free({{{classname}}}->{{{name}}}); + {{classname}}->{{name}} = NULL; + } + {{/isBoolean}} {{^isEnum}} {{#isString}} if ({{{classname}}}->{{{name}}}) { @@ -454,12 +466,12 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { {{^isContainer}} {{#isPrimitiveType}} {{#isNumeric}} - if(cJSON_AddNumberToObject(item, "{{{baseName}}}", {{{classname}}}->{{{name}}}) == NULL) { + if(cJSON_AddNumberToObject(item, "{{{baseName}}}", *{{{classname}}}->{{{name}}}) == NULL) { goto fail; //Numeric } {{/isNumeric}} {{#isBoolean}} - if(cJSON_AddBoolToObject(item, "{{{baseName}}}", {{{classname}}}->{{{name}}}) == NULL) { + if(cJSON_AddBoolToObject(item, "{{{baseName}}}", *{{{classname}}}->{{{name}}}) == NULL) { goto fail; //Bool } {{/isBoolean}} @@ -700,6 +712,18 @@ fail: {{/isFreeFormObject}} {{/isModel}} {{/isPrimitiveType}} + {{#isPrimitiveType}} + {{#isNumeric}} + // define the local variable for {{{classname}}}->{{{name}}} + {{datatype}} *{{name}}_local_var = NULL; + + {{/isNumeric}} + {{#isBoolean}} + // define the local variable for {{{classname}}}->{{{name}}} + {{datatype}} *{{name}}_local_var = NULL; + + {{/isBoolean}} + {{/isPrimitiveType}} {{/isContainer}} {{/vars}} {{#vars}} @@ -722,6 +746,15 @@ fail: { goto end; //Numeric } + {{name}}_local_var = malloc(sizeof({{datatype}})); + if(!{{name}}_local_var) + { + goto end; + } + *{{name}}_local_var = {{{name}}}->valuedouble; + {{^required}} + } + {{/required}} {{/isNumeric}} {{#isBoolean}} {{^required}}if ({{{name}}}) { {{/required}} @@ -729,6 +762,15 @@ fail: { goto end; //Bool } + {{name}}_local_var = malloc(sizeof({{datatype}})); + if(!{{name}}_local_var) + { + goto end; + } + *{{name}}_local_var = {{{name}}}->valueint; + {{^required}} + } + {{/required}} {{/isBoolean}} {{#isEnum}} {{#isString}} @@ -977,10 +1019,10 @@ fail: {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{^required}}{{{name}}} ? {{/required}}{{{name}}}->valuedouble{{^required}} : 0{{/required}}{{^-last}},{{/-last}} + {{name}}_local_var{{^-last}},{{/-last}} {{/isNumeric}} {{#isBoolean}} - {{^required}}{{{name}}} ? {{/required}}{{{name}}}->valueint{{^required}} : 0{{/required}}{{^-last}},{{/-last}} + {{name}}_local_var{{^-last}},{{/-last}} {{/isBoolean}} {{#isEnum}} {{#isString}} @@ -1046,6 +1088,20 @@ end: {{/isFreeFormObject}} {{/isModel}} {{/isPrimitiveType}} + {{#isPrimitiveType}} + {{#isNumeric}} + if ({{{name}}}_local_var) { + free({{{name}}}_local_var); + {{{name}}}_local_var = NULL; + } + {{/isNumeric}} + {{#isBoolean}} + if ({{{name}}}_local_var) { + free({{{name}}}_local_var); + {{{name}}}_local_var = NULL; + } + {{/isBoolean}} + {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#isArray}} 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 236d9e8c3cba..c2013de9e3ac 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 @@ -110,10 +110,10 @@ typedef struct {{classname}}_t { {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{datatype}} {{name}}; //numeric + {{datatype}} *{{name}}; //numeric {{/isNumeric}} {{#isBoolean}} - {{datatype}} {{name}}; //boolean + {{datatype}} *{{name}}; //boolean {{/isBoolean}} {{#isEnum}} {{#isString}} @@ -191,10 +191,10 @@ __attribute__((deprecated)) {{classname}}_t *{{classname}}_create( {{/isPrimitiveType}} {{#isPrimitiveType}} {{#isNumeric}} - {{datatype}} {{name}}{{^-last}},{{/-last}} + {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isNumeric}} {{#isBoolean}} - {{datatype}} {{name}}{{^-last}},{{/-last}} + {{datatype}} *{{name}}{{^-last}},{{/-last}} {{/isBoolean}} {{#isEnum}} {{#isString}}