Package it.unive.lisa.analysis.string
Class CharInclusion
- java.lang.Object
-
- it.unive.lisa.analysis.string.CharInclusion
-
- All Implemented Interfaces:
it.unive.lisa.analysis.BaseLattice<CharInclusion>
,it.unive.lisa.analysis.Lattice<CharInclusion>
,it.unive.lisa.analysis.nonrelational.NonRelationalDomain<CharInclusion,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<CharInclusion>>
,it.unive.lisa.analysis.nonrelational.NonRelationalElement<CharInclusion,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<CharInclusion>>
,it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<CharInclusion>
,it.unive.lisa.analysis.nonrelational.value.NonRelationalValueDomain<CharInclusion>
,it.unive.lisa.analysis.SemanticEvaluator
,ContainsCharProvider
,it.unive.lisa.util.representation.StructuredObject
public class CharInclusion extends java.lang.Object implements it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<CharInclusion>, ContainsCharProvider
The suffix string abstract domain.
-
-
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 theIntInterval
containing the minimum and maximum index ofs
inthis
.it.unive.lisa.util.numeric.IntInterval
length()
Yields theIntInterval
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
-
-
-
-
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 charactersmaybeContained
- the set of maybe contained characters
-
-
Method Detail
-
lubAux
public CharInclusion lubAux(CharInclusion other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAux
in interfaceit.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 interfaceit.unive.lisa.analysis.BaseLattice<CharInclusion>
- Throws:
it.unive.lisa.analysis.SemanticException
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equals
in interfaceit.unive.lisa.analysis.BaseLattice<CharInclusion>
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Specified by:
hashCode
in interfaceit.unive.lisa.analysis.BaseLattice<CharInclusion>
- Overrides:
hashCode
in classjava.lang.Object
-
top
public CharInclusion top()
- Specified by:
top
in interfaceit.unive.lisa.analysis.Lattice<CharInclusion>
-
bottom
public CharInclusion bottom()
- Specified by:
bottom
in interfaceit.unive.lisa.analysis.Lattice<CharInclusion>
-
representation
public it.unive.lisa.util.representation.StructuredRepresentation representation()
- Specified by:
representation
in interfaceit.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 interfaceit.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 interfaceit.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 interfaceit.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 interfaceit.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 startsend
- 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 theIntInterval
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 theIntInterval
containing the minimum and maximum index ofs
inthis
.- Parameters:
s
- the string to be searched- Returns:
- the minimum and maximum index of
s
inthis
-
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 interfaceContainsCharProvider
- Parameters:
c
- the character to check- Returns:
- whether or not the character is part of the string
-
-