Class CharInclusion

    • Nested Class Summary

      • Nested classes/interfaces inherited from interface it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain

        it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain.EvaluationVisitor<T extends it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<T>>
    • Field Summary

      • Fields inherited from interface it.unive.lisa.analysis.Lattice

        BOTTOM_STRING, TOP_STRING
    • Constructor Summary

      Constructors 
      Constructor Description
      CharInclusion()
      Builds the top char inclusion abstract element.
      CharInclusion​(java.util.Set<java.lang.Character> certainlyContained, java.util.Set<java.lang.Character> maybeContained)
      Builds a char inclusion abstract element.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      CharInclusion bottom()  
      it.unive.lisa.analysis.lattices.Satisfiability containsChar​(char c)
      Simplified semantics of the string contains operator, checking a single character is part of the string.
      boolean equals​(java.lang.Object o)  
      CharInclusion evalBinaryExpression​(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, CharInclusion left, CharInclusion right, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)  
      CharInclusion evalNonNullConstant​(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)  
      CharInclusion evalTernaryExpression​(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, CharInclusion left, CharInclusion middle, CharInclusion right, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)  
      java.util.Set<java.lang.Character> getCertainlyContained()
      Yields the set of certainly contained characters of this abstract value.
      java.util.Set<java.lang.Character> getMaybeContained()
      Yields the set of maybe contained characters of this abstract value.
      int hashCode()  
      it.unive.lisa.util.numeric.IntInterval indexOf​(CharInclusion s)
      Yields the IntInterval containing the minimum and maximum index of s in this.
      it.unive.lisa.util.numeric.IntInterval length()
      Yields the IntInterval containing the minimum and maximum length of this abstract value.
      boolean lessOrEqualAux​(CharInclusion other)  
      CharInclusion lubAux​(CharInclusion other)  
      it.unive.lisa.util.representation.StructuredRepresentation representation()  
      it.unive.lisa.analysis.lattices.Satisfiability satisfiesBinaryExpression​(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, CharInclusion left, CharInclusion right, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)  
      CharInclusion substring​(long begin, long end)
      Yields the char inclusion abstract value corresponding to the substring of this char inclusion abstract value between two indexes.
      CharInclusion top()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface it.unive.lisa.analysis.BaseLattice

        glb, glbAux, lessOrEqual, lub, narrowing, narrowingAux, toString, widening, wideningAux
      • Methods inherited from interface it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain

        assume, assumeBinaryExpression, assumeTernaryExpression, assumeUnaryExpression, canProcess, eval, evalIdentifier, evalNullConstant, evalPushAny, evalPushInv, evalSkip, evalTypeCast, evalTypeConv, evalUnaryExpression, evalValueExpression, satisfies, satisfiesAbstractValue, satisfiesNonNullConstant, satisfiesNullConstant, satisfiesTernaryExpression, satisfiesUnaryExpression
      • Methods inherited from interface it.unive.lisa.analysis.Lattice

        isBottom, isTop
      • Methods inherited from interface it.unive.lisa.analysis.nonrelational.NonRelationalElement

        fixedVariable, unknownVariable
    • Constructor Detail

      • CharInclusion

        public CharInclusion()
        Builds the top char inclusion abstract element.
      • CharInclusion

        public CharInclusion​(java.util.Set<java.lang.Character> certainlyContained,
                             java.util.Set<java.lang.Character> maybeContained)
        Builds a char inclusion abstract element.
        Parameters:
        certainlyContained - the set of certainly contained characters
        maybeContained - the set of maybe contained characters
    • Method Detail

      • lubAux

        public CharInclusion lubAux​(CharInclusion other)
                             throws it.unive.lisa.analysis.SemanticException
        Specified by:
        lubAux in interface it.unive.lisa.analysis.BaseLattice<CharInclusion>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • lessOrEqualAux

        public boolean lessOrEqualAux​(CharInclusion other)
                               throws it.unive.lisa.analysis.SemanticException
        Specified by:
        lessOrEqualAux in interface it.unive.lisa.analysis.BaseLattice<CharInclusion>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • equals

        public boolean equals​(java.lang.Object o)
        Specified by:
        equals in interface it.unive.lisa.analysis.BaseLattice<CharInclusion>
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface it.unive.lisa.analysis.BaseLattice<CharInclusion>
        Overrides:
        hashCode in class java.lang.Object
      • representation

        public it.unive.lisa.util.representation.StructuredRepresentation representation()
        Specified by:
        representation in interface it.unive.lisa.util.representation.StructuredObject
      • getCertainlyContained

        public java.util.Set<java.lang.Character> getCertainlyContained()
        Yields the set of certainly contained characters of this abstract value.
        Returns:
        the set of certainly contained characters of this abstract value.
      • getMaybeContained

        public java.util.Set<java.lang.Character> getMaybeContained()
        Yields the set of maybe contained characters of this abstract value.
        Returns:
        the set of maybe contained characters of this abstract value, or null if the whole alphabet might be part of the string
      • evalNonNullConstant

        public CharInclusion evalNonNullConstant​(it.unive.lisa.symbolic.value.Constant constant,
                                                 it.unive.lisa.program.cfg.ProgramPoint pp,
                                                 it.unive.lisa.analysis.SemanticOracle oracle)
        Specified by:
        evalNonNullConstant in interface it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<CharInclusion>
      • evalBinaryExpression

        public CharInclusion evalBinaryExpression​(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator,
                                                  CharInclusion left,
                                                  CharInclusion right,
                                                  it.unive.lisa.program.cfg.ProgramPoint pp,
                                                  it.unive.lisa.analysis.SemanticOracle oracle)
        Specified by:
        evalBinaryExpression in interface it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<CharInclusion>
      • evalTernaryExpression

        public CharInclusion evalTernaryExpression​(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator,
                                                   CharInclusion left,
                                                   CharInclusion middle,
                                                   CharInclusion right,
                                                   it.unive.lisa.program.cfg.ProgramPoint pp,
                                                   it.unive.lisa.analysis.SemanticOracle oracle)
                                            throws it.unive.lisa.analysis.SemanticException
        Specified by:
        evalTernaryExpression in interface it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<CharInclusion>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • satisfiesBinaryExpression

        public it.unive.lisa.analysis.lattices.Satisfiability satisfiesBinaryExpression​(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator,
                                                                                        CharInclusion left,
                                                                                        CharInclusion right,
                                                                                        it.unive.lisa.program.cfg.ProgramPoint pp,
                                                                                        it.unive.lisa.analysis.SemanticOracle oracle)
        Specified by:
        satisfiesBinaryExpression in interface it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<CharInclusion>
      • substring

        public CharInclusion substring​(long begin,
                                       long end)
        Yields the char inclusion abstract value corresponding to the substring of this char inclusion abstract value between two indexes.
        Parameters:
        begin - where the substring starts
        end - where the substring ends
        Returns:
        the char inclusion abstract value corresponding to the substring of this char inclusion abstract value between two indexes
      • length

        public it.unive.lisa.util.numeric.IntInterval length()
        Yields the IntInterval containing the minimum and maximum length of this abstract value.
        Returns:
        the minimum and maximum length of this abstract value
      • indexOf

        public it.unive.lisa.util.numeric.IntInterval indexOf​(CharInclusion s)
        Yields the IntInterval containing the minimum and maximum index of s in this.
        Parameters:
        s - the string to be searched
        Returns:
        the minimum and maximum index of s in this
      • containsChar

        public it.unive.lisa.analysis.lattices.Satisfiability containsChar​(char c)
        Description copied from interface: ContainsCharProvider
        Simplified semantics of the string contains operator, checking a single character is part of the string.
        Specified by:
        containsChar in interface ContainsCharProvider
        Parameters:
        c - the character to check
        Returns:
        whether or not the character is part of the string