diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java')
-rw-r--r-- | plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java | 1562 |
1 files changed, 0 insertions, 1562 deletions
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java deleted file mode 100644 index bbe4fbfbf..000000000 --- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java +++ /dev/null @@ -1,1562 +0,0 @@ -/** - * Copyright (c) 2011 protos software gmbh (http://www.protos.de). - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * CONTRIBUTORS: - * Henrik Rentz-Reichert (initial contribution) - * Thomas Schuetz (changed for C code generator) - */ -package org.eclipse.etrice.generator.c.gen; - -import com.google.common.base.Objects; -import com.google.common.collect.Iterables; -import com.google.inject.Inject; -import com.google.inject.Singleton; -import java.util.List; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.etrice.core.fsm.fSM.DetailCode; -import org.eclipse.etrice.core.genmodel.etricegen.Root; -import org.eclipse.etrice.core.genmodel.fsm.base.ILogger; -import org.eclipse.etrice.core.room.Attribute; -import org.eclipse.etrice.core.room.CommunicationType; -import org.eclipse.etrice.core.room.DataClass; -import org.eclipse.etrice.core.room.DataType; -import org.eclipse.etrice.core.room.EnumerationType; -import org.eclipse.etrice.core.room.Message; -import org.eclipse.etrice.core.room.MessageHandler; -import org.eclipse.etrice.core.room.Operation; -import org.eclipse.etrice.core.room.PortClass; -import org.eclipse.etrice.core.room.PortOperation; -import org.eclipse.etrice.core.room.ProtocolClass; -import org.eclipse.etrice.core.room.RefableType; -import org.eclipse.etrice.core.room.RoomModel; -import org.eclipse.etrice.core.room.VarDecl; -import org.eclipse.etrice.generator.base.AbstractGenerator; -import org.eclipse.etrice.generator.base.GlobalGeneratorSettings; -import org.eclipse.etrice.generator.c.Main; -import org.eclipse.etrice.generator.c.gen.CExtensions; -import org.eclipse.etrice.generator.fsm.base.IGeneratorFileIo; -import org.eclipse.etrice.generator.generic.GenericProtocolClassGenerator; -import org.eclipse.etrice.generator.generic.ProcedureHelpers; -import org.eclipse.etrice.generator.generic.RoomExtensions; -import org.eclipse.etrice.generator.generic.TypeHelpers; -import org.eclipse.xtend2.lib.StringConcatenation; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.IterableExtensions; -import org.eclipse.xtext.xbase.lib.ListExtensions; - -@Singleton -@SuppressWarnings("all") -public class ProtocolClassGen extends GenericProtocolClassGenerator { - @Inject - private IGeneratorFileIo fileIO; - - @Inject - @Extension - private CExtensions _cExtensions; - - @Inject - @Extension - private RoomExtensions _roomExtensions; - - @Inject - @Extension - private ProcedureHelpers _procedureHelpers; - - @Inject - @Extension - private TypeHelpers _typeHelpers; - - @Inject - private ILogger logger; - - public void doGenerate(final Root root) { - EList<ProtocolClass> _protocolClasses = root.getProtocolClasses(); - for (final ProtocolClass pc : _protocolClasses) { - { - String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(pc); - String _path = this._roomExtensions.getPath(pc); - final String path = (_generationTargetPath + _path); - String _generationInfoPath = this._roomExtensions.getGenerationInfoPath(pc); - String _path_1 = this._roomExtensions.getPath(pc); - final String infopath = (_generationInfoPath + _path_1); - String file = this._cExtensions.getCHeaderFileName(pc); - CharSequence _generateHeaderFile = this.generateHeaderFile(root, pc); - this.fileIO.generateFile("generating ProtocolClass header", path, infopath, file, _generateHeaderFile); - String _cUtilsFileName = this._cExtensions.getCUtilsFileName(pc); - file = _cUtilsFileName; - CharSequence _generateUtilsFile = this.generateUtilsFile(root, pc); - this.fileIO.generateFile("generating ProtocolClass utils", path, infopath, file, _generateUtilsFile); - String _cSourceFileName = this._cExtensions.getCSourceFileName(pc); - file = _cSourceFileName; - CharSequence _generateSourceFile = this.generateSourceFile(root, pc); - this.fileIO.generateFile("generating ProtocolClass source", path, infopath, file, _generateSourceFile); - } - } - } - - private CharSequence generateHeaderFile(final Root root, final ProtocolClass pc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @author generated by eTrice"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* Header File of ProtocolClass "); - String _name = pc.getName(); - _builder.append(_name, " "); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - _builder.append("* "); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.newLine(); - CharSequence _generateIncludeGuardBegin = this._cExtensions.generateIncludeGuardBegin(pc); - _builder.append(_generateIncludeGuardBegin, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("#include \"etDatatypes.h\""); - _builder.newLine(); - _builder.append("#include \"modelbase/etPort.h\""); - _builder.newLine(); - _builder.newLine(); - CharSequence _userCode = this._procedureHelpers.userCode(pc, 1); - _builder.append(_userCode, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - { - EList<ProtocolClass> _referencedProtocolClasses = root.getReferencedProtocolClasses(pc); - for(final ProtocolClass protocolClass : _referencedProtocolClasses) { - _builder.append("#include "); - String _includePath = this._cExtensions.getIncludePath(protocolClass); - _builder.append(_includePath, ""); - _builder.newLineIfNotEmpty(); - } - } - { - EList<DataClass> _referencedDataClasses = root.getReferencedDataClasses(pc); - for(final DataClass dataClass : _referencedDataClasses) { - _builder.append("#include "); - String _includePath_1 = this._cExtensions.getIncludePath(dataClass); - _builder.append(_includePath_1, ""); - _builder.newLineIfNotEmpty(); - } - } - { - EList<EnumerationType> _referencedEnumClasses = root.getReferencedEnumClasses(pc); - for(final EnumerationType enumClass : _referencedEnumClasses) { - _builder.append("#include "); - String _includePath_2 = this._cExtensions.getIncludePath(enumClass); - _builder.append(_includePath_2, ""); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - { - CommunicationType _commType = pc.getCommType(); - boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN); - if (_equals) { - _builder.newLine(); - _builder.append("/* message IDs */"); - _builder.newLine(); - String _genMessageIDs = this.genMessageIDs(pc); - _builder.append(_genMessageIDs, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("/*--------------------- port structs and methods */"); - _builder.newLine(); - CharSequence _portClassHeader = this.portClassHeader(pc, Boolean.valueOf(false)); - _builder.append(_portClassHeader, ""); - _builder.newLineIfNotEmpty(); - CharSequence _portClassHeader_1 = this.portClassHeader(pc, Boolean.valueOf(true)); - _builder.append(_portClassHeader_1, ""); - _builder.newLineIfNotEmpty(); - } else { - CommunicationType _commType_1 = pc.getCommType(); - boolean _equals_1 = Objects.equal(_commType_1, CommunicationType.DATA_DRIVEN); - if (_equals_1) { - _builder.append("/*--------------------- port structs and methods */"); - _builder.newLine(); - CharSequence _genDataDrivenPortHeaders = this.genDataDrivenPortHeaders(pc); - _builder.append(_genDataDrivenPortHeaders, ""); - _builder.newLineIfNotEmpty(); - } else { - CommunicationType _commType_2 = pc.getCommType(); - boolean _equals_2 = Objects.equal(_commType_2, CommunicationType.SYNCHRONOUS); - if (_equals_2) { - _builder.append("#error \"synchronoue protocols not implemented yet\""); - _builder.newLine(); - } - } - } - } - _builder.newLine(); - { - GlobalGeneratorSettings _settings = Main.getSettings(); - boolean _isGenerateMSCInstrumentation = _settings.isGenerateMSCInstrumentation(); - if (_isGenerateMSCInstrumentation) { - _builder.append("/*--------------------- debug helpers */"); - _builder.newLine(); - _builder.newLine(); - _builder.append("/* get message string for message id */"); - _builder.newLine(); - _builder.append("const char* "); - String _name_1 = pc.getName(); - _builder.append(_name_1, ""); - _builder.append("_getMessageString(int msg_id);"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - CharSequence _userCode_1 = this._procedureHelpers.userCode(pc, 2); - _builder.append(_userCode_1, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - CharSequence _generateIncludeGuardEnd = this._cExtensions.generateIncludeGuardEnd(pc); - _builder.append(_generateIncludeGuardEnd, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - return _builder; - } - - private CharSequence generateUtilsFile(final Root root, final ProtocolClass pc) { - CharSequence _xblockexpression = null; - { - EObject _eContainer = pc.eContainer(); - String _name = ((RoomModel) _eContainer).getName(); - String _replaceAll = _name.replaceAll("\\.", "_"); - String _plus = (_replaceAll + "_"); - String _name_1 = pc.getName(); - String _plus_1 = (_plus + _name_1); - final String filename = (_plus_1 + "_Utils"); - StringConcatenation _builder = new StringConcatenation(); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @author generated by eTrice"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* Utils File of ProtocolClass "); - String _name_2 = pc.getName(); - _builder.append(_name_2, " "); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - _builder.append("* "); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.newLine(); - CharSequence _generateIncludeGuardBegin = this._cExtensions.generateIncludeGuardBegin(filename); - _builder.append(_generateIncludeGuardBegin, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - { - ProtocolClass _base = pc.getBase(); - boolean _notEquals = (!Objects.equal(_base, null)); - if (_notEquals) { - _builder.append("// include base class utils"); - _builder.newLine(); - _builder.append("#include "); - ProtocolClass _base_1 = pc.getBase(); - String _utilsIncludePath = this._cExtensions.getUtilsIncludePath(_base_1); - _builder.append(_utilsIncludePath, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - } - } - _builder.append("#include "); - String _includePath = this._cExtensions.getIncludePath(pc); - _builder.append(_includePath, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("/*"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* access macros for operations and attributes"); - _builder.newLine(); - _builder.append("*/"); - _builder.newLine(); - _builder.newLine(); - CharSequence _generateUtilsFile = this.generateUtilsFile(pc, false); - _builder.append(_generateUtilsFile, ""); - _builder.newLineIfNotEmpty(); - CharSequence _generateUtilsFile_1 = this.generateUtilsFile(pc, true); - _builder.append(_generateUtilsFile_1, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - CharSequence _generateIncludeGuardEnd = this._cExtensions.generateIncludeGuardEnd(filename); - _builder.append(_generateIncludeGuardEnd, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _xblockexpression = _builder; - } - return _xblockexpression; - } - - private CharSequence generateUtilsFile(final ProtocolClass pc, final boolean conj) { - CharSequence _xblockexpression = null; - { - final PortClass portClass = this._roomExtensions.getPortClass(pc, conj); - final String portClassName = this._roomExtensions.getPortClassName(pc, conj); - StringConcatenation _builder = new StringConcatenation(); - { - boolean _notEquals = (!Objects.equal(portClass, null)); - if (_notEquals) { - _builder.append("/* "); - { - if (conj) { - _builder.append("conjugate"); - } else { - _builder.append("regular"); - } - } - _builder.append(" port class */"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("/* operations */"); - _builder.newLine(); - { - EList<PortOperation> _operations = portClass.getOperations(); - for(final PortOperation op : _operations) { - final CharSequence args = this.argList(op); - _builder.newLineIfNotEmpty(); - _builder.append("#define "); - String _name = op.getName(); - _builder.append(_name, ""); - _builder.append("("); - _builder.append(args, ""); - _builder.append(") "); - _builder.append(portClassName, ""); - _builder.append("_"); - String _name_1 = op.getName(); - _builder.append(_name_1, ""); - _builder.append("(self"); - { - EList<VarDecl> _arguments = op.getArguments(); - boolean _isEmpty = _arguments.isEmpty(); - boolean _not = (!_isEmpty); - if (_not) { - _builder.append(", "); - _builder.append(args, ""); - } - } - _builder.append(")"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _builder.append("/* attributes */"); - _builder.newLine(); - { - EList<Attribute> _attributes = portClass.getAttributes(); - for(final Attribute a : _attributes) { - _builder.append("#define "); - String _name_2 = a.getName(); - _builder.append(_name_2, ""); - _builder.append(" ((("); - _builder.append(portClassName, ""); - _builder.append("_var*)(self->varData))->"); - String _name_3 = a.getName(); - _builder.append(_name_3, ""); - _builder.append(")"); - _builder.newLineIfNotEmpty(); - } - } - } - } - _xblockexpression = _builder; - } - return _xblockexpression; - } - - private CharSequence argList(final Operation op) { - StringConcatenation _builder = new StringConcatenation(); - { - EList<VarDecl> _arguments = op.getArguments(); - boolean _hasElements = false; - for(final VarDecl a : _arguments) { - if (!_hasElements) { - _hasElements = true; - } else { - _builder.appendImmediate(", ", ""); - } - String _name = a.getName(); - _builder.append(_name, ""); - } - } - return _builder; - } - - private CharSequence generateSourceFile(final Root root, final ProtocolClass pc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @author generated by eTrice"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* Source File of ProtocolClass "); - String _name = pc.getName(); - _builder.append(_name, " "); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - _builder.append("* "); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.newLine(); - _builder.append("#include \""); - String _cHeaderFileName = this._cExtensions.getCHeaderFileName(pc); - _builder.append(_cHeaderFileName, ""); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("#include \"debugging/etMSCLogger.h\""); - _builder.newLine(); - _builder.append("#include \""); - String _cUtilsFileName = this._cExtensions.getCUtilsFileName(pc); - _builder.append(_cUtilsFileName, ""); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - CharSequence _userCode = this._procedureHelpers.userCode(pc, 3); - _builder.append(_userCode, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("/*--------------------- port methods */"); - _builder.newLine(); - { - CommunicationType _commType = pc.getCommType(); - boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN); - if (_equals) { - CharSequence _portClassSource = this.portClassSource(pc, Boolean.valueOf(false)); - _builder.append(_portClassSource, ""); - _builder.newLineIfNotEmpty(); - CharSequence _portClassSource_1 = this.portClassSource(pc, Boolean.valueOf(true)); - _builder.append(_portClassSource_1, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - { - GlobalGeneratorSettings _settings = Main.getSettings(); - boolean _isGenerateMSCInstrumentation = _settings.isGenerateMSCInstrumentation(); - if (_isGenerateMSCInstrumentation) { - _builder.append("/*--------------------- debug helpers */"); - _builder.newLine(); - CharSequence _generateDebugHelpersImplementation = this.generateDebugHelpersImplementation(root, pc); - _builder.append(_generateDebugHelpersImplementation, ""); - _builder.newLineIfNotEmpty(); - } - } - } else { - CommunicationType _commType_1 = pc.getCommType(); - boolean _equals_1 = Objects.equal(_commType_1, CommunicationType.DATA_DRIVEN); - if (_equals_1) { - CharSequence _genDataDrivenPortSources = this.genDataDrivenPortSources(pc); - _builder.append(_genDataDrivenPortSources, ""); - _builder.newLineIfNotEmpty(); - } else { - CommunicationType _commType_2 = pc.getCommType(); - boolean _equals_2 = Objects.equal(_commType_2, CommunicationType.SYNCHRONOUS); - if (_equals_2) { - _builder.append("#error \"synchronous protocols not implemented yet\""); - _builder.newLine(); - } - } - } - } - return _builder; - } - - private CharSequence portClassHeader(final ProtocolClass pc, final Boolean conj) { - CharSequence _xblockexpression = null; - { - String portClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue()); - String replPortClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue(), true); - List<Message> _xifexpression = null; - if ((conj).booleanValue()) { - _xifexpression = this._roomHelpers.getAllIncomingMessages(pc); - } else { - _xifexpression = this._roomHelpers.getAllOutgoingMessages(pc); - } - List<Message> messages = _xifexpression; - final List<PortClass> allPortClasses = this._roomExtensions.getAllPortClasses(pc, (conj).booleanValue()); - final Function1<PortClass, EList<Attribute>> _function = new Function1<PortClass, EList<Attribute>>() { - @Override - public EList<Attribute> apply(final PortClass p) { - return p.getAttributes(); - } - }; - List<EList<Attribute>> _map = ListExtensions.<PortClass, EList<Attribute>>map(allPortClasses, _function); - Iterable<Attribute> _flatten = Iterables.<Attribute>concat(_map); - final List<Attribute> allAttributes = IterableExtensions.<Attribute>toList(_flatten); - final Function1<PortClass, EList<PortOperation>> _function_1 = new Function1<PortClass, EList<PortOperation>>() { - @Override - public EList<PortOperation> apply(final PortClass p) { - return p.getOperations(); - } - }; - List<EList<PortOperation>> _map_1 = ListExtensions.<PortClass, EList<PortOperation>>map(allPortClasses, _function_1); - Iterable<PortOperation> _flatten_1 = Iterables.<PortOperation>concat(_map_1); - final List<PortOperation> allOperations = IterableExtensions.<PortOperation>toList(_flatten_1); - StringConcatenation _builder = new StringConcatenation(); - _builder.append("typedef etPort "); - _builder.append(portClassName, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("typedef etReplPort "); - _builder.append(replPortClassName, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - { - boolean _isEmpty = allAttributes.isEmpty(); - boolean _not = (!_isEmpty); - if (_not) { - _builder.append("/* variable part of PortClass (RAM) */"); - _builder.newLine(); - _builder.append("typedef struct "); - _builder.append(portClassName, ""); - _builder.append("_var "); - _builder.append(portClassName, ""); - _builder.append("_var; "); - _builder.newLineIfNotEmpty(); - _builder.append("struct "); - _builder.append(portClassName, ""); - _builder.append("_var {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - CharSequence _attributes = this._procedureHelpers.attributes(allAttributes); - _builder.append(_attributes, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("};"); - _builder.newLine(); - { - for(final Attribute a : allAttributes) { - { - String _defaultValueLiteral = a.getDefaultValueLiteral(); - boolean _notEquals = (!Objects.equal(_defaultValueLiteral, null)); - if (_notEquals) { - String _name = a.getName(); - String _plus = ((portClassName + " ") + _name); - String _plus_1 = (_plus + ": Attribute initialization not supported in C"); - this.logger.logInfo(_plus_1); - _builder.newLineIfNotEmpty(); - } - } - } - } - } - } - _builder.newLine(); - { - for(final Message message : messages) { - VarDecl _data = message.getData(); - boolean hasData = (!Objects.equal(_data, null)); - _builder.newLineIfNotEmpty(); - String _xifexpression_1 = null; - if (hasData) { - VarDecl _data_1 = message.getData(); - RefableType _refType = _data_1.getRefType(); - DataType _type = _refType.getType(); - _xifexpression_1 = this._typeHelpers.typeName(_type); - } else { - _xifexpression_1 = ""; - } - String typeName = _xifexpression_1; - _builder.newLineIfNotEmpty(); - String _xifexpression_2 = null; - if ((hasData && ((!this._typeHelpers.isEnumerationOrPrimitive(message.getData().getRefType().getType())) || message.getData().getRefType().isRef()))) { - _xifexpression_2 = "*"; - } else { - _xifexpression_2 = ""; - } - String refp = _xifexpression_2; - _builder.newLineIfNotEmpty(); - String _xifexpression_3 = null; - if (hasData) { - _xifexpression_3 = (((", " + typeName) + refp) + " data"); - } else { - _xifexpression_3 = ""; - } - String data = _xifexpression_3; - _builder.newLineIfNotEmpty(); - String _name_1 = message.getName(); - String _messageSignature = this.messageSignature(portClassName, _name_1, "", data); - _builder.append(_messageSignature, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - String _name_2 = message.getName(); - String _messageSignature_1 = this.messageSignature(replPortClassName, _name_2, "_broadcast", data); - _builder.append(_messageSignature_1, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - String _name_3 = message.getName(); - String _messageSignature_2 = this.messageSignature(replPortClassName, _name_3, "", (", int idx" + data)); - _builder.append(_messageSignature_2, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - { - boolean _isEmpty_1 = allOperations.isEmpty(); - boolean _not_1 = (!_isEmpty_1); - if (_not_1) { - CharSequence _operationsDeclaration = this._procedureHelpers.operationsDeclaration(allOperations, portClassName); - _builder.append(_operationsDeclaration, ""); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - { - boolean _handlesReceiveIncludingSuper = this._roomExtensions.handlesReceiveIncludingSuper(pc, (conj).booleanValue()); - if (_handlesReceiveIncludingSuper) { - { - List<MessageHandler> _receiveHandlersIncludingSuper = this._roomExtensions.getReceiveHandlersIncludingSuper(pc, (conj).booleanValue()); - for(final MessageHandler h : _receiveHandlersIncludingSuper) { - _builder.append("void "); - _builder.append(portClassName, ""); - _builder.append("_"); - Message _msg = h.getMsg(); - String _name_4 = _msg.getName(); - _builder.append(_name_4, ""); - _builder.append("_receiveHandler("); - _builder.append(portClassName, ""); - _builder.append("* self, const etMessage* msg, void * actor, etActorReceiveMessage receiveMessageFunc);"); - _builder.newLineIfNotEmpty(); - } - } - } - } - _builder.append("etInt32 "); - _builder.append(replPortClassName, ""); - _builder.append("_getReplication(const "); - _builder.append(replPortClassName, ""); - _builder.append("* self);"); - _builder.newLineIfNotEmpty(); - _xblockexpression = _builder; - } - return _xblockexpression; - } - - private CharSequence genDataDrivenPortHeaders(final ProtocolClass pc) { - CharSequence _xblockexpression = null; - { - List<Message> _allIncomingMessages = this._roomHelpers.getAllIncomingMessages(pc); - final Function1<Message, Boolean> _function = new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - VarDecl _data = m.getData(); - return Boolean.valueOf((!Objects.equal(_data, null))); - } - }; - Iterable<Message> sentMsgs = IterableExtensions.<Message>filter(_allIncomingMessages, _function); - final Function1<Message, Boolean> _function_1 = new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - VarDecl _data = m.getData(); - RefableType _refType = _data.getRefType(); - DataType _type = _refType.getType(); - return Boolean.valueOf(ProtocolClassGen.this._typeHelpers.isEnumeration(_type)); - } - }; - final Iterable<Message> enumMsgs = IterableExtensions.<Message>filter(sentMsgs, _function_1); - final Function1<Message, Boolean> _function_2 = new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - VarDecl _data = m.getData(); - RefableType _refType = _data.getRefType(); - DataType _type = _refType.getType(); - return Boolean.valueOf(ProtocolClassGen.this._typeHelpers.isBoolean(_type)); - } - }; - final Iterable<Message> boolMsgs = IterableExtensions.<Message>filter(sentMsgs, _function_2); - final boolean usesMSC = (Main.getSettings().isGenerateMSCInstrumentation() && (!(IterableExtensions.isEmpty(enumMsgs) && IterableExtensions.isEmpty(boolMsgs)))); - StringConcatenation _builder = new StringConcatenation(); - _builder.append("/* data driven send port (conjugated) */"); - _builder.newLine(); - _builder.append("typedef struct "); - String _portClassName = this._roomExtensions.getPortClassName(pc, true); - _builder.append(_portClassName, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - { - for(final Message msg : sentMsgs) { - _builder.append("\t"); - VarDecl _data = msg.getData(); - RefableType _refType = _data.getRefType(); - DataType _type = _refType.getType(); - String typeName = this._typeHelpers.typeName(_type); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - String _xifexpression = null; - VarDecl _data_1 = msg.getData(); - RefableType _refType_1 = _data_1.getRefType(); - boolean _isRef = _refType_1.isRef(); - if (_isRef) { - _xifexpression = "*"; - } else { - _xifexpression = ""; - } - String refp = _xifexpression; - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(typeName, "\t"); - _builder.append(refp, "\t"); - _builder.append(" "); - String _name = msg.getName(); - _builder.append(_name, "\t"); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - { - if (usesMSC) { - _builder.append("\t"); - _builder.append("#ifdef ET_ASYNC_MSC_LOGGER_ACTIVATE"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("const char* instName;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("const char** peerNames;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("#endif"); - _builder.newLine(); - } - } - _builder.append("}"); - _builder.newLine(); - String _portClassName_1 = this._roomExtensions.getPortClassName(pc, true); - _builder.append(_portClassName_1, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("/* data driven receive port (regular) */"); - _builder.newLine(); - _builder.append("typedef struct "); - String _portClassName_2 = this._roomExtensions.getPortClassName(pc, false); - _builder.append(_portClassName_2, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("const "); - String _portClassName_3 = this._roomExtensions.getPortClassName(pc, true); - _builder.append(_portClassName_3, "\t"); - _builder.append("* peer;"); - _builder.newLineIfNotEmpty(); - { - if (usesMSC) { - _builder.append("\t"); - _builder.append("#ifdef ET_ASYNC_MSC_LOGGER_ACTIVATE"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("const char* instName;"); - _builder.newLine(); - { - for(final Message msg_1 : enumMsgs) { - _builder.append("\t"); - _builder.append("\t"); - VarDecl _data_2 = msg_1.getData(); - RefableType _refType_2 = _data_2.getRefType(); - DataType _type_1 = _refType_2.getType(); - String typeName_1 = this._typeHelpers.typeName(_type_1); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - String _xifexpression_1 = null; - VarDecl _data_3 = msg_1.getData(); - RefableType _refType_3 = _data_3.getRefType(); - boolean _isRef_1 = _refType_3.isRef(); - if (_isRef_1) { - _xifexpression_1 = "*"; - } else { - _xifexpression_1 = ""; - } - String refp_1 = _xifexpression_1; - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append(typeName_1, "\t\t"); - _builder.append(refp_1, "\t\t"); - _builder.append(" "); - String _name_1 = msg_1.getName(); - _builder.append(_name_1, "\t\t"); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - { - for(final Message msg_2 : boolMsgs) { - _builder.append("\t"); - _builder.append("\t"); - VarDecl _data_4 = msg_2.getData(); - RefableType _refType_4 = _data_4.getRefType(); - DataType _type_2 = _refType_4.getType(); - String typeName_2 = this._typeHelpers.typeName(_type_2); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - String _xifexpression_2 = null; - VarDecl _data_5 = msg_2.getData(); - RefableType _refType_5 = _data_5.getRefType(); - boolean _isRef_2 = _refType_5.isRef(); - if (_isRef_2) { - _xifexpression_2 = "*"; - } else { - _xifexpression_2 = ""; - } - String refp_2 = _xifexpression_2; - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append(typeName_2, "\t\t"); - _builder.append(refp_2, "\t\t"); - _builder.append(" "); - String _name_2 = msg_2.getName(); - _builder.append(_name_2, "\t\t"); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("#endif"); - _builder.newLine(); - } - } - _builder.append("}"); - _builder.newLine(); - String _portClassName_4 = this._roomExtensions.getPortClassName(pc, false); - _builder.append(_portClassName_4, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - { - for(final Message message : sentMsgs) { - VarDecl _data_6 = message.getData(); - boolean hasData = (!Objects.equal(_data_6, null)); - _builder.newLineIfNotEmpty(); - String _xifexpression_3 = null; - if (hasData) { - VarDecl _data_7 = message.getData(); - RefableType _refType_6 = _data_7.getRefType(); - DataType _type_3 = _refType_6.getType(); - _xifexpression_3 = this._typeHelpers.typeName(_type_3); - } else { - _xifexpression_3 = ""; - } - String typeName_3 = _xifexpression_3; - _builder.newLineIfNotEmpty(); - String _xifexpression_4 = null; - if ((hasData && (!this._typeHelpers.isEnumerationOrPrimitive(message.getData().getRefType().getType())))) { - _xifexpression_4 = "*"; - } else { - _xifexpression_4 = ""; - } - String refp_3 = _xifexpression_4; - _builder.newLineIfNotEmpty(); - String _xifexpression_5 = null; - if (hasData) { - _xifexpression_5 = (((", " + typeName_3) + refp_3) + " data"); - } else { - _xifexpression_5 = ""; - } - String data = _xifexpression_5; - _builder.newLineIfNotEmpty(); - String _portClassName_5 = this._roomExtensions.getPortClassName(pc, true); - String _name_3 = message.getName(); - String _messageSetterSignature = this.messageSetterSignature(_portClassName_5, _name_3, data); - _builder.append(_messageSetterSignature, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - String _portClassName_6 = this._roomExtensions.getPortClassName(pc, false); - String _name_4 = message.getName(); - String _messageGetterSignature = this.messageGetterSignature(_portClassName_6, _name_4, typeName_3); - _builder.append(_messageGetterSignature, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - } - } - _xblockexpression = _builder; - } - return _xblockexpression; - } - - private CharSequence genDataDrivenPortSources(final ProtocolClass pc) { - CharSequence _xblockexpression = null; - { - List<Message> _allIncomingMessages = this._roomHelpers.getAllIncomingMessages(pc); - final Function1<Message, Boolean> _function = new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - VarDecl _data = m.getData(); - return Boolean.valueOf((!Objects.equal(_data, null))); - } - }; - Iterable<Message> messages = IterableExtensions.<Message>filter(_allIncomingMessages, _function); - final Function1<Message, Boolean> _function_1 = new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - VarDecl _data = m.getData(); - RefableType _refType = _data.getRefType(); - DataType _type = _refType.getType(); - return Boolean.valueOf(ProtocolClassGen.this._typeHelpers.isEnumeration(_type)); - } - }; - final Iterable<Message> enumMsgs = IterableExtensions.<Message>filter(messages, _function_1); - final Function1<Message, Boolean> _function_2 = new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - VarDecl _data = m.getData(); - RefableType _refType = _data.getRefType(); - DataType _type = _refType.getType(); - return Boolean.valueOf(ProtocolClassGen.this._typeHelpers.isBoolean(_type)); - } - }; - final Iterable<Message> boolMsgs = IterableExtensions.<Message>filter(messages, _function_2); - final boolean usesMSC = (Main.getSettings().isGenerateMSCInstrumentation() && (!(IterableExtensions.isEmpty(enumMsgs) && IterableExtensions.isEmpty(boolMsgs)))); - StringConcatenation _builder = new StringConcatenation(); - { - for(final Message message : messages) { - VarDecl _data = message.getData(); - RefableType _refType = _data.getRefType(); - DataType _type = _refType.getType(); - String typeName = this._typeHelpers.typeName(_type); - _builder.newLineIfNotEmpty(); - String _xifexpression = null; - VarDecl _data_1 = message.getData(); - RefableType _refType_1 = _data_1.getRefType(); - DataType _type_1 = _refType_1.getType(); - boolean _isEnumerationOrPrimitive = this._typeHelpers.isEnumerationOrPrimitive(_type_1); - boolean _not = (!_isEnumerationOrPrimitive); - if (_not) { - _xifexpression = "*"; - } else { - _xifexpression = ""; - } - String refp = _xifexpression; - _builder.newLineIfNotEmpty(); - String data = (((", " + typeName) + refp) + " data"); - _builder.newLineIfNotEmpty(); - String _portClassName = this._roomExtensions.getPortClassName(pc, true); - String _name = message.getName(); - String _messageSetterSignature = this.messageSetterSignature(_portClassName, _name, data); - _builder.append(_messageSetterSignature, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - { - if ((usesMSC && IterableExtensions.<Message>exists(enumMsgs, new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - return Boolean.valueOf(Objects.equal(m, message)); - } - }))) { - _builder.append("\t"); - _builder.append("#ifdef ET_ASYNC_MSC_LOGGER_ACTIVATE"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("const char** peerName;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("for (peerName=self->peerNames; *peerName!=NULL; ++peerName) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t\t"); - _builder.append("ET_MSC_LOGGER_ASYNC_OUT(self->instName, "); - VarDecl _data_2 = message.getData(); - RefableType _refType_2 = _data_2.getRefType(); - DataType _type_2 = _refType_2.getType(); - String _name_1 = _type_2.getName(); - _builder.append(_name_1, "\t\t\t\t"); - _builder.append("_getLiteralName(data), *peerName)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t\t\t"); - _builder.append("ET_MSC_LOGGER_ASYNC_IN(self->instName, "); - VarDecl _data_3 = message.getData(); - RefableType _refType_3 = _data_3.getRefType(); - DataType _type_3 = _refType_3.getType(); - String _name_2 = _type_3.getName(); - _builder.append(_name_2, "\t\t\t\t"); - _builder.append("_getLiteralName(data), *peerName)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("#endif"); - _builder.newLine(); - } - } - { - if ((usesMSC && IterableExtensions.<Message>exists(boolMsgs, new Function1<Message, Boolean>() { - @Override - public Boolean apply(final Message m) { - return Boolean.valueOf(Objects.equal(m, message)); - } - }))) { - _builder.append("\t"); - _builder.append("#ifdef ET_ASYNC_MSC_LOGGER_ACTIVATE"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("const char** peerName;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("for (peerName=self->peerNames; *peerName!=NULL; ++peerName) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t\t"); - _builder.append("ET_MSC_LOGGER_ASYNC_OUT(self->instName, data?\"true\":\"false\", *peerName)"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t\t"); - _builder.append("ET_MSC_LOGGER_ASYNC_IN(self->instName, data?\"true\":\"false\", *peerName)"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("#endif"); - _builder.newLine(); - } - } - _builder.append("\t"); - _builder.append("self->"); - String _name_3 = message.getName(); - _builder.append(_name_3, "\t"); - _builder.append(" = "); - _builder.append(refp, "\t"); - _builder.append("data;"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - String _portClassName_1 = this._roomExtensions.getPortClassName(pc, false); - String _name_4 = message.getName(); - String _messageGetterSignature = this.messageGetterSignature(_portClassName_1, _name_4, typeName); - _builder.append(_messageGetterSignature, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("return self->peer->"); - String _name_5 = message.getName(); - _builder.append(_name_5, "\t"); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - } - } - _xblockexpression = _builder; - } - return _xblockexpression; - } - - private CharSequence portClassSource(final ProtocolClass pc, final Boolean conj) { - CharSequence _xblockexpression = null; - { - final List<PortClass> allPortClasses = this._roomExtensions.getAllPortClasses(pc, (conj).booleanValue()); - final String portClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue()); - final String replPortClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue(), true); - List<Message> _xifexpression = null; - if ((conj).booleanValue()) { - _xifexpression = this._roomHelpers.getAllIncomingMessages(pc); - } else { - _xifexpression = this._roomHelpers.getAllOutgoingMessages(pc); - } - final List<Message> messages = _xifexpression; - String _xifexpression_1 = null; - if ((conj).booleanValue()) { - _xifexpression_1 = "IN_"; - } else { - _xifexpression_1 = "OUT_"; - } - final String dir = _xifexpression_1; - StringConcatenation _builder = new StringConcatenation(); - { - for(final Message message : messages) { - VarDecl _data = message.getData(); - boolean hasData = (!Objects.equal(_data, null)); - _builder.newLineIfNotEmpty(); - String _xifexpression_2 = null; - if (hasData) { - VarDecl _data_1 = message.getData(); - RefableType _refType = _data_1.getRefType(); - DataType _type = _refType.getType(); - _xifexpression_2 = this._typeHelpers.typeName(_type); - } else { - _xifexpression_2 = ""; - } - String typeName = _xifexpression_2; - _builder.newLineIfNotEmpty(); - String _xifexpression_3 = null; - if ((hasData && message.getData().getRefType().isRef())) { - _xifexpression_3 = "*"; - } else { - _xifexpression_3 = ""; - } - String refp = _xifexpression_3; - _builder.newLineIfNotEmpty(); - String _xifexpression_4 = null; - if ((hasData && ((!this._typeHelpers.isEnumerationOrPrimitive(message.getData().getRefType().getType())) || message.getData().getRefType().isRef()))) { - _xifexpression_4 = "*"; - } else { - _xifexpression_4 = ""; - } - String refpd = _xifexpression_4; - _builder.newLineIfNotEmpty(); - String _xifexpression_5 = null; - if (((hasData && (!this._typeHelpers.isEnumerationOrPrimitive(message.getData().getRefType().getType()))) && (!message.getData().getRefType().isRef()))) { - _xifexpression_5 = ""; - } else { - _xifexpression_5 = "&"; - } - String refa = _xifexpression_5; - _builder.newLineIfNotEmpty(); - String _xifexpression_6 = null; - if (hasData) { - _xifexpression_6 = (((", " + typeName) + refpd) + " data__et"); - } else { - _xifexpression_6 = ""; - } - String data = _xifexpression_6; - _builder.newLineIfNotEmpty(); - String _xifexpression_7 = null; - if (hasData) { - _xifexpression_7 = ", data__et"; - } else { - _xifexpression_7 = ""; - } - String dataCall = _xifexpression_7; - _builder.newLineIfNotEmpty(); - MessageHandler hdlr = this._roomExtensions.getSendHandler(message, (conj).booleanValue()); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - String _name = message.getName(); - String _messageSignature = this.messageSignature(portClassName, _name, "", data); - _builder.append(_messageSignature, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - { - boolean _notEquals = (!Objects.equal(hdlr, null)); - if (_notEquals) { - _builder.append("\t"); - AbstractGenerator _instance = AbstractGenerator.getInstance(); - DetailCode _detailCode = hdlr.getDetailCode(); - String _translatedCode = _instance.getTranslatedCode(_detailCode); - _builder.append(_translatedCode, "\t"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\""); - _builder.append(portClassName, "\t"); - _builder.append("\", \""); - String _name_1 = message.getName(); - _builder.append(_name_1, "\t"); - _builder.append("\")"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - String _name_2 = pc.getName(); - String _name_3 = message.getName(); - String _plus = (dir + _name_3); - String _memberInUse = this._cExtensions.memberInUse(_name_2, _plus); - String _sendMessageCall = this.sendMessageCall(hasData, "self", _memberInUse, (typeName + refp), (refa + "data__et")); - _builder.append(_sendMessageCall, "\t\t"); - _builder.newLineIfNotEmpty(); - { - GlobalGeneratorSettings _settings = Main.getSettings(); - boolean _isGenerateMSCInstrumentation = _settings.isGenerateMSCInstrumentation(); - if (_isGenerateMSCInstrumentation) { - _builder.append("\t"); - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, \""); - String _name_4 = message.getName(); - _builder.append(_name_4, "\t\t"); - _builder.append("\", self->peerInstName)"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_SYNC_EXIT"); - _builder.newLine(); - } - } - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - String _name_5 = message.getName(); - String _messageSignature_1 = this.messageSignature(replPortClassName, _name_5, "_broadcast", data); - _builder.append(_messageSignature_1, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - { - boolean _notEquals_1 = (!Objects.equal(hdlr, null)); - if (_notEquals_1) { - _builder.append("\t"); - _builder.append("int i;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("for (i=0; i<((etReplPort*)self)->size; ++i) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append(portClassName, "\t\t"); - _builder.append("_"); - String _name_6 = message.getName(); - _builder.append(_name_6, "\t\t"); - _builder.append("(&((etReplPort*)self)->ports[i].port"); - _builder.append(dataCall, "\t\t"); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}\t\t\t\t\t"); - _builder.newLine(); - } else { - _builder.append("\t"); - _builder.append("int i;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\""); - _builder.append(replPortClassName, "\t"); - _builder.append("\", \""); - String _name_7 = message.getName(); - _builder.append(_name_7, "\t"); - _builder.append("\")"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("for (i=0; i<((etReplPort*)self)->size; ++i) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - String _name_8 = pc.getName(); - String _name_9 = message.getName(); - String _plus_1 = (dir + _name_9); - String _memberInUse_1 = this._cExtensions.memberInUse(_name_8, _plus_1); - String _sendMessageCall_1 = this.sendMessageCall(hasData, "(&((etReplPort*)self)->ports[i].port)", _memberInUse_1, (typeName + refp), (refa + "data__et")); - _builder.append(_sendMessageCall_1, "\t\t"); - _builder.newLineIfNotEmpty(); - { - GlobalGeneratorSettings _settings_1 = Main.getSettings(); - boolean _isGenerateMSCInstrumentation_1 = _settings_1.isGenerateMSCInstrumentation(); - if (_isGenerateMSCInstrumentation_1) { - _builder.append("\t"); - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, \""); - String _name_10 = message.getName(); - _builder.append(_name_10, "\t\t"); - _builder.append("\", ((etReplPort*)self)->ports[i].port.peerInstName)"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_SYNC_EXIT"); - _builder.newLine(); - } - } - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - String _name_11 = message.getName(); - String _messageSignature_2 = this.messageSignature(replPortClassName, _name_11, "", (", int idx__et" + data)); - _builder.append(_messageSignature_2, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - { - boolean _notEquals_2 = (!Objects.equal(hdlr, null)); - if (_notEquals_2) { - _builder.append("\t"); - _builder.append(portClassName, "\t"); - _builder.append("_"); - String _name_12 = message.getName(); - _builder.append(_name_12, "\t"); - _builder.append("(&((etReplPort*)self)->ports[idx__et].port"); - _builder.append(dataCall, "\t"); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\""); - _builder.append(replPortClassName, "\t"); - _builder.append("\", \""); - String _name_13 = message.getName(); - _builder.append(_name_13, "\t"); - _builder.append("\")"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("if (0<=idx__et && idx__et<((etReplPort*)self)->size) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - String _name_14 = pc.getName(); - String _name_15 = message.getName(); - String _plus_2 = (dir + _name_15); - String _memberInUse_2 = this._cExtensions.memberInUse(_name_14, _plus_2); - String _sendMessageCall_2 = this.sendMessageCall(hasData, "(&((etReplPort*)self)->ports[idx__et].port)", _memberInUse_2, (typeName + refp), (refa + "data__et")); - _builder.append(_sendMessageCall_2, "\t\t"); - _builder.newLineIfNotEmpty(); - { - GlobalGeneratorSettings _settings_2 = Main.getSettings(); - boolean _isGenerateMSCInstrumentation_2 = _settings_2.isGenerateMSCInstrumentation(); - if (_isGenerateMSCInstrumentation_2) { - _builder.append("\t"); - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, \""); - String _name_16 = message.getName(); - _builder.append(_name_16, "\t\t"); - _builder.append("\", ((etReplPort*)self)->ports[idx__et].port.peerInstName)"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("ET_MSC_LOGGER_SYNC_EXIT"); - _builder.newLine(); - } - } - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - } - } - { - boolean _isEmpty = allPortClasses.isEmpty(); - boolean _not = (!_isEmpty); - if (_not) { - _builder.append("/* begin "); - _builder.append(portClassName, ""); - _builder.append(" specific (including base classes) */"); - _builder.newLineIfNotEmpty(); - { - for(final PortClass p : allPortClasses) { - DetailCode _userCode = p.getUserCode(); - CharSequence _userCode_1 = this._procedureHelpers.userCode(_userCode); - _builder.append(_userCode_1, ""); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - { - for(final PortClass p_1 : allPortClasses) { - EList<PortOperation> _operations = p_1.getOperations(); - CharSequence _operationsImplementation = this._procedureHelpers.operationsImplementation(_operations, portClassName); - _builder.append(_operationsImplementation, ""); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("/* end "); - _builder.append(portClassName, ""); - _builder.append(" specific (including base classes) */"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - } - } - _builder.append("etInt32 "); - _builder.append(replPortClassName, ""); - _builder.append("_getReplication(const "); - _builder.append(replPortClassName, ""); - _builder.append("* self) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("return ((etReplPort*)self)->size;"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - { - boolean _handlesReceive = this._roomExtensions.handlesReceive(pc, (conj).booleanValue()); - if (_handlesReceive) { - CharSequence _genReceiveHandlers = this.genReceiveHandlers(pc, conj); - _builder.append(_genReceiveHandlers, ""); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _xblockexpression = _builder; - } - return _xblockexpression; - } - - private String sendMessageCall(final boolean hasData, final String selfPtr, final String msg, final String typeName, final String data) { - String _xifexpression = null; - if (hasData) { - _xifexpression = (((((((("etPort_sendMessage(" + selfPtr) + ", ") + msg) + ", sizeof(") + typeName) + "), ") + data) + ");"); - } else { - _xifexpression = (((("etPort_sendMessage(" + selfPtr) + ", ") + msg) + ", 0, NULL);"); - } - return _xifexpression; - } - - private String messageSignature(final String className, final String messageName, final String methodSuffix, final String data) { - return ((((((((("void " + className) + "_") + messageName) + methodSuffix) + "(const ") + className) + "* self") + data) + ")"); - } - - private String messageSetterSignature(final String className, final String messageName, final String data) { - return (((((((("void " + className) + "_") + messageName) + "_set(") + className) + "* self") + data) + ")"); - } - - private String messageGetterSignature(final String className, final String messageName, final String type) { - return (((((((type + " ") + className) + "_") + messageName) + "_get(const ") + className) + "* const self)"); - } - - private CharSequence genReceiveHandlers(final ProtocolClass pc, final Boolean conj) { - CharSequence _xblockexpression = null; - { - String portClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue()); - StringConcatenation _builder = new StringConcatenation(); - _builder.append("/* receiver handlers */"); - _builder.newLine(); - { - List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(pc, (conj).booleanValue()); - for(final MessageHandler h : _receiveHandlers) { - _builder.append("void "); - _builder.append(portClassName, ""); - _builder.append("_"); - Message _msg = h.getMsg(); - String _name = _msg.getName(); - _builder.append(_name, ""); - _builder.append("_receiveHandler("); - _builder.append(portClassName, ""); - _builder.append("* self, const etMessage* msg, void * actor, etActorReceiveMessage receiveMessageFunc){"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - AbstractGenerator _instance = AbstractGenerator.getInstance(); - DetailCode _detailCode = h.getDetailCode(); - String _translatedCode = _instance.getTranslatedCode(_detailCode); - _builder.append(_translatedCode, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("/* hand over the message to the actor: */"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("/* (*receiveMessageFunc)(actor, self, msg); */"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - } - _xblockexpression = _builder; - } - return _xblockexpression; - } - - private CharSequence generateDebugHelpersImplementation(final Root root, final ProtocolClass pc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.newLine(); - _builder.append("/* message names as strings for debugging (generate MSC) */"); - _builder.newLine(); - _builder.append("static const char* const "); - String _name = pc.getName(); - _builder.append(_name, ""); - _builder.append("_messageStrings[] = {\"MIN\", "); - { - List<Message> _allOutgoingMessages = this._roomHelpers.getAllOutgoingMessages(pc); - for(final Message m : _allOutgoingMessages) { - _builder.append("\""); - String _name_1 = m.getName(); - _builder.append(_name_1, ""); - _builder.append("\","); - } - } - { - List<Message> _allIncomingMessages = this._roomHelpers.getAllIncomingMessages(pc); - for(final Message m_1 : _allIncomingMessages) { - _builder.append("\""); - String _name_2 = m_1.getName(); - _builder.append(_name_2, ""); - _builder.append("\", "); - } - } - _builder.append("\"MAX\"};"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("const char* "); - String _name_3 = pc.getName(); - _builder.append(_name_3, ""); - _builder.append("_getMessageString(int msg_id) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("if (msg_id<"); - String _name_4 = pc.getName(); - _builder.append(_name_4, "\t"); - _builder.append("_MSG_MIN || msg_id>"); - String _name_5 = pc.getName(); - _builder.append(_name_5, "\t"); - _builder.append("_MSG_MAX+1){"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("/* id out of range */"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return \"Message ID out of range\";"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("else{"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return "); - String _name_6 = pc.getName(); - _builder.append(_name_6, "\t\t"); - _builder.append("_messageStrings[msg_id];"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - return _builder; - } -} |