in code/4diac-integration/src/main/kotlin/org/fbme/ide/integration/fordiac/translator/cpp/adapter/AdapterFBTypeHeaderTranslator.kt [13:78]
override fun translate(): String {
sb.appendLine(this.constructIncludeGuardStart())
.append(this.constructHeaderIncludes())
.appendLine(this.constructFBClassHeader())
.appendLine(this.constructFBDeclaration(indent = " "))
.appendLine("private:")
.appendLine(this.constructFBInterfaceDeclaration(indent = " "))
.appendLine(this.constructFBInterfaceSpecDeclaration(indent = " "))
.appendLine(
constructAdapterAccessors(
parameters = fb.inputParameters,
socketFunctionName = "getDI",
plugFunctionName = "getDO",
indent = " "
)
)
.appendLine(
constructAdapterAccessors(
parameters = fb.outputParameters,
socketFunctionName = "getDO",
plugFunctionName = "getDI",
indent = " "
)
)
val sockets = fb.templateTypeDescriptor.socketPorts.map { it.declaration as SocketDeclaration }
val plugs = fb.templateTypeDescriptor.socketPorts.map { it.declaration as PlugDeclaration }
sb.appendLine(this.constructAccessors(sockets + plugs, indent = " "))
.appendLine("public:")
addEventAccessors(fb.inputEvents, indent = " ")
addEventAccessors(fb.outputEvents, indent = " ")
sb.appendLine("private:")
.append(" FORTE_ADAPTER_DATA_ARRAY(")
.append(fb.inputEvents.size)
.append(", ")
.append(fb.outputEvents.size)
.append(", ")
.append(fb.inputParameters.size)
.append(", ")
.append(fb.outputParameters.size)
.append(", ")
.append(sockets.size + plugs.size)
.appendLine(");")
.appendLine("public:")
.append(" ")
.append(this.constructFBClassName())
.append("(CStringDictionary::TStringId pa_anAdapterInstanceName, ")
.appendLine("CResource *pa_poSrcRes, bool pa_bIsPlug) :")
.append(" ")
.append(baseClass)
.append("(pa_poSrcRes, &scm_stFBInterfaceSpecSocket, pa_anAdapterInstanceName, ")
.appendLine("&scm_stFBInterfaceSpecPlug, pa_bIsPlug, m_anFBConnData, m_anFBVarsData) {")
.appendLine(" };")
.append(" virtual ~")
.append(this.constructFBClassName())
.appendLine("() = default;")
.appendLine("};")
.appendLine(this.constructIncludeGuardEnd())
val res = sb.toString()
sb.clear()
return res.toString()
}