Package it.unive.lisa.analysis.string
Class Suffix
- java.lang.Object
-
- it.unive.lisa.analysis.string.Suffix
-
- All Implemented Interfaces:
it.unive.lisa.analysis.BaseLattice<Suffix>,it.unive.lisa.analysis.Lattice<Suffix>,it.unive.lisa.analysis.nonrelational.NonRelationalDomain<Suffix,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Suffix>>,it.unive.lisa.analysis.nonrelational.NonRelationalElement<Suffix,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Suffix>>,it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Suffix>,it.unive.lisa.analysis.nonrelational.value.NonRelationalValueDomain<Suffix>,it.unive.lisa.analysis.SemanticEvaluator,ContainsCharProvider,it.unive.lisa.util.representation.StructuredObject
public class Suffix extends java.lang.Object implements it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Suffix>, ContainsCharProvider
The suffix string abstract domain.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Suffixbottom()it.unive.lisa.analysis.lattices.SatisfiabilitycontainsChar(char c)Simplified semantics of the string contains operator, checking a single character is part of the string.booleanequals(java.lang.Object o)SuffixevalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Suffix left, Suffix right, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)SuffixevalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)SuffixevalTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, Suffix left, Suffix middle, Suffix right, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)java.lang.StringgetSuffix()Yields the suffix of this abstract value.inthashCode()it.unive.lisa.util.numeric.IntIntervalindexOf(Suffix s)Yields theIntIntervalcontaining the minimum and maximum index ofsinthis.it.unive.lisa.util.numeric.IntIntervallength()Yields theIntIntervalcontaining the minimum and maximum length of this abstract value.booleanlessOrEqualAux(Suffix other)SuffixlubAux(Suffix other)it.unive.lisa.util.representation.StructuredRepresentationrepresentation()Suffixsubstring(long begin, long end)Yields the suffix corresponding to the substring of this suffix between two indexes.Suffixtop()-
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, satisfies, satisfiesAbstractValue, satisfiesBinaryExpression, satisfiesNonNullConstant, satisfiesNullConstant, satisfiesTernaryExpression, satisfiesUnaryExpression
-
-
-
-
Method Detail
-
lubAux
public Suffix lubAux(Suffix other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAuxin interfaceit.unive.lisa.analysis.BaseLattice<Suffix>- Throws:
it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
public boolean lessOrEqualAux(Suffix other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lessOrEqualAuxin interfaceit.unive.lisa.analysis.BaseLattice<Suffix>- Throws:
it.unive.lisa.analysis.SemanticException
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equalsin interfaceit.unive.lisa.analysis.BaseLattice<Suffix>- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfaceit.unive.lisa.analysis.BaseLattice<Suffix>- Overrides:
hashCodein classjava.lang.Object
-
bottom
public Suffix bottom()
- Specified by:
bottomin interfaceit.unive.lisa.analysis.Lattice<Suffix>
-
representation
public it.unive.lisa.util.representation.StructuredRepresentation representation()
- Specified by:
representationin interfaceit.unive.lisa.util.representation.StructuredObject
-
evalNonNullConstant
public Suffix evalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
- Specified by:
evalNonNullConstantin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Suffix>
-
evalBinaryExpression
public Suffix evalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Suffix left, Suffix right, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
- Specified by:
evalBinaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Suffix>
-
evalTernaryExpression
public Suffix evalTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, Suffix left, Suffix middle, Suffix right, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
evalTernaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Suffix>- Throws:
it.unive.lisa.analysis.SemanticException
-
getSuffix
public java.lang.String getSuffix()
Yields the suffix of this abstract value.- Returns:
- the suffix of this abstract value.
-
substring
public Suffix substring(long begin, long end)
Yields the suffix corresponding to the substring of this suffix between two indexes.- Parameters:
begin- where the substring startsend- where the substring ends- Returns:
- the suffix corresponding to the substring of this suffix between two indexes
-
length
public it.unive.lisa.util.numeric.IntInterval length()
Yields theIntIntervalcontaining 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(Suffix s)
Yields theIntIntervalcontaining the minimum and maximum index ofsinthis.- Parameters:
s- the string to be searched- Returns:
- the minimum and maximum index of
sinthis
-
containsChar
public it.unive.lisa.analysis.lattices.Satisfiability containsChar(char c)
Description copied from interface:ContainsCharProviderSimplified semantics of the string contains operator, checking a single character is part of the string.- Specified by:
containsCharin interfaceContainsCharProvider- Parameters:
c- the character to check- Returns:
- whether or not the character is part of the string
-
-