| 170 | }; |
| 171 | |
| 172 | struct OrPredicate : IPredicate, ReferenceCounted<OrPredicate>, FastAllocated<OrPredicate> { |
| 173 | void addref() override { ReferenceCounted<OrPredicate>::addref(); } |
| 174 | void delref() override { ReferenceCounted<OrPredicate>::delref(); } |
| 175 | |
| 176 | TypeCode getTypeCode() const override { return TypeCode::OR; } |
| 177 | |
| 178 | std::vector<Reference<IPredicate>> terms; |
| 179 | |
| 180 | explicit OrPredicate(std::vector<Reference<IPredicate>> const& terms) : terms(terms) {} |
| 181 | |
| 182 | Future<bool> evaluate(Reference<IReadContext> const& context) override; |
| 183 | Reference<IPredicate> simplify() override; |
| 184 | std::string toString() override; |
| 185 | |
| 186 | Reference<IPredicate> simplify_not() override; |
| 187 | }; |
| 188 | |
| 189 | struct BSONTypePredicate : IPredicate, ReferenceCounted<BSONTypePredicate>, FastAllocated<BSONTypePredicate> { |
| 190 | void addref() override { ReferenceCounted<BSONTypePredicate>::addref(); } |