#include <PointsTo.h>
Definition at line 181 of file PointsTo.h.
◆ difference_type
◆ iterator_category
◆ pointer
◆ reference
◆ value_type
◆ PointsToIterator() [1/4]
SVF::PointsTo::PointsToIterator::PointsToIterator |
( |
| ) |
|
|
delete |
Deleted because we don't want iterators with null pt.
◆ PointsToIterator() [2/4]
SVF::PointsTo::PointsToIterator::PointsToIterator |
( |
const PointsToIterator & |
pt | ) |
|
Definition at line 411 of file PointsTo.cpp.
414 if (this->
pt->
type == PointsTo::Type::SBV)
418 else if (this->
pt->
type == PointsTo::Type::CBV)
422 else if (this->
pt->
type == PointsTo::Type::BV)
428 assert(
false &&
"PointsToIterator::PointsToIterator&: unknown type");
CoreBitVector::iterator cbvIt
SparseBitVector ::iterator sbvIt
const PointsTo * pt
PointsTo we are iterating over.
enum Type type
Type of this points-to set.
SparseBitVectorIterator iterator
◆ PointsToIterator() [3/4]
Definition at line 433 of file PointsTo.cpp.
436 if (this->
pt->
type == PointsTo::Type::SBV)
440 else if (this->
pt->
type == PointsTo::Type::CBV)
444 else if (this->
pt->
type == PointsTo::Type::BV)
450 assert(
false &&
"PointsToIterator::PointsToIterator&&: unknown type");
constexpr std::remove_reference< T >::type && move(T &&t) noexcept
◆ PointsToIterator() [4/4]
SVF::PointsTo::PointsToIterator::PointsToIterator |
( |
const PointsTo * |
pt, |
|
|
bool |
end = false |
|
) |
| |
|
explicit |
Returns an iterator to the beginning of pt if end is false, and to the end of pt if end is true.
Definition at line 389 of file PointsTo.cpp.
392 if (
pt->
type == Type::CBV)
396 else if (
pt->
type == Type::SBV)
400 else if (
pt->
type == Type::BV)
406 assert(
false &&
"PointsToIterator::PointsToIterator: unknown type");
const_iterator begin(void) const
const_iterator end(void) const
BitVector bv
Bit vector backing.
const_iterator end() const
CoreBitVector cbv
Core bit vector backing.
SparseBitVector sbv
Sparse bit vector backing.
◆ atEnd()
bool SVF::PointsTo::PointsToIterator::atEnd |
( |
| ) |
const |
|
private |
Definition at line 552 of file PointsTo.cpp.
554 assert(
pt !=
nullptr &&
"PointsToIterator::atEnd: iterator iterating over nothing!");
560 assert(
false &&
"PointsToIterator::atEnd: unknown type");
◆ operator!=()
bool SVF::PointsTo::PointsToIterator::operator!= |
( |
const PointsToIterator & |
rhs | ) |
const |
Inequality: *this != rhs.
Definition at line 545 of file PointsTo.cpp.
548 &&
"PointsToIterator::!=: comparing iterators from different PointsTos!");
549 return !(*
this == rhs);
◆ operator*()
NodeID SVF::PointsTo::PointsToIterator::operator* |
( |
void |
| ) |
const |
Dereference: *it.
Definition at line 516 of file PointsTo.cpp.
518 assert(!
atEnd() &&
"PointsToIterator: dereferencing end!");
524 assert(
false &&
"PointsToIterator::*: unknown type");
NodeID getExternalNode(NodeID n) const
Returns reverseNodeMapping[n], checking for nullptr and size.
◆ operator++() [1/2]
Pre-increment: ++it.
Definition at line 497 of file PointsTo.cpp.
499 assert(!
atEnd() &&
"PointsToIterator::++(pre): incrementing past end!");
503 else assert(
false &&
"PointsToIterator::++(void): unknown type");
◆ operator++() [2/2]
Post-increment: it++.
Definition at line 508 of file PointsTo.cpp.
510 assert(!
atEnd() &&
"PointsToIterator::++(pre): incrementing past end!");
PointsToIterator()=delete
Deleted because we don't want iterators with null pt.
◆ operator=() [1/2]
Definition at line 455 of file PointsTo.cpp.
459 if (this->
pt->
type == PointsTo::Type::SBV)
463 else if (this->
pt->
type == PointsTo::Type::CBV)
467 else if (this->
pt->
type == PointsTo::Type::BV)
471 else assert(
false &&
"PointsToIterator::PointsToIterator&: unknown type");
◆ operator=() [2/2]
Definition at line 476 of file PointsTo.cpp.
480 if (this->
pt->
type == PointsTo::Type::SBV)
484 else if (this->
pt->
type == PointsTo::Type::CBV)
488 else if (this->
pt->
type == PointsTo::Type::BV)
492 else assert(
false &&
"PointsToIterator::PointsToIterator&&: unknown type");
◆ operator==()
bool SVF::PointsTo::PointsToIterator::operator== |
( |
const PointsToIterator & |
rhs | ) |
const |
Equality: *this == rhs.
Definition at line 529 of file PointsTo.cpp.
532 &&
"PointsToIterator::==: comparing iterators from different PointsTos!");
535 if (
pt->
type == Type::CBV)
return cbvIt == rhs.cbvIt;
536 else if (
pt->
type == Type::SBV)
return sbvIt == rhs.sbvIt;
537 else if (
pt->
type == Type::BV)
return bvIt == rhs.bvIt;
540 assert(
false &&
"PointsToIterator::==: unknown type");
Iterator into the backing data structure. Discriminated by pt->type. TODO: std::variant when we move to C++17.
◆ bvIt
◆ cbvIt
◆ pt
const PointsTo* SVF::PointsTo::PointsToIterator::pt |
|
private |
◆ sbvIt
The documentation for this class was generated from the following files:
- /home/runner/work/SVF/SVF/svf/include/MemoryModel/PointsTo.h
- /home/runner/work/SVF/SVF/svf/lib/MemoryModel/PointsTo.cpp