36 const_iterator lowerBound = m_exclude.lower_bound (comp);
37 if (lowerBound == end ())
40 if (lowerBound->second)
43 return lowerBound->first == comp;
51 if (!isExcluded (comp))
53 m_exclude.insert (std::make_pair (comp,
false));
92 <<
error::msg (
"Invalid exclude range (for single name exclude use Exclude::excludeOne)")
97 iterator newFrom = m_exclude.lower_bound (from);
98 if (newFrom == end () || !newFrom->second )
100 std::pair<iterator, bool> fromResult = m_exclude.insert (std::make_pair (from,
true));
101 newFrom = fromResult.first;
102 if (!fromResult.second)
105 newFrom->second =
true;
111 iterator newTo = m_exclude.lower_bound (to);
112 if (newTo == newFrom || !newTo->second)
114 std::pair<iterator, bool> toResult = m_exclude.insert (std::make_pair (to,
false));
115 newTo = toResult.first;
123 m_exclude.erase (newTo, newFrom);
131 iterator newFrom = m_exclude.lower_bound (from);
132 if (newFrom == end () || !newFrom->second )
134 std::pair<iterator, bool> fromResult = m_exclude.insert (std::make_pair (from,
true));
135 newFrom = fromResult.first;
136 if (!fromResult.second)
139 newFrom->second =
true;
145 if (newFrom != m_exclude.begin ())
147 m_exclude.erase (m_exclude.begin (), newFrom);
156 m_exclude.insert (std::make_pair (name, any));
160 operator << (std::ostream &os,
const Exclude &exclude)
162 for (Exclude::const_reverse_iterator i = exclude.
rbegin (); i != exclude.
rend (); i++)
164 os << i->first.toUri () <<
" ";
const_reverse_iterator rbegin() const
Get begin iterator of the exclude terms.
std::string toUri() const
Convert binary blob name component to std::string, escaping all non-printable characters in URI forma...
Class to represent Exclude component in NDN interests.
boost::error_info< struct tag_msg, std::string > msg
Free-formatted text message explaining the error.
This file defines basic elements for the library reporting.
const_reverse_iterator rend() const
Get end iterator of the exclude terms.
Class to representing binary blob of NDN name component.