diff --git a/languages/c/Types.mjs b/languages/c/Types.mjs index d8cae205..1ee99224 100644 --- a/languages/c/Types.mjs +++ b/languages/c/Types.mjs @@ -82,7 +82,7 @@ function union(schemas, module, commonSchemas) { //console.warn(`Ignoring "${key}" that is already present and same`) } else { console.warn(`ERROR "${key}" is not same -${JSON.stringify(result, null, 4)} ${key} ${result[key]} - ${value}`); - throw "ERROR: type is not same" + return {} } } else { //If the Key is a const then merge them into an enum @@ -325,8 +325,14 @@ function getSchemaTypeInfo(module = {}, json = {}, name = '', schemas = {}, pref } else if (json.anyOf) { let mergedSchema = getMergedSchema(module, json, name, schemas) - let prefixName = ((prefix.length > 0) && (!name.startsWith(prefix))) ? prefix : capitalize(name) - structure = getSchemaTypeInfo(module, mergedSchema, '', schemas, prefixName, options) + if (mergedSchema.type) { + let prefixName = ((prefix.length > 0) && (!name.startsWith(prefix))) ? prefix : capitalize(name) + structure = getSchemaTypeInfo(module, mergedSchema, '', schemas, prefixName, options) + } + else { + structure.type = fireboltString ? getFireboltStringType() : 'char*' + structure.json.type = 'string' + } } else if (json.type === 'object') { structure.json = json @@ -499,8 +505,10 @@ function getSchemaShapeInfo(json, module, schemas = {}, { name = '', prefix = '' else if (json.anyOf) { if (level > 0) { let mergedSchema = getMergedSchema(module, json, name, schemas) - let prefixName = ((prefix.length > 0) && (!name.startsWith(prefix))) ? prefix : capitalize(name) - shape += getSchemaShapeInfo(mergedSchema, module, schemas, { name, prefix: prefixName, merged, level, title, summary, descriptions, destination, section, enums }) + if (mergedSchema.type) { + let prefixName = ((prefix.length > 0) && (!name.startsWith(prefix))) ? prefix : capitalize(name) + shape += getSchemaShapeInfo(mergedSchema, module, schemas, { name, prefix: prefixName, merged, level, title, summary, descriptions, destination, section, enums }) + } } } else if (json.oneOf) { @@ -689,8 +697,13 @@ function getJsonTypeInfo(module = {}, json = {}, name = '', schemas, prefix = '' } else if (json.anyOf) { let mergedSchema = getMergedSchema(module, json, name, schemas) - let prefixName = ((prefix.length > 0) && (!name.startsWith(prefix))) ? prefix : capitalize(name) - structure = getJsonTypeInfo(module, mergedSchema, name, schemas, prefixName, {descriptions, level}) + if (mergedSchema.type) { + let prefixName = ((prefix.length > 0) && (!name.startsWith(prefix))) ? prefix : capitalize(name) + structure = getJsonTypeInfo(module, mergedSchema, name, schemas, prefixName, {descriptions, level}) + } + else { + structure.type = getJsonNativeTypeForOpaqueString() + } } else if (json.type === 'object') { if (hasProperties(json) !== true) { diff --git a/languages/c/src/types/JSONHelpers.mjs b/languages/c/src/types/JSONHelpers.mjs index 009beb99..954ac50d 100644 --- a/languages/c/src/types/JSONHelpers.mjs +++ b/languages/c/src/types/JSONHelpers.mjs @@ -4,7 +4,7 @@ const getJsonDataPrefix = () => 'JsonData_' const wpeJsonNameSpace = () => 'WPEFramework::Core::JSON' const getJsonDataStructName = (modName, name, prefix = '') => { - let result =((prefix.length > 0) && (prefix !== name)) ? `${capitalize(modName)}::${getJsonDataPrefix()}${capitalize(prefix)}${capitalize(name)}` : `${capitalize(modName)}::${getJsonDataPrefix()}${capitalize(name)}` + let result =((prefix && prefix.length > 0) && (prefix !== name)) ? `${capitalize(modName)}::${getJsonDataPrefix()}${capitalize(prefix)}${capitalize(name)}` : `${capitalize(modName)}::${getJsonDataPrefix()}${capitalize(name)}` return ((result.includes(wpeJsonNameSpace()) === true) ? result : `${getSdkNameSpace()}::${result}`) } diff --git a/languages/c/src/types/NativeHelpers.mjs b/languages/c/src/types/NativeHelpers.mjs index 8d00199e..3437c3f4 100644 --- a/languages/c/src/types/NativeHelpers.mjs +++ b/languages/c/src/types/NativeHelpers.mjs @@ -107,11 +107,11 @@ const getTypeName = (moduleName, varName, prefix = '', upperCase = false, capita let mName = upperCase ? moduleName.toUpperCase() : capitalize(moduleName) let vName = upperCase ? varName.toUpperCase() : capitalCase ? capitalize(varName) : varName - if (prefix.length > 0) { + if (prefix && prefix.length > 0) { prefix = (prefix !== varName) ? (upperCase ? prefix.toUpperCase() : capitalize(prefix)) : '' } - prefix = (prefix.length > 0) ?(upperCase ? prefix.toUpperCase() : capitalize(prefix)) : prefix - let name = (prefix.length > 0) ? `${mName}_${prefix}${vName}` : `${mName}_${vName}` + prefix = (prefix && prefix.length > 0) ?(upperCase ? prefix.toUpperCase() : capitalize(prefix)) : prefix + let name = (prefix && prefix.length > 0) ? `${mName}_${prefix}${vName}` : `${mName}_${vName}` return name }