Class MultiCall

    • Constructor Detail

      • MultiCall

        public MultiCall​(CFG cfg,
                         CodeLocation location,
                         Call.CallType callType,
                         java.lang.String qualifier,
                         java.lang.String targetName,
                         java.util.Collection<Call> calls,
                         Expression... parameters)
        Builds the multi-call, happening at the given location in the program. The EvaluationOrder of the parameter is LeftToRightEvaluation. The static type of this call is the common supertype of the return types of all targets.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where this expression is defined within the program
        callType - the call type of this call
        qualifier - the optional qualifier of the call (can be null or empty - see Call.getFullTargetName() for more info)
        targetName - the qualified name of the static target of this call
        calls - the Calls underlying this one
        parameters - the parameters of this call
      • MultiCall

        public MultiCall​(CFG cfg,
                         CodeLocation location,
                         Call.CallType callType,
                         java.lang.String qualifier,
                         java.lang.String targetName,
                         EvaluationOrder order,
                         java.util.Collection<Call> calls,
                         Expression... parameters)
        Builds the multi call, happening at the given location in the program. The static type of this call is the common supertype of the return types of all targets.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where this expression is defined within the program
        callType - the call type of this call
        qualifier - the optional qualifier of the call (can be null or empty - see Call.getFullTargetName() for more info)
        targetName - the qualified name of the static target of this call
        order - the evaluation order of the sub-expressions
        calls - the Calls underlying this one
        parameters - the parameters of this call
      • MultiCall

        public MultiCall​(UnresolvedCall source,
                         Call... calls)
        Creates a multi call as the resolved version of the given source call, copying all its data.
        Parameters:
        source - the unresolved call to copy
        calls - the calls underlying this one
    • Method Detail

      • getCalls

        public java.util.Collection<Call> getCalls()
        Yields the calls underlying this multi call.
        Returns:
        the calls
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Call
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class Call
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class Call
      • setSource

        public void setSource​(UnresolvedCall source)
        Description copied from class: Call
        Sets the call that this call originated from. A call r originates from a call u if:
        Overrides:
        setSource in class Call
        Parameters:
        source - the call that this one originated from
      • expressionSemantics

        public <A extends AbstractState<A,​H,​V,​T>,​H extends HeapDomain<H>,​V extends ValueDomain<V>,​T extends TypeDomain<T>> AnalysisState<A,​H,​V,​T> expressionSemantics​(InterproceduralAnalysis<A,​H,​V,​T> interprocedural,
                                                                                                                                                                                                                            AnalysisState<A,​H,​V,​T> state,
                                                                                                                                                                                                                            ExpressionSet<SymbolicExpression>[] params,
                                                                                                                                                                                                                            StatementStore<A,​H,​V,​T> expressions)
                                                                                                                                                                                                                     throws SemanticException
        Description copied from class: NaryExpression
        Computes the semantics of the expression, after the semantics of all sub-expressions have been computed. Meta variables from the sub-expressions will be forgotten after this call returns.
        Specified by:
        expressionSemantics in class NaryExpression
        Type Parameters:
        A - the type of AbstractState
        H - the type of the HeapDomain
        V - the type of the ValueDomain
        T - the type of TypeDomain
        Parameters:
        interprocedural - the interprocedural analysis of the program to analyze
        state - the state where the expression is to be evaluated
        params - the symbolic expressions representing the computed values of the sub-expressions of this expression
        expressions - the cache where analysis states of intermediate expressions are stored and that can be accessed to query for post-states of parameters expressions
        Returns:
        the AnalysisState representing the abstract result of the execution of this expression
        Throws:
        SemanticException - if something goes wrong during the computation