Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
io.joynr.generator.cpp.provider.InterfaceRequestInterpreterCppTemplate Maven / Gradle / Ivy
package io.joynr.generator.cpp.provider;
import com.google.inject.Inject;
import io.joynr.generator.cpp.util.CppStdTypeUtil;
import io.joynr.generator.cpp.util.DatatypeSystemTransformation;
import io.joynr.generator.cpp.util.JoynrCppGeneratorExtensions;
import io.joynr.generator.cpp.util.QtTypeUtil;
import io.joynr.generator.cpp.util.TemplateBase;
import io.joynr.generator.util.InterfaceTemplate;
import java.util.Set;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.StringExtensions;
import org.franca.core.franca.FArgument;
import org.franca.core.franca.FAttribute;
import org.franca.core.franca.FInterface;
import org.franca.core.franca.FMethod;
import org.franca.core.franca.FType;
import org.franca.core.franca.FTypeRef;
@SuppressWarnings("all")
public class InterfaceRequestInterpreterCppTemplate implements InterfaceTemplate {
@Inject
@Extension
private TemplateBase _templateBase;
@Inject
private CppStdTypeUtil cppStdTypeUtil;
@Inject
private QtTypeUtil qtTypeUtil;
@Inject
@Extension
private JoynrCppGeneratorExtensions _joynrCppGeneratorExtensions;
public CharSequence generate(final FInterface serviceInterface) {
StringConcatenation _builder = new StringConcatenation();
final String interfaceName = this._joynrCppGeneratorExtensions.joynrName(serviceInterface);
_builder.newLineIfNotEmpty();
CharSequence _warning = this._templateBase.warning();
_builder.append(_warning, "");
_builder.newLineIfNotEmpty();
_builder.append("#include ");
_builder.newLine();
_builder.newLine();
_builder.append("#include \"");
String _packagePathWithJoynrPrefix = this._joynrCppGeneratorExtensions.getPackagePathWithJoynrPrefix(serviceInterface, "/");
_builder.append(_packagePathWithJoynrPrefix, "");
_builder.append("/");
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter.h\"");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("#include \"joynr/Request.h\"");
_builder.newLine();
_builder.append("#include \"");
String _packagePathWithJoynrPrefix_1 = this._joynrCppGeneratorExtensions.getPackagePathWithJoynrPrefix(serviceInterface, "/");
_builder.append(_packagePathWithJoynrPrefix_1, "");
_builder.append("/");
_builder.append(interfaceName, "");
_builder.append("RequestCaller.h\"");
_builder.newLineIfNotEmpty();
_builder.append("#include \"joynr/DeclareMetatypeUtil.h\"");
_builder.newLine();
_builder.append("#include \"joynr/Util.h\"");
_builder.newLine();
_builder.append("#include \"joynr/TypeUtil.h\"");
_builder.newLine();
_builder.append("#include \"joynr/RequestStatus.h\"");
_builder.newLine();
_builder.append("#include ");
_builder.newLine();
_builder.newLine();
{
Set _requiredIncludesFor = this.qtTypeUtil.getRequiredIncludesFor(serviceInterface);
for(final String parameterType : _requiredIncludesFor) {
_builder.append("#include ");
_builder.append(parameterType, "");
_builder.newLineIfNotEmpty();
}
}
_builder.newLine();
String _namespaceStarter = this._joynrCppGeneratorExtensions.getNamespaceStarter(serviceInterface);
_builder.append(_namespaceStarter, "");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("joynr::joynr_logging::Logger* ");
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter::logger = joynr::joynr_logging::Logging::getInstance()->getLogger(\"SDMO\", \"");
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter\");");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter::");
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter()");
_builder.newLineIfNotEmpty();
_builder.append("{");
_builder.newLine();
{
Iterable _allComplexAndEnumTypes = this._joynrCppGeneratorExtensions.getAllComplexAndEnumTypes(serviceInterface);
for(final Object datatype : _allComplexAndEnumTypes) {
{
if ((datatype instanceof FType)) {
_builder.append("\t");
String _typeName = this.qtTypeUtil.getTypeName(((FType)datatype));
String _registerMetatypeStatement = this.qtTypeUtil.registerMetatypeStatement(_typeName);
_builder.append(_registerMetatypeStatement, "\t");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.append("}");
_builder.newLine();
_builder.newLine();
String _firstLower = StringExtensions.toFirstLower(interfaceName);
final String requestCallerName = (_firstLower + "RequestCallerVar");
_builder.newLineIfNotEmpty();
final EList attributes = this._joynrCppGeneratorExtensions.getAttributes(serviceInterface);
_builder.newLineIfNotEmpty();
final EList methods = this._joynrCppGeneratorExtensions.getMethods(serviceInterface);
_builder.newLineIfNotEmpty();
_builder.append("void ");
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter::execute(");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("QSharedPointer requestCaller,");
_builder.newLine();
_builder.append("\t\t");
_builder.append("const QString& methodName,");
_builder.newLine();
_builder.append("\t\t");
_builder.append("const QList& paramValues,");
_builder.newLine();
_builder.append("\t\t");
_builder.append("const QList& paramTypes,");
_builder.newLine();
_builder.append("\t\t");
_builder.append("std::function&)> callbackFct");
_builder.newLine();
_builder.append(") {");
_builder.newLine();
_builder.append("\t");
_builder.append("Q_UNUSED(paramValues);//if all methods of the interface are empty, the paramValues would not be used and give a warning.");
_builder.newLine();
_builder.append("\t");
_builder.append("Q_UNUSED(paramTypes);//if all methods of the interface are empty, the paramTypes would not be used and give a warning.");
_builder.newLine();
_builder.append("\t");
_builder.append("// cast generic RequestCaller to ");
_builder.append(interfaceName, "\t");
_builder.append("Requestcaller");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("QSharedPointer<");
_builder.append(interfaceName, "\t");
_builder.append("RequestCaller> ");
_builder.append(requestCallerName, "\t");
_builder.append(" =");
_builder.newLineIfNotEmpty();
_builder.append("\t\t\t");
_builder.append("requestCaller.dynamicCast<");
_builder.append(interfaceName, "\t\t\t");
_builder.append("RequestCaller>();");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("\t");
_builder.append("// execute operation");
_builder.newLine();
{
boolean _isEmpty = attributes.isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
{
for(final FAttribute attribute : attributes) {
_builder.append("\t");
_builder.append("\t");
final String attributeName = this._joynrCppGeneratorExtensions.joynrName(attribute);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
final String returnType = this.cppStdTypeUtil.getTypeName(attribute);
_builder.newLineIfNotEmpty();
{
boolean _isReadable = this._joynrCppGeneratorExtensions.isReadable(attribute);
if (_isReadable) {
_builder.append("\t");
_builder.append("if (methodName == \"get");
String _firstUpper = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper, "\t");
_builder.append("\"){");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("std::function onSuccess =");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t");
_builder.append("[callbackFct] (");
_builder.append(returnType, "\t\t\t\t");
_builder.append(" ");
_builder.append(attributeName, "\t\t\t\t");
_builder.append(") {");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t\t");
final String convertedAttribute = this.qtTypeUtil.fromStdTypeToQTType(attribute, attributeName, true);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("QVariant singleOutParam(");
{
boolean _isArray = this._joynrCppGeneratorExtensions.isArray(attribute);
if (_isArray) {
_builder.append("joynr::Util::convertListToVariantList<");
FTypeRef _type = attribute.getType();
String _typeName_1 = this.qtTypeUtil.getTypeName(_type);
_builder.append(_typeName_1, "\t\t\t\t\t");
_builder.append(">(");
_builder.append(convertedAttribute, "\t\t\t\t\t");
_builder.append(")");
} else {
_builder.append("QVariant::fromValue(");
_builder.append(convertedAttribute, "\t\t\t\t\t");
_builder.append(")");
}
}
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("QList outParams;");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("outParams.insert(0, singleOutParam);");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("callbackFct(outParams);");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t");
_builder.append("};");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append(requestCallerName, "\t\t");
_builder.append("->get");
String _firstUpper_1 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_1, "\t\t");
_builder.append("(onSuccess);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("return;");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
}
}
{
boolean _isWritable = this._joynrCppGeneratorExtensions.isWritable(attribute);
if (_isWritable) {
_builder.append("\t");
_builder.append("if (methodName == \"set");
String _firstUpper_2 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_2, "\t");
_builder.append("\" && paramTypes.size() == 1){");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QVariant ");
_builder.append(attributeName, "\t\t");
_builder.append("QVar(paramValues.at(0));");
_builder.newLineIfNotEmpty();
{
FTypeRef _type_1 = attribute.getType();
boolean _isEnum = this._joynrCppGeneratorExtensions.isEnum(_type_1);
if (_isEnum) {
_builder.append("\t");
_builder.append("\t");
String _typeName_2 = this.qtTypeUtil.getTypeName(attribute);
_builder.append(_typeName_2, "\t\t");
_builder.append(" typedInput");
String _firstUpper_3 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_3, "\t\t");
_builder.append(" = ");
String _joynrGenerationPrefix = this._joynrCppGeneratorExtensions.getJoynrGenerationPrefix();
_builder.append(_joynrGenerationPrefix, "\t\t");
_builder.append("::Util::convertVariantToEnum<");
FTypeRef _type_2 = attribute.getType();
String _enumContainer = this._joynrCppGeneratorExtensions.getEnumContainer(_type_2);
_builder.append(_enumContainer, "\t\t");
_builder.append(">(");
_builder.append(attributeName, "\t\t");
_builder.append("QVar);");
_builder.newLineIfNotEmpty();
} else {
boolean _and = false;
FTypeRef _type_3 = attribute.getType();
boolean _isEnum_1 = this._joynrCppGeneratorExtensions.isEnum(_type_3);
if (!_isEnum_1) {
_and = false;
} else {
boolean _isArray_1 = this._joynrCppGeneratorExtensions.isArray(attribute);
_and = _isArray_1;
}
if (_and) {
_builder.append("\t");
_builder.append("\t");
String _joynrGenerationPrefix_1 = this._joynrCppGeneratorExtensions.getJoynrGenerationPrefix();
String _plus = (_joynrGenerationPrefix_1 + "::Util::convertVariantListToEnumList<");
FTypeRef _type_4 = attribute.getType();
String _enumContainer_1 = this._joynrCppGeneratorExtensions.getEnumContainer(_type_4);
String _plus_1 = (_plus + _enumContainer_1);
String _plus_2 = (_plus_1 + ">(");
String _plus_3 = (_plus_2 + attributeName);
final String attributeRef = (_plus_3 + "QVar.toList())");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _typeName_3 = this.qtTypeUtil.getTypeName(attribute);
_builder.append(_typeName_3, "\t\t");
_builder.append(" typedInput");
String _firstUpper_4 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_4, "\t\t");
_builder.append(" =");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
_builder.append(attributeRef, "\t\t\t");
_builder.append(";");
_builder.newLineIfNotEmpty();
} else {
boolean _isArray_2 = this._joynrCppGeneratorExtensions.isArray(attribute);
if (_isArray_2) {
_builder.append("\t");
_builder.append("\t");
String _joynrGenerationPrefix_2 = this._joynrCppGeneratorExtensions.getJoynrGenerationPrefix();
String _plus_4 = (_joynrGenerationPrefix_2 + "::Util::convertVariantListToList<");
FTypeRef _type_5 = attribute.getType();
String _typeName_4 = this.qtTypeUtil.getTypeName(_type_5);
String _plus_5 = (_plus_4 + _typeName_4);
final String attributeRef_1 = (_plus_5 + ">(paramQList)");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("assert(");
_builder.append(attributeName, "\t\t");
_builder.append("QVar.canConvert >());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QList paramQList = ");
_builder.append(attributeName, "\t\t");
_builder.append("QVar.value >();");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _typeName_5 = this.qtTypeUtil.getTypeName(attribute);
_builder.append(_typeName_5, "\t\t");
_builder.append(" typedInput");
String _firstUpper_5 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_5, "\t\t");
_builder.append(" = ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t\t");
_builder.append(attributeRef_1, "\t\t\t\t");
_builder.append(";");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t");
_builder.append("\t");
String _typeName_6 = this.qtTypeUtil.getTypeName(attribute);
String _plus_6 = ((attributeName + "QVar.value<") + _typeName_6);
final String attributeRef_2 = (_plus_6 + ">()");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("assert(");
_builder.append(attributeName, "\t\t");
_builder.append("QVar.canConvert<");
String _typeName_7 = this.qtTypeUtil.getTypeName(attribute);
_builder.append(_typeName_7, "\t\t");
_builder.append(">());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _typeName_8 = this.qtTypeUtil.getTypeName(attribute);
_builder.append(_typeName_8, "\t\t");
_builder.append(" typedInput");
String _firstUpper_6 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_6, "\t\t");
_builder.append(" =");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t\t");
_builder.append(attributeRef_2, "\t\t\t\t");
_builder.append(";");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.append("\t");
_builder.append("\t");
_builder.append("std::function onSuccess =");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t");
_builder.append("[callbackFct] () {");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("QList outParams;");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("callbackFct(outParams);");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t");
_builder.append("};");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append(requestCallerName, "\t\t");
_builder.append("->set");
String _firstUpper_7 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_7, "\t\t");
_builder.append("(");
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("typedInput");
String _firstUpper_8 = StringExtensions.toFirstUpper(attributeName);
_builder_1.append(_firstUpper_8, "");
String _fromQTTypeToStdType = this.qtTypeUtil.fromQTTypeToStdType(attribute, _builder_1.toString());
_builder.append(_fromQTTypeToStdType, "\t\t");
_builder.append(", onSuccess);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("return;");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
}
}
}
}
}
}
{
int _size = methods.size();
boolean _greaterThan = (_size > 0);
if (_greaterThan) {
{
EList _methods = this._joynrCppGeneratorExtensions.getMethods(serviceInterface);
for(final FMethod method : _methods) {
_builder.append("\t");
final String inputUntypedParamList = this.qtTypeUtil.getCommaSeperatedUntypedInputParameterList(method, DatatypeSystemTransformation.FROM_QT_TO_STANDARD);
_builder.newLineIfNotEmpty();
_builder.append("\t");
final String methodName = this._joynrCppGeneratorExtensions.joynrName(method);
_builder.newLineIfNotEmpty();
_builder.append("\t");
final Iterable inputParams = this._joynrCppGeneratorExtensions.getInputParameters(method);
_builder.newLineIfNotEmpty();
_builder.append("\t");
int iterator = (-1);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("if (methodName == \"");
_builder.append(methodName, "\t");
_builder.append("\" && paramTypes.size() == ");
int _size_1 = IterableExtensions.size(inputParams);
_builder.append(_size_1, "\t");
_builder.newLineIfNotEmpty();
{
for(final FArgument input : inputParams) {
_builder.append("\t");
_builder.append("\t");
_builder.append("&& paramTypes.at(");
_builder.append(iterator = (iterator + 1), "\t\t");
_builder.append(") == \"");
String _joynrTypeName = this._joynrCppGeneratorExtensions.getJoynrTypeName(input);
_builder.append(_joynrTypeName, "\t\t");
_builder.append("\"");
_builder.newLineIfNotEmpty();
}
}
_builder.append("\t");
_builder.append(") {");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
final String outputTypedParamList = this.cppStdTypeUtil.getCommaSeperatedTypedConstOutputParameterList(method);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("std::function onSuccess =");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t");
_builder.append("[callbackFct](");
_builder.append(outputTypedParamList, "\t\t\t\t");
_builder.append("){");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("QList outParams;");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t\t");
int index = 0;
_builder.newLineIfNotEmpty();
{
Iterable _outputParameters = this._joynrCppGeneratorExtensions.getOutputParameters(method);
for(final FArgument param : _outputParameters) {
_builder.append("\t");
_builder.append("\t\t\t\t");
String _joynrName = this._joynrCppGeneratorExtensions.joynrName(param);
final String convertedParameter = this.qtTypeUtil.fromStdTypeToQTType(param, _joynrName, true);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("outParams.insert(");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("\t\t");
int _plusPlus = index++;
_builder.append(_plusPlus, "\t\t\t\t\t\t\t");
_builder.append(",");
_builder.newLineIfNotEmpty();
{
boolean _isArray_3 = this._joynrCppGeneratorExtensions.isArray(param);
if (_isArray_3) {
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("\t\t");
_builder.append("joynr::Util::convertListToVariantList<");
FTypeRef _type_6 = param.getType();
String _typeName_9 = this.qtTypeUtil.getTypeName(_type_6);
_builder.append(_typeName_9, "\t\t\t\t\t\t\t");
_builder.append(">(");
_builder.append(convertedParameter, "\t\t\t\t\t\t\t");
_builder.append(")");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("\t\t");
_builder.append("QVariant::fromValue(");
_builder.append(convertedParameter, "\t\t\t\t\t\t\t");
_builder.append(")");
_builder.newLineIfNotEmpty();
}
}
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append(");");
_builder.newLine();
}
}
_builder.append("\t");
_builder.append("\t\t\t\t");
_builder.append("callbackFct(outParams);");
_builder.newLine();
_builder.append("\t");
_builder.append("\t\t\t");
_builder.append("};");
_builder.newLine();
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
int iterator2 = (-1);
_builder.newLineIfNotEmpty();
{
for(final FArgument input_1 : inputParams) {
_builder.append("\t");
_builder.append("\t");
final String inputName = this._joynrCppGeneratorExtensions.joynrName(input_1);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QVariant ");
_builder.append(inputName, "\t\t");
_builder.append("QVar(paramValues.at(");
_builder.append(iterator2 = (iterator2 + 1), "\t\t");
_builder.append("));");
_builder.newLineIfNotEmpty();
{
boolean _and_1 = false;
FTypeRef _type_7 = input_1.getType();
boolean _isEnum_2 = this._joynrCppGeneratorExtensions.isEnum(_type_7);
if (!_isEnum_2) {
_and_1 = false;
} else {
boolean _isArray_4 = this._joynrCppGeneratorExtensions.isArray(input_1);
_and_1 = _isArray_4;
}
if (_and_1) {
_builder.append("\t");
_builder.append("\t");
_builder.append("//isEnumArray");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
String _typeName_10 = this.qtTypeUtil.getTypeName(input_1);
_builder.append(_typeName_10, "\t\t");
_builder.append(" ");
_builder.append(inputName, "\t\t");
_builder.append(" =");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
String _joynrGenerationPrefix_3 = this._joynrCppGeneratorExtensions.getJoynrGenerationPrefix();
_builder.append(_joynrGenerationPrefix_3, "\t\t\t");
_builder.append("::Util::convertVariantListToEnumList<");
FTypeRef _type_8 = input_1.getType();
String _enumContainer_2 = this._joynrCppGeneratorExtensions.getEnumContainer(_type_8);
_builder.append(_enumContainer_2, "\t\t\t");
_builder.append("> (");
_builder.append(inputName, "\t\t\t");
_builder.append("QVar.toList());");
_builder.newLineIfNotEmpty();
} else {
FTypeRef _type_9 = input_1.getType();
boolean _isEnum_3 = this._joynrCppGeneratorExtensions.isEnum(_type_9);
if (_isEnum_3) {
_builder.append("\t");
_builder.append("\t");
_builder.append("//isEnum");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
String _typeName_11 = this.qtTypeUtil.getTypeName(input_1);
_builder.append(_typeName_11, "\t\t");
_builder.append(" ");
_builder.append(inputName, "\t\t");
_builder.append(" = ");
String _joynrGenerationPrefix_4 = this._joynrCppGeneratorExtensions.getJoynrGenerationPrefix();
_builder.append(_joynrGenerationPrefix_4, "\t\t");
_builder.append("::Util::convertVariantToEnum<");
FTypeRef _type_10 = input_1.getType();
String _enumContainer_3 = this._joynrCppGeneratorExtensions.getEnumContainer(_type_10);
_builder.append(_enumContainer_3, "\t\t");
_builder.append(">(");
_builder.append(inputName, "\t\t");
_builder.append("QVar);");
_builder.newLineIfNotEmpty();
} else {
boolean _isArray_5 = this._joynrCppGeneratorExtensions.isArray(input_1);
if (_isArray_5) {
_builder.append("\t");
_builder.append("\t");
_builder.append("//isArray");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append("assert(");
_builder.append(inputName, "\t\t");
_builder.append("QVar.canConvert >());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QList ");
_builder.append(inputName, "\t\t");
_builder.append("QVarList = ");
_builder.append(inputName, "\t\t");
_builder.append("QVar.value >();");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QList<");
FTypeRef _type_11 = input_1.getType();
String _typeName_12 = this.qtTypeUtil.getTypeName(_type_11);
_builder.append(_typeName_12, "\t\t");
_builder.append("> ");
_builder.append(inputName, "\t\t");
_builder.append(" = ");
String _joynrGenerationPrefix_5 = this._joynrCppGeneratorExtensions.getJoynrGenerationPrefix();
_builder.append(_joynrGenerationPrefix_5, "\t\t");
_builder.append("::Util::convertVariantListToList<");
FTypeRef _type_12 = input_1.getType();
String _typeName_13 = this.qtTypeUtil.getTypeName(_type_12);
_builder.append(_typeName_13, "\t\t");
_builder.append(">(");
_builder.append(inputName, "\t\t");
_builder.append("QVarList);");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t");
_builder.append("\t");
_builder.append("//");
String _typeName_14 = this.qtTypeUtil.getTypeName(input_1);
_builder.append(_typeName_14, "\t\t");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("assert(");
_builder.append(inputName, "\t\t");
_builder.append("QVar.canConvert<");
String _typeName_15 = this.qtTypeUtil.getTypeName(input_1);
_builder.append(_typeName_15, "\t\t");
_builder.append(">());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _typeName_16 = this.qtTypeUtil.getTypeName(input_1);
_builder.append(_typeName_16, "\t\t");
_builder.append(" ");
_builder.append(inputName, "\t\t");
_builder.append(" = ");
_builder.append(inputName, "\t\t");
_builder.append("QVar.value<");
String _typeName_17 = this.qtTypeUtil.getTypeName(input_1);
_builder.append(_typeName_17, "\t\t");
_builder.append(">();");
_builder.newLineIfNotEmpty();
}
}
}
}
}
}
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append(requestCallerName, "\t\t");
_builder.append("->");
_builder.append(methodName, "\t\t");
_builder.append("(");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t");
{
Iterable _inputParameters = this._joynrCppGeneratorExtensions.getInputParameters(method);
boolean _isEmpty_1 = IterableExtensions.isEmpty(_inputParameters);
boolean _not_1 = (!_isEmpty_1);
if (_not_1) {
_builder.append(inputUntypedParamList, "\t\t\t\t");
_builder.append(",");
}
}
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t\t\t");
_builder.append("onSuccess);");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append("return;");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
}
}
}
}
_builder.newLine();
_builder.append("\t");
_builder.append("LOG_FATAL(logger, \"unknown method name for interface ");
_builder.append(interfaceName, "\t");
_builder.append(": \" + methodName);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("assert(false);");
_builder.newLine();
_builder.append("\t");
_builder.append("QList outParams;");
_builder.newLine();
_builder.append("\t");
_builder.append("callbackFct(outParams);");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
String _namespaceEnder = this._joynrCppGeneratorExtensions.getNamespaceEnder(serviceInterface);
_builder.append(_namespaceEnder, "");
_builder.newLineIfNotEmpty();
return _builder;
}
}