117 return !(*
this == rhs);
130 template<
class LocCond>
173 return this->
cur < rhs.
cur;
175 return this->curloc < rhs.
curloc;
183 this->curloc = rhs.
getLoc();
190 return (this->
cur == rhs.
cur && this->curloc == rhs.
getLoc());
195 return !(*
this==rhs);
347 return !(*
this==rhs);
363 std::stringstream rawstr(str);
365 for(CallStrCxt::const_iterator it =
context.begin(), eit =
context.end(); it!=eit; ++it)
367 rawstr << *it <<
" ";
388 template<
class LocCond>
440 return this->
cur < rhs.
cur;
444 return this->context < rhs.
context;
459 return (this->
cur == rhs.
cur && this->curloc == rhs.
getLoc() && this->context == rhs.
context);
464 return !(*
this==rhs);
476 typedef CondVar<ContextCond>
CxtVar;
558 return !(*
this == rhs);
566 struct std::hash<
SVF::CxtDPItem>
576 template <
typename LocCond>
577 struct std::hash<
SVF::StmtDPItem<LocCond>>
587 template<
class LocCond>
588 struct std::hash<
SVF::CxtStmtDPItem<LocCond>>
600 struct std::hash<const
SVF::ContextCond>
604 std::hash<SVF::CallStrCxt> h;
610 struct std::hash<
SVF::ContextCond>
614 std::hash<SVF::CallStrCxt> h;
static void setMaxPathLen(u32_t max)
set max path limit
CallStrCxt::const_iterator const_iterator
u32_t cxtSize() const
Get context size.
CallStrCxt & getContexts()
Get context.
static u32_t maximumCxtLen
bool operator!=(const ContextCond &rhs) const
Overloading operator!=.
const_iterator begin() const
Begin iterators.
const_iterator end() const
End iterators.
bool operator<(const ContextCond &rhs) const
ContextCond(const ContextCond &cond)
Copy Constructor.
std::string toString() const
Dump context condition.
NodeID operator[](const u32_t index) const
Overloading operator[].
bool operator==(const ContextCond &rhs) const
Overloading operator==.
bool containCallStr(NodeID cxt) const
Whether contains callstring cxt.
const CallStrCxt & getContexts() const
Get context.
ContextCond & operator=(ContextCond &&cond) noexcept
Move operator=.
static void setMaxCxtLen(u32_t max)
set max context limit
u32_t getMaxPathLen() const
ContextCond()
Constructor.
ContextCond(ContextCond &&cond) noexcept
Move Constructor.
static u32_t maximumPathLen
virtual bool matchContext(NodeID ctx)
Match context.
bool isConcreteCxt() const
Whether it is an concrete context.
void setNonConcreteCxt()
Whether it is an concrete context.
virtual ~ContextCond()
Destructor.
virtual bool pushContext(NodeID ctx)
Push context.
CxtDPItem(const CxtVar &var)
const ContextCond & getContexts() const
Get context.
void pushContext(NodeID cxt)
Push context.
CxtDPItem & operator=(CxtDPItem &&dps) noexcept
Move operator=.
bool operator==(const CxtDPItem &rhs) const
Overloading Operator==.
CxtDPItem(const CxtDPItem &dps)
Copy constructor.
CxtDPItem(NodeID c, const ContextCond &cxt)
Constructor.
bool operator<(const CxtDPItem &rhs) const
CxtDPItem(CxtDPItem &&dps) noexcept
Move constructor.
virtual ~CxtDPItem()
Destructor.
bool operator!=(const CxtDPItem &rhs) const
Overloading Operator!=.
virtual bool matchContext(NodeID cxt)
Match context.
virtual ~CxtStmtDPItem()
Destructor.
bool operator==(const CxtStmtDPItem< LocCond > &rhs) const
Overloading operator==.
bool operator!=(const CxtStmtDPItem< LocCond > &rhs) const
Overloading operator==.
bool operator<(const CxtStmtDPItem< LocCond > &rhs) const
bool matchContext(NodeID cxt)
Match context.
bool pushContext(NodeID cxt)
Push context.
CxtStmtDPItem(const CxtStmtDPItem< LocCond > &dps)
Copy constructor.
CxtStmtDPItem(const CxtVar &var, const LocCond *locCond)
Constructor.
ContextCond & getCond()
Get context.
CxtVar getCondVar() const
Get context var.
const ContextCond & getCond() const
Get context.
CxtStmtDPItem< LocCond > & operator=(const CxtStmtDPItem< LocCond > &rhs)
Overloading operator=.
NodeID getCurNodeID() const
virtual ~DPItem()
Destructor.
DPItem & operator=(DPItem &&rhs) noexcept
Move operator=.
static u64_t maximumBudget
void setCurNodeID(NodeID c)
bool operator<(const DPItem &rhs) const
static void setMaxBudget(u32_t max)
set max step budge per query
DPItem(const DPItem &dps)
Copy constructor.
DPItem(DPItem &&dps) noexcept
Move constructor.
DPItem(NodeID c)
Constructor.
bool operator==(const DPItem &rhs) const
Overloading Operator==.
bool operator!=(const DPItem &rhs) const
Overloading Operator!=.
static u32_t getMaxBudget()
StmtDPItem & operator=(const StmtDPItem &rhs)
Overloading operator==.
const LocCond * getLoc() const
Get context.
StmtDPItem(const StmtDPItem &dps)
Copy constructor.
void setLocVar(const LocCond *l, NodeID v)
Set location and pointer id.
virtual ~StmtDPItem()
Destructor.
void setLoc(const LocCond *l)
Set location.
bool operator!=(const StmtDPItem &rhs) const
Overloading operator!=.
StmtDPItem(NodeID c, const LocCond *locCond)
Constructor.
bool operator<(const StmtDPItem &rhs) const
bool operator==(const StmtDPItem &rhs) const
Overloading operator==.
constexpr std::remove_reference< T >::type && move(T &&t) noexcept
std::ostream & outs()
Overwrite llvm::outs()
CondVar< ContextCond > CxtVar
std::vector< u32_t > CallStrCxt
CondStdSet< CxtVar > CxtPtSet
provide extra hash function for std::pair handling
size_t operator()(const SVF::ContextCond &cc) const
size_t operator()(const SVF::CxtDPItem &cdpi) const
size_t operator()(const SVF::CxtStmtDPItem< LocCond > &csdpi) const
size_t operator()(const SVF::StmtDPItem< LocCond > &sdpi) const
size_t operator()(const SVF::ContextCond &cc) const