Module dev.civl.abc

Interface InsensitiveFlowFactory


public interface InsensitiveFlowFactory

This class produces InsensitiveFlows, AssignmentIFs as well as AssignExprIFs

Remark that AssignExprIFs produced by an instance of this class are all canonicalized. Comparison between AssignExprIFs produced by different instances of this class is undefined.

  • Method Details

    • InsensitiveFlow

      InsensitiveFlow InsensitiveFlow(Function function, InvocationGraphNode igNode)

      Creates a new InsensitiveFlow of the function body for a call instance of a function.

      Parameters:
      function - a Function entity that must be defined with a function body
      igNode - the InvocationGraphNode associated with a call instance to the given function
      Returns:
      the generated insensitive flow representation
    • assignment

      AssignmentIF assignment(AssignExprIF lhs, boolean lhsDeref, AssignExprIF rhs, boolean rhsDeref, boolean rhsAddrof)

      creates a new instance of AssignmentIF

      Parameters:
      lhs - the AssignExprIF of the left-hand side of the assignment
      lhsDeref - Is the left-hand side dereferenced ?
      rhs - lhs the AssignExprIF of the right-hand side of the assignment
      rhsDeref - Is the right-hand side dereferenced ?
      rhsAddrof - Does the right-hand side be taken address-of ?
      Returns:
    • assignStoreExpr

      AssignStoreExprIF assignStoreExpr(ExpressionNode store)
      creates an abstract object representing an allocation or a string literal
      Parameters:
      store - an allocation (malloc call) or a string literal (string literal constant)
    • assignStoreExpr

      AssignStoreExprIF assignStoreExpr(Variable store)
      creates an abstract object representing a variable
      Parameters:
      store - a variable
    • assignFieldExpr

      AssignFieldExprIF assignFieldExpr(AssignExprIF struct, Field field)
      creates an abstract object representing a struct/union field of another abstract object
      Parameters:
      struct - an abstract object
      field - a Field
    • assignSubscriptExpr

      AssignSubscriptExprIF assignSubscriptExpr(AssignExprIF array, AssignOffsetIF index)
      creates an abstract object representing an array element of another abstract object
      Parameters:
      array - an abstract object
      index - an instance of AssignOffsetIF representing the index
    • assignOffsetExpr

      AssignOffsetExprIF assignOffsetExpr(AssignExprIF base, AssignOffsetIF offset)
      creates an abstract object representing a pointer with an offset
      Parameters:
      array - an abstract object
      index - an instance of AssignOffsetIF representing the offset
    • assignAuxExpr

      AssignAuxExprIF assignAuxExpr(Type type)
      creates a typed auxiliary abstract object
      Parameters:
      type - the type of the creating auxiliary abstract object
    • assignOffset

      AssignOffsetIF assignOffset(ExpressionNode offset, boolean positive)

      creates an AssignOffsetIF from an ExpressionNode of integer type

      Whether the created integral parameter represents a constant integer depends on whether the given expression node has a constant value.

      Parameters:
      offset - an ExpressionNode of integer type
      positive - whether the given "offset" argument is positive or negative
    • assignOffsetZero

      AssignOffsetIF assignOffsetZero()

      creates an AssignOffsetIF represents constant integral zero.

    • assignOffset

      AssignOffsetIF assignOffset(Integer val)

      creates an AssignOffsetIF represents the given constant integer.

    • assignOffsetWild

      AssignOffsetIF assignOffsetWild()
      Returns:
      an instance representing an arbitrary offset
    • full

      AssignExprIF full()

      creates an abstract object representing a pointer to any possible object