override fun translate()

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()
    }