fun checkTransition()

in code/nxt-integration/src/main/kotlin/org/fbme/integration/nxt/importer/BasicFbTypeNxtImporter.kt [66:115]


        fun checkTransition(guardCondition: Expression?) {
            if (guardCondition is VariableReference) {
                val variableName = (guardCondition.reference.identifier as StringIdentifier).value
                if (fbtd.inputParameters.stream().anyMatch { x: ParameterDeclaration -> x.name == variableName } ||
                    fbtd.internalVariables.stream().anyMatch { x: ParameterDeclaration -> x.name == variableName }) {
                    setDefaultBraces(guardCondition)
                    return
                }
            }
            if (guardCondition is ParenthesisExpression) {
                checkTransition(guardCondition.innerExpression)
                if (satisfies()) {
                    newGuardCondition = guardCondition
                }
                return
            }
            if (guardCondition is UnaryExpression) {
                setDefaultBraces(guardCondition)
                return
            }
            if (guardCondition is BinaryExpression) {
                val binaryExpression = guardCondition
                when (binaryExpression.operation) {
                    BinaryOperation.AND, BinaryOperation.OR, BinaryOperation.XOR -> {
                        val leftExpression = binaryExpression.leftExpression
                        if (leftExpression is VariableReference) {
                            val variableName = (leftExpression.reference.identifier as StringIdentifier).value
                            if (fbtd.inputEvents.stream().anyMatch { x: EventDeclaration -> x.name == variableName }) {
                                eventName = variableName
                                newGuardCondition = binaryExpression.rightExpression!!
                                satisfy = true
                                return
                            }
                        }
                        setDefaultBraces(guardCondition)
                        return
                    }

                    BinaryOperation.EQ, BinaryOperation.GT, BinaryOperation.GTE, BinaryOperation.LT, BinaryOperation.LTE, BinaryOperation.NEQ -> {
                        setDefaultBraces(guardCondition)
                        return
                    }

                    else -> {
                        return
                    }
                }
            }
            satisfy = false
        }