38 class PointsToIterator;
246struct std::hash<
SVF::PointsTo>
u32_t operator*() const
Dereference: *it.
CoreBitVector::iterator cbvIt
SparseBitVector ::iterator sbvIt
std::ptrdiff_t difference_type
const PointsTo * pt
PointsTo we are iterating over.
bool operator!=(const PointsToIterator &rhs) const
Inequality: *this != rhs.
PointsToIterator()=delete
Deleted because we don't want iterators with null pt.
const PointsToIterator & operator++()
Pre-increment: ++it.
std::forward_iterator_tag iterator_category
PointsToIterator & operator=(const PointsToIterator &rhs)
bool operator==(const PointsToIterator &rhs) const
Equality: *this == rhs.
bool test_and_set(u32_t n)
bool empty() const
Returns true if set is empty.
void clear()
Empty the set.
static MappingPtr getCurrentBestReverseNodeMapping()
MappingPtr reverseNodeMapping
Internal nodes -> external nodes.
void reset(u32_t n)
Removes n from the set.
bool operator-=(const PointsTo &rhs)
PointsTo & operator=(const PointsTo &rhs)
Copy assignment.
size_t hash() const
Return a hash of this set.
bool operator&=(const PointsTo &rhs)
static MappingPtr currentBestReverseNodeMapping
Likewise, but reversed.
MappingPtr getNodeMapping() const
BitVector bv
Bit vector backing.
bool operator==(const PointsTo &rhs) const
Returns true if this set and rhs contain exactly the same elements.
const_iterator end() const
CoreBitVector cbv
Core bit vector backing.
NodeID getExternalNode(NodeID n) const
Returns reverseNodeMapping[n], checking for nullptr and size.
std::shared_ptr< std::vector< NodeID > > MappingPtr
static void setCurrentBestNodeMapping(MappingPtr newCurrentBestNodeMapping, MappingPtr newCurrentBestReverseNodeMapping)
bool operator!=(const PointsTo &rhs) const
Returns true if either this set or rhs has an element not in the other.
static MappingPtr currentBestNodeMapping
Best node mapping we know of the for the analyses at hand.
u32_t count() const
Returns number of elements.
bool metaSame(const PointsTo &pt) const
bool operator|=(const PointsTo &rhs)
enum Type type
Type of this points-to set.
void set(u32_t n)
Inserts n in the set.
bool contains(const PointsTo &rhs) const
Returns true if this set is a superset of rhs.
PointsTo()
Construct empty points-to set.
MappingPtr nodeMapping
External nodes -> internal nodes.
NodeBS toNodeBS() const
Returns this points-to set as a NodeBS.
PointsToIterator const_iterator
const_iterator begin() const
bool intersects(const PointsTo &rhs) const
Returns true if this set and rhs share any elements.
static MappingPtr getCurrentBestNodeMapping()
SparseBitVector sbv
Sparse bit vector backing.
NodeID getInternalNode(NodeID n) const
Returns nodeMapping[n], checking for nullptr and size.
bool test(u32_t n) const
Returns true if n is in this set.
bool intersectWithComplement(const PointsTo &rhs)
IntervalValue operator-(const IntervalValue &lhs, const IntervalValue &rhs)
Subtract IntervalValues.
IntervalValue operator&(const IntervalValue &lhs, const IntervalValue &rhs)
Bitwise AND of IntervalValues.
llvm::IRBuilder IRBuilder
IntervalValue operator|(const IntervalValue &lhs, const IntervalValue &rhs)
Bitwise OR of IntervalValues.
size_t operator()(const SVF::PointsTo &pt) const