/// tree) and is simply a wrapper around PostingList::const_iterator.
class DocumentIterator : public Iterator {
public:
- DocumentIterator(PostingListRef Documents)
+ explicit DocumentIterator(PostingListRef Documents)
: Documents(Documents), Index(std::begin(Documents)) {}
bool reachedEnd() const override { return Index == std::end(Documents); }
/// iterator restores the invariant: all children must point to the same item.
class AndIterator : public Iterator {
public:
- AndIterator(std::vector<std::unique_ptr<Iterator>> AllChildren)
+ explicit AndIterator(std::vector<std::unique_ptr<Iterator>> AllChildren)
: Children(std::move(AllChildren)) {
assert(!Children.empty() && "AND iterator should have at least one child.");
// Establish invariants.
/// soon as all of its children are exhausted.
class OrIterator : public Iterator {
public:
- OrIterator(std::vector<std::unique_ptr<Iterator>> AllChildren)
+ explicit OrIterator(std::vector<std::unique_ptr<Iterator>> AllChildren)
: Children(std::move(AllChildren)) {
assert(Children.size() > 0 && "OR iterator must have at least one child.");
}
/// in O(1).
class TrueIterator : public Iterator {
public:
- TrueIterator(DocID Size) : Size(Size) {}
+ explicit TrueIterator(DocID Size) : Size(Size) {}
bool reachedEnd() const override { return Index >= Size; }