From a194e1435fb3705d2b8ecc0ee90ff051413740a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20A=2E=20Fern=C3=A1ndez?= Date: Tue, 3 Jan 2023 21:01:19 -0300 Subject: [PATCH 1/6] C: add a template for an empty any_type.h header Some generated C apis fail to build because the source files get '#include "any_type.h"' lines, but no such header gets generated. As a simple fix, add a new template for an empty file with that name. This is enough to fix the problem for us, because all the generic type stuff is handled by object_t. --- .../codegen/languages/CLibcurlClientCodegen.java | 1 + .../src/main/resources/C-libcurl/CMakeLists.txt.mustache | 1 + .../src/main/resources/C-libcurl/any_type-header.mustache | 5 +++++ 3 files changed, 7 insertions(+) create mode 100644 modules/openapi-generator/src/main/resources/C-libcurl/any_type-header.mustache diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java index 16436597ffc0..4adf0d58d552 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java @@ -347,6 +347,7 @@ public void processOpts() { // Object files in model folder supportingFiles.add(new SupportingFile("object-body.mustache", "model", "object.c")); supportingFiles.add(new SupportingFile("object-header.mustache", "model", "object.h")); + supportingFiles.add(new SupportingFile("any_type-header.mustache", "model", "any_type.h")); } @Override diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache index b8037601066b..235eaffdd055 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache @@ -76,6 +76,7 @@ set(HDRS include/keyValuePair.h external/cJSON.h model/object.h + model/any_type.h {{#models}} {{#model}} model/{{classname}}.h diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/any_type-header.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/any_type-header.mustache new file mode 100644 index 000000000000..7bdc92487f5b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/C-libcurl/any_type-header.mustache @@ -0,0 +1,5 @@ +/* + * any_type.h + * + * A placeholder for now, this type isn't really needed. + */ From 5a4a398fc45d96a3f825c82fa46116b00bb8fadc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20A=2E=20Fern=C3=A1ndez?= Date: Tue, 3 Jan 2023 21:01:33 -0300 Subject: [PATCH 2/6] C: fix enums I'm guessing that enums have not been used much with the C generator before, because they always seem to produce code that doesn't build, or that tries to free them after use. This patch fixes all the problems we've encountered so far, except for those that need checking the return type. I'll come back to that later. --- .../resources/C-libcurl/api-body.mustache | 6 ++-- .../resources/C-libcurl/model-body.mustache | 30 +++++++++++++++++-- .../resources/C-libcurl/model-header.mustache | 12 ++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache index 74b98f4c0452..e19ac416cd78 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache @@ -261,7 +261,7 @@ end: {{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{projectName}}_{{operationId}}_{{baseName}}_e{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}{{{dataType}}} *{{/isString}}{{/isEnum}}{{#isByteArray}}{{{dataType}}} *{{/isByteArray}}{{#isDate}}{{{dataType}}}{{/isDate}}{{#isDateTime}}{{{dataType}}}{{/isDateTime}}{{#isFile}}{{{dataType}}}{{/isFile}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}} valueForm_{{paramName}} = 0; keyValuePair_t *keyPairForm_{{paramName}} = 0; {{/isFile}} - if ({{paramName}} != NULL) + if ({{paramName}} != {{^isEnum}}NULL{{/isEnum}}{{#isEnum}}0{{/isEnum}}) { {{#isFile}} keyForm_{{paramName}} = strdup("{{{baseName}}}"); @@ -510,8 +510,10 @@ end: keyForm_{{{paramName}}} = NULL; } if (valueForm_{{{paramName}}}) { + {{^isEnum}} free(valueForm_{{{paramName}}}); - valueForm_{{{paramName}}} = NULL; + {{/isEnum}} + valueForm_{{{paramName}}} = {{^isEnum}}NULL{{/isEnum}}{{#isEnum}}0{{/isEnum}}; } free(keyPairForm_{{paramName}}); {{/isString}} 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 11dcb74c884c..442d8e3fb5bc 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 @@ -75,6 +75,7 @@ end: {{^isEnum}} {{#vars}} {{^isContainer}} + {{#isPrimitiveType}} {{^isModel}} {{#isEnum}} char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}) { @@ -96,6 +97,7 @@ char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName } {{/isEnum}} {{/isModel}} + {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#items}} @@ -138,7 +140,12 @@ char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName {{/isModel}} {{^isModel}} {{^isFreeFormObject}} + {{^isEnum}} {{datatype}}_t *{{name}}{{^-last}},{{/-last}} + {{/isEnum}} + {{#isEnum}} + {{projectName}}_{{dataType}}_{{enumName}}_e {{name}}{{^-last}},{{/-last}} + {{/isEnum}} {{/isFreeFormObject}} {{/isModel}} {{#isUuid}} @@ -227,10 +234,12 @@ void {{classname}}_free({{classname}}_t *{{classname}}) { {{/isModel}} {{^isModel}} {{^isFreeFormObject}} + {{^isEnum}} if ({{{classname}}}->{{{name}}}) { {{{complexType}}}_free({{{classname}}}->{{{name}}}); {{classname}}->{{name}} = NULL; } + {{/isEnum}} {{/isFreeFormObject}} {{/isModel}} {{#isUuid}} @@ -337,7 +346,12 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { } {{/isEnum}} {{#isEnum}} + {{#isPrimitiveType}} if ({{projectName}}_{{classVarName}}_{{enumName}}_NULL == {{{classname}}}->{{{name}}}) { + {{/isPrimitiveType}} + {{^isPrimitiveType}} + if ({{projectName}}_{{dataType}}_{{enumName}}_NULL == {{{classname}}}->{{{name}}}) { + {{/isPrimitiveType}} goto fail; } {{/isEnum}} @@ -347,7 +361,12 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { if({{{classname}}}->{{{name}}}) { {{/isEnum}} {{#isEnum}} + {{#isPrimitiveType}} if({{{classname}}}->{{{name}}} != {{projectName}}_{{classVarName}}_{{enumName}}_NULL) { + {{/isPrimitiveType}} + {{^isPrimitiveType}} + if({{{classname}}}->{{{name}}} != {{projectName}}_{{dataType}}_{{enumName}}_NULL) { + {{/isPrimitiveType}} {{/isEnum}} {{/required}} {{^isContainer}} @@ -589,7 +608,12 @@ fail: {{^isModel}} {{^isFreeFormObject}} // define the local variable for {{{classname}}}->{{{name}}} + {{^isEnum}} {{complexType}}_t *{{name}}_local_nonprim = NULL; + {{/isEnum}} + {{#isEnum}} + {{projectName}}_{{dataType}}_{{enumName}}_e {{name}}_local_nonprim = 0; + {{/isEnum}} {{/isFreeFormObject}} {{/isModel}} @@ -853,7 +877,7 @@ fail: {{/isModel}} {{^isModel}} {{^isFreeFormObject}} - {{^required}}{{{name}}} ? {{/required}}{{{name}}}_local_nonprim{{^required}} : NULL{{/required}}{{^-last}},{{/-last}} + {{^required}}{{{name}}} ? {{/required}}{{{name}}}_local_nonprim{{^required}} : {{^isEnum}}NULL{{/isEnum}}{{#isEnum}}0{{/isEnum}}{{/required}}{{^-last}},{{/-last}} {{/isFreeFormObject}} {{/isModel}} {{#isUuid}} @@ -929,8 +953,10 @@ end: {{^isModel}} {{^isFreeFormObject}} if ({{{name}}}_local_nonprim) { + {{^isEnum}} {{complexType}}_free({{{name}}}_local_nonprim); - {{{name}}}_local_nonprim = NULL; + {{/isEnum}} + {{{name}}}_local_nonprim = {{^isEnum}}NULL{{/isEnum}}{{#isEnum}}0{{/isEnum}}; } {{/isFreeFormObject}} {{/isModel}} 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 81aee8c17a38..91766a8f617e 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 @@ -38,6 +38,7 @@ char* {{classFilename}}_{{classname}}_ToString({{projectName}}_{{classVarName}}_ {{^isEnum}} {{#vars}} {{^isContainer}} + {{#isPrimitiveType}} {{^isModel}} {{#isEnum}} // Enum {{enumName}} for {{classVarName}} @@ -52,6 +53,7 @@ char* {{classFilename}}_{{name}}_ToString({{projectName}}_{{classVarName}}_{{enu {{/isEnum}} {{/isModel}} + {{/isPrimitiveType}} {{/isContainer}} {{#isContainer}} {{#items}} @@ -88,7 +90,12 @@ typedef struct {{classname}}_t { {{/isModel}} {{^isModel}} {{^isFreeFormObject}} + {{^isEnum}} {{datatype}}_t *{{name}}; // custom + {{/isEnum}} + {{#isEnum}} + {{projectName}}_{{dataType}}_{{enumName}}_e {{name}}; //referenced enum + {{/isEnum}} {{/isFreeFormObject}} {{/isModel}} {{#isUuid}} @@ -163,7 +170,12 @@ typedef struct {{classname}}_t { {{/isModel}} {{^isModel}} {{^isFreeFormObject}} + {{^isEnum}} {{datatype}}_t *{{name}}{{^-last}},{{/-last}} + {{/isEnum}} + {{#isEnum}} + {{projectName}}_{{dataType}}_{{enumName}}_e {{name}}{{^-last}},{{/-last}} + {{/isEnum}} {{/isFreeFormObject}} {{/isModel}} {{#isUuid}} From a0fa76da63d6ced6e039acc13b6de1ed63326dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20A=2E=20Fern=C3=A1ndez?= Date: Tue, 3 Jan 2023 21:01:37 -0300 Subject: [PATCH 3/6] C: fix confusion of 'classname'/'classFilename' --- .../src/main/resources/C-libcurl/model-body.mustache | 4 ++-- .../src/main/resources/C-libcurl/model-header.mustache | 4 ++-- 2 files changed, 4 insertions(+), 4 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 442d8e3fb5bc..4b58146e5f06 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 @@ -25,7 +25,7 @@ char* {{classFilename}}_{{classname}}_ToString({{projectName}}_{{classVarName}}_ return 0; } -cJSON *{{classFilename}}_{{classname}}_convertToJSON({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}) { +cJSON *{{classname}}_convertToJSON({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}) { cJSON *item = cJSON_CreateObject(); {{#isString}} if(cJSON_AddStringToObject(item, "{{{classname}}}", {{classFilename}}_{{{classname}}}_ToString({{{classname}}})) == NULL) { @@ -48,7 +48,7 @@ fail: return NULL; } -{{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{classname}}_parseFromJSON(cJSON *{{classname}}JSON) { +{{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}_parseFromJSON(cJSON *{{classname}}JSON) { {{projectName}}_{{classVarName}}_{{enumName}}_e *{{classname}} = NULL; {{#isEnum}} {{#isNumeric}} 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 91766a8f617e..ba867cdadb08 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 @@ -30,9 +30,9 @@ char* {{classFilename}}_{{classname}}_ToString({{projectName}}_{{classVarName}}_ {{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{classname}}_FromString(char* {{classname}}); -//cJSON *{{classFilename}}_{{classname}}_convertToJSON({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}); +cJSON *{{classname}}_convertToJSON({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}); -//{{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{classname}}_parseFromJSON(cJSON *{{classname}}JSON); +{{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}_parseFromJSON(cJSON *{{classname}}JSON); {{/isEnum}} {{^isEnum}} From 523e5de3d601af3ef39681bf0aabaec1f3e6aed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20A=2E=20Fern=C3=A1ndez?= Date: Tue, 3 Jan 2023 21:01:40 -0300 Subject: [PATCH 4/6] C: fix issues with returned enums Currently, the C templates never check if a function returns an enum inside mustache, so when that happens the generated code has broken return types and doesn't build. I originally tried to fix this by extending CodegenOperation to implement a 'returnTypeIsEnum' check, but William Cheng suggested[1] that I use the existing 'returnProperty' instead: https://github.com/OpenAPITools/openapi-generator/pull/14379#discussion_r1064636735 So do that. --- .../src/main/resources/C-libcurl/api-body.mustache | 8 ++++---- .../src/main/resources/C-libcurl/api-header.mustache | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache index e19ac416cd78..a7c12c2d2a76 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache @@ -98,7 +98,7 @@ end: // {{{.}}} // {{/notes}} -{{#returnType}}{{#returnTypeIsPrimitive}}{{#returnSimpleType}}{{{.}}}*{{/returnSimpleType}}{{^returnSimpleType}}{{#isArray}}{{{.}}}_t*{{/isArray}}{{#isMap}}{{{.}}}{{/isMap}}{{/returnSimpleType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{{.}}}_t*{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void{{/returnType}} +{{#returnType}}{{#returnTypeIsPrimitive}}{{#returnSimpleType}}{{{.}}}*{{/returnSimpleType}}{{^returnSimpleType}}{{#isArray}}{{{.}}}_t*{{/isArray}}{{#isMap}}{{{.}}}{{/isMap}}{{/returnSimpleType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{#returnProperty}}{{^isEnum}}{{{returnType}}}_t*{{/isEnum}}{{#isEnum}}{{projectName}}_{{{returnType}}}_{{returnEnumName}}_e{{/isEnum}}{{/returnProperty}}{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void{{/returnType}} {{{classname}}}_{{{operationId}}}(apiClient_t *apiClient{{#allParams}}, {{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{projectName}}_{{operationId}}_{{baseName}}_e{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}{{{dataType}}} *{{/isString}}{{/isEnum}}{{#isByteArray}}{{{dataType}}} *{{/isByteArray}}{{#isDate}}{{{dataType}}}{{/isDate}}{{#isDateTime}}{{{dataType}}}{{/isDateTime}}{{#isFile}}{{{dataType}}}{{/isFile}}{{#isFreeFormObject}}{{dataType}}_t *{{/isFreeFormObject}}{{/isPrimitiveType}}{{^isArray}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}}{{/isArray}}{{#isContainer}}{{#isArray}}{{dataType}}_t *{{/isArray}}{{#isMap}}{{dataType}}{{/isMap}}{{/isContainer}} {{{paramName}}} {{/allParams}}) { list_t *localVarQueryParameters = {{#hasQueryParams}}list_createList();{{/hasQueryParams}}{{^hasQueryParams}}NULL;{{/hasQueryParams}} @@ -385,9 +385,9 @@ end: {{^returnContainer}} //nonprimitive not container cJSON *{{classname}}localVarJSON = cJSON_Parse(apiClient->dataReceived); - {{{returnBaseType}}}_t *elementToReturn = {{{returnBaseType}}}_parseFromJSON({{classname}}localVarJSON); + {{#returnProperty}}{{^isEnum}}{{{returnBaseType}}}_t *{{/isEnum}}{{#isEnum}}{{projectName}}_{{{returnType}}}_{{returnEnumName}}_e {{/isEnum}}{{/returnProperty}}elementToReturn = {{{returnBaseType}}}_parseFromJSON({{classname}}localVarJSON); cJSON_Delete({{classname}}localVarJSON); - if(elementToReturn == NULL) { + if(elementToReturn == {{#returnProperty}}{{^isEnum}}NULL{{/isEnum}}{{#isEnum}}0{{/isEnum}}{{/returnProperty}}) { // return 0; } @@ -529,7 +529,7 @@ end: return elementToReturn; end: free(localVarPath); - return NULL; + return {{#returnProperty}}{{^isEnum}}NULL{{/isEnum}}{{#isEnum}}0{{/isEnum}}{{/returnProperty}}; {{/returnType}} {{^returnType}} //No return type diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/api-header.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/api-header.mustache index ecc80212afcf..d5d16b16cbbd 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/api-header.mustache @@ -32,7 +32,7 @@ typedef enum { {{projectName}}_{{operationId}}_{{enumName}}_NULL = 0{{#enumVars // {{{.}}} // {{/notes}} -{{#returnType}}{{#returnTypeIsPrimitive}}{{#returnSimpleType}}{{{.}}}*{{/returnSimpleType}}{{^returnSimpleType}}{{#isArray}}{{{.}}}_t*{{/isArray}}{{#isMap}}{{{.}}}{{/isMap}}{{/returnSimpleType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{{.}}}_t*{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void{{/returnType}} +{{#returnType}}{{#returnTypeIsPrimitive}}{{#returnSimpleType}}{{{.}}}*{{/returnSimpleType}}{{^returnSimpleType}}{{#isArray}}{{{.}}}_t*{{/isArray}}{{#isMap}}{{{.}}}{{/isMap}}{{/returnSimpleType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{#returnProperty}}{{^isEnum}}{{{returnType}}}_t*{{/isEnum}}{{#isEnum}}{{projectName}}_{{{returnType}}}_{{returnEnumName}}_e{{/isEnum}}{{/returnProperty}}{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void{{/returnType}} {{{classname}}}_{{{operationId}}}(apiClient_t *apiClient{{#allParams}}, {{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{projectName}}_{{operationId}}_{{baseName}}_e{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}{{{dataType}}} *{{/isString}}{{/isEnum}}{{#isByteArray}}{{{dataType}}} *{{/isByteArray}}{{#isDate}}{{{dataType}}}{{/isDate}}{{#isDateTime}}{{{dataType}}}{{/isDateTime}}{{#isFile}}{{{dataType}}}{{/isFile}}{{#isFreeFormObject}}{{dataType}}_t *{{/isFreeFormObject}}{{/isPrimitiveType}}{{^isArray}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}}{{/isArray}}{{#isContainer}}{{#isArray}}{{dataType}}_t *{{/isArray}}{{#isMap}}{{dataType}}{{/isMap}}{{/isContainer}} {{{paramName}}} {{/allParams}}); From 7c46bc84856cf8825ad494124ea8df762d666684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ernesto=20A=2E=20Fern=C3=A1ndez?= Date: Wed, 11 Jan 2023 18:08:48 -0300 Subject: [PATCH 5/6] C: update the samples As required for a pull request, run the generate-samples.sh script and commit the changes. --- samples/client/petstore/c/.openapi-generator/FILES | 1 + samples/client/petstore/c/model/any_type.h | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 samples/client/petstore/c/model/any_type.h diff --git a/samples/client/petstore/c/.openapi-generator/FILES b/samples/client/petstore/c/.openapi-generator/FILES index 51014a47cdcc..4ae528d743eb 100644 --- a/samples/client/petstore/c/.openapi-generator/FILES +++ b/samples/client/petstore/c/.openapi-generator/FILES @@ -23,6 +23,7 @@ include/binary.h include/keyValuePair.h include/list.h libcurl.licence +model/any_type.h model/api_response.c model/api_response.h model/category.c diff --git a/samples/client/petstore/c/model/any_type.h b/samples/client/petstore/c/model/any_type.h new file mode 100644 index 000000000000..7bdc92487f5b --- /dev/null +++ b/samples/client/petstore/c/model/any_type.h @@ -0,0 +1,5 @@ +/* + * any_type.h + * + * A placeholder for now, this type isn't really needed. + */ From e3dfe904557f9a566d371758b2ad2e9c5a837f9a Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 27 Nov 2024 17:46:16 +0800 Subject: [PATCH 6/6] update samples --- .../petstore/c-useJsonUnformatted/.openapi-generator/FILES | 1 + samples/client/petstore/c-useJsonUnformatted/CMakeLists.txt | 1 + .../client/petstore/c-useJsonUnformatted/model/any_type.h | 5 +++++ 3 files changed, 7 insertions(+) create mode 100644 samples/client/petstore/c-useJsonUnformatted/model/any_type.h diff --git a/samples/client/petstore/c-useJsonUnformatted/.openapi-generator/FILES b/samples/client/petstore/c-useJsonUnformatted/.openapi-generator/FILES index de78f2c09bb8..56afd08ac99d 100644 --- a/samples/client/petstore/c-useJsonUnformatted/.openapi-generator/FILES +++ b/samples/client/petstore/c-useJsonUnformatted/.openapi-generator/FILES @@ -26,6 +26,7 @@ include/binary.h include/keyValuePair.h include/list.h libcurl.licence +model/any_type.h model/api_response.c model/api_response.h model/category.c diff --git a/samples/client/petstore/c-useJsonUnformatted/CMakeLists.txt b/samples/client/petstore/c-useJsonUnformatted/CMakeLists.txt index 9d01b09104dc..e41b31d33abb 100644 --- a/samples/client/petstore/c-useJsonUnformatted/CMakeLists.txt +++ b/samples/client/petstore/c-useJsonUnformatted/CMakeLists.txt @@ -75,6 +75,7 @@ set(HDRS include/keyValuePair.h external/cJSON.h model/object.h + model/any_type.h model/mapped_model.h model/api_response.h model/category.h diff --git a/samples/client/petstore/c-useJsonUnformatted/model/any_type.h b/samples/client/petstore/c-useJsonUnformatted/model/any_type.h new file mode 100644 index 000000000000..7bdc92487f5b --- /dev/null +++ b/samples/client/petstore/c-useJsonUnformatted/model/any_type.h @@ -0,0 +1,5 @@ +/* + * any_type.h + * + * A placeholder for now, this type isn't really needed. + */