Class IMPArrayAccess

  • All Implemented Interfaces:
    it.unive.lisa.program.cfg.ProgramPoint, it.unive.lisa.program.CodeElement, it.unive.lisa.util.datastructures.graph.Node<it.unive.lisa.program.cfg.statement.Statement,​it.unive.lisa.program.cfg.edge.Edge,​it.unive.lisa.program.cfg.CFG>, java.lang.Comparable<it.unive.lisa.program.cfg.statement.Statement>

    public class IMPArrayAccess
    extends it.unive.lisa.program.cfg.statement.call.BinaryNativeCall
    An expression modeling the array element access operation (array[index]). The type of this expression is the one of the resolved array element.
    • Field Summary

      • Fields inherited from class it.unive.lisa.program.cfg.statement.Statement

        offset
    • Constructor Summary

      Constructors 
      Constructor Description
      IMPArrayAccess​(it.unive.lisa.program.cfg.CFG cfg, java.lang.String sourceFile, int line, int col, it.unive.lisa.program.cfg.statement.Expression container, it.unive.lisa.program.cfg.statement.Expression location)
      Builds the array access.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected <A extends it.unive.lisa.analysis.AbstractState<A,​H,​V>,​H extends it.unive.lisa.analysis.heap.HeapDomain<H>,​V extends it.unive.lisa.analysis.value.ValueDomain<V>>
      it.unive.lisa.analysis.AnalysisState<A,​H,​V>
      binarySemantics​(it.unive.lisa.analysis.AnalysisState<A,​H,​V> entryState, it.unive.lisa.interprocedural.InterproceduralAnalysis<A,​H,​V> interprocedural, it.unive.lisa.analysis.AnalysisState<A,​H,​V> leftState, it.unive.lisa.symbolic.SymbolicExpression left, it.unive.lisa.analysis.AnalysisState<A,​H,​V> rightState, it.unive.lisa.symbolic.SymbolicExpression right)  
      • Methods inherited from class it.unive.lisa.program.cfg.statement.call.BinaryNativeCall

        callSemantics
      • Methods inherited from class it.unive.lisa.program.cfg.statement.call.NativeCall

        equals, getConstructName, hashCode, toString
      • Methods inherited from class it.unive.lisa.program.cfg.statement.call.Call

        accept, getParameters, semantics, setOffset
      • Methods inherited from class it.unive.lisa.program.cfg.statement.Expression

        getDynamicType, getMetaVariables, getParentStatement, getRootStatement, getRuntimeTypes, getStaticType, setParentStatement, setRuntimeTypes
      • Methods inherited from class it.unive.lisa.program.cfg.statement.Statement

        compareTo, getCFG, getLocation, getOffset, stopsExecution, throwsError
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • IMPArrayAccess

        public IMPArrayAccess​(it.unive.lisa.program.cfg.CFG cfg,
                              java.lang.String sourceFile,
                              int line,
                              int col,
                              it.unive.lisa.program.cfg.statement.Expression container,
                              it.unive.lisa.program.cfg.statement.Expression location)
        Builds the array access.
        Parameters:
        cfg - the CFG where this operation lies
        sourceFile - the source file name where this operation is defined
        line - the line number where this operation is defined
        col - the column where this operation is defined
        container - the expression representing the array reference that will receive the access
        location - the expression representing the accessed element
    • Method Detail

      • binarySemantics

        protected <A extends it.unive.lisa.analysis.AbstractState<A,​H,​V>,​H extends it.unive.lisa.analysis.heap.HeapDomain<H>,​V extends it.unive.lisa.analysis.value.ValueDomain<V>> it.unive.lisa.analysis.AnalysisState<A,​H,​V> binarySemantics​(it.unive.lisa.analysis.AnalysisState<A,​H,​V> entryState,
                                                                                                                                                                                                                                                                                    it.unive.lisa.interprocedural.InterproceduralAnalysis<A,​H,​V> interprocedural,
                                                                                                                                                                                                                                                                                    it.unive.lisa.analysis.AnalysisState<A,​H,​V> leftState,
                                                                                                                                                                                                                                                                                    it.unive.lisa.symbolic.SymbolicExpression left,
                                                                                                                                                                                                                                                                                    it.unive.lisa.analysis.AnalysisState<A,​H,​V> rightState,
                                                                                                                                                                                                                                                                                    it.unive.lisa.symbolic.SymbolicExpression right)
                                                                                                                                                                                                                                                                             throws it.unive.lisa.analysis.SemanticException
        Specified by:
        binarySemantics in class it.unive.lisa.program.cfg.statement.call.BinaryNativeCall
        Throws:
        it.unive.lisa.analysis.SemanticException