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.common.base.Objects;
import com.google.inject.Inject;
import io.joynr.generator.cpp.util.JoynrCppGeneratorExtensions;
import io.joynr.generator.cpp.util.TemplateBase;
import java.util.HashSet;
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 {
@Inject
@Extension
private TemplateBase _templateBase;
@Inject
@Extension
private JoynrCppGeneratorExtensions _joynrCppGeneratorExtensions;
public CharSequence generate(final FInterface serviceInterface) {
CharSequence _xblockexpression = null;
{
final String interfaceName = this._joynrCppGeneratorExtensions.joynrName(serviceInterface);
StringConcatenation _builder = new StringConcatenation();
CharSequence _warning = this._templateBase.warning();
_builder.append(_warning, "");
_builder.newLineIfNotEmpty();
_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/RequestStatus.h\"");
_builder.newLine();
_builder.append("#include ");
_builder.newLine();
_builder.newLine();
{
Iterable _requiredIncludesFor = this._joynrCppGeneratorExtensions.getRequiredIncludesFor(serviceInterface);
for(final String parameterType : _requiredIncludesFor) {
_builder.append("#include \"");
_builder.append(parameterType, "");
_builder.append("\"");
_builder.newLineIfNotEmpty();
}
}
_builder.newLine();
String _namespaceStarter = this._joynrCppGeneratorExtensions.getNamespaceStarter(serviceInterface);
_builder.append(_namespaceStarter, "");
_builder.append(" ");
_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("JsonRequestInterpreter\");");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter::");
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter()");
_builder.newLineIfNotEmpty();
_builder.append("{");
_builder.newLine();
{
HashSet _allComplexAndEnumTypes = this._joynrCppGeneratorExtensions.getAllComplexAndEnumTypes(serviceInterface);
for(final Object datatype : _allComplexAndEnumTypes) {
{
if ((datatype instanceof FType)) {
_builder.append("\t");
_builder.append("qRegisterMetaType<");
String _mappedDatatype = this._joynrCppGeneratorExtensions.getMappedDatatype(((FType) datatype));
_builder.append(_mappedDatatype, " ");
_builder.append(">(\"");
String _mappedDatatype_1 = this._joynrCppGeneratorExtensions.getMappedDatatype(((FType) datatype));
_builder.append(_mappedDatatype_1, " ");
_builder.append("\");");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("QVariant ");
_builder.append(interfaceName, "");
_builder.append("RequestInterpreter::execute(");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("QSharedPointer requestCaller,");
_builder.newLine();
_builder.append(" ");
_builder.append("const QString& methodName,");
_builder.newLine();
_builder.append(" ");
_builder.append("const QList& paramValues,");
_builder.newLine();
_builder.append(" ");
_builder.append("const QList& paramTypes)");
_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, " ");
_builder.append("Requestcaller");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("QSharedPointer<");
_builder.append(interfaceName, " ");
_builder.append("RequestCaller> ");
String _requestCaller = this.getRequestCaller(serviceInterface);
_builder.append(_requestCaller, " ");
_builder.append(" =");
_builder.newLineIfNotEmpty();
_builder.append("\t\t\t");
_builder.append("requestCaller.dynamicCast<");
_builder.append(interfaceName, " ");
_builder.append("RequestCaller>();");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("joynr::RequestStatus status;");
_builder.newLine();
_builder.append("\t");
_builder.append("// execute operation");
_builder.newLine();
_builder.append("\t");
_builder.append("// TODO need to put the status code into the reply");
_builder.newLine();
_builder.append("\t");
final EList attributes = this._joynrCppGeneratorExtensions.getAttributes(serviceInterface);
_builder.newLineIfNotEmpty();
_builder.append("\t");
final EList methods = this._joynrCppGeneratorExtensions.getMethods(serviceInterface);
_builder.newLineIfNotEmpty();
{
int _size = attributes.size();
boolean _greaterThan = (_size > 0);
if (_greaterThan) {
{
boolean _hasElements = false;
for(final FAttribute attribute : attributes) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate("\n} else", " ");
}
_builder.append("\t");
final String attributeName = this._joynrCppGeneratorExtensions.joynrName(attribute);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("if (methodName == \"get");
String _firstUpper = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper, " ");
_builder.append("\"){");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(attribute);
_builder.append(_mappedDatatypeOrList, " ");
_builder.append(" returnValue;");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _requestCaller_1 = this.getRequestCaller(serviceInterface);
_builder.append(_requestCaller_1, " ");
_builder.append("->get");
String _firstUpper_1 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_1, " ");
_builder.append("(status, returnValue);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("// convert typed return value into variant");
_builder.newLine();
{
boolean _isArray = this._joynrCppGeneratorExtensions.isArray(attribute);
if (_isArray) {
_builder.append("\t");
_builder.append("\t");
_builder.append("return joynr::Util::convertListToVariantList(returnValue);");
_builder.newLine();
} else {
_builder.append("\t");
_builder.append("\t");
_builder.append("return QVariant::fromValue(returnValue);");
_builder.newLine();
}
}
_builder.append("\t");
_builder.append("} else if (methodName == \"set");
String _firstUpper_2 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_2, " ");
_builder.append("\" && paramTypes.size() == 1){");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QVariant ");
_builder.append(attributeName, " ");
_builder.append("QVar = paramValues.at(0);");
_builder.newLineIfNotEmpty();
{
FTypeRef _type = attribute.getType();
boolean _isEnum = this._joynrCppGeneratorExtensions.isEnum(_type);
if (_isEnum) {
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList_1 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(attribute);
_builder.append(_mappedDatatypeOrList_1, " ");
_builder.append(" typedInput");
String _firstUpper_3 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_3, " ");
_builder.append(" = joynr::Util::convertVariantToEnum<");
FTypeRef _type_1 = attribute.getType();
String _enumContainer = this._joynrCppGeneratorExtensions.getEnumContainer(_type_1);
_builder.append(_enumContainer, " ");
_builder.append(">(");
_builder.append(attributeName, " ");
_builder.append("QVar);");
_builder.newLineIfNotEmpty();
} else {
boolean _and = false;
FTypeRef _type_2 = attribute.getType();
boolean _isEnum_1 = this._joynrCppGeneratorExtensions.isEnum(_type_2);
if (!_isEnum_1) {
_and = false;
} else {
boolean _isArray_1 = this._joynrCppGeneratorExtensions.isArray(attribute);
_and = (_isEnum_1 && _isArray_1);
}
if (_and) {
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList_2 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(attribute);
_builder.append(_mappedDatatypeOrList_2, " ");
_builder.append(" typedInput");
String _firstUpper_4 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_4, " ");
_builder.append(" =");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("joynr::Util::convertVariantListToEnumList<");
FTypeRef _type_3 = attribute.getType();
String _enumContainer_1 = this._joynrCppGeneratorExtensions.getEnumContainer(_type_3);
_builder.append(_enumContainer_1, " ");
_builder.append(">(");
_builder.append(attributeName, " ");
_builder.append("QVar.toList());");
_builder.newLineIfNotEmpty();
} else {
boolean _isArray_2 = this._joynrCppGeneratorExtensions.isArray(attribute);
if (_isArray_2) {
_builder.append("\t");
_builder.append("\t");
_builder.append("assert(");
_builder.append(attributeName, " ");
_builder.append("QVar.canConvert >());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QList paramQList = ");
_builder.append(attributeName, " ");
_builder.append("QVar.value >();");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList_3 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(attribute);
_builder.append(_mappedDatatypeOrList_3, " ");
_builder.append(" typedInput");
String _firstUpper_5 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_5, " ");
_builder.append(" = joynr::Util::convertVariantListToList<");
String _mappedDatatype_2 = this._joynrCppGeneratorExtensions.getMappedDatatype(attribute);
_builder.append(_mappedDatatype_2, " ");
_builder.append(">(paramQList);");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t");
_builder.append("\t");
_builder.append("assert(");
_builder.append(attributeName, " ");
_builder.append("QVar.canConvert<");
String _mappedDatatypeOrList_4 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(attribute);
_builder.append(_mappedDatatypeOrList_4, " ");
_builder.append(">());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList_5 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(attribute);
_builder.append(_mappedDatatypeOrList_5, " ");
_builder.append(" typedInput");
String _firstUpper_6 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_6, " ");
_builder.append(" = ");
_builder.append(attributeName, " ");
_builder.append("QVar.value<");
String _mappedDatatypeOrList_6 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(attribute);
_builder.append(_mappedDatatypeOrList_6, " ");
_builder.append(">();");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.append("\t");
_builder.append("\t");
String _requestCaller_2 = this.getRequestCaller(serviceInterface);
_builder.append(_requestCaller_2, " ");
_builder.append("->set");
String _firstUpper_7 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_7, " ");
_builder.append("(status, typedInput");
String _firstUpper_8 = StringExtensions.toFirstUpper(attributeName);
_builder.append(_firstUpper_8, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QVariant returnValue(\"void\");");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append("return returnValue;");
_builder.newLine();
_builder.newLine();
}
}
_builder.append("\t");
_builder.append("}");
{
int _size_1 = methods.size();
boolean _greaterThan_1 = (_size_1 > 0);
if (_greaterThan_1) {
_builder.append(" else");
}
}
_builder.newLineIfNotEmpty();
}
}
{
int _size_2 = methods.size();
boolean _greaterThan_2 = (_size_2 > 0);
if (_greaterThan_2) {
{
EList _methods = this._joynrCppGeneratorExtensions.getMethods(serviceInterface);
boolean _hasElements_1 = false;
for(final FMethod method : _methods) {
if (!_hasElements_1) {
_hasElements_1 = true;
} else {
_builder.appendImmediate("\n} else", " ");
}
_builder.append("\t");
Iterable _mappedOutputParameter = this._joynrCppGeneratorExtensions.getMappedOutputParameter(method);
final String outputParameterType = IterableExtensions.head(_mappedOutputParameter);
_builder.newLineIfNotEmpty();
_builder.append("\t");
final String inputParameterList = this._joynrCppGeneratorExtensions.getCommaSeperatedTypedParameterList(method);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append(" ");
_builder.newLine();
_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, " ");
_builder.append("\" && paramTypes.size() == ");
int _size_3 = IterableExtensions.size(inputParams);
_builder.append(_size_3, " ");
_builder.newLineIfNotEmpty();
{
for(final FArgument input : inputParams) {
_builder.append("\t");
_builder.append("\t");
_builder.append("&& paramTypes.at(");
int _plus = (iterator + 1);
int _iterator = iterator = _plus;
_builder.append(_iterator, " ");
_builder.append(") == \"");
String _joynrTypeName = this._joynrCppGeneratorExtensions.getJoynrTypeName(input);
_builder.append(_joynrTypeName, " ");
_builder.append("\"");
_builder.newLineIfNotEmpty();
}
}
_builder.append("\t");
_builder.append(") {");
_builder.newLine();
{
boolean _and_1 = false;
boolean _notEquals = (!Objects.equal(outputParameterType, "void"));
if (!_notEquals) {
_and_1 = false;
} else {
boolean _equals = Objects.equal(inputParameterList, "");
_and_1 = (_notEquals && _equals);
}
if (_and_1) {
_builder.append("\t");
_builder.append("\t");
Iterable _mappedOutputParameter_1 = this._joynrCppGeneratorExtensions.getMappedOutputParameter(method);
String _head = IterableExtensions.head(_mappedOutputParameter_1);
_builder.append(_head, " ");
_builder.append(" typedReturnValue;");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _requestCaller_3 = this.getRequestCaller(serviceInterface);
_builder.append(_requestCaller_3, " ");
_builder.append("->");
_builder.append(methodName, " ");
_builder.append("(status, typedReturnValue);");
_builder.newLineIfNotEmpty();
{
Iterable _outputParameters = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_1 = IterableExtensions.head(_outputParameters);
boolean _isArray_3 = this._joynrCppGeneratorExtensions.isArray(_head_1);
if (_isArray_3) {
_builder.append("\t");
_builder.append("\t");
_builder.append("QList returnValue = joynr::Util::convertListToVariantList<");
Iterable _outputParameters_1 = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_2 = IterableExtensions.head(_outputParameters_1);
String _mappedDatatype_3 = this._joynrCppGeneratorExtensions.getMappedDatatype(_head_2);
_builder.append(_mappedDatatype_3, " ");
_builder.append(">(typedReturnValue);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("return returnValue;");
_builder.newLine();
} else {
_builder.append("\t");
_builder.append("\t");
_builder.append("return QVariant::fromValue(typedReturnValue);");
_builder.newLine();
}
}
_builder.append("\t");
_builder.append("\t");
_builder.newLine();
} else {
_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, " ");
_builder.append("QVar = paramValues.at(");
int _plus_1 = (iterator2 + 1);
int _iterator2 = iterator2 = _plus_1;
_builder.append(_iterator2, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
{
boolean _and_2 = false;
FTypeRef _type_4 = input_1.getType();
boolean _isEnum_2 = this._joynrCppGeneratorExtensions.isEnum(_type_4);
if (!_isEnum_2) {
_and_2 = false;
} else {
boolean _isArray_4 = this._joynrCppGeneratorExtensions.isArray(input_1);
_and_2 = (_isEnum_2 && _isArray_4);
}
if (_and_2) {
_builder.append("\t");
_builder.append("\t");
_builder.append("//isEnumArray");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList_7 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(input_1);
_builder.append(_mappedDatatypeOrList_7, " ");
_builder.append(" typedInput");
String _firstUpper_9 = StringExtensions.toFirstUpper(inputName);
_builder.append(_firstUpper_9, " ");
_builder.append(" = ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("joynr::Util::convertVariantListToEnumList<");
FTypeRef _type_5 = input_1.getType();
String _enumContainer_2 = this._joynrCppGeneratorExtensions.getEnumContainer(_type_5);
_builder.append(_enumContainer_2, " ");
_builder.append("> (");
_builder.append(inputName, " ");
_builder.append("QVar.toList());");
_builder.newLineIfNotEmpty();
} else {
FTypeRef _type_6 = input_1.getType();
boolean _isEnum_3 = this._joynrCppGeneratorExtensions.isEnum(_type_6);
if (_isEnum_3) {
_builder.append("\t");
_builder.append("\t");
_builder.append("//isEnum");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList_8 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(input_1);
_builder.append(_mappedDatatypeOrList_8, " ");
_builder.append(" typedInput");
String _firstUpper_10 = StringExtensions.toFirstUpper(inputName);
_builder.append(_firstUpper_10, " ");
_builder.append(" = joynr::Util::convertVariantToEnum<");
FTypeRef _type_7 = input_1.getType();
String _enumContainer_3 = this._joynrCppGeneratorExtensions.getEnumContainer(_type_7);
_builder.append(_enumContainer_3, " ");
_builder.append(">(");
_builder.append(inputName, " ");
_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, " ");
_builder.append("QVar.canConvert >());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QList ");
_builder.append(inputName, " ");
_builder.append("QVarList = ");
_builder.append(inputName, " ");
_builder.append("QVar.value >();");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("QList<");
String _mappedDatatype_4 = this._joynrCppGeneratorExtensions.getMappedDatatype(input_1);
_builder.append(_mappedDatatype_4, " ");
_builder.append("> typedInput");
String _firstUpper_11 = StringExtensions.toFirstUpper(inputName);
_builder.append(_firstUpper_11, " ");
_builder.append(" = joynr::Util::convertVariantListToList<");
String _mappedDatatype_5 = this._joynrCppGeneratorExtensions.getMappedDatatype(input_1);
_builder.append(_mappedDatatype_5, " ");
_builder.append(">(");
_builder.append(inputName, " ");
_builder.append("QVarList);");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t");
_builder.append("\t");
_builder.append("//");
String _mappedDatatypeOrList_9 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(input_1);
_builder.append(_mappedDatatypeOrList_9, " ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("assert(");
_builder.append(inputName, " ");
_builder.append("QVar.canConvert<");
String _mappedDatatypeOrList_10 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(input_1);
_builder.append(_mappedDatatypeOrList_10, " ");
_builder.append(">());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _mappedDatatypeOrList_11 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(input_1);
_builder.append(_mappedDatatypeOrList_11, " ");
_builder.append(" typedInput");
String _firstUpper_12 = StringExtensions.toFirstUpper(inputName);
_builder.append(_firstUpper_12, " ");
_builder.append(" = ");
_builder.append(inputName, " ");
_builder.append("QVar.value<");
String _mappedDatatypeOrList_12 = this._joynrCppGeneratorExtensions.getMappedDatatypeOrList(input_1);
_builder.append(_mappedDatatypeOrList_12, " ");
_builder.append(">();");
_builder.newLineIfNotEmpty();
}
}
}
}
}
}
{
boolean _notEquals_1 = (!Objects.equal(outputParameterType, "void"));
if (_notEquals_1) {
_builder.append("\t");
_builder.append("\t");
Iterable _mappedOutputParameter_2 = this._joynrCppGeneratorExtensions.getMappedOutputParameter(method);
String _head_3 = IterableExtensions.head(_mappedOutputParameter_2);
_builder.append(_head_3, " ");
_builder.append(" typedReturnValue;");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
String _requestCaller_4 = this.getRequestCaller(serviceInterface);
_builder.append(_requestCaller_4, " ");
_builder.append("->");
_builder.append(methodName, " ");
_builder.append("(");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("status, ");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("typedReturnValue");
{
int _size_4 = IterableExtensions.size(inputParams);
boolean _greaterThan_3 = (_size_4 > 0);
if (_greaterThan_3) {
_builder.append(",");
}
}
_builder.append(" ");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t");
_builder.append("\t");
String _requestCaller_5 = this.getRequestCaller(serviceInterface);
_builder.append(_requestCaller_5, " ");
_builder.append("->");
_builder.append(methodName, " ");
_builder.append("(");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("status");
{
int _size_5 = IterableExtensions.size(inputParams);
boolean _greaterThan_4 = (_size_5 > 0);
if (_greaterThan_4) {
_builder.append(",");
}
}
_builder.append(" ");
_builder.newLineIfNotEmpty();
}
}
{
boolean _hasElements_2 = false;
for(final FArgument input_2 : inputParams) {
if (!_hasElements_2) {
_hasElements_2 = true;
} else {
_builder.appendImmediate(",", " ");
}
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("typedInput");
String _joynrName = this._joynrCppGeneratorExtensions.joynrName(input_2);
String _firstUpper_13 = StringExtensions.toFirstUpper(_joynrName);
_builder.append(_firstUpper_13, " ");
_builder.newLineIfNotEmpty();
}
}
_builder.append("\t");
_builder.append("\t");
_builder.append(");");
_builder.newLine();
_builder.newLine();
{
boolean _equals_1 = Objects.equal(outputParameterType, "void");
if (_equals_1) {
_builder.append("\t");
_builder.append("\t");
_builder.append("QVariant returnValue(\"void\");");
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
_builder.append("return returnValue;");
_builder.newLine();
} else {
boolean _and_3 = false;
Iterable _outputParameters_2 = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_4 = IterableExtensions.head(_outputParameters_2);
boolean _isArray_6 = this._joynrCppGeneratorExtensions.isArray(_head_4);
if (!_isArray_6) {
_and_3 = false;
} else {
Iterable _outputParameters_3 = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_5 = IterableExtensions.head(_outputParameters_3);
FTypeRef _type_8 = _head_5.getType();
boolean _isEnum_4 = this._joynrCppGeneratorExtensions.isEnum(_type_8);
_and_3 = (_isArray_6 && _isEnum_4);
}
if (_and_3) {
_builder.append("\t");
_builder.append("\t");
_builder.append("QList returnValue = joynr::Util::convertListToVariantList<");
Iterable _outputParameters_4 = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_6 = IterableExtensions.head(_outputParameters_4);
String _mappedDatatype_6 = this._joynrCppGeneratorExtensions.getMappedDatatype(_head_6);
_builder.append(_mappedDatatype_6, " ");
_builder.append(">(typedReturnValue);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("return returnValue;");
_builder.newLine();
} else {
Iterable _outputParameters_5 = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_7 = IterableExtensions.head(_outputParameters_5);
boolean _isArray_7 = this._joynrCppGeneratorExtensions.isArray(_head_7);
if (_isArray_7) {
_builder.append("\t");
_builder.append("\t");
_builder.append("QList returnValue = joynr::Util::convertListToVariantList<");
Iterable _outputParameters_6 = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_8 = IterableExtensions.head(_outputParameters_6);
String _mappedDatatype_7 = this._joynrCppGeneratorExtensions.getMappedDatatype(_head_8);
_builder.append(_mappedDatatype_7, " ");
_builder.append(">(typedReturnValue);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("\t");
_builder.append("return returnValue;");
_builder.newLine();
} else {
Iterable _outputParameters_7 = this._joynrCppGeneratorExtensions.getOutputParameters(method);
FArgument _head_9 = IterableExtensions.head(_outputParameters_7);
FTypeRef _type_9 = _head_9.getType();
boolean _isEnum_5 = this._joynrCppGeneratorExtensions.isEnum(_type_9);
if (_isEnum_5) {
_builder.append("\t");
_builder.append("\t");
_builder.append("return QVariant::fromValue(typedReturnValue);");
_builder.newLine();
} else {
_builder.append("\t");
_builder.append("\t");
_builder.append("return QVariant::fromValue(typedReturnValue);");
_builder.newLine();
}
}
}
}
}
}
}
}
}
_builder.append("\t");
_builder.append("}");
_builder.newLine();
}
}
_builder.append("\t");
_builder.append("LOG_FATAL(logger, \"unknown method name for interface ");
_builder.append(interfaceName, " ");
_builder.append(": \" + methodName);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("assert(false);");
_builder.newLine();
_builder.append("\t");
_builder.append("return QVariant();");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
String _namespaceEnder = this._joynrCppGeneratorExtensions.getNamespaceEnder(serviceInterface);
_builder.append(_namespaceEnder, "");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_xblockexpression = (_builder);
}
return _xblockexpression;
}
public String getRequestCaller(final FInterface serviceInterface) {
String _joynrName = this._joynrCppGeneratorExtensions.joynrName(serviceInterface);
String _firstLower = StringExtensions.toFirstLower(_joynrName);
String _plus = (_firstLower + "RequestCaller");
return _plus;
}
}