From fc9d4584ca1144532c0b86db958d7f782098253d Mon Sep 17 00:00:00 2001 From: Michele Albano Date: Mon, 16 Mar 2020 06:53:53 +0100 Subject: [PATCH] PR to solve 2 open issues on enums: #5091 and #4293 (#5477) * PR to solve 2 open issues on enums: Issue 5091 needs to generate enums also when the enum is directly in a param to a API call, instead than in a model. I did that by copying and adapting enum code from *model* to *api* Issue 4293 needs to decorate enums, for when enum names or enum values are repeated over the yaml definition. * PR to solve 2 open issues on enums: Issue 5091 needs to generate enums also when the enum is directly in a param to a API call, instead than in a model. I did that by copying and adapting enum code from *model* to *api* Issue 4293 needs to decorate enums, for when enum names or enum values are repeated over the yaml definition. * Enums decorated: with {{projectName}}_{{classVarName}}_{{enumName}}_ in the models, with {{projectName}}_{{classVarName}}_{{enumName}}_ in the operations. * Changes to the c client: - Removed white space. - Removed ToJSON and FromJSON function for the enums, since they are not used - Sanitized project name in the .java file. For example, this solves a problem with the issue #2338, where the yaml file had title: "Skycoin REST API." * Changes to the c client: - Removed white space. - Removed ToJSON and FromJSON function for the enums, since they are not used - Sanitized project name in the .java file. For example, this solves a problem with the issue #2338, where the yaml file had title: "Skycoin REST API." --- .../languages/CLibcurlClientCodegen.java | 4 +- .../resources/C-libcurl/api-body.mustache | 90 +++++++++++++++++-- .../resources/C-libcurl/api-header.mustache | 15 +++- .../resources/C-libcurl/model-body.mustache | 88 +++++++++--------- .../resources/C-libcurl/model-header.mustache | 39 ++++---- samples/client/petstore/c/api/PetAPI.c | 60 +++++++++++-- samples/client/petstore/c/api/PetAPI.h | 3 + samples/client/petstore/c/api/StoreAPI.c | 7 +- samples/client/petstore/c/api/UserAPI.c | 15 ++-- samples/client/petstore/c/model/order.c | 18 ++-- samples/client/petstore/c/model/order.h | 13 +-- samples/client/petstore/c/model/pet.c | 18 ++-- samples/client/petstore/c/model/pet.h | 13 +-- 13 files changed, 269 insertions(+), 114 deletions(-) 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 2b5830ea890e..0be8ee130b2b 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 @@ -617,11 +617,13 @@ public void preprocessOpenAPI(OpenAPI openAPI) { } else { setProjectName(defaultProjectName); } + System.out.println("michele was here preprocessOpenAPI "+projectName); additionalProperties.put(PROJECT_NAME, projectName); + System.out.println("michele was here preprocessOpenAPI after "+projectName); } public void setProjectName(String projectName) { - this.projectName = underscore(projectName.toLowerCase(Locale.ROOT)); + this.projectName = underscore(sanitizeName(projectName.toLowerCase(Locale.ROOT))); } @Override 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 6180ad435d0f..c8daaf0e444b 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 @@ -11,6 +11,83 @@ snprintf(dst, 256, "%ld", (long int)(src));\ }while(0) +{{#operations}} +{{#operation}} +{{#allParams}} +{{#isEnum}} +// Functions for enum {{enumName}} for {{{classname}}}_{{{operationId}}} + +static char* {{{operationId}}}_{{enumName}}_ToString({{projectName}}_{{operationId}}_{{baseName}}_e {{enumName}}){ + char *{{enumName}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + return {{enumName}}Array[{{enumName}}]; +} + +static {{projectName}}_{{operationId}}_{{baseName}}_e {{{operationId}}}_{{enumName}}_FromString(char* {{enumName}}){ + int stringToReturn = 0; + char *{{enumName}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + size_t sizeofArray = sizeof({{enumName}}Array) / sizeof({{enumName}}Array[0]); + while(stringToReturn < sizeofArray) { + if(strcmp({{enumName}}, {{enumName}}Array[stringToReturn]) == 0) { + return stringToReturn; + } + stringToReturn++; + } + return 0; +} + +/* +// Function {{{operationId}}}_{{enumName}}_convertToJSON is not currently used, +// since conversion to JSON passes through the conversion of the model, and ToString. The function is kept for future reference. +// +static cJSON *{{{operationId}}}_{{enumName}}_convertToJSON({{projectName}}_{{operationId}}_{{baseName}}_e {{enumName}}) { + cJSON *item = cJSON_CreateObject(); +{{#isString}} + if(cJSON_AddStringToObject(item, "{{{paramName}}}", {{{operationId}}}_{{{enumName}}}_ToString({{{enumName}}})) == NULL) { + goto fail; + } +{{/isString}} +{{#isNumeric}} + if(cJSON_AddNumberToObject(item, "{{{paramName}}}", {{{enumName}}}) == NULL) { + goto fail; + } +{{/isNumeric}} + return item; + fail: + cJSON_Delete(item); + return NULL; +} + +// Function {{{operationId}}}_{{enumName}}_parseFromJSON is not currently used, +// since conversion from JSON passes through the conversion of the model, and FromString. The function is kept for future reference. +// +static {{projectName}}_{{operationId}}_{{baseName}}_e {{{operationId}}}_{{enumName}}_parseFromJSON(cJSON* {{enumName}}JSON) { + {{projectName}}_{{operationId}}_{{baseName}}_e {{enumName}}Variable = 0; +{{#isNumeric}} + cJSON *{{{enumName}}}Var = cJSON_GetObjectItemCaseSensitive({{enumName}}JSON, "{{{paramName}}}"); + if(!cJSON_IsNumber({{{enumName}}}Var)) + { + goto end; + } +{{/isNumeric}} +{{#isString}} + cJSON *{{{enumName}}}Var = cJSON_GetObjectItemCaseSensitive({{enumName}}JSON, "{{{paramName}}}"); + if(!cJSON_IsString({{{enumName}}}Var) || ({{{enumName}}}Var->valuestring == NULL)) + { + goto end; + } + {{enumName}}Variable = {{{operationId}}}_{{enumName}}_FromString({{{enumName}}}Var->valuestring); +{{/isString}} + return {{enumName}}Variable; +end: + return 0; +} +*/ + +{{/isEnum}} +{{/allParams}} +{{/operation}} +{{/operations}} + {{#operations}} {{#operation}} {{#summary}} @@ -22,7 +99,7 @@ // {{/notes}} {{#returnType}}{{#returnTypeIsPrimitive}}{{#returnSimpleType}}{{{.}}}*{{/returnSimpleType}}{{^returnSimpleType}}{{#isListContainer}}{{{.}}}_t*{{/isListContainer}}{{#isMapContainer}}{{{.}}}{{/isMapContainer}}{{/returnSimpleType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{{.}}}_t*{{/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}}{{{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}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{^isListContainer}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isListContainer}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}}{{#isContainer}}{{#isListContainer}}{{dataType}}_t *{{/isListContainer}}{{#isMapContainer}}{{dataType}}{{/isMapContainer}}{{/isContainer}} {{{paramName}}}{{/allParams}}) +{{{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}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{^isListContainer}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isListContainer}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}}{{#isContainer}}{{#isListContainer}}{{dataType}}_t *{{/isListContainer}}{{#isMapContainer}}{{dataType}}{{/isMapContainer}}{{/isContainer}} {{{paramName}}}{{/allParams}}) { list_t *localVarQueryParameters = {{#hasQueryParams}}list_create();{{/hasQueryParams}}{{^hasQueryParams}}NULL;{{/hasQueryParams}} list_t *localVarHeaderParameters = {{#hasHeaderParams}}list_create();{{/hasHeaderParams}}{{^hasHeaderParams}}NULL;{{/hasHeaderParams}} @@ -117,7 +194,7 @@ // header parameters char *keyHeader_{{{paramName}}}; - {{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{{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}} valueHeader_{{{paramName}}}; + {{#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}} valueHeader_{{{paramName}}}; keyValuePair_t *keyPairHeader_{{paramName}} = 0; if ({{paramName}}) { keyHeader_{{{paramName}}} = strdup("{{{baseName}}}"); @@ -132,7 +209,7 @@ // query parameters {{^isListContainer}} char *keyQuery_{{{paramName}}} = NULL; - {{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{{dataType}}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{{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}} valueQuery_{{{paramName}}} {{#isString}}{{^isEnum}}= NULL{{/isEnum}}{{/isString}}; + {{#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}} valueQuery_{{{paramName}}} {{#isString}}{{^isEnum}}= NULL{{/isEnum}}{{/isString}}; keyValuePair_t *keyPairQuery_{{paramName}} = 0; {{/isListContainer}} if ({{paramName}}) @@ -143,7 +220,8 @@ {{^isListContainer}} keyQuery_{{{paramName}}} = strdup("{{{baseName}}}"); valueQuery_{{{paramName}}} = {{#isString}}{{^isEnum}}strdup({{/isEnum}}{{/isString}}({{{paramName}}}){{#isString}}{{^isEnum}}){{/isEnum}}{{/isString}}; - keyPairQuery_{{paramName}} = keyValuePair_create(keyQuery_{{{paramName}}}, {{#isEnum}}(void *){{/isEnum}}{{^isString}}&{{/isString}}valueQuery_{{{paramName}}}); + keyPairQuery_{{paramName}} = keyValuePair_create(keyQuery_{{{paramName}}}, {{#isEnum}}(void *)strdup({{{operationId}}}_{{enumName}}_ToString( + {{/isEnum}}{{^isString}}&{{/isString}}valueQuery_{{{paramName}}}{{#isEnum}})){{/isEnum}}); list_addElement(localVarQueryParameters,keyPairQuery_{{paramName}}); {{/isListContainer}} } @@ -158,7 +236,7 @@ {{/isFile}} {{^isFile}} char *keyForm_{{paramName}}; - {{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{{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}}; + {{#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}}; keyValuePair_t *keyPairForm_{{paramName}} = 0; {{/isFile}} if ({{paramName}} != NULL) @@ -334,10 +412,12 @@ free(keyQuery_{{{paramName}}}); keyQuery_{{{paramName}}} = NULL; } +{{^isEnum}} if(valueQuery_{{{paramName}}}){ free(valueQuery_{{{paramName}}}); valueQuery_{{{paramName}}} = NULL; } +{{/isEnum}} if(keyPairQuery_{{{paramName}}}){ keyValuePair_free(keyPairQuery_{{{paramName}}}); keyPairQuery_{{{paramName}}} = NULL; 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 4556d2d02940..6b2d7773d431 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 @@ -7,6 +7,19 @@ {{#imports}}{{{import}}} {{/imports}} +{{#operations}} +{{#operation}} +{{#allParams}} +{{#isEnum}} +// Enum {{enumName}} for {{{classname}}}_{{{operationId}}} +{{#allowableValues}} +typedef enum { {{projectName}}_{{operationId}}_{{enumName}}_NULL = 0{{#enumVars}}, {{projectName}}_{{operationId}}_{{enumName}}_{{{value}}}{{/enumVars}} } {{projectName}}_{{operationId}}_{{baseName}}_e; + +{{/allowableValues}} +{{/isEnum}} +{{/allParams}} +{{/operation}} +{{/operations}} {{#operations}} {{#operation}} @@ -19,7 +32,7 @@ // {{/notes}} {{#returnType}}{{#returnTypeIsPrimitive}}{{#returnSimpleType}}{{{.}}}*{{/returnSimpleType}}{{^returnSimpleType}}{{#isListContainer}}{{{.}}}_t*{{/isListContainer}}{{#isMapContainer}}{{{.}}}{{/isMapContainer}}{{/returnSimpleType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{{.}}}_t*{{/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}}{{{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}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{^isListContainer}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isListContainer}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}}{{#isContainer}}{{#isListContainer}}{{dataType}}_t *{{/isListContainer}}{{#isMapContainer}}{{dataType}}{{/isMapContainer}}{{/isContainer}} {{{paramName}}}{{/allParams}}); +{{{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}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{^isListContainer}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isListContainer}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}}{{#isContainer}}{{#isListContainer}}{{dataType}}_t *{{/isListContainer}}{{#isMapContainer}}{{dataType}}{{/isMapContainer}}{{/isContainer}} {{{paramName}}}{{/allParams}}); {{/operation}} 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 c2cd285c9663..5e3e49c29e46 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 @@ -7,14 +7,14 @@ {{#isEnum}} -char* {{classname}}_ToString({{classname}}_e {{classname}}){ -char *{{classname}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; +char* {{classFilename}}_{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}) { + char *{{classname}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; return {{classname}}Array[{{classname}}]; } -{{classname}}_e {{classname}}_FromString(char* {{classname}}){ +{{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{classname}}_FromString(char* {{classname}}) { int stringToReturn = 0; - char *{{classname}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; + char *{{classname}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; size_t sizeofArray = sizeof({{classname}}Array) / sizeof({{classname}}Array[0]); while(stringToReturn < sizeofArray) { if(strcmp({{classname}}, {{classname}}Array[stringToReturn]) == 0) { @@ -25,10 +25,10 @@ char *{{classname}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{ return 0; } -cJSON *{{classname}}_convertToJSON({{classname}}_e {{classname}}) { -cJSON *item = cJSON_CreateObject(); +cJSON *{{classFilename}}_{{classname}}_convertToJSON({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}) { + cJSON *item = cJSON_CreateObject(); {{#isString}} - if(cJSON_AddStringToObject(item, "{{{classname}}}", {{{classname}}}_ToString({{{classname}}})) == NULL) { + if(cJSON_AddStringToObject(item, "{{{classname}}}", {{classFilename}}_{{{classname}}}_ToString({{{classname}}})) == NULL) { goto fail; } {{/isString}} @@ -38,35 +38,33 @@ cJSON *item = cJSON_CreateObject(); } {{/isNumeric}} return item; - fail: +fail: cJSON_Delete(item); return NULL; } -{{classname}}_e {{classname}}_parseFromJSON(cJSON *{{classname}}JSON){ - -{{classname}}_e *{{classname}} = NULL; - +{{classFilename}}_{{classname}}_e {{classFilename}}_{{classname}}_parseFromJSON(cJSON *{{classname}}JSON) { + {{classFilename}}_{{classname}}_e *{{classname}} = NULL; {{#isEnum}} {{#isNumeric}} -cJSON *{{{classname}}}Var = cJSON_GetObjectItemCaseSensitive({{classname}}JSON, "{{{classname}}}"); -if(!cJSON_IsNumber({{{classname}}}Var)) -{ - goto end; -} + cJSON *{{{classname}}}Var = cJSON_GetObjectItemCaseSensitive({{classname}}JSON, "{{{classname}}}"); + if(!cJSON_IsNumber({{{classname}}}Var)) + { + goto end; + } {{/isNumeric}} {{#isString}} -{{{classname}}}_e {{classname}}Variable; -cJSON *{{{classname}}}Var = cJSON_GetObjectItemCaseSensitive({{classname}}JSON, "{{{classname}}}"); -if(!cJSON_IsString({{{classname}}}Var) || ({{{classname}}}Var->valuestring == NULL)){ - goto end; -} -{{classname}}Variable = {{classname}}_FromString({{{classname}}}Var->valuestring); + {{classFilename}}_{{{classname}}}_e {{classname}}Variable; + cJSON *{{{classname}}}Var = cJSON_GetObjectItemCaseSensitive({{classname}}JSON, "{{{classname}}}"); + if(!cJSON_IsString({{{classname}}}Var) || ({{{classname}}}Var->valuestring == NULL)){ + goto end; + } + {{classname}}Variable = {{classFilename}}_{{classname}}_FromString({{{classname}}}Var->valuestring); {{/isString}} {{/isEnum}} -return {{classname}}Variable; + return {{classname}}Variable; end: -return 0; + return 0; } {{/isEnum}} {{^isEnum}} @@ -74,14 +72,14 @@ return 0; {{^isContainer}} {{^isModel}} {{#isEnum}} - char* {{name}}{{classname}}_ToString({{name}}_e {{name}}){ - char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; - return {{name}}Array[{{name}}]; - } +char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}) { + char* {{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + return {{name}}Array[{{name}}]; +} - {{name}}_e {{name}}{{classname}}_FromString(char* {{name}}){ +{{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{classname}}_FromString(char* {{name}}){ int stringToReturn = 0; - char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; + char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; size_t sizeofArray = sizeof({{name}}Array) / sizeof({{name}}Array[0]); while(stringToReturn < sizeofArray) { if(strcmp({{name}}, {{name}}Array[stringToReturn]) == 0) { @@ -90,7 +88,7 @@ return 0; stringToReturn++; } return 0; - } +} {{/isEnum}} {{/isModel}} {{/isContainer}} @@ -98,14 +96,14 @@ return 0; {{#items}} {{^isModel}} {{#isEnum}} - char* {{name}}{{classname}}_ToString({{name}}_e {{name}}){ - char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; - return {{name}}Array[{{name}} - 1]; - } +char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}) { + char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + return {{name}}Array[{{name}} - 1]; +} - {{name}}_e {{name}}{{classname}}_FromString(char* {{name}}){ +{{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{classname}}_FromString(char* {{name}}) { int stringToReturn = 0; - char *{{name}}Array[] = { {{#allowableValues}}{{#enumVars}}"{{{value}}}"{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} }; + char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; size_t sizeofArray = sizeof({{name}}Array) / sizeof({{name}}Array[0]); while(stringToReturn < sizeofArray) { if(strcmp({{name}}, {{name}}Array[stringToReturn]) == 0) { @@ -114,7 +112,7 @@ return 0; stringToReturn++; } return 0; - } +} {{/isEnum}} {{/isModel}} {{/items}} @@ -127,7 +125,7 @@ return 0; {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatype}}_e {{name}}{{#hasMore}},{{/hasMore}} + {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{^isEnum}} {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} @@ -152,7 +150,7 @@ return 0; {{/isBoolean}} {{#isEnum}} {{#isString}} - {{name}}_e {{name}}{{#hasMore}},{{/hasMore}} + {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{^isEnum}} @@ -409,7 +407,7 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) { listEntry_t *{{{name}}}ListEntry; if ({{{classname}}}->{{{name}}}) { list_ForEach({{{name}}}ListEntry, {{classname}}->{{{name}}}) { - cJSON *itemLocal = {{complexType}}_convertToJSON({{#isEnum}}{{#items}}({{datatypeWithEnum}}_e){{/items}}{{/isEnum}}{{{name}}}ListEntry->data); + cJSON *itemLocal = {{complexType}}_convertToJSON({{#isEnum}}{{#items}}({{projectName}}_{{classVarName}}_{{enumName}}_e){{/items}}{{/isEnum}}{{{name}}}ListEntry->data); if(itemLocal == NULL) { goto fail; } @@ -490,7 +488,7 @@ fail: {{/isBoolean}} {{#isEnum}} {{#isString}} - {{{name}}}_e {{name}}Variable; + {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}Variable; {{^required}}if ({{{name}}}) { {{/required}} if(!cJSON_IsString({{{name}}})) { @@ -548,7 +546,7 @@ fail: {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatypeWithEnum}}_e {{name}}_local_nonprim_enum; + {{classFilename}}_{{datatypeWithEnum}}_e {{name}}_local_nonprim_enum; {{^required}}if ({{{name}}}) { {{/required}} {{{name}}}_local_nonprim_enum = {{datatypeWithEnum}}_parseFromJSON({{{name}}}); //enum model {{/isEnum}} @@ -625,7 +623,7 @@ fail: if(!cJSON_IsObject({{{name}}}_local_nonprimitive)){ goto end; } - {{#isEnum}}{{#items}}{{datatypeWithEnum}}_e {{/items}}{{/isEnum}}{{^isEnum}}{{complexType}}_t *{{/isEnum}}{{{name}}}Item = {{complexType}}_parseFromJSON({{{name}}}_local_nonprimitive); + {{#isEnum}}{{#items}}{{classFilename}}_{{datatypeWithEnum}}_e {{/items}}{{/isEnum}}{{^isEnum}}{{complexType}}_t *{{/isEnum}}{{{name}}}Item = {{complexType}}_parseFromJSON({{{name}}}_local_nonprimitive); list_addElement({{{name}}}List, {{#isEnum}}{{#items}}(void *){{/items}}{{/isEnum}}{{{name}}}Item); } 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 28817ccd91e8..03a03276f66e 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 @@ -16,18 +16,19 @@ {{/imports}} {{#isEnum}} - {{#allowableValues}} -typedef enum { {{#enumVars}} {{{value}}}{{#first}} = 0{{/first}}{{^-last}},{{/-last}}{{/enumVars}} } {{classname}}_e; +// Enum {{enumName}} for {{classVarName}} + +typedef enum { {{projectName}}_{{classVarName}}_{{enumName}}_NULL = 0{{#enumVars}}, {{projectName}}_{{classVarName}}_{{enumName}}_{{{value}}}{{/enumVars}} } {{projectName}}_{{classVarName}}_{{enumName}}_e; {{/allowableValues}} -char* {{classname}}_ToString({{classname}}_e {{classname}}); +char* {{classFilename}}_{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}); -{{classname}}_e {{classname}}_FromString(char* {{classname}}); +{{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{classname}}_FromString(char* {{classname}}); -cJSON *{{classname}}_convertToJSON({{classname}}_e {{classname}}); +//cJSON *{{classFilename}}_{{classname}}_convertToJSON({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}); -{{classname}}_e {{classname}}_parseFromJSON(cJSON *{{classname}}JSON); +//{{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{classname}}_parseFromJSON(cJSON *{{classname}}JSON); {{/isEnum}} {{^isEnum}} @@ -35,13 +36,16 @@ cJSON *{{classname}}_convertToJSON({{classname}}_e {{classname}}); {{^isContainer}} {{^isModel}} {{#isEnum}} +// Enum {{enumName}} for {{classVarName}} + {{#allowableValues}} - typedef enum { {{#enumVars}} {{{value}}}{{#first}} = 0{{/first}}{{^-last}},{{/-last}}{{/enumVars}} } {{name}}_e; +typedef enum { {{projectName}}_{{classVarName}}_{{enumName}}_NULL = 0{{#enumVars}}, {{projectName}}_{{classVarName}}_{{enumName}}_{{{value}}}{{/enumVars}} } {{projectName}}_{{classVarName}}_{{enumName}}_e; {{/allowableValues}} - char* {{name}}_ToString({{name}}_e {{name}}); +char* {{classFilename}}_{{name}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}); + +{{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{name}}_FromString(char* {{name}}); - {{name}}_e {{name}}_FromString(char* {{name}}); {{/isEnum}} {{/isModel}} {{/isContainer}} @@ -49,13 +53,16 @@ cJSON *{{classname}}_convertToJSON({{classname}}_e {{classname}}); {{#items}} {{^isModel}} {{#isEnum}} +// Enum {{enumName}} for {{classVarName}} + {{#allowableValues}} - typedef enum { {{#enumVars}} {{{value}}}{{^-last}},{{/-last}}{{/enumVars}} } {{name}}_e; +typedef enum { {{projectName}}_{{classVarName}}_{{enumName}}_NULL = 0{{#enumVars}}, {{projectName}}_{{classVarName}}_{{enumName}}_{{{value}}}{{/enumVars}} } {{projectName}}_{{classVarName}}_{{enumName}}_e; {{/allowableValues}} - char* {{name}}_ToString({{name}}_e {{name}}); +char* {{classFilename}}_{{name}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}); + +{{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{name}}_FromString(char* {{name}}); - {{name}}_e {{name}}_FromString(char* {{name}}); {{/isEnum}} {{/isModel}} {{/items}} @@ -69,7 +76,7 @@ typedef struct {{classname}}_t { {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatype}}_e {{name}}; //enum model + {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}; //enum model {{/isEnum}} {{^isEnum}} struct {{datatype}}_t *{{name}}; //model @@ -94,7 +101,7 @@ typedef struct {{classname}}_t { {{/isBoolean}} {{#isEnum}} {{#isString}} - {{name}}_e {{name}}; //enum + {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}; //enum {{/isString}} {{/isEnum}} {{^isEnum}} @@ -139,7 +146,7 @@ typedef struct {{classname}}_t { {{^isPrimitiveType}} {{#isModel}} {{#isEnum}} - {{datatype}}_e {{name}}{{#hasMore}},{{/hasMore}} + {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isEnum}} {{^isEnum}} {{datatype}}_t *{{name}}{{#hasMore}},{{/hasMore}} @@ -164,7 +171,7 @@ typedef struct {{classname}}_t { {{/isBoolean}} {{#isEnum}} {{#isString}} - {{name}}_e {{name}}{{#hasMore}},{{/hasMore}} + {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{#hasMore}},{{/hasMore}} {{/isString}} {{/isEnum}} {{^isEnum}} diff --git a/samples/client/petstore/c/api/PetAPI.c b/samples/client/petstore/c/api/PetAPI.c index 593839286420..5dc27c6bbf59 100644 --- a/samples/client/petstore/c/api/PetAPI.c +++ b/samples/client/petstore/c/api/PetAPI.c @@ -11,10 +11,54 @@ snprintf(dst, 256, "%ld", (long int)(src));\ }while(0) +// Functions for enum STATUS for PetAPI_findPetsByStatus + +static char* findPetsByStatus_STATUS_ToString(openapi_petstore_findPetsByStatus_status_e STATUS){ + char *STATUSArray[] = { "NULL", "available", "pending", "sold" }; + return STATUSArray[STATUS]; +} + +static openapi_petstore_findPetsByStatus_status_e findPetsByStatus_STATUS_FromString(char* STATUS){ + int stringToReturn = 0; + char *STATUSArray[] = { "NULL", "available", "pending", "sold" }; + size_t sizeofArray = sizeof(STATUSArray) / sizeof(STATUSArray[0]); + while(stringToReturn < sizeofArray) { + if(strcmp(STATUS, STATUSArray[stringToReturn]) == 0) { + return stringToReturn; + } + stringToReturn++; + } + return 0; +} + +/* +// Function findPetsByStatus_STATUS_convertToJSON is not currently used, +// since conversion to JSON passes through the conversion of the model, and ToString. The function is kept for future reference. +// +static cJSON *findPetsByStatus_STATUS_convertToJSON(openapi_petstore_findPetsByStatus_status_e STATUS) { + cJSON *item = cJSON_CreateObject(); + return item; + fail: + cJSON_Delete(item); + return NULL; +} + +// Function findPetsByStatus_STATUS_parseFromJSON is not currently used, +// since conversion from JSON passes through the conversion of the model, and FromString. The function is kept for future reference. +// +static openapi_petstore_findPetsByStatus_status_e findPetsByStatus_STATUS_parseFromJSON(cJSON* STATUSJSON) { + openapi_petstore_findPetsByStatus_status_e STATUSVariable = 0; + return STATUSVariable; +end: + return 0; +} +*/ + + // Add a new pet to the store // void -PetAPI_addPet(apiClient_t *apiClient ,pet_t * body) +PetAPI_addPet(apiClient_t *apiClient, pet_t * body) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -73,7 +117,7 @@ PetAPI_addPet(apiClient_t *apiClient ,pet_t * body) // Deletes a pet // void -PetAPI_deletePet(apiClient_t *apiClient ,long petId ,char * api_key) +PetAPI_deletePet(apiClient_t *apiClient, long petId, char * api_key) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = list_create(); @@ -151,7 +195,7 @@ PetAPI_deletePet(apiClient_t *apiClient ,long petId ,char * api_key) // Multiple status values can be provided with comma separated strings // list_t* -PetAPI_findPetsByStatus(apiClient_t *apiClient ,list_t * status) +PetAPI_findPetsByStatus(apiClient_t *apiClient, list_t * status) { list_t *localVarQueryParameters = list_create(); list_t *localVarHeaderParameters = NULL; @@ -230,7 +274,7 @@ PetAPI_findPetsByStatus(apiClient_t *apiClient ,list_t * status) // Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. // list_t* -PetAPI_findPetsByTags(apiClient_t *apiClient ,list_t * tags) +PetAPI_findPetsByTags(apiClient_t *apiClient, list_t * tags) { list_t *localVarQueryParameters = list_create(); list_t *localVarHeaderParameters = NULL; @@ -309,7 +353,7 @@ PetAPI_findPetsByTags(apiClient_t *apiClient ,list_t * tags) // Returns a single pet // pet_t* -PetAPI_getPetById(apiClient_t *apiClient ,long petId) +PetAPI_getPetById(apiClient_t *apiClient, long petId) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -388,7 +432,7 @@ PetAPI_getPetById(apiClient_t *apiClient ,long petId) // Update an existing pet // void -PetAPI_updatePet(apiClient_t *apiClient ,pet_t * body) +PetAPI_updatePet(apiClient_t *apiClient, pet_t * body) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -453,7 +497,7 @@ PetAPI_updatePet(apiClient_t *apiClient ,pet_t * body) // Updates a pet in the store with form data // void -PetAPI_updatePetWithForm(apiClient_t *apiClient ,long petId ,char * name ,char * status) +PetAPI_updatePetWithForm(apiClient_t *apiClient, long petId, char * name, char * status) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -545,7 +589,7 @@ PetAPI_updatePetWithForm(apiClient_t *apiClient ,long petId ,char * name ,char * // uploads an image // api_response_t* -PetAPI_uploadFile(apiClient_t *apiClient ,long petId ,char * additionalMetadata ,binary_t* file) +PetAPI_uploadFile(apiClient_t *apiClient, long petId, char * additionalMetadata, binary_t* file) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; diff --git a/samples/client/petstore/c/api/PetAPI.h b/samples/client/petstore/c/api/PetAPI.h index 5cb6c9de2c65..b4bfc6cdf9cd 100644 --- a/samples/client/petstore/c/api/PetAPI.h +++ b/samples/client/petstore/c/api/PetAPI.h @@ -7,6 +7,9 @@ #include "../model/api_response.h" #include "../model/pet.h" +// Enum STATUS for PetAPI_findPetsByStatus +typedef enum { openapi_petstore_findPetsByStatus_STATUS_NULL = 0, openapi_petstore_findPetsByStatus_STATUS_available, openapi_petstore_findPetsByStatus_STATUS_pending, openapi_petstore_findPetsByStatus_STATUS_sold } openapi_petstore_findPetsByStatus_status_e; + // Add a new pet to the store // diff --git a/samples/client/petstore/c/api/StoreAPI.c b/samples/client/petstore/c/api/StoreAPI.c index 0a4a3a37fedb..d8d4778e7bea 100644 --- a/samples/client/petstore/c/api/StoreAPI.c +++ b/samples/client/petstore/c/api/StoreAPI.c @@ -11,12 +11,13 @@ snprintf(dst, 256, "%ld", (long int)(src));\ }while(0) + // Delete purchase order by ID // // For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors // void -StoreAPI_deleteOrder(apiClient_t *apiClient ,char * orderId) +StoreAPI_deleteOrder(apiClient_t *apiClient, char * orderId) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -138,7 +139,7 @@ StoreAPI_getInventory(apiClient_t *apiClient) // For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions // order_t* -StoreAPI_getOrderById(apiClient_t *apiClient ,long orderId) +StoreAPI_getOrderById(apiClient_t *apiClient, long orderId) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -217,7 +218,7 @@ StoreAPI_getOrderById(apiClient_t *apiClient ,long orderId) // Place an order for a pet // order_t* -StoreAPI_placeOrder(apiClient_t *apiClient ,order_t * body) +StoreAPI_placeOrder(apiClient_t *apiClient, order_t * body) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; diff --git a/samples/client/petstore/c/api/UserAPI.c b/samples/client/petstore/c/api/UserAPI.c index 28f8c8b8c935..2bb91981179e 100644 --- a/samples/client/petstore/c/api/UserAPI.c +++ b/samples/client/petstore/c/api/UserAPI.c @@ -11,12 +11,13 @@ snprintf(dst, 256, "%ld", (long int)(src));\ }while(0) + // Create user // // This can only be done by the logged in user. // void -UserAPI_createUser(apiClient_t *apiClient ,user_t * body) +UserAPI_createUser(apiClient_t *apiClient, user_t * body) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -73,7 +74,7 @@ UserAPI_createUser(apiClient_t *apiClient ,user_t * body) // Creates list of users with given input array // void -UserAPI_createUsersWithArrayInput(apiClient_t *apiClient ,list_t * body) +UserAPI_createUsersWithArrayInput(apiClient_t *apiClient, list_t * body) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -152,7 +153,7 @@ UserAPI_createUsersWithArrayInput(apiClient_t *apiClient ,list_t * body) // Creates list of users with given input array // void -UserAPI_createUsersWithListInput(apiClient_t *apiClient ,list_t * body) +UserAPI_createUsersWithListInput(apiClient_t *apiClient, list_t * body) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -233,7 +234,7 @@ UserAPI_createUsersWithListInput(apiClient_t *apiClient ,list_t * body) // This can only be done by the logged in user. // void -UserAPI_deleteUser(apiClient_t *apiClient ,char * username) +UserAPI_deleteUser(apiClient_t *apiClient, char * username) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -293,7 +294,7 @@ UserAPI_deleteUser(apiClient_t *apiClient ,char * username) // Get user by user name // user_t* -UserAPI_getUserByName(apiClient_t *apiClient ,char * username) +UserAPI_getUserByName(apiClient_t *apiClient, char * username) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; @@ -368,7 +369,7 @@ UserAPI_getUserByName(apiClient_t *apiClient ,char * username) // Logs user into the system // char* -UserAPI_loginUser(apiClient_t *apiClient ,char * username ,char * password) +UserAPI_loginUser(apiClient_t *apiClient, char * username, char * password) { list_t *localVarQueryParameters = list_create(); list_t *localVarHeaderParameters = NULL; @@ -519,7 +520,7 @@ UserAPI_logoutUser(apiClient_t *apiClient) // This can only be done by the logged in user. // void -UserAPI_updateUser(apiClient_t *apiClient ,char * username ,user_t * body) +UserAPI_updateUser(apiClient_t *apiClient, char * username, user_t * body) { list_t *localVarQueryParameters = NULL; list_t *localVarHeaderParameters = NULL; diff --git a/samples/client/petstore/c/model/order.c b/samples/client/petstore/c/model/order.c index c4b866541183..a9216f78348d 100644 --- a/samples/client/petstore/c/model/order.c +++ b/samples/client/petstore/c/model/order.c @@ -4,14 +4,14 @@ #include "order.h" - char* statusorder_ToString(status_e status){ - char *statusArray[] = { "placed","approved","delivered" }; - return statusArray[status]; - } +char* statusorder_ToString(openapi_petstore_order_STATUS_e status) { + char* statusArray[] = { "NULL", "placed", "approved", "delivered" }; + return statusArray[status]; +} - status_e statusorder_FromString(char* status){ +openapi_petstore_order_STATUS_e statusorder_FromString(char* status){ int stringToReturn = 0; - char *statusArray[] = { "placed","approved","delivered" }; + char *statusArray[] = { "NULL", "placed", "approved", "delivered" }; size_t sizeofArray = sizeof(statusArray) / sizeof(statusArray[0]); while(stringToReturn < sizeofArray) { if(strcmp(status, statusArray[stringToReturn]) == 0) { @@ -20,14 +20,14 @@ stringToReturn++; } return 0; - } +} order_t *order_create( long id, long pet_id, int quantity, char *ship_date, - status_e status, + openapi_petstore_order_STATUS_e status, int complete ) { order_t *order_local_var = malloc(sizeof(order_t)); @@ -152,7 +152,7 @@ order_t *order_parseFromJSON(cJSON *orderJSON){ // order->status cJSON *status = cJSON_GetObjectItemCaseSensitive(orderJSON, "status"); - status_e statusVariable; + openapi_petstore_order_STATUS_e statusVariable; if (status) { if(!cJSON_IsString(status)) { diff --git a/samples/client/petstore/c/model/order.h b/samples/client/petstore/c/model/order.h index 35458e07df5f..d09836034210 100644 --- a/samples/client/petstore/c/model/order.h +++ b/samples/client/petstore/c/model/order.h @@ -12,11 +12,14 @@ #include "../include/list.h" #include "../include/keyValuePair.h" - typedef enum { placed, approved, delivered } status_e; +// Enum STATUS for order - char* status_ToString(status_e status); +typedef enum { openapi_petstore_order_STATUS_NULL = 0, openapi_petstore_order_STATUS_placed, openapi_petstore_order_STATUS_approved, openapi_petstore_order_STATUS_delivered } openapi_petstore_order_STATUS_e; + +char* order_status_ToString(openapi_petstore_order_STATUS_e status); + +openapi_petstore_order_STATUS_e order_status_FromString(char* status); - status_e status_FromString(char* status); typedef struct order_t { @@ -24,7 +27,7 @@ typedef struct order_t { long pet_id; //numeric int quantity; //numeric char *ship_date; //date time - status_e status; //enum + openapi_petstore_order_STATUS_e status; //enum int complete; //boolean } order_t; @@ -34,7 +37,7 @@ order_t *order_create( long pet_id, int quantity, char *ship_date, - status_e status, + openapi_petstore_order_STATUS_e status, int complete ); diff --git a/samples/client/petstore/c/model/pet.c b/samples/client/petstore/c/model/pet.c index af321141f7d7..1765e45c1763 100644 --- a/samples/client/petstore/c/model/pet.c +++ b/samples/client/petstore/c/model/pet.c @@ -4,14 +4,14 @@ #include "pet.h" - char* statuspet_ToString(status_e status){ - char *statusArray[] = { "available","pending","sold" }; - return statusArray[status]; - } +char* statuspet_ToString(openapi_petstore_pet_STATUS_e status) { + char* statusArray[] = { "NULL", "available", "pending", "sold" }; + return statusArray[status]; +} - status_e statuspet_FromString(char* status){ +openapi_petstore_pet_STATUS_e statuspet_FromString(char* status){ int stringToReturn = 0; - char *statusArray[] = { "available","pending","sold" }; + char *statusArray[] = { "NULL", "available", "pending", "sold" }; size_t sizeofArray = sizeof(statusArray) / sizeof(statusArray[0]); while(stringToReturn < sizeofArray) { if(strcmp(status, statusArray[stringToReturn]) == 0) { @@ -20,7 +20,7 @@ stringToReturn++; } return 0; - } +} pet_t *pet_create( long id, @@ -28,7 +28,7 @@ pet_t *pet_create( char *name, list_t *photo_urls, list_t *tags, - status_e status + openapi_petstore_pet_STATUS_e status ) { pet_t *pet_local_var = malloc(sizeof(pet_t)); if (!pet_local_var) { @@ -228,7 +228,7 @@ pet_t *pet_parseFromJSON(cJSON *petJSON){ // pet->status cJSON *status = cJSON_GetObjectItemCaseSensitive(petJSON, "status"); - status_e statusVariable; + openapi_petstore_pet_STATUS_e statusVariable; if (status) { if(!cJSON_IsString(status)) { diff --git a/samples/client/petstore/c/model/pet.h b/samples/client/petstore/c/model/pet.h index e8c0aac854d0..bced36bcdf2a 100644 --- a/samples/client/petstore/c/model/pet.h +++ b/samples/client/petstore/c/model/pet.h @@ -14,11 +14,14 @@ #include "category.h" #include "tag.h" - typedef enum { available, pending, sold } status_e; +// Enum STATUS for pet - char* status_ToString(status_e status); +typedef enum { openapi_petstore_pet_STATUS_NULL = 0, openapi_petstore_pet_STATUS_available, openapi_petstore_pet_STATUS_pending, openapi_petstore_pet_STATUS_sold } openapi_petstore_pet_STATUS_e; + +char* pet_status_ToString(openapi_petstore_pet_STATUS_e status); + +openapi_petstore_pet_STATUS_e pet_status_FromString(char* status); - status_e status_FromString(char* status); typedef struct pet_t { @@ -27,7 +30,7 @@ typedef struct pet_t { char *name; // string list_t *photo_urls; //primitive container list_t *tags; //nonprimitive container - status_e status; //enum + openapi_petstore_pet_STATUS_e status; //enum } pet_t; @@ -37,7 +40,7 @@ pet_t *pet_create( char *name, list_t *photo_urls, list_t *tags, - status_e status + openapi_petstore_pet_STATUS_e status ); void pet_free(pet_t *pet);