static bool _mongoc_matcher_op_not_match (mongoc_matcher_op_not_t *not, /* IN */ const bson_t *bson) /* IN */ { BSON_ASSERT (not); BSON_ASSERT (bson); return !_mongoc_matcher_op_match (not->child, bson); }
bool mongoc_matcher_match (const mongoc_matcher_t *matcher, /* IN */ const bson_t *bson) /* IN */ { BSON_ASSERT (matcher); BSON_ASSERT (matcher->optree); BSON_ASSERT (bson); return _mongoc_matcher_op_match (matcher->optree, bson); }
static bool _mongoc_matcher_op_logical_match (mongoc_matcher_op_logical_t *logical, /* IN */ const bson_t *bson) /* IN */ { BSON_ASSERT (logical); BSON_ASSERT (bson); switch ((int)logical->base.opcode) { case MONGOC_MATCHER_OPCODE_OR: return (_mongoc_matcher_op_match (logical->left, bson) || _mongoc_matcher_op_match (logical->right, bson)); case MONGOC_MATCHER_OPCODE_AND: return (_mongoc_matcher_op_match (logical->left, bson) && _mongoc_matcher_op_match (logical->right, bson)); case MONGOC_MATCHER_OPCODE_NOR: return !(_mongoc_matcher_op_match (logical->left, bson) || _mongoc_matcher_op_match (logical->right, bson)); default: BSON_ASSERT (false); break; } return false; }