bool mongoc_uri_set_option_as_bool (mongoc_uri_t *uri, const char *option, bool value) { const bson_t *options; bson_iter_t iter; BSON_ASSERT (option); if (!mongoc_uri_option_is_bool (option)) { return false; } if ((options = mongoc_uri_get_options (uri)) && bson_iter_init_find_case (&iter, options, option)) { if (BSON_ITER_HOLDS_BOOL (&iter)) { bson_iter_overwrite_bool (&iter, value); return true; } else { return false; } } bson_append_bool(&uri->options, option, -1, value); return true; }
static void test_bson_iter_overwrite_bool (void) { bson_iter_t iter; bson_t b; bson_init(&b); assert(bson_append_bool(&b, "key", -1, true)); assert(bson_iter_init_find(&iter, &b, "key")); assert(BSON_ITER_HOLDS_BOOL(&iter)); bson_iter_overwrite_bool(&iter, false); assert(bson_iter_init_find(&iter, &b, "key")); assert(BSON_ITER_HOLDS_BOOL(&iter)); assert_cmpint(bson_iter_bool(&iter), ==, false); bson_destroy(&b); }