From 967c2e86735d6d755f78405953a14832c8736366 Mon Sep 17 00:00:00 2001 From: Tom Date: Fri, 15 Feb 2019 21:51:48 +0100 Subject: [PATCH] mongoc as submodule --- .gitmodules | 4 + contrib/mongoc/SConscript | 2 +- contrib/mongoc/mongo-c-driver | 1 + .../mongo-c-driver-1.13.1/CMakeLists.txt | 361 - .../mongo-c-driver-1.13.1/CONTRIBUTING.md | 258 - contrib/mongoc/mongo-c-driver-1.13.1/COPYING | 177 - contrib/mongoc/mongo-c-driver-1.13.1/NEWS | 2413 ---- .../mongoc/mongo-c-driver-1.13.1/README.rst | 90 - .../mongo-c-driver-1.13.1/THIRD_PARTY_NOTICES | 157 - .../mongo-c-driver-1.13.1/VERSION_CURRENT | 1 - .../mongo-c-driver-1.13.1/VERSION_RELEASED | 1 - .../generate_uninstall/CMakeLists.txt | 56 - .../orchestration_configs/CMakeLists.txt | 9 - .../replica_sets/auth-ssl.json | 57 - .../replica_sets/auth-thisDB-ssl.json | 58 - .../replica_sets/auth.json | 50 - .../replica_sets/basic-ssl.json | 54 - .../replica_sets/basic.json | 47 - .../servers/auth-ssl.json | 20 - .../orchestration_configs/servers/auth.json | 14 - .../servers/basic-ipv4-only.json | 9 - .../servers/basic-ssl.json | 18 - .../orchestration_configs/servers/basic.json | 10 - .../orchestration_configs/servers/mmapv1.json | 11 - .../servers/snappy-zlib.json | 11 - .../orchestration_configs/servers/snappy.json | 11 - .../servers/wiredtiger.json | 11 - .../orchestration_configs/servers/zlib.json | 11 - .../sharded_clusters/auth-ssl.json | 56 - .../sharded_clusters/auth.json | 58 - .../sharded_clusters/basic-ssl.json | 62 - .../sharded_clusters/basic.json | 55 - .../mongo-c-driver-1.13.1/src/CMakeLists.txt | 38 - .../src/common/CMakeLists.txt | 16 - .../src/common/common-b64-private.h | 36 - .../src/common/common-b64.c | 528 - .../src/common/common-md5-private.h | 39 - .../src/common/common-md5.c | 395 - .../src/common/common-thread-private.h | 66 - .../src/libbson/CMakeLists.txt | 414 - .../mongo-c-driver-1.13.1/src/libbson/NEWS | 1328 -- .../src/libbson/THIRD_PARTY_NOTICES | 45 - .../src/libbson/doc/CMakeLists.txt | 36 - .../src/libbson/doc/api.rst | 27 - .../src/libbson/doc/bson_append_array.rst | 36 - .../libbson/doc/bson_append_array_begin.rst | 39 - .../src/libbson/doc/bson_append_array_end.rst | 28 - .../src/libbson/doc/bson_append_binary.rst | 40 - .../src/libbson/doc/bson_append_bool.rst | 33 - .../src/libbson/doc/bson_append_code.rst | 36 - .../doc/bson_append_code_with_scope.rst | 40 - .../src/libbson/doc/bson_append_date_time.rst | 36 - .../src/libbson/doc/bson_append_dbpointer.rst | 40 - .../libbson/doc/bson_append_decimal128.rst | 36 - .../src/libbson/doc/bson_append_document.rst | 36 - .../doc/bson_append_document_begin.rst | 38 - .../libbson/doc/bson_append_document_end.rst | 28 - .../src/libbson/doc/bson_append_double.rst | 36 - .../src/libbson/doc/bson_append_int32.rst | 36 - .../src/libbson/doc/bson_append_int64.rst | 36 - .../src/libbson/doc/bson_append_iter.rst | 33 - .../src/libbson/doc/bson_append_maxkey.rst | 32 - .../src/libbson/doc/bson_append_minkey.rst | 32 - .../src/libbson/doc/bson_append_now_utc.rst | 31 - .../src/libbson/doc/bson_append_null.rst | 31 - .../src/libbson/doc/bson_append_oid.rst | 36 - .../src/libbson/doc/bson_append_regex.rst | 47 - .../libbson/doc/bson_append_regex_w_len.rst | 47 - .../src/libbson/doc/bson_append_symbol.rst | 38 - .../src/libbson/doc/bson_append_time_t.rst | 36 - .../src/libbson/doc/bson_append_timestamp.rst | 42 - .../src/libbson/doc/bson_append_timeval.rst | 36 - .../src/libbson/doc/bson_append_undefined.rst | 32 - .../src/libbson/doc/bson_append_utf8.rst | 44 - .../src/libbson/doc/bson_append_value.rst | 36 - .../src/libbson/doc/bson_array_as_json.rst | 71 - .../doc/bson_as_canonical_extended_json.rst | 51 - .../src/libbson/doc/bson_as_json.rst | 68 - .../doc/bson_as_relaxed_extended_json.rst | 51 - .../src/libbson/doc/bson_ascii_strtoll.rst | 44 - .../src/libbson/doc/bson_check_version.rst | 30 - .../src/libbson/doc/bson_compare.rst | 37 - .../src/libbson/doc/bson_concat.rst | 33 - .../src/libbson/doc/bson_context_destroy.rst | 25 - .../libbson/doc/bson_context_get_default.rst | 18 - .../src/libbson/doc/bson_context_new.rst | 28 - .../src/libbson/doc/bson_context_t.rst | 77 - .../src/libbson/doc/bson_copy.rst | 30 - .../src/libbson/doc/bson_copy_to.rst | 26 - .../libbson/doc/bson_copy_to_excluding.rst | 41 - .../doc/bson_copy_to_excluding_noinit.rst | 69 - .../src/libbson/doc/bson_count_keys.rst | 28 - .../doc/bson_decimal128_from_string.rst | 41 - .../doc/bson_decimal128_from_string_w_len.rst | 44 - .../src/libbson/doc/bson_decimal128_t.rst | 68 - .../libbson/doc/bson_decimal128_to_string.rst | 32 - .../src/libbson/doc/bson_destroy.rst | 25 - .../libbson/doc/bson_destroy_with_steal.rst | 32 - .../src/libbson/doc/bson_equal.rst | 29 - .../src/libbson/doc/bson_error_t.rst | 53 - .../src/libbson/doc/bson_free.rst | 23 - .../src/libbson/doc/bson_get_data.rst | 28 - .../libbson/doc/bson_get_major_version.rst | 23 - .../libbson/doc/bson_get_micro_version.rst | 23 - .../libbson/doc/bson_get_minor_version.rst | 23 - .../libbson/doc/bson_get_monotonic_time.rst | 32 - .../src/libbson/doc/bson_get_version.rst | 23 - .../src/libbson/doc/bson_has_field.rst | 29 - .../src/libbson/doc/bson_init.rst | 27 - .../src/libbson/doc/bson_init_from_json.rst | 45 - .../src/libbson/doc/bson_init_static.rst | 36 - .../src/libbson/doc/bson_iter_array.rst | 29 - .../src/libbson/doc/bson_iter_as_bool.rst | 40 - .../src/libbson/doc/bson_iter_as_double.rst | 37 - .../src/libbson/doc/bson_iter_as_int64.rst | 33 - .../src/libbson/doc/bson_iter_binary.rst | 34 - .../src/libbson/doc/bson_iter_bool.rst | 30 - .../src/libbson/doc/bson_iter_code.rst | 33 - .../src/libbson/doc/bson_iter_codewscope.rst | 37 - .../src/libbson/doc/bson_iter_date_time.rst | 31 - .../src/libbson/doc/bson_iter_dbpointer.rst | 33 - .../src/libbson/doc/bson_iter_decimal128.rst | 33 - .../src/libbson/doc/bson_iter_document.rst | 30 - .../src/libbson/doc/bson_iter_double.rst | 31 - .../src/libbson/doc/bson_iter_dup_utf8.rst | 29 - .../src/libbson/doc/bson_iter_find.rst | 31 - .../src/libbson/doc/bson_iter_find_case.rst | 31 - .../libbson/doc/bson_iter_find_descendant.rst | 32 - .../src/libbson/doc/bson_iter_find_w_len.rst | 32 - .../src/libbson/doc/bson_iter_init.rst | 73 - .../src/libbson/doc/bson_iter_init_find.rst | 29 - .../libbson/doc/bson_iter_init_find_case.rst | 31 - .../libbson/doc/bson_iter_init_find_w_len.rst | 34 - .../libbson/doc/bson_iter_init_from_data.rst | 56 - .../bson_iter_init_from_data_at_offset.rst | 57 - .../src/libbson/doc/bson_iter_int32.rst | 30 - .../src/libbson/doc/bson_iter_int64.rst | 30 - .../src/libbson/doc/bson_iter_key.rst | 33 - .../src/libbson/doc/bson_iter_key_len.rst | 33 - .../src/libbson/doc/bson_iter_next.rst | 30 - .../src/libbson/doc/bson_iter_offset.rst | 33 - .../src/libbson/doc/bson_iter_oid.rst | 30 - .../libbson/doc/bson_iter_overwrite_bool.rst | 28 - .../doc/bson_iter_overwrite_date_time.rst | 28 - .../doc/bson_iter_overwrite_decimal128.rst | 28 - .../doc/bson_iter_overwrite_double.rst | 28 - .../libbson/doc/bson_iter_overwrite_int32.rst | 28 - .../libbson/doc/bson_iter_overwrite_int64.rst | 28 - .../libbson/doc/bson_iter_overwrite_oid.rst | 28 - .../doc/bson_iter_overwrite_timestamp.rst | 31 - .../src/libbson/doc/bson_iter_recurse.rst | 32 - .../src/libbson/doc/bson_iter_regex.rst | 31 - .../src/libbson/doc/bson_iter_symbol.rst | 33 - .../src/libbson/doc/bson_iter_t.rst | 178 - .../src/libbson/doc/bson_iter_time_t.rst | 28 - .../src/libbson/doc/bson_iter_timestamp.rst | 34 - .../src/libbson/doc/bson_iter_timeval.rst | 24 - .../src/libbson/doc/bson_iter_type.rst | 52 - .../src/libbson/doc/bson_iter_utf8.rst | 37 - .../src/libbson/doc/bson_iter_value.rst | 28 - .../src/libbson/doc/bson_iter_visit_all.rst | 34 - .../doc/bson_json_data_reader_ingest.rst | 27 - .../libbson/doc/bson_json_data_reader_new.rst | 31 - .../libbson/doc/bson_json_reader_destroy.rst | 22 - .../src/libbson/doc/bson_json_reader_new.rst | 38 - .../doc/bson_json_reader_new_from_fd.rst | 29 - .../doc/bson_json_reader_new_from_file.rst | 34 - .../src/libbson/doc/bson_json_reader_read.rst | 41 - .../src/libbson/doc/bson_json_reader_t.rst | 143 - .../src/libbson/doc/bson_malloc.rst | 36 - .../src/libbson/doc/bson_malloc0.rst | 36 - .../src/libbson/doc/bson_md5_append.rst | 32 - .../src/libbson/doc/bson_md5_finish.rst | 29 - .../src/libbson/doc/bson_md5_init.rst | 28 - .../src/libbson/doc/bson_md5_t.rst | 40 - .../libbson/doc/bson_mem_restore_vtable.rst | 22 - .../src/libbson/doc/bson_mem_set_vtable.rst | 35 - .../src/libbson/doc/bson_memory.rst | 33 - .../src/libbson/doc/bson_new.rst | 27 - .../src/libbson/doc/bson_new_from_buffer.rst | 42 - .../src/libbson/doc/bson_new_from_data.rst | 33 - .../src/libbson/doc/bson_new_from_json.rst | 39 - .../src/libbson/doc/bson_oid_compare.rst | 29 - .../src/libbson/doc/bson_oid_copy.rst | 24 - .../src/libbson/doc/bson_oid_equal.rst | 29 - .../src/libbson/doc/bson_oid_get_time_t.rst | 28 - .../src/libbson/doc/bson_oid_hash.rst | 28 - .../src/libbson/doc/bson_oid_init.rst | 24 - .../libbson/doc/bson_oid_init_from_data.rst | 24 - .../libbson/doc/bson_oid_init_from_string.rst | 31 - .../libbson/doc/bson_oid_init_sequence.rst | 28 - .../src/libbson/doc/bson_oid_is_valid.rst | 29 - .../src/libbson/doc/bson_oid_t.rst | 98 - .../src/libbson/doc/bson_oid_to_string.rst | 24 - .../src/libbson/doc/bson_reader_destroy.rst | 22 - .../doc/bson_reader_destroy_func_t.rst | 24 - .../libbson/doc/bson_reader_new_from_data.rst | 29 - .../libbson/doc/bson_reader_new_from_fd.rst | 33 - .../libbson/doc/bson_reader_new_from_file.rst | 34 - .../doc/bson_reader_new_from_handle.rst | 32 - .../src/libbson/doc/bson_reader_read.rst | 51 - .../libbson/doc/bson_reader_read_func_t.rst | 37 - .../src/libbson/doc/bson_reader_reset.rst | 23 - .../doc/bson_reader_set_destroy_func.rst | 25 - .../libbson/doc/bson_reader_set_read_func.rst | 24 - .../src/libbson/doc/bson_reader_t.rst | 141 - .../src/libbson/doc/bson_reader_tell.rst | 28 - .../src/libbson/doc/bson_realloc.rst | 37 - .../src/libbson/doc/bson_realloc_ctx.rst | 25 - .../src/libbson/doc/bson_realloc_func.rst | 24 - .../src/libbson/doc/bson_reinit.rst | 29 - .../src/libbson/doc/bson_reserve_buffer.rst | 112 - .../src/libbson/doc/bson_set_error.rst | 28 - .../src/libbson/doc/bson_sized_new.rst | 32 - .../src/libbson/doc/bson_snprintf.rst | 31 - .../src/libbson/doc/bson_steal.rst | 79 - .../src/libbson/doc/bson_strcasecmp.rst | 30 - .../src/libbson/doc/bson_strdup.rst | 28 - .../src/libbson/doc/bson_strdup_printf.rst | 28 - .../src/libbson/doc/bson_strdupv_printf.rst | 29 - .../src/libbson/doc/bson_strerror_r.rst | 30 - .../src/libbson/doc/bson_strfreev.rst | 23 - .../src/libbson/doc/bson_string_append.rst | 24 - .../src/libbson/doc/bson_string_append_c.rst | 24 - .../libbson/doc/bson_string_append_printf.rst | 25 - .../doc/bson_string_append_unichar.rst | 24 - .../src/libbson/doc/bson_string_free.rst | 29 - .../src/libbson/doc/bson_string_new.rst | 28 - .../src/libbson/doc/bson_string_t.rst | 61 - .../src/libbson/doc/bson_string_truncate.rst | 26 - .../src/libbson/doc/bson_strncpy.rst | 28 - .../src/libbson/doc/bson_strndup.rst | 29 - .../src/libbson/doc/bson_strnlen.rst | 29 - .../src/libbson/doc/bson_subtype_t.rst | 48 - .../src/libbson/doc/bson_t.rst | 230 - .../src/libbson/doc/bson_type_t.rst | 65 - .../src/libbson/doc/bson_uint32_to_string.rst | 57 - .../src/libbson/doc/bson_unichar_t.rst | 44 - .../libbson/doc/bson_utf8_escape_for_json.rst | 34 - .../libbson/doc/bson_utf8_from_unichar.rst | 25 - .../src/libbson/doc/bson_utf8_get_char.rst | 28 - .../src/libbson/doc/bson_utf8_next_char.rst | 30 - .../src/libbson/doc/bson_utf8_validate.rst | 30 - .../src/libbson/doc/bson_validate.rst | 32 - .../libbson/doc/bson_validate_with_error.rst | 53 - .../src/libbson/doc/bson_value_copy.rst | 24 - .../src/libbson/doc/bson_value_destroy.rst | 22 - .../src/libbson/doc/bson_value_t.rst | 97 - .../src/libbson/doc/bson_visitor_t.rst | 221 - .../src/libbson/doc/bson_vsnprintf.rst | 32 - .../src/libbson/doc/bson_writer_begin.rst | 29 - .../src/libbson/doc/bson_writer_destroy.rst | 22 - .../src/libbson/doc/bson_writer_end.rst | 23 - .../libbson/doc/bson_writer_get_length.rst | 30 - .../src/libbson/doc/bson_writer_new.rst | 38 - .../src/libbson/doc/bson_writer_rollback.rst | 23 - .../src/libbson/doc/bson_writer_t.rst | 76 - .../src/libbson/doc/bson_zero_free.rst | 24 - .../doc/character_and_string_routines.rst | 33 - .../src/libbson/doc/conf.py | 68 - .../src/libbson/doc/creating.rst | 108 - .../src/libbson/doc/cross-platform-notes.rst | 10 - .../src/libbson/doc/endianness.rst | 7 - .../src/libbson/doc/errors.rst | 23 - .../src/libbson/doc/full_index.rst | 15 - .../src/libbson/doc/guides.rst | 11 - .../src/libbson/doc/html/.nojekyll | 1 - .../src/libbson/doc/html/CMakeLists.txt | 31 - .../libbson/doc/html/_static/ajax-loader.gif | Bin 673 -> 0 bytes .../src/libbson/doc/html/_static/basic.css | 676 - .../doc/html/_static/comment-bright.png | Bin 756 -> 0 bytes .../doc/html/_static/comment-close.png | Bin 829 -> 0 bytes .../src/libbson/doc/html/_static/comment.png | Bin 641 -> 0 bytes .../src/libbson/doc/html/_static/doctools.js | 315 - .../libbson/doc/html/_static/down-pressed.png | Bin 222 -> 0 bytes .../src/libbson/doc/html/_static/down.png | Bin 202 -> 0 bytes .../src/libbson/doc/html/_static/file.png | Bin 286 -> 0 bytes .../src/libbson/doc/html/_static/jquery.js | 4 - .../src/libbson/doc/html/_static/minus.png | Bin 90 -> 0 bytes .../src/libbson/doc/html/_static/mongoc.css | 550 - .../src/libbson/doc/html/_static/plus.png | Bin 90 -> 0 bytes .../src/libbson/doc/html/_static/pygments.css | 70 - .../libbson/doc/html/_static/searchtools.js | 481 - .../libbson/doc/html/_static/underscore.js | 31 - .../libbson/doc/html/_static/up-pressed.png | Bin 214 -> 0 bytes .../src/libbson/doc/html/_static/up.png | Bin 203 -> 0 bytes .../libbson/doc/html/_static/websupport.js | 808 -- .../src/libbson/doc/html/api.html | 364 - .../libbson/doc/html/bson_append_array.html | 138 - .../doc/html/bson_append_array_begin.html | 139 - .../doc/html/bson_append_array_end.html | 130 - .../libbson/doc/html/bson_append_binary.html | 142 - .../libbson/doc/html/bson_append_bool.html | 135 - .../libbson/doc/html/bson_append_code.html | 138 - .../doc/html/bson_append_code_with_scope.html | 141 - .../doc/html/bson_append_date_time.html | 138 - .../doc/html/bson_append_dbpointer.html | 143 - .../doc/html/bson_append_decimal128.html | 138 - .../doc/html/bson_append_document.html | 138 - .../doc/html/bson_append_document_begin.html | 139 - .../doc/html/bson_append_document_end.html | 130 - .../libbson/doc/html/bson_append_double.html | 138 - .../libbson/doc/html/bson_append_int32.html | 138 - .../libbson/doc/html/bson_append_int64.html | 138 - .../libbson/doc/html/bson_append_iter.html | 135 - .../libbson/doc/html/bson_append_maxkey.html | 134 - .../libbson/doc/html/bson_append_minkey.html | 134 - .../libbson/doc/html/bson_append_now_utc.html | 132 - .../libbson/doc/html/bson_append_null.html | 133 - .../src/libbson/doc/html/bson_append_oid.html | 138 - .../libbson/doc/html/bson_append_regex.html | 149 - .../doc/html/bson_append_regex_w_len.html | 148 - .../libbson/doc/html/bson_append_symbol.html | 140 - .../libbson/doc/html/bson_append_time_t.html | 138 - .../doc/html/bson_append_timestamp.html | 142 - .../libbson/doc/html/bson_append_timeval.html | 138 - .../doc/html/bson_append_undefined.html | 134 - .../libbson/doc/html/bson_append_utf8.html | 143 - .../libbson/doc/html/bson_append_value.html | 138 - .../libbson/doc/html/bson_array_as_json.html | 171 - .../html/bson_as_canonical_extended_json.html | 148 - .../src/libbson/doc/html/bson_as_json.html | 165 - .../html/bson_as_relaxed_extended_json.html | 148 - .../libbson/doc/html/bson_ascii_strtoll.html | 141 - .../libbson/doc/html/bson_check_version.html | 131 - .../src/libbson/doc/html/bson_compare.html | 136 - .../src/libbson/doc/html/bson_concat.html | 144 - .../doc/html/bson_context_destroy.html | 126 - .../doc/html/bson_context_get_default.html | 119 - .../libbson/doc/html/bson_context_new.html | 129 - .../src/libbson/doc/html/bson_context_t.html | 171 - .../src/libbson/doc/html/bson_copy.html | 130 - .../src/libbson/doc/html/bson_copy_to.html | 127 - .../doc/html/bson_copy_to_excluding.html | 143 - .../html/bson_copy_to_excluding_noinit.html | 170 - .../src/libbson/doc/html/bson_count_keys.html | 129 - .../doc/html/bson_decimal128_from_string.html | 140 - .../bson_decimal128_from_string_w_len.html | 144 - .../libbson/doc/html/bson_decimal128_t.html | 162 - .../doc/html/bson_decimal128_to_string.html | 133 - .../src/libbson/doc/html/bson_destroy.html | 126 - .../doc/html/bson_destroy_with_steal.html | 132 - .../src/libbson/doc/html/bson_equal.html | 130 - .../src/libbson/doc/html/bson_error_t.html | 146 - .../src/libbson/doc/html/bson_free.html | 125 - .../src/libbson/doc/html/bson_get_data.html | 129 - .../doc/html/bson_get_major_version.html | 123 - .../doc/html/bson_get_micro_version.html | 123 - .../doc/html/bson_get_minor_version.html | 123 - .../doc/html/bson_get_monotonic_time.html | 126 - .../libbson/doc/html/bson_get_version.html | 121 - .../src/libbson/doc/html/bson_has_field.html | 130 - .../src/libbson/doc/html/bson_init.html | 139 - .../libbson/doc/html/bson_init_from_json.html | 156 - .../libbson/doc/html/bson_init_static.html | 146 - .../src/libbson/doc/html/bson_iter_array.html | 131 - .../libbson/doc/html/bson_iter_as_bool.html | 140 - .../libbson/doc/html/bson_iter_as_double.html | 137 - .../libbson/doc/html/bson_iter_as_int64.html | 135 - .../libbson/doc/html/bson_iter_binary.html | 135 - .../src/libbson/doc/html/bson_iter_bool.html | 131 - .../src/libbson/doc/html/bson_iter_code.html | 133 - .../doc/html/bson_iter_codewscope.html | 138 - .../libbson/doc/html/bson_iter_date_time.html | 132 - .../libbson/doc/html/bson_iter_dbpointer.html | 135 - .../doc/html/bson_iter_decimal128.html | 134 - .../libbson/doc/html/bson_iter_document.html | 132 - .../libbson/doc/html/bson_iter_double.html | 132 - .../libbson/doc/html/bson_iter_dup_utf8.html | 130 - .../src/libbson/doc/html/bson_iter_find.html | 131 - .../libbson/doc/html/bson_iter_find_case.html | 131 - .../doc/html/bson_iter_find_descendant.html | 133 - .../doc/html/bson_iter_find_w_len.html | 132 - .../src/libbson/doc/html/bson_iter_init.html | 177 - .../libbson/doc/html/bson_iter_init_find.html | 135 - .../doc/html/bson_iter_init_find_case.html | 137 - .../doc/html/bson_iter_init_find_w_len.html | 139 - .../doc/html/bson_iter_init_from_data.html | 160 - .../bson_iter_init_from_data_at_offset.html | 158 - .../src/libbson/doc/html/bson_iter_int32.html | 131 - .../src/libbson/doc/html/bson_iter_int64.html | 131 - .../src/libbson/doc/html/bson_iter_key.html | 133 - .../libbson/doc/html/bson_iter_key_len.html | 133 - .../src/libbson/doc/html/bson_iter_next.html | 130 - .../libbson/doc/html/bson_iter_offset.html | 133 - .../src/libbson/doc/html/bson_iter_oid.html | 131 - .../doc/html/bson_iter_overwrite_bool.html | 128 - .../html/bson_iter_overwrite_date_time.html | 128 - .../html/bson_iter_overwrite_decimal128.html | 128 - .../doc/html/bson_iter_overwrite_double.html | 128 - .../doc/html/bson_iter_overwrite_int32.html | 128 - .../doc/html/bson_iter_overwrite_int64.html | 128 - .../doc/html/bson_iter_overwrite_oid.html | 128 - .../html/bson_iter_overwrite_timestamp.html | 131 - .../libbson/doc/html/bson_iter_recurse.html | 132 - .../src/libbson/doc/html/bson_iter_regex.html | 131 - .../libbson/doc/html/bson_iter_symbol.html | 132 - .../src/libbson/doc/html/bson_iter_t.html | 268 - .../libbson/doc/html/bson_iter_time_t.html | 129 - .../libbson/doc/html/bson_iter_timestamp.html | 134 - .../libbson/doc/html/bson_iter_timeval.html | 126 - .../src/libbson/doc/html/bson_iter_type.html | 153 - .../src/libbson/doc/html/bson_iter_utf8.html | 135 - .../src/libbson/doc/html/bson_iter_value.html | 129 - .../libbson/doc/html/bson_iter_visit_all.html | 134 - .../html/bson_json_data_reader_ingest.html | 129 - .../doc/html/bson_json_data_reader_new.html | 131 - .../doc/html/bson_json_reader_destroy.html | 125 - .../doc/html/bson_json_reader_new.html | 138 - .../html/bson_json_reader_new_from_fd.html | 130 - .../html/bson_json_reader_new_from_file.html | 134 - .../doc/html/bson_json_reader_read.html | 143 - .../libbson/doc/html/bson_json_reader_t.html | 236 - .../src/libbson/doc/html/bson_malloc.html | 135 - .../src/libbson/doc/html/bson_malloc0.html | 135 - .../src/libbson/doc/html/bson_md5_append.html | 134 - .../src/libbson/doc/html/bson_md5_finish.html | 131 - .../src/libbson/doc/html/bson_md5_init.html | 130 - .../src/libbson/doc/html/bson_md5_t.html | 135 - .../doc/html/bson_mem_restore_vtable.html | 123 - .../libbson/doc/html/bson_mem_set_vtable.html | 137 - .../src/libbson/doc/html/bson_memory.html | 128 - .../src/libbson/doc/html/bson_new.html | 137 - .../doc/html/bson_new_from_buffer.html | 151 - .../libbson/doc/html/bson_new_from_data.html | 144 - .../libbson/doc/html/bson_new_from_json.html | 151 - .../libbson/doc/html/bson_oid_compare.html | 130 - .../src/libbson/doc/html/bson_oid_copy.html | 126 - .../src/libbson/doc/html/bson_oid_equal.html | 130 - .../libbson/doc/html/bson_oid_get_time_t.html | 129 - .../src/libbson/doc/html/bson_oid_hash.html | 129 - .../src/libbson/doc/html/bson_oid_init.html | 126 - .../doc/html/bson_oid_init_from_data.html | 126 - .../doc/html/bson_oid_init_from_string.html | 132 - .../doc/html/bson_oid_init_sequence.html | 130 - .../libbson/doc/html/bson_oid_is_valid.html | 130 - .../src/libbson/doc/html/bson_oid_t.html | 188 - .../libbson/doc/html/bson_oid_to_string.html | 126 - .../libbson/doc/html/bson_reader_destroy.html | 125 - .../doc/html/bson_reader_destroy_func_t.html | 125 - .../doc/html/bson_reader_new_from_data.html | 130 - .../doc/html/bson_reader_new_from_fd.html | 132 - .../doc/html/bson_reader_new_from_file.html | 134 - .../doc/html/bson_reader_new_from_handle.html | 133 - .../libbson/doc/html/bson_reader_read.html | 148 - .../doc/html/bson_reader_read_func_t.html | 135 - .../libbson/doc/html/bson_reader_reset.html | 125 - .../html/bson_reader_set_destroy_func.html | 127 - .../doc/html/bson_reader_set_read_func.html | 126 - .../src/libbson/doc/html/bson_reader_t.html | 235 - .../libbson/doc/html/bson_reader_tell.html | 129 - .../src/libbson/doc/html/bson_realloc.html | 136 - .../libbson/doc/html/bson_realloc_ctx.html | 127 - .../libbson/doc/html/bson_realloc_func.html | 126 - .../src/libbson/doc/html/bson_reinit.html | 140 - .../libbson/doc/html/bson_reserve_buffer.html | 219 - .../src/libbson/doc/html/bson_set_error.html | 130 - .../src/libbson/doc/html/bson_sized_new.html | 143 - .../src/libbson/doc/html/bson_snprintf.html | 132 - .../src/libbson/doc/html/bson_steal.html | 176 - .../src/libbson/doc/html/bson_strcasecmp.html | 132 - .../src/libbson/doc/html/bson_strdup.html | 129 - .../libbson/doc/html/bson_strdup_printf.html | 129 - .../libbson/doc/html/bson_strdupv_printf.html | 130 - .../src/libbson/doc/html/bson_strerror_r.html | 131 - .../src/libbson/doc/html/bson_strfreev.html | 125 - .../libbson/doc/html/bson_string_append.html | 126 - .../doc/html/bson_string_append_c.html | 126 - .../doc/html/bson_string_append_printf.html | 127 - .../doc/html/bson_string_append_unichar.html | 126 - .../libbson/doc/html/bson_string_free.html | 130 - .../src/libbson/doc/html/bson_string_new.html | 129 - .../src/libbson/doc/html/bson_string_t.html | 154 - .../doc/html/bson_string_truncate.html | 127 - .../src/libbson/doc/html/bson_strncpy.html | 129 - .../src/libbson/doc/html/bson_strndup.html | 130 - .../src/libbson/doc/html/bson_strnlen.html | 130 - .../src/libbson/doc/html/bson_subtype_t.html | 141 - .../src/libbson/doc/html/bson_t.html | 323 - .../src/libbson/doc/html/bson_type_t.html | 158 - .../doc/html/bson_uint32_to_string.html | 152 - .../src/libbson/doc/html/bson_unichar_t.html | 137 - .../doc/html/bson_utf8_escape_for_json.html | 135 - .../doc/html/bson_utf8_from_unichar.html | 127 - .../libbson/doc/html/bson_utf8_get_char.html | 129 - .../libbson/doc/html/bson_utf8_next_char.html | 130 - .../libbson/doc/html/bson_utf8_validate.html | 131 - .../src/libbson/doc/html/bson_validate.html | 132 - .../doc/html/bson_validate_with_error.html | 153 - .../src/libbson/doc/html/bson_value_copy.html | 126 - .../libbson/doc/html/bson_value_destroy.html | 125 - .../src/libbson/doc/html/bson_value_t.html | 191 - .../src/libbson/doc/html/bson_visitor_t.html | 313 - .../src/libbson/doc/html/bson_vsnprintf.html | 133 - .../libbson/doc/html/bson_writer_begin.html | 130 - .../libbson/doc/html/bson_writer_destroy.html | 125 - .../src/libbson/doc/html/bson_writer_end.html | 125 - .../doc/html/bson_writer_get_length.html | 130 - .../src/libbson/doc/html/bson_writer_new.html | 138 - .../doc/html/bson_writer_rollback.html | 125 - .../src/libbson/doc/html/bson_writer_t.html | 170 - .../src/libbson/doc/html/bson_zero_free.html | 126 - .../html/character_and_string_routines.html | 131 - .../src/libbson/doc/html/creating.html | 175 - .../doc/html/cross-platform-notes.html | 92 - .../src/libbson/doc/html/endianness.html | 89 - .../src/libbson/doc/html/errors.html | 93 - .../src/libbson/doc/html/full_index.html | 364 - .../src/libbson/doc/html/genindex.html | 82 - .../src/libbson/doc/html/guides.html | 94 - .../libbson/doc/html/include-and-link.html | 166 - .../src/libbson/doc/html/index.html | 137 - .../src/libbson/doc/html/json.html | 321 - .../src/libbson/doc/html/objects.inv | Bin 2948 -> 0 bytes .../src/libbson/doc/html/oid.html | 154 - .../src/libbson/doc/html/parsing.html | 192 - .../src/libbson/doc/html/search.html | 106 - .../src/libbson/doc/html/searchindex.js | 1 - .../src/libbson/doc/html/streaming-bson.html | 169 - .../src/libbson/doc/html/threading.html | 90 - .../src/libbson/doc/html/tutorial.html | 100 - .../src/libbson/doc/html/utf8.html | 113 - .../src/libbson/doc/html/valgrind.html | 96 - .../src/libbson/doc/html/version.html | 147 - .../src/libbson/doc/include-and-link.rst | 46 - .../src/libbson/doc/index.rst | 30 - .../src/libbson/doc/json.rst | 251 - .../src/libbson/doc/man/CMakeLists.txt | 3 - .../src/libbson/doc/man/bson_append_array.3 | 73 - .../libbson/doc/man/bson_append_array_begin.3 | 75 - .../libbson/doc/man/bson_append_array_end.3 | 63 - .../src/libbson/doc/man/bson_append_binary.3 | 79 - .../src/libbson/doc/man/bson_append_bool.3 | 70 - .../src/libbson/doc/man/bson_append_code.3 | 73 - .../doc/man/bson_append_code_with_scope.3 | 78 - .../libbson/doc/man/bson_append_date_time.3 | 73 - .../libbson/doc/man/bson_append_dbpointer.3 | 81 - .../libbson/doc/man/bson_append_decimal128.3 | 73 - .../libbson/doc/man/bson_append_document.3 | 73 - .../doc/man/bson_append_document_begin.3 | 75 - .../doc/man/bson_append_document_end.3 | 63 - .../src/libbson/doc/man/bson_append_double.3 | 73 - .../src/libbson/doc/man/bson_append_int32.3 | 73 - .../src/libbson/doc/man/bson_append_int64.3 | 73 - .../src/libbson/doc/man/bson_append_iter.3 | 70 - .../src/libbson/doc/man/bson_append_maxkey.3 | 68 - .../src/libbson/doc/man/bson_append_minkey.3 | 68 - .../src/libbson/doc/man/bson_append_now_utc.3 | 67 - .../src/libbson/doc/man/bson_append_null.3 | 67 - .../src/libbson/doc/man/bson_append_oid.3 | 73 - .../src/libbson/doc/man/bson_append_regex.3 | 92 - .../libbson/doc/man/bson_append_regex_w_len.3 | 92 - .../src/libbson/doc/man/bson_append_symbol.3 | 76 - .../src/libbson/doc/man/bson_append_time_t.3 | 73 - .../libbson/doc/man/bson_append_timestamp.3 | 80 - .../src/libbson/doc/man/bson_append_timeval.3 | 73 - .../libbson/doc/man/bson_append_undefined.3 | 68 - .../src/libbson/doc/man/bson_append_utf8.3 | 82 - .../src/libbson/doc/man/bson_append_value.3 | 73 - .../src/libbson/doc/man/bson_array_as_json.3 | 104 - .../doc/man/bson_as_canonical_extended_json.3 | 82 - .../src/libbson/doc/man/bson_as_json.3 | 99 - .../doc/man/bson_as_relaxed_extended_json.3 | 82 - .../src/libbson/doc/man/bson_ascii_strtoll.3 | 79 - .../man/bson_character_and_string_routines.3 | 40 - .../src/libbson/doc/man/bson_check_version.3 | 65 - .../src/libbson/doc/man/bson_compare.3 | 74 - .../src/libbson/doc/man/bson_concat.3 | 63 - .../libbson/doc/man/bson_context_destroy.3 | 60 - .../doc/man/bson_context_get_default.3 | 53 - .../src/libbson/doc/man/bson_context_new.3 | 61 - .../src/libbson/doc/man/bson_context_t.3 | 103 - .../src/libbson/doc/man/bson_copy.3 | 63 - .../src/libbson/doc/man/bson_copy_to.3 | 62 - .../libbson/doc/man/bson_copy_to_excluding.3 | 82 - .../doc/man/bson_copy_to_excluding_noinit.3 | 113 - .../src/libbson/doc/man/bson_count_keys.3 | 61 - .../src/libbson/doc/man/bson_creating.3 | 186 - .../doc/man/bson_cross_platform_notes.3 | 46 - .../doc/man/bson_decimal128_from_string.3 | 78 - .../man/bson_decimal128_from_string_w_len.3 | 83 - .../src/libbson/doc/man/bson_decimal128_t.3 | 94 - .../doc/man/bson_decimal128_to_string.3 | 72 - .../src/libbson/doc/man/bson_destroy.3 | 60 - .../libbson/doc/man/bson_destroy_with_steal.3 | 67 - .../src/libbson/doc/man/bson_endianness.3 | 40 - .../src/libbson/doc/man/bson_equal.3 | 63 - .../src/libbson/doc/man/bson_error_t.3 | 80 - .../src/libbson/doc/man/bson_errors.3 | 76 - .../src/libbson/doc/man/bson_free.3 | 58 - .../src/libbson/doc/man/bson_get_data.3 | 61 - .../libbson/doc/man/bson_get_major_version.3 | 56 - .../libbson/doc/man/bson_get_micro_version.3 | 56 - .../libbson/doc/man/bson_get_minor_version.3 | 56 - .../libbson/doc/man/bson_get_monotonic_time.3 | 58 - .../src/libbson/doc/man/bson_get_version.3 | 56 - .../src/libbson/doc/man/bson_guides.3 | 435 - .../src/libbson/doc/man/bson_has_field.3 | 63 - .../libbson/doc/man/bson_include_and_link.3 | 145 - .../src/libbson/doc/man/bson_init.3 | 58 - .../src/libbson/doc/man/bson_init_from_json.3 | 75 - .../src/libbson/doc/man/bson_init_static.3 | 67 - .../src/libbson/doc/man/bson_iter_array.3 | 66 - .../src/libbson/doc/man/bson_iter_as_bool.3 | 81 - .../src/libbson/doc/man/bson_iter_as_double.3 | 75 - .../src/libbson/doc/man/bson_iter_as_int64.3 | 71 - .../src/libbson/doc/man/bson_iter_binary.3 | 72 - .../src/libbson/doc/man/bson_iter_bool.3 | 63 - .../src/libbson/doc/man/bson_iter_code.3 | 67 - .../libbson/doc/man/bson_iter_codewscope.3 | 73 - .../src/libbson/doc/man/bson_iter_date_time.3 | 64 - .../src/libbson/doc/man/bson_iter_dbpointer.3 | 74 - .../libbson/doc/man/bson_iter_decimal128.3 | 67 - .../src/libbson/doc/man/bson_iter_document.3 | 67 - .../src/libbson/doc/man/bson_iter_double.3 | 64 - .../src/libbson/doc/man/bson_iter_dup_utf8.3 | 63 - .../src/libbson/doc/man/bson_iter_find.3 | 65 - .../src/libbson/doc/man/bson_iter_find_case.3 | 65 - .../doc/man/bson_iter_find_descendant.3 | 67 - .../libbson/doc/man/bson_iter_find_w_len.3 | 67 - .../src/libbson/doc/man/bson_iter_init.3 | 107 - .../src/libbson/doc/man/bson_iter_init_find.3 | 62 - .../doc/man/bson_iter_init_find_case.3 | 64 - .../doc/man/bson_iter_init_find_w_len.3 | 67 - .../doc/man/bson_iter_init_from_data.3 | 91 - .../man/bson_iter_init_from_data_at_offset.3 | 101 - .../src/libbson/doc/man/bson_iter_int32.3 | 63 - .../src/libbson/doc/man/bson_iter_int64.3 | 63 - .../src/libbson/doc/man/bson_iter_key.3 | 64 - .../src/libbson/doc/man/bson_iter_key_len.3 | 64 - .../src/libbson/doc/man/bson_iter_next.3 | 63 - .../src/libbson/doc/man/bson_iter_offset.3 | 64 - .../src/libbson/doc/man/bson_iter_oid.3 | 63 - .../doc/man/bson_iter_overwrite_bool.3 | 64 - .../doc/man/bson_iter_overwrite_date_time.3 | 64 - .../doc/man/bson_iter_overwrite_decimal128.3 | 64 - .../doc/man/bson_iter_overwrite_double.3 | 64 - .../doc/man/bson_iter_overwrite_int32.3 | 64 - .../doc/man/bson_iter_overwrite_int64.3 | 64 - .../libbson/doc/man/bson_iter_overwrite_oid.3 | 64 - .../doc/man/bson_iter_overwrite_timestamp.3 | 68 - .../src/libbson/doc/man/bson_iter_recurse.3 | 67 - .../src/libbson/doc/man/bson_iter_regex.3 | 65 - .../src/libbson/doc/man/bson_iter_symbol.3 | 67 - .../src/libbson/doc/man/bson_iter_t.3 | 176 - .../src/libbson/doc/man/bson_iter_time_t.3 | 61 - .../src/libbson/doc/man/bson_iter_timestamp.3 | 71 - .../src/libbson/doc/man/bson_iter_timeval.3 | 60 - .../src/libbson/doc/man/bson_iter_type.3 | 85 - .../src/libbson/doc/man/bson_iter_utf8.3 | 71 - .../src/libbson/doc/man/bson_iter_value.3 | 61 - .../src/libbson/doc/man/bson_iter_visit_all.3 | 69 - .../src/libbson/doc/man/bson_json.3 | 318 - .../doc/man/bson_json_data_reader_ingest.3 | 64 - .../doc/man/bson_json_data_reader_new.3 | 65 - .../doc/man/bson_json_reader_destroy.3 | 58 - .../libbson/doc/man/bson_json_reader_new.3 | 75 - .../doc/man/bson_json_reader_new_from_fd.3 | 63 - .../doc/man/bson_json_reader_new_from_file.3 | 66 - .../libbson/doc/man/bson_json_reader_read.3 | 70 - .../src/libbson/doc/man/bson_json_reader_t.3 | 168 - .../src/libbson/doc/man/bson_malloc.3 | 72 - .../src/libbson/doc/man/bson_malloc0.3 | 72 - .../src/libbson/doc/man/bson_md5_append.3 | 69 - .../src/libbson/doc/man/bson_md5_finish.3 | 65 - .../src/libbson/doc/man/bson_md5_init.3 | 63 - .../src/libbson/doc/man/bson_md5_t.3 | 61 - .../libbson/doc/man/bson_mem_restore_vtable.3 | 60 - .../src/libbson/doc/man/bson_mem_set_vtable.3 | 73 - .../src/libbson/doc/man/bson_memory.3 | 45 - .../src/libbson/doc/man/bson_new.3 | 56 - .../libbson/doc/man/bson_new_from_buffer.3 | 74 - .../src/libbson/doc/man/bson_new_from_data.3 | 63 - .../src/libbson/doc/man/bson_new_from_json.3 | 68 - .../src/libbson/doc/man/bson_oid.3 | 134 - .../src/libbson/doc/man/bson_oid_compare.3 | 63 - .../src/libbson/doc/man/bson_oid_copy.3 | 60 - .../src/libbson/doc/man/bson_oid_equal.3 | 63 - .../src/libbson/doc/man/bson_oid_get_time_t.3 | 61 - .../src/libbson/doc/man/bson_oid_hash.3 | 61 - .../src/libbson/doc/man/bson_oid_init.3 | 60 - .../libbson/doc/man/bson_oid_init_from_data.3 | 60 - .../doc/man/bson_oid_init_from_string.3 | 71 - .../libbson/doc/man/bson_oid_init_sequence.3 | 67 - .../src/libbson/doc/man/bson_oid_is_valid.3 | 63 - .../src/libbson/doc/man/bson_oid_t.3 | 113 - .../src/libbson/doc/man/bson_oid_to_string.3 | 60 - .../src/libbson/doc/man/bson_parsing.3 | 184 - .../src/libbson/doc/man/bson_reader_destroy.3 | 58 - .../doc/man/bson_reader_destroy_func_t.3 | 59 - .../doc/man/bson_reader_new_from_data.3 | 63 - .../libbson/doc/man/bson_reader_new_from_fd.3 | 67 - .../doc/man/bson_reader_new_from_file.3 | 66 - .../doc/man/bson_reader_new_from_handle.3 | 67 - .../src/libbson/doc/man/bson_reader_read.3 | 89 - .../libbson/doc/man/bson_reader_read_func_t.3 | 72 - .../src/libbson/doc/man/bson_reader_reset.3 | 58 - .../doc/man/bson_reader_set_destroy_func.3 | 61 - .../doc/man/bson_reader_set_read_func.3 | 60 - .../src/libbson/doc/man/bson_reader_t.3 | 158 - .../src/libbson/doc/man/bson_reader_tell.3 | 61 - .../src/libbson/doc/man/bson_realloc.3 | 74 - .../src/libbson/doc/man/bson_realloc_ctx.3 | 62 - .../src/libbson/doc/man/bson_realloc_func.3 | 61 - .../src/libbson/doc/man/bson_reference.3 | 2475 ---- .../src/libbson/doc/man/bson_reinit.3 | 60 - .../src/libbson/doc/man/bson_reserve_buffer.3 | 146 - .../src/libbson/doc/man/bson_set_error.3 | 66 - .../src/libbson/doc/man/bson_sized_new.3 | 61 - .../src/libbson/doc/man/bson_snprintf.3 | 66 - .../src/libbson/doc/man/bson_steal.3 | 119 - .../src/libbson/doc/man/bson_strcasecmp.3 | 65 - .../src/libbson/doc/man/bson_strdup.3 | 61 - .../src/libbson/doc/man/bson_strdup_printf.3 | 61 - .../src/libbson/doc/man/bson_strdupv_printf.3 | 63 - .../src/libbson/doc/man/bson_streaming_bson.3 | 134 - .../src/libbson/doc/man/bson_strerror_r.3 | 65 - .../src/libbson/doc/man/bson_strfreev.3 | 58 - .../src/libbson/doc/man/bson_string_append.3 | 60 - .../libbson/doc/man/bson_string_append_c.3 | 60 - .../doc/man/bson_string_append_printf.3 | 61 - .../doc/man/bson_string_append_unichar.3 | 60 - .../src/libbson/doc/man/bson_string_free.3 | 63 - .../src/libbson/doc/man/bson_string_new.3 | 61 - .../src/libbson/doc/man/bson_string_t.3 | 86 - .../libbson/doc/man/bson_string_truncate.3 | 62 - .../src/libbson/doc/man/bson_strncpy.3 | 66 - .../src/libbson/doc/man/bson_strndup.3 | 63 - .../src/libbson/doc/man/bson_strnlen.3 | 63 - .../src/libbson/doc/man/bson_subtype_t.3 | 78 - .../src/libbson/doc/man/bson_t.3 | 197 - .../src/libbson/doc/man/bson_threading.3 | 42 - .../src/libbson/doc/man/bson_tutorial.3 | 615 - .../src/libbson/doc/man/bson_type_t.3 | 95 - .../libbson/doc/man/bson_uint32_to_string.3 | 96 - .../src/libbson/doc/man/bson_unichar_t.3 | 74 - .../src/libbson/doc/man/bson_utf8.3 | 74 - .../doc/man/bson_utf8_escape_for_json.3 | 69 - .../libbson/doc/man/bson_utf8_from_unichar.3 | 62 - .../src/libbson/doc/man/bson_utf8_get_char.3 | 61 - .../src/libbson/doc/man/bson_utf8_next_char.3 | 63 - .../src/libbson/doc/man/bson_utf8_validate.3 | 65 - .../src/libbson/doc/man/bson_valgrind.3 | 56 - .../src/libbson/doc/man/bson_validate.3 | 67 - .../doc/man/bson_validate_with_error.3 | 96 - .../src/libbson/doc/man/bson_value_copy.3 | 60 - .../src/libbson/doc/man/bson_value_destroy.3 | 58 - .../src/libbson/doc/man/bson_value_t.3 | 124 - .../src/libbson/doc/man/bson_version.3 | 80 - .../src/libbson/doc/man/bson_visitor_t.3 | 256 - .../src/libbson/doc/man/bson_vsnprintf.3 | 68 - .../src/libbson/doc/man/bson_writer_begin.3 | 63 - .../src/libbson/doc/man/bson_writer_destroy.3 | 58 - .../src/libbson/doc/man/bson_writer_end.3 | 58 - .../libbson/doc/man/bson_writer_get_length.3 | 63 - .../src/libbson/doc/man/bson_writer_new.3 | 75 - .../libbson/doc/man/bson_writer_rollback.3 | 58 - .../src/libbson/doc/man/bson_writer_t.3 | 99 - .../src/libbson/doc/man/bson_zero_free.3 | 60 - .../src/libbson/doc/oid.rst | 80 - .../src/libbson/doc/parsing.rst | 120 - .../src/libbson/doc/streaming-bson.rst | 93 - .../src/libbson/doc/threading.rst | 9 - .../src/libbson/doc/tutorial.rst | 15 - .../src/libbson/doc/utf8.rst | 33 - .../src/libbson/doc/valgrind.rst | 16 - .../src/libbson/doc/version.rst | 54 - .../src/libbson/examples/CMakeLists.txt | 10 - .../src/libbson/examples/bcon-col-view.c | 96 - .../src/libbson/examples/bcon-speed.c | 93 - .../src/libbson/examples/bson-metrics.c | 319 - .../libbson/examples/bson-streaming-reader.c | 191 - .../src/libbson/examples/bson-to-json.c | 81 - .../src/libbson/examples/bson-validate.c | 97 - .../cmake/find_package/CMakeLists.txt | 41 - .../cmake/find_package_static/CMakeLists.txt | 41 - .../compile-with-pkg-config-static.sh | 6 - .../examples/compile-with-pkg-config.sh | 6 - .../src/libbson/examples/hello_bson.c | 34 - .../src/libbson/examples/json-to-bson.c | 91 - .../src/libbson/src/CMakeLists.txt | 15 - .../src/libbson/src/bson/CMakeLists.txt | 68 - .../src/libbson/src/bson/bcon.c | 1017 -- .../src/libbson/src/bson/bcon.h | 293 - .../src/libbson/src/bson/bson-atomic.c | 73 - .../src/libbson/src/bson/bson-atomic.h | 103 - .../src/libbson/src/bson/bson-clock.c | 155 - .../src/libbson/src/bson/bson-clock.h | 44 - .../src/libbson/src/bson/bson-compat.h | 180 - .../src/libbson/src/bson/bson-config.h.in | 131 - .../libbson/src/bson/bson-context-private.h | 48 - .../src/libbson/src/bson/bson-context.c | 502 - .../src/libbson/src/bson/bson-context.h | 45 - .../src/libbson/src/bson/bson-decimal128.c | 773 -- .../src/libbson/src/bson/bson-decimal128.h | 66 - .../src/libbson/src/bson/bson-endian.h | 230 - .../src/libbson/src/bson/bson-error.c | 126 - .../src/libbson/src/bson/bson-error.h | 48 - .../src/libbson/src/bson/bson-fnv-private.h | 25 - .../src/libbson/src/bson/bson-fnv.c | 90 - .../libbson/src/bson/bson-iso8601-private.h | 48 - .../src/libbson/src/bson/bson-iso8601.c | 333 - .../src/libbson/src/bson/bson-iter.c | 2528 ---- .../src/libbson/src/bson/bson-iter.h | 550 - .../src/libbson/src/bson/bson-json.c | 2408 ---- .../src/libbson/src/bson/bson-json.h | 76 - .../src/libbson/src/bson/bson-keys.c | 170 - .../src/libbson/src/bson/bson-keys.h | 39 - .../src/libbson/src/bson/bson-macros.h | 296 - .../src/libbson/src/bson/bson-md5.c | 24 - .../src/libbson/src/bson/bson-md5.h | 92 - .../src/libbson/src/bson/bson-memory.c | 311 - .../src/libbson/src/bson/bson-memory.h | 67 - .../src/libbson/src/bson/bson-oid.c | 516 - .../src/libbson/src/bson/bson-oid.h | 246 - .../src/libbson/src/bson/bson-private.h | 102 - .../src/libbson/src/bson/bson-reader.c | 834 -- .../src/libbson/src/bson/bson-reader.h | 120 - .../src/libbson/src/bson/bson-string.c | 829 -- .../src/libbson/src/bson/bson-string.h | 87 - .../libbson/src/bson/bson-timegm-private.h | 49 - .../src/libbson/src/bson/bson-timegm.c | 795 -- .../src/libbson/src/bson/bson-types.h | 567 - .../src/libbson/src/bson/bson-utf8.c | 459 - .../src/libbson/src/bson/bson-utf8.h | 49 - .../src/libbson/src/bson/bson-value.c | 194 - .../src/libbson/src/bson/bson-value.h | 38 - .../libbson/src/bson/bson-version-functions.c | 77 - .../libbson/src/bson/bson-version-functions.h | 43 - .../src/libbson/src/bson/bson-version.h | 101 - .../src/libbson/src/bson/bson-version.h.in | 101 - .../src/libbson/src/bson/bson-writer.c | 271 - .../src/libbson/src/bson/bson-writer.h | 63 - .../src/libbson/src/bson/bson.c | 3513 ------ .../src/libbson/src/bson/bson.h | 1141 -- .../src/libbson/src/bson/forwarding/bson.h | 18 - .../src/bson/modules/module.modulemap.in | 5 - .../src/libbson/src/jsonsl/CMakeLists.txt | 13 - .../src/libbson/src/jsonsl/jsonsl.c | 1668 --- .../src/libbson/src/jsonsl/jsonsl.h | 1004 -- .../src/libbson/src/libbson-1.0.pc.in | 10 - .../src/libbson/src/libbson-static-1.0.pc.in | 10 - .../src/libbson/tests/CMakeLists.txt | 12 - .../tests/binary/binary_deprecated.bson | Bin 26 -> 0 bytes .../src/libbson/tests/binary/cdriver2269.bson | Bin 28 -> 0 bytes .../tests/binary/code_w_empty_scope.bson | Bin 36 -> 0 bytes .../src/libbson/tests/binary/codewscope.bson | Bin 27 -> 0 bytes .../src/libbson/tests/binary/dollarquery.bson | Bin 18 -> 0 bytes .../src/libbson/tests/binary/dotkey.bson | Bin 50 -> 0 bytes .../src/libbson/tests/binary/dotquery.bson | Bin 15 -> 0 bytes .../src/libbson/tests/binary/empty_key.bson | Bin 17 -> 0 bytes .../src/libbson/tests/binary/eurokey.bson | Bin 42 -> 0 bytes .../src/libbson/tests/binary/overflow1.bson | Bin 18 -> 0 bytes .../src/libbson/tests/binary/overflow2.bson | Bin 24 -> 0 bytes .../src/libbson/tests/binary/overflow3.bson | Bin 21 -> 0 bytes .../src/libbson/tests/binary/overflow4.bson | Bin 28 -> 0 bytes .../src/libbson/tests/binary/readergrow.bson | Bin 10013 -> 0 bytes .../libbson/tests/binary/stackoverflow.bson | Bin 16777220 -> 0 bytes .../src/libbson/tests/binary/stream.bson | Bin 5000 -> 0 bytes .../libbson/tests/binary/stream_corrupt.bson | Bin 5001 -> 0 bytes .../src/libbson/tests/binary/test1.bson | Bin 14 -> 0 bytes .../src/libbson/tests/binary/test10.bson | Bin 19 -> 0 bytes .../src/libbson/tests/binary/test11.bson | Bin 22 -> 0 bytes .../src/libbson/tests/binary/test12.bson | Bin 49 -> 0 bytes .../src/libbson/tests/binary/test13.bson | Bin 35 -> 0 bytes .../src/libbson/tests/binary/test14.bson | Bin 51 -> 0 bytes .../src/libbson/tests/binary/test15.bson | Bin 49 -> 0 bytes .../src/libbson/tests/binary/test16.bson | Bin 32 -> 0 bytes .../src/libbson/tests/binary/test17.bson | Bin 215 -> 0 bytes .../src/libbson/tests/binary/test18.bson | Bin 12 -> 0 bytes .../src/libbson/tests/binary/test19.bson | Bin 12 -> 0 bytes .../src/libbson/tests/binary/test2.bson | Bin 20 -> 0 bytes .../src/libbson/tests/binary/test20.bson | Bin 21 -> 0 bytes .../src/libbson/tests/binary/test21.bson | Bin 20 -> 0 bytes .../src/libbson/tests/binary/test22.bson | Bin 22 -> 0 bytes .../src/libbson/tests/binary/test23.bson | Bin 43 -> 0 bytes .../src/libbson/tests/binary/test24.bson | Bin 22 -> 0 bytes .../src/libbson/tests/binary/test25.bson | Bin 16 -> 0 bytes .../src/libbson/tests/binary/test26.bson | Bin 21 -> 0 bytes .../src/libbson/tests/binary/test27.bson | Bin 22 -> 0 bytes .../src/libbson/tests/binary/test28.bson | Bin 36 -> 0 bytes .../src/libbson/tests/binary/test29.bson | Bin 27 -> 0 bytes .../src/libbson/tests/binary/test3.bson | Bin 21 -> 0 bytes .../src/libbson/tests/binary/test30.bson | Bin 27 -> 0 bytes .../src/libbson/tests/binary/test31.bson | Bin 49 -> 0 bytes .../src/libbson/tests/binary/test32.bson | Bin 22 -> 0 bytes .../src/libbson/tests/binary/test33.bson | Bin 26 -> 0 bytes .../src/libbson/tests/binary/test34.bson | Bin 16 -> 0 bytes .../src/libbson/tests/binary/test35.bson | Bin 24 -> 0 bytes .../src/libbson/tests/binary/test36.bson | Bin 13 -> 0 bytes .../src/libbson/tests/binary/test37.bson | Bin 13 -> 0 bytes .../src/libbson/tests/binary/test38.bson | Bin 805 -> 0 bytes .../src/libbson/tests/binary/test39.bson | Bin 812 -> 0 bytes .../src/libbson/tests/binary/test4.bson | Bin 18 -> 0 bytes .../src/libbson/tests/binary/test40.bson | Bin 12 -> 0 bytes .../src/libbson/tests/binary/test41.bson | Bin 18 -> 0 bytes .../src/libbson/tests/binary/test42.bson | Bin 12 -> 0 bytes .../src/libbson/tests/binary/test43.bson | Bin 18 -> 0 bytes .../src/libbson/tests/binary/test44.bson | Bin 24 -> 0 bytes .../src/libbson/tests/binary/test45.bson | Bin 30 -> 0 bytes .../src/libbson/tests/binary/test46.bson | Bin 12 -> 0 bytes .../src/libbson/tests/binary/test47.bson | Bin 12 -> 0 bytes .../src/libbson/tests/binary/test48.bson | Bin 28 -> 0 bytes .../src/libbson/tests/binary/test49.bson | Bin 28 -> 0 bytes .../src/libbson/tests/binary/test5.bson | Bin 29 -> 0 bytes .../src/libbson/tests/binary/test50.bson | Bin 28 -> 0 bytes .../src/libbson/tests/binary/test51.bson | Bin 28 -> 0 bytes .../src/libbson/tests/binary/test52.bson | Bin 24 -> 0 bytes .../src/libbson/tests/binary/test53.bson | Bin 30 -> 0 bytes .../src/libbson/tests/binary/test54.bson | Bin 22 -> 0 bytes .../src/libbson/tests/binary/test55.bson | Bin 24 -> 0 bytes .../src/libbson/tests/binary/test56.bson | Bin 42 -> 0 bytes .../src/libbson/tests/binary/test57.bson | Bin 26 -> 0 bytes .../src/libbson/tests/binary/test58.bson | Bin 24 -> 0 bytes .../src/libbson/tests/binary/test59.bson | Bin 17 -> 0 bytes .../src/libbson/tests/binary/test6.bson | Bin 64 -> 0 bytes .../src/libbson/tests/binary/test7.bson | Bin 47 -> 0 bytes .../src/libbson/tests/binary/test8.bson | Bin 29 -> 0 bytes .../src/libbson/tests/binary/test9.bson | Bin 11 -> 0 bytes .../libbson/tests/binary/trailingnull.bson | Bin 16 -> 0 bytes .../src/libbson/tests/corpus-test.c | 185 - .../src/libbson/tests/corpus-test.h | 83 - .../libbson/tests/json/bson_corpus/array.json | 43 - .../tests/json/bson_corpus/binary.json | 85 - .../tests/json/bson_corpus/boolean.json | 27 - .../libbson/tests/json/bson_corpus/code.json | 67 - .../tests/json/bson_corpus/code_w_scope.json | 78 - .../tests/json/bson_corpus/datetime.json | 36 - .../tests/json/bson_corpus/dbpointer.json | 56 - .../libbson/tests/json/bson_corpus/dbref.json | 31 - .../tests/json/bson_corpus/decimal128-1.json | 317 - .../tests/json/bson_corpus/decimal128-2.json | 793 -- .../tests/json/bson_corpus/decimal128-3.json | 1771 --- .../tests/json/bson_corpus/decimal128-4.json | 165 - .../tests/json/bson_corpus/decimal128-5.json | 402 - .../tests/json/bson_corpus/decimal128-6.json | 131 - .../tests/json/bson_corpus/decimal128-7.json | 327 - .../json/bson_corpus/decimal128-mongoc.json | 13 - .../tests/json/bson_corpus/document.json | 36 - .../tests/json/bson_corpus/double.json | 87 - .../tests/json/bson_corpus/double2.json | 45 - .../libbson/tests/json/bson_corpus/int32.json | 43 - .../libbson/tests/json/bson_corpus/int64.json | 43 - .../tests/json/bson_corpus/maxkey.json | 12 - .../tests/json/bson_corpus/minkey.json | 12 - .../bson_corpus/multi-type-deprecated.json | 15 - .../tests/json/bson_corpus/multi-type.json | 11 - .../libbson/tests/json/bson_corpus/null.json | 12 - .../libbson/tests/json/bson_corpus/oid.json | 28 - .../libbson/tests/json/bson_corpus/regex.json | 65 - .../tests/json/bson_corpus/string.json | 72 - .../tests/json/bson_corpus/symbol.json | 80 - .../tests/json/bson_corpus/timestamp.json | 29 - .../libbson/tests/json/bson_corpus/top.json | 236 - .../tests/json/bson_corpus/undefined.json | 15 - .../src/libbson/tests/json/test.json | 2 - .../src/libbson/tests/test-atomic.c | 56 - .../src/libbson/tests/test-bcon-basic.c | 663 - .../src/libbson/tests/test-bcon-extract.c | 522 - .../src/libbson/tests/test-bson-corpus.c | 291 - .../src/libbson/tests/test-bson-error.c | 38 - .../src/libbson/tests/test-bson-version.c | 24 - .../src/libbson/tests/test-bson.c | 2470 ---- .../src/libbson/tests/test-clock.c | 25 - .../src/libbson/tests/test-decimal128.c | 815 -- .../src/libbson/tests/test-endian.c | 59 - .../src/libbson/tests/test-fnv.c | 207 - .../src/libbson/tests/test-iso8601.c | 386 - .../src/libbson/tests/test-iter.c | 777 -- .../src/libbson/tests/test-json.c | 2949 ----- .../src/libbson/tests/test-oid.c | 353 - .../src/libbson/tests/test-reader.c | 331 - .../src/libbson/tests/test-string.c | 326 - .../src/libbson/tests/test-utf8.c | 268 - .../src/libbson/tests/test-value.c | 137 - .../src/libbson/tests/test-writer.c | 196 - .../src/libmongoc/CMakeLists.txt | 1004 -- .../src/libmongoc/THIRD_PARTY_NOTICES | 56 - .../src/libmongoc/doc/CMakeLists.txt | 41 - .../libmongoc/doc/advanced-connections.rst | 196 - .../src/libmongoc/doc/aggregate.rst | 138 - .../src/libmongoc/doc/api.rst | 54 - .../application-performance-monitoring.rst | 160 - .../src/libmongoc/doc/authentication.rst | 205 - .../libmongoc/doc/basic-troubleshooting.rst | 90 - .../src/libmongoc/doc/bulk.rst | 210 - .../src/libmongoc/doc/conf.py | 78 - .../src/libmongoc/doc/connection-pooling.rst | 54 - .../src/libmongoc/doc/create-indexes.rst | 17 - .../src/libmongoc/doc/cursors.rst | 90 - .../src/libmongoc/doc/debugging.rst | 106 - .../src/libmongoc/doc/distinct-mapreduce.rst | 90 - .../src/libmongoc/doc/errors.rst | 168 - .../src/libmongoc/doc/full_index.rst | 15 - .../src/libmongoc/doc/guides.rst | 19 - .../src/libmongoc/doc/html/.nojekyll | 1 - .../src/libmongoc/doc/html/CMakeLists.txt | 39 - .../_images/msvc-add-dependencies-static.png | Bin 23627 -> 0 bytes .../html/_images/msvc-add-dependencies.png | Bin 7855 -> 0 bytes .../_images/msvc-add-include-directories.png | Bin 7909 -> 0 bytes .../doc/html/_images/msvc-create-project.png | Bin 12266 -> 0 bytes .../doc/html/_images/msvc-set-path.png | Bin 24767 -> 0 bytes .../html/_images/msvc-switch-architecture.png | Bin 11221 -> 0 bytes .../doc/html/_static/ajax-loader.gif | Bin 673 -> 0 bytes .../src/libmongoc/doc/html/_static/basic.css | 676 - .../doc/html/_static/comment-bright.png | Bin 756 -> 0 bytes .../doc/html/_static/comment-close.png | Bin 829 -> 0 bytes .../libmongoc/doc/html/_static/comment.png | Bin 641 -> 0 bytes .../libmongoc/doc/html/_static/doctools.js | 315 - .../doc/html/_static/down-pressed.png | Bin 222 -> 0 bytes .../src/libmongoc/doc/html/_static/down.png | Bin 202 -> 0 bytes .../src/libmongoc/doc/html/_static/file.png | Bin 286 -> 0 bytes .../src/libmongoc/doc/html/_static/jquery.js | 4 - .../src/libmongoc/doc/html/_static/minus.png | Bin 90 -> 0 bytes .../src/libmongoc/doc/html/_static/mongoc.css | 550 - .../src/libmongoc/doc/html/_static/plus.png | Bin 90 -> 0 bytes .../libmongoc/doc/html/_static/pygments.css | 70 - .../libmongoc/doc/html/_static/searchtools.js | 481 - .../libmongoc/doc/html/_static/underscore.js | 31 - .../libmongoc/doc/html/_static/up-pressed.png | Bin 214 -> 0 bytes .../src/libmongoc/doc/html/_static/up.png | Bin 203 -> 0 bytes .../libmongoc/doc/html/_static/websupport.js | 808 -- .../doc/html/advanced-connections.html | 287 - .../src/libmongoc/doc/html/aggregate.html | 305 - .../src/libmongoc/doc/html/api.html | 191 - .../application-performance-monitoring.html | 680 - .../libmongoc/doc/html/authentication.html | 252 - .../doc/html/basic-troubleshooting.html | 169 - .../src/libmongoc/doc/html/bulk.html | 970 -- .../doc/html/connection-pooling.html | 140 - .../libmongoc/doc/html/create-indexes.html | 209 - .../src/libmongoc/doc/html/cursors.html | 307 - .../src/libmongoc/doc/html/debugging.html | 196 - .../doc/html/distinct-mapreduce.html | 547 - .../src/libmongoc/doc/html/errors.html | 301 - .../src/libmongoc/doc/html/full_index.html | 745 -- .../src/libmongoc/doc/html/genindex.html | 91 - .../src/libmongoc/doc/html/guides.html | 117 - .../src/libmongoc/doc/html/index.html | 233 - .../src/libmongoc/doc/html/init-cleanup.html | 161 - .../src/libmongoc/doc/html/installing.html | 303 - .../src/libmongoc/doc/html/lifecycle.html | 166 - .../src/libmongoc/doc/html/logging.html | 254 - .../src/libmongoc/doc/html/matcher.html | 106 - .../doc/html/mongoc-common-task-examples.html | 517 - .../html/mongoc_apm_callbacks_destroy.html | 122 - .../doc/html/mongoc_apm_callbacks_new.html | 126 - .../doc/html/mongoc_apm_callbacks_t.html | 139 - ...c_apm_command_failed_get_command_name.html | 133 - ...mongoc_apm_command_failed_get_context.html | 133 - ...ongoc_apm_command_failed_get_duration.html | 133 - .../mongoc_apm_command_failed_get_error.html | 130 - .../mongoc_apm_command_failed_get_host.html | 132 - ...c_apm_command_failed_get_operation_id.html | 133 - .../mongoc_apm_command_failed_get_reply.html | 133 - ...goc_apm_command_failed_get_request_id.html | 133 - ...ngoc_apm_command_failed_get_server_id.html | 133 - .../doc/html/mongoc_apm_command_failed_t.html | 133 - ...ongoc_apm_command_started_get_command.html | 133 - ..._apm_command_started_get_command_name.html | 133 - ...ongoc_apm_command_started_get_context.html | 133 - ...apm_command_started_get_database_name.html | 133 - .../mongoc_apm_command_started_get_host.html | 132 - ..._apm_command_started_get_operation_id.html | 133 - ...oc_apm_command_started_get_request_id.html | 133 - ...goc_apm_command_started_get_server_id.html | 133 - .../html/mongoc_apm_command_started_t.html | 132 - ...pm_command_succeeded_get_command_name.html | 133 - ...goc_apm_command_succeeded_get_context.html | 133 - ...oc_apm_command_succeeded_get_duration.html | 133 - ...mongoc_apm_command_succeeded_get_host.html | 133 - ...pm_command_succeeded_get_operation_id.html | 133 - ...ongoc_apm_command_succeeded_get_reply.html | 133 - ..._apm_command_succeeded_get_request_id.html | 133 - ...c_apm_command_succeeded_get_server_id.html | 133 - .../html/mongoc_apm_command_succeeded_t.html | 132 - ...mongoc_apm_server_changed_get_context.html | 133 - .../mongoc_apm_server_changed_get_host.html | 132 - ...pm_server_changed_get_new_description.html | 133 - ...rver_changed_get_previous_description.html | 133 - ...oc_apm_server_changed_get_topology_id.html | 134 - .../doc/html/mongoc_apm_server_changed_t.html | 129 - .../mongoc_apm_server_closed_get_context.html | 132 - .../mongoc_apm_server_closed_get_host.html | 132 - ...goc_apm_server_closed_get_topology_id.html | 134 - .../doc/html/mongoc_apm_server_closed_t.html | 127 - ...m_server_heartbeat_failed_get_context.html | 133 - ..._server_heartbeat_failed_get_duration.html | 133 - ...apm_server_heartbeat_failed_get_error.html | 130 - ..._apm_server_heartbeat_failed_get_host.html | 133 - .../mongoc_apm_server_heartbeat_failed_t.html | 128 - ..._server_heartbeat_started_get_context.html | 133 - ...apm_server_heartbeat_started_get_host.html | 133 - ...mongoc_apm_server_heartbeat_started_t.html | 126 - ...erver_heartbeat_succeeded_get_context.html | 133 - ...rver_heartbeat_succeeded_get_duration.html | 133 - ...m_server_heartbeat_succeeded_get_host.html | 133 - ..._server_heartbeat_succeeded_get_reply.html | 133 - ...ngoc_apm_server_heartbeat_succeeded_t.html | 128 - ...mongoc_apm_server_opening_get_context.html | 133 - .../mongoc_apm_server_opening_get_host.html | 132 - ...oc_apm_server_opening_get_topology_id.html | 134 - .../doc/html/mongoc_apm_server_opening_t.html | 127 - .../mongoc_apm_set_command_failed_cb.html | 133 - .../mongoc_apm_set_command_started_cb.html | 133 - .../mongoc_apm_set_command_succeeded_cb.html | 133 - .../mongoc_apm_set_server_changed_cb.html | 133 - .../html/mongoc_apm_set_server_closed_cb.html | 133 - ...oc_apm_set_server_heartbeat_failed_cb.html | 133 - ...c_apm_set_server_heartbeat_started_cb.html | 133 - ...apm_set_server_heartbeat_succeeded_cb.html | 133 - .../mongoc_apm_set_server_opening_cb.html | 133 - .../mongoc_apm_set_topology_changed_cb.html | 133 - .../mongoc_apm_set_topology_closed_cb.html | 133 - .../mongoc_apm_set_topology_opening_cb.html | 133 - ...ngoc_apm_topology_changed_get_context.html | 133 - ..._topology_changed_get_new_description.html | 133 - ...logy_changed_get_previous_description.html | 133 - ..._apm_topology_changed_get_topology_id.html | 134 - .../html/mongoc_apm_topology_changed_t.html | 128 - ...ongoc_apm_topology_closed_get_context.html | 133 - ...c_apm_topology_closed_get_topology_id.html | 134 - .../html/mongoc_apm_topology_closed_t.html | 126 - ...ngoc_apm_topology_opening_get_context.html | 133 - ..._apm_topology_opening_get_topology_id.html | 132 - .../html/mongoc_apm_topology_opening_t.html | 126 - .../html/mongoc_bulk_operation_delete.html | 177 - .../mongoc_bulk_operation_delete_one.html | 177 - .../html/mongoc_bulk_operation_destroy.html | 158 - .../html/mongoc_bulk_operation_execute.html | 182 - .../html/mongoc_bulk_operation_get_hint.html | 163 - ...ngoc_bulk_operation_get_write_concern.html | 165 - .../html/mongoc_bulk_operation_insert.html | 169 - ...ongoc_bulk_operation_insert_with_opts.html | 175 - .../html/mongoc_bulk_operation_remove.html | 171 - ..._bulk_operation_remove_many_with_opts.html | 180 - .../mongoc_bulk_operation_remove_one.html | 170 - ...c_bulk_operation_remove_one_with_opts.html | 180 - .../mongoc_bulk_operation_replace_one.html | 177 - ..._bulk_operation_replace_one_with_opts.html | 188 - ...ration_set_bypass_document_validation.html | 167 - .../html/mongoc_bulk_operation_set_hint.html | 165 - .../doc/html/mongoc_bulk_operation_t.html | 186 - .../html/mongoc_bulk_operation_update.html | 175 - ..._bulk_operation_update_many_with_opts.html | 188 - .../mongoc_bulk_operation_update_one.html | 174 - ...c_bulk_operation_update_one_with_opts.html | 188 - .../html/mongoc_change_stream_destroy.html | 158 - .../mongoc_change_stream_error_document.html | 169 - .../doc/html/mongoc_change_stream_next.html | 171 - .../doc/html/mongoc_change_stream_t.html | 538 - .../doc/html/mongoc_check_version.html | 165 - .../libmongoc/doc/html/mongoc_cleanup.html | 156 - .../doc/html/mongoc_client_command.html | 184 - .../html/mongoc_client_command_simple.html | 181 - ..._client_command_simple_with_server_id.html | 174 - .../html/mongoc_client_command_with_opts.html | 229 - .../doc/html/mongoc_client_destroy.html | 158 - ...ongoc_client_find_databases_with_opts.html | 174 - .../html/mongoc_client_get_collection.html | 170 - .../doc/html/mongoc_client_get_database.html | 167 - .../mongoc_client_get_database_names.html | 176 - ...c_client_get_database_names_with_opts.html | 194 - .../mongoc_client_get_default_database.html | 187 - .../doc/html/mongoc_client_get_gridfs.html | 172 - .../html/mongoc_client_get_max_bson_size.html | 169 - .../mongoc_client_get_max_message_size.html | 169 - .../html/mongoc_client_get_read_concern.html | 162 - .../html/mongoc_client_get_read_prefs.html | 162 - .../mongoc_client_get_server_description.html | 164 - ...mongoc_client_get_server_descriptions.html | 191 - .../html/mongoc_client_get_server_status.html | 177 - .../doc/html/mongoc_client_get_uri.html | 162 - .../html/mongoc_client_get_write_concern.html | 162 - .../libmongoc/doc/html/mongoc_client_new.html | 166 - .../doc/html/mongoc_client_new_from_uri.html | 162 - .../doc/html/mongoc_client_pool_destroy.html | 158 - .../doc/html/mongoc_client_pool_max_size.html | 164 - .../doc/html/mongoc_client_pool_min_size.html | 167 - .../doc/html/mongoc_client_pool_new.html | 162 - .../doc/html/mongoc_client_pool_pop.html | 166 - .../doc/html/mongoc_client_pool_push.html | 163 - .../mongoc_client_pool_set_apm_callbacks.html | 175 - .../html/mongoc_client_pool_set_appname.html | 168 - .../mongoc_client_pool_set_error_api.html | 168 - .../html/mongoc_client_pool_set_ssl_opts.html | 180 - .../doc/html/mongoc_client_pool_t.html | 278 - .../doc/html/mongoc_client_pool_try_pop.html | 166 - .../mongoc_client_read_command_with_opts.html | 372 - ...c_client_read_write_command_with_opts.html | 225 - .../doc/html/mongoc_client_select_server.html | 169 - ...ngoc_client_session_abort_transaction.html | 196 - ...c_client_session_advance_cluster_time.html | 193 - ...client_session_advance_operation_time.html | 195 - .../html/mongoc_client_session_append.html | 174 - ...goc_client_session_commit_transaction.html | 199 - .../html/mongoc_client_session_destroy.html | 191 - .../mongoc_client_session_get_client.html | 190 - ...ongoc_client_session_get_cluster_time.html | 194 - .../html/mongoc_client_session_get_lsid.html | 194 - ...goc_client_session_get_operation_time.html | 194 - .../html/mongoc_client_session_get_opts.html | 194 - .../mongoc_client_session_in_transaction.html | 162 - ...ngoc_client_session_start_transaction.html | 388 - .../doc/html/mongoc_client_session_t.html | 323 - .../html/mongoc_client_set_apm_callbacks.html | 171 - .../doc/html/mongoc_client_set_appname.html | 170 - .../doc/html/mongoc_client_set_error_api.html | 164 - .../html/mongoc_client_set_read_concern.html | 162 - .../html/mongoc_client_set_read_prefs.html | 163 - .../doc/html/mongoc_client_set_ssl_opts.html | 176 - .../mongoc_client_set_stream_initiator.html | 162 - .../html/mongoc_client_set_write_concern.html | 162 - .../doc/html/mongoc_client_start_session.html | 206 - .../libmongoc/doc/html/mongoc_client_t.html | 301 - .../doc/html/mongoc_client_watch.html | 192 - ...mongoc_client_write_command_with_opts.html | 369 - .../doc/html/mongoc_collection_aggregate.html | 279 - .../doc/html/mongoc_collection_command.html | 178 - .../mongoc_collection_command_simple.html | 212 - .../mongoc_collection_command_with_opts.html | 227 - .../doc/html/mongoc_collection_copy.html | 166 - .../doc/html/mongoc_collection_count.html | 216 - .../mongoc_collection_count_documents.html | 245 - .../mongoc_collection_count_with_opts.html | 275 - ...ngoc_collection_create_bulk_operation.html | 193 - ...ction_create_bulk_operation_with_opts.html | 187 - .../html/mongoc_collection_create_index.html | 167 - ...goc_collection_create_index_with_opts.html | 192 - .../doc/html/mongoc_collection_delete.html | 185 - .../html/mongoc_collection_delete_many.html | 185 - .../html/mongoc_collection_delete_one.html | 185 - .../doc/html/mongoc_collection_destroy.html | 165 - .../doc/html/mongoc_collection_drop.html | 162 - .../html/mongoc_collection_drop_index.html | 165 - ...ongoc_collection_drop_index_with_opts.html | 182 - .../mongoc_collection_drop_with_opts.html | 206 - .../html/mongoc_collection_ensure_index.html | 172 - ...c_collection_estimated_document_count.html | 216 - .../doc/html/mongoc_collection_find.html | 307 - .../mongoc_collection_find_and_modify.html | 287 - ..._collection_find_and_modify_with_opts.html | 184 - .../html/mongoc_collection_find_indexes.html | 173 - ...goc_collection_find_indexes_with_opts.html | 174 - .../mongoc_collection_find_with_opts.html | 382 - .../mongoc_collection_get_last_error.html | 166 - .../doc/html/mongoc_collection_get_name.html | 165 - .../mongoc_collection_get_read_concern.html | 165 - .../mongoc_collection_get_read_prefs.html | 165 - .../mongoc_collection_get_write_concern.html | 165 - .../doc/html/mongoc_collection_insert.html | 180 - .../html/mongoc_collection_insert_bulk.html | 186 - .../html/mongoc_collection_insert_many.html | 190 - .../html/mongoc_collection_insert_one.html | 187 - ...ongoc_collection_keys_to_index_string.html | 166 - ...goc_collection_read_command_with_opts.html | 219 - ...llection_read_write_command_with_opts.html | 223 - .../doc/html/mongoc_collection_remove.html | 179 - .../doc/html/mongoc_collection_rename.html | 169 - .../mongoc_collection_rename_with_opts.html | 186 - .../html/mongoc_collection_replace_one.html | 195 - .../doc/html/mongoc_collection_save.html | 184 - .../mongoc_collection_set_read_concern.html | 164 - .../mongoc_collection_set_read_prefs.html | 165 - .../mongoc_collection_set_write_concern.html | 165 - .../doc/html/mongoc_collection_stats.html | 181 - .../doc/html/mongoc_collection_t.html | 216 - .../doc/html/mongoc_collection_update.html | 182 - .../html/mongoc_collection_update_many.html | 196 - .../html/mongoc_collection_update_one.html | 274 - .../doc/html/mongoc_collection_validate.html | 182 - .../doc/html/mongoc_collection_watch.html | 192 - ...oc_collection_write_command_with_opts.html | 216 - .../doc/html/mongoc_cursor_clone.html | 170 - .../doc/html/mongoc_cursor_current.html | 165 - .../doc/html/mongoc_cursor_destroy.html | 161 - .../doc/html/mongoc_cursor_error.html | 175 - .../html/mongoc_cursor_error_document.html | 269 - .../html/mongoc_cursor_get_batch_size.html | 162 - .../doc/html/mongoc_cursor_get_hint.html | 163 - .../doc/html/mongoc_cursor_get_host.html | 162 - .../doc/html/mongoc_cursor_get_id.html | 162 - .../doc/html/mongoc_cursor_get_limit.html | 161 - .../mongoc_cursor_get_max_await_time_ms.html | 161 - .../doc/html/mongoc_cursor_is_alive.html | 166 - .../doc/html/mongoc_cursor_more.html | 171 - .../mongoc_cursor_new_from_command_reply.html | 194 - ...rsor_new_from_command_reply_with_opts.html | 196 - .../doc/html/mongoc_cursor_next.html | 172 - .../html/mongoc_cursor_set_batch_size.html | 164 - .../doc/html/mongoc_cursor_set_hint.html | 168 - .../doc/html/mongoc_cursor_set_limit.html | 169 - .../mongoc_cursor_set_max_await_time_ms.html | 170 - .../libmongoc/doc/html/mongoc_cursor_t.html | 281 - .../doc/html/mongoc_database_add_user.html | 180 - .../doc/html/mongoc_database_command.html | 181 - .../html/mongoc_database_command_simple.html | 175 - .../mongoc_database_command_with_opts.html | 227 - .../doc/html/mongoc_database_copy.html | 166 - .../mongoc_database_create_collection.html | 176 - .../doc/html/mongoc_database_destroy.html | 158 - .../doc/html/mongoc_database_drop.html | 162 - .../html/mongoc_database_drop_with_opts.html | 180 - .../mongoc_database_find_collections.html | 179 - ...c_database_find_collections_with_opts.html | 210 - .../html/mongoc_database_get_collection.html | 156 - .../mongoc_database_get_collection_names.html | 176 - ...tabase_get_collection_names_with_opts.html | 205 - .../doc/html/mongoc_database_get_name.html | 162 - .../mongoc_database_get_read_concern.html | 162 - .../html/mongoc_database_get_read_prefs.html | 162 - .../mongoc_database_get_write_concern.html | 162 - .../html/mongoc_database_has_collection.html | 171 - ...ongoc_database_read_command_with_opts.html | 219 - ...database_read_write_command_with_opts.html | 223 - .../mongoc_database_remove_all_users.html | 168 - .../doc/html/mongoc_database_remove_user.html | 170 - .../mongoc_database_set_read_concern.html | 161 - .../html/mongoc_database_set_read_prefs.html | 162 - .../mongoc_database_set_write_concern.html | 161 - .../libmongoc/doc/html/mongoc_database_t.html | 211 - .../doc/html/mongoc_database_watch.html | 192 - ...ngoc_database_write_command_with_opts.html | 217 - .../doc/html/mongoc_delete_flags_t.html | 160 - .../doc/html/mongoc_error_has_label.html | 163 - .../mongoc_find_and_modify_opts_append.html | 234 - .../mongoc_find_and_modify_opts_destroy.html | 162 - ...y_opts_get_bypass_document_validation.html | 162 - ...ongoc_find_and_modify_opts_get_fields.html | 163 - ...mongoc_find_and_modify_opts_get_flags.html | 162 - ..._find_and_modify_opts_get_max_time_ms.html | 162 - .../mongoc_find_and_modify_opts_get_sort.html | 163 - ...ongoc_find_and_modify_opts_get_update.html | 163 - .../html/mongoc_find_and_modify_opts_new.html | 155 - ...y_opts_set_bypass_document_validation.html | 236 - ...ongoc_find_and_modify_opts_set_fields.html | 235 - ...mongoc_find_and_modify_opts_set_flags.html | 265 - ..._find_and_modify_opts_set_max_time_ms.html | 234 - .../mongoc_find_and_modify_opts_set_sort.html | 238 - ...ongoc_find_and_modify_opts_set_update.html | 237 - .../html/mongoc_find_and_modify_opts_t.html | 660 - .../doc/html/mongoc_get_major_version.html | 155 - .../doc/html/mongoc_get_micro_version.html | 155 - .../doc/html/mongoc_get_minor_version.html | 155 - .../doc/html/mongoc_get_version.html | 155 - .../doc/html/mongoc_gridfs_create_file.html | 168 - ...mongoc_gridfs_create_file_from_stream.html | 170 - .../doc/html/mongoc_gridfs_destroy.html | 161 - .../doc/html/mongoc_gridfs_drop.html | 170 - .../doc/html/mongoc_gridfs_file_destroy.html | 161 - .../doc/html/mongoc_gridfs_file_error.html | 170 - .../html/mongoc_gridfs_file_get_aliases.html | 165 - .../mongoc_gridfs_file_get_chunk_size.html | 165 - .../mongoc_gridfs_file_get_content_type.html | 165 - .../html/mongoc_gridfs_file_get_filename.html | 165 - .../doc/html/mongoc_gridfs_file_get_id.html | 166 - .../html/mongoc_gridfs_file_get_length.html | 165 - .../doc/html/mongoc_gridfs_file_get_md5.html | 165 - .../html/mongoc_gridfs_file_get_metadata.html | 165 - .../mongoc_gridfs_file_get_upload_date.html | 165 - .../html/mongoc_gridfs_file_list_destroy.html | 161 - .../html/mongoc_gridfs_file_list_error.html | 171 - .../html/mongoc_gridfs_file_list_next.html | 165 - .../doc/html/mongoc_gridfs_file_list_t.html | 181 - .../doc/html/mongoc_gridfs_file_opt_t.html | 164 - .../doc/html/mongoc_gridfs_file_readv.html | 174 - .../doc/html/mongoc_gridfs_file_remove.html | 170 - .../doc/html/mongoc_gridfs_file_save.html | 167 - .../doc/html/mongoc_gridfs_file_seek.html | 202 - .../html/mongoc_gridfs_file_set_aliases.html | 163 - .../mongoc_gridfs_file_set_content_type.html | 164 - .../html/mongoc_gridfs_file_set_filename.html | 164 - .../doc/html/mongoc_gridfs_file_set_id.html | 170 - .../doc/html/mongoc_gridfs_file_set_md5.html | 163 - .../html/mongoc_gridfs_file_set_metadata.html | 164 - .../doc/html/mongoc_gridfs_file_t.html | 201 - .../doc/html/mongoc_gridfs_file_tell.html | 165 - .../doc/html/mongoc_gridfs_file_writev.html | 173 - .../doc/html/mongoc_gridfs_find.html | 171 - .../doc/html/mongoc_gridfs_find_one.html | 178 - .../mongoc_gridfs_find_one_by_filename.html | 173 - .../mongoc_gridfs_find_one_with_opts.html | 177 - .../html/mongoc_gridfs_find_with_opts.html | 170 - .../doc/html/mongoc_gridfs_get_chunks.html | 165 - .../doc/html/mongoc_gridfs_get_files.html | 165 - .../mongoc_gridfs_remove_by_filename.html | 173 - .../libmongoc/doc/html/mongoc_gridfs_t.html | 349 - .../doc/html/mongoc_host_list_t.html | 163 - .../mongoc_index_opt_geo_get_default.html | 155 - .../doc/html/mongoc_index_opt_geo_init.html | 161 - .../doc/html/mongoc_index_opt_geo_t.html | 175 - .../html/mongoc_index_opt_get_default.html | 155 - .../doc/html/mongoc_index_opt_init.html | 161 - .../doc/html/mongoc_index_opt_t.html | 223 - .../html/mongoc_index_opt_wt_get_default.html | 155 - .../doc/html/mongoc_index_opt_wt_init.html | 161 - .../doc/html/mongoc_index_opt_wt_t.html | 172 - .../src/libmongoc/doc/html/mongoc_init.html | 156 - .../doc/html/mongoc_insert_flags_t.html | 178 - .../libmongoc/doc/html/mongoc_iovec_t.html | 165 - .../doc/html/mongoc_matcher_destroy.html | 165 - .../doc/html/mongoc_matcher_match.html | 170 - .../doc/html/mongoc_matcher_new.html | 174 - .../libmongoc/doc/html/mongoc_matcher_t.html | 222 - .../doc/html/mongoc_query_flags_t.html | 197 - .../src/libmongoc/doc/html/mongoc_rand.html | 179 - .../libmongoc/doc/html/mongoc_rand_add.html | 163 - .../libmongoc/doc/html/mongoc_rand_seed.html | 162 - .../doc/html/mongoc_rand_status.html | 159 - .../doc/html/mongoc_read_concern_append.html | 170 - .../doc/html/mongoc_read_concern_copy.html | 165 - .../doc/html/mongoc_read_concern_destroy.html | 161 - .../html/mongoc_read_concern_get_level.html | 165 - .../html/mongoc_read_concern_is_default.html | 161 - .../doc/html/mongoc_read_concern_new.html | 155 - .../html/mongoc_read_concern_set_level.html | 171 - .../doc/html/mongoc_read_concern_t.html | 205 - .../doc/html/mongoc_read_mode_t.html | 160 - .../doc/html/mongoc_read_prefs_add_tag.html | 162 - .../doc/html/mongoc_read_prefs_copy.html | 165 - .../doc/html/mongoc_read_prefs_destroy.html | 161 - ..._read_prefs_get_max_staleness_seconds.html | 162 - .../doc/html/mongoc_read_prefs_get_mode.html | 165 - .../doc/html/mongoc_read_prefs_get_tags.html | 165 - .../doc/html/mongoc_read_prefs_is_valid.html | 166 - .../doc/html/mongoc_read_prefs_new.html | 165 - ..._read_prefs_set_max_staleness_seconds.html | 163 - .../doc/html/mongoc_read_prefs_set_mode.html | 163 - .../doc/html/mongoc_read_prefs_set_tags.html | 232 - .../doc/html/mongoc_read_prefs_t.html | 222 - .../doc/html/mongoc_remove_flags_t.html | 173 - .../doc/html/mongoc_reply_flags_t.html | 185 - .../mongoc_server_description_destroy.html | 161 - .../html/mongoc_server_description_host.html | 165 - .../html/mongoc_server_description_id.html | 161 - .../mongoc_server_description_ismaster.html | 166 - .../mongoc_server_description_new_copy.html | 166 - ...oc_server_description_round_trip_time.html | 162 - .../doc/html/mongoc_server_description_t.html | 171 - .../html/mongoc_server_description_type.html | 172 - ...ongoc_server_descriptions_destroy_all.html | 160 - .../doc/html/mongoc_session_opt_t.html | 169 - .../doc/html/mongoc_session_opts_clone.html | 190 - .../doc/html/mongoc_session_opts_destroy.html | 194 - ...c_session_opts_get_causal_consistency.html | 190 - ...ion_opts_get_default_transaction_opts.html | 190 - .../doc/html/mongoc_session_opts_new.html | 188 - ...c_session_opts_set_causal_consistency.html | 235 - ...ion_opts_set_default_transaction_opts.html | 199 - .../doc/html/mongoc_socket_accept.html | 166 - .../doc/html/mongoc_socket_bind.html | 169 - .../doc/html/mongoc_socket_close.html | 165 - .../doc/html/mongoc_socket_connect.html | 172 - .../doc/html/mongoc_socket_destroy.html | 161 - .../doc/html/mongoc_socket_errno.html | 165 - .../doc/html/mongoc_socket_getnameinfo.html | 165 - .../doc/html/mongoc_socket_getsockname.html | 169 - .../doc/html/mongoc_socket_listen.html | 166 - .../libmongoc/doc/html/mongoc_socket_new.html | 167 - .../doc/html/mongoc_socket_recv.html | 173 - .../doc/html/mongoc_socket_send.html | 171 - .../doc/html/mongoc_socket_sendv.html | 171 - .../doc/html/mongoc_socket_setsockopt.html | 173 - .../libmongoc/doc/html/mongoc_socket_t.html | 176 - .../doc/html/mongoc_ssl_opt_get_default.html | 155 - .../libmongoc/doc/html/mongoc_ssl_opt_t.html | 261 - .../doc/html/mongoc_stream_buffered_new.html | 164 - .../doc/html/mongoc_stream_buffered_t.html | 157 - .../doc/html/mongoc_stream_close.html | 166 - .../doc/html/mongoc_stream_cork.html | 171 - .../doc/html/mongoc_stream_destroy.html | 158 - .../doc/html/mongoc_stream_file_get_fd.html | 166 - .../doc/html/mongoc_stream_file_new.html | 163 - .../html/mongoc_stream_file_new_for_path.html | 165 - .../doc/html/mongoc_stream_file_t.html | 159 - .../doc/html/mongoc_stream_flush.html | 163 - .../html/mongoc_stream_get_base_stream.html | 162 - .../doc/html/mongoc_stream_gridfs_new.html | 164 - .../doc/html/mongoc_stream_read.html | 176 - .../doc/html/mongoc_stream_readv.html | 176 - .../doc/html/mongoc_stream_setsockopt.html | 170 - .../html/mongoc_stream_socket_get_socket.html | 162 - .../doc/html/mongoc_stream_socket_new.html | 166 - .../doc/html/mongoc_stream_socket_t.html | 158 - .../libmongoc/doc/html/mongoc_stream_t.html | 181 - .../doc/html/mongoc_stream_timed_out.html | 161 - .../doc/html/mongoc_stream_tls_t.html | 154 - .../doc/html/mongoc_stream_uncork.html | 171 - .../doc/html/mongoc_stream_write.html | 174 - .../doc/html/mongoc_stream_writev.html | 171 - ...ngoc_topology_description_get_servers.html | 164 - ...ology_description_has_readable_server.html | 171 - ...ology_description_has_writable_server.html | 168 - .../html/mongoc_topology_description_t.html | 163 - .../mongoc_topology_description_type.html | 168 - .../doc/html/mongoc_transaction_opt_t.html | 362 - .../html/mongoc_transaction_opts_clone.html | 190 - .../html/mongoc_transaction_opts_destroy.html | 190 - ...goc_transaction_opts_get_read_concern.html | 190 - ...ongoc_transaction_opts_get_read_prefs.html | 190 - ...oc_transaction_opts_get_write_concern.html | 190 - .../doc/html/mongoc_transaction_opts_new.html | 184 - ...goc_transaction_opts_set_read_concern.html | 192 - ...ongoc_transaction_opts_set_read_prefs.html | 192 - ...oc_transaction_opts_set_write_concern.html | 192 - .../doc/html/mongoc_update_flags_t.html | 182 - .../libmongoc/doc/html/mongoc_uri_copy.html | 165 - .../doc/html/mongoc_uri_destroy.html | 161 - .../html/mongoc_uri_get_auth_mechanism.html | 175 - .../doc/html/mongoc_uri_get_auth_source.html | 175 - .../doc/html/mongoc_uri_get_compressors.html | 178 - .../doc/html/mongoc_uri_get_database.html | 165 - .../doc/html/mongoc_uri_get_hosts.html | 165 - .../mongoc_uri_get_mechanism_properties.html | 203 - .../html/mongoc_uri_get_option_as_bool.html | 165 - .../html/mongoc_uri_get_option_as_int32.html | 170 - .../html/mongoc_uri_get_option_as_utf8.html | 165 - .../doc/html/mongoc_uri_get_options.html | 165 - .../doc/html/mongoc_uri_get_password.html | 165 - .../doc/html/mongoc_uri_get_read_concern.html | 165 - .../doc/html/mongoc_uri_get_read_prefs.html | 173 - .../doc/html/mongoc_uri_get_read_prefs_t.html | 165 - .../doc/html/mongoc_uri_get_replica_set.html | 165 - .../doc/html/mongoc_uri_get_service.html | 165 - .../doc/html/mongoc_uri_get_ssl.html | 165 - .../doc/html/mongoc_uri_get_string.html | 165 - .../doc/html/mongoc_uri_get_username.html | 165 - .../html/mongoc_uri_get_write_concern.html | 165 - .../libmongoc/doc/html/mongoc_uri_new.html | 170 - .../html/mongoc_uri_new_for_host_port.html | 166 - .../doc/html/mongoc_uri_new_with_error.html | 185 - .../doc/html/mongoc_uri_option_is_bool.html | 161 - .../doc/html/mongoc_uri_option_is_int32.html | 161 - .../doc/html/mongoc_uri_option_is_utf8.html | 161 - .../html/mongoc_uri_set_auth_mechanism.html | 177 - .../doc/html/mongoc_uri_set_auth_source.html | 177 - .../doc/html/mongoc_uri_set_compressors.html | 181 - .../doc/html/mongoc_uri_set_database.html | 167 - .../mongoc_uri_set_mechanism_properties.html | 200 - .../html/mongoc_uri_set_option_as_bool.html | 171 - .../html/mongoc_uri_set_option_as_int32.html | 171 - .../html/mongoc_uri_set_option_as_utf8.html | 171 - .../doc/html/mongoc_uri_set_password.html | 166 - .../doc/html/mongoc_uri_set_read_concern.html | 163 - .../doc/html/mongoc_uri_set_read_prefs_t.html | 163 - .../doc/html/mongoc_uri_set_username.html | 166 - .../html/mongoc_uri_set_write_concern.html | 163 - .../src/libmongoc/doc/html/mongoc_uri_t.html | 551 - .../doc/html/mongoc_uri_unescape.html | 165 - .../libmongoc/doc/html/mongoc_version.html | 179 - .../doc/html/mongoc_write_concern_append.html | 171 - .../doc/html/mongoc_write_concern_copy.html | 165 - .../html/mongoc_write_concern_destroy.html | 161 - .../html/mongoc_write_concern_get_fsync.html | 172 - .../mongoc_write_concern_get_journal.html | 165 - .../doc/html/mongoc_write_concern_get_w.html | 165 - .../mongoc_write_concern_get_wmajority.html | 166 - .../html/mongoc_write_concern_get_wtag.html | 165 - .../mongoc_write_concern_get_wtimeout.html | 166 - .../mongoc_write_concern_is_acknowledged.html | 163 - .../html/mongoc_write_concern_is_default.html | 162 - .../html/mongoc_write_concern_is_valid.html | 161 - .../mongoc_write_concern_journal_is_set.html | 162 - .../doc/html/mongoc_write_concern_new.html | 155 - .../html/mongoc_write_concern_set_fsync.html | 175 - .../mongoc_write_concern_set_journal.html | 167 - .../doc/html/mongoc_write_concern_set_w.html | 167 - .../mongoc_write_concern_set_wmajority.html | 168 - .../html/mongoc_write_concern_set_wtag.html | 167 - .../mongoc_write_concern_set_wtimeout.html | 167 - .../doc/html/mongoc_write_concern_t.html | 215 - .../src/libmongoc/doc/html/objects.inv | Bin 7724 -> 0 bytes .../src/libmongoc/doc/html/search.html | 115 - .../src/libmongoc/doc/html/searchindex.js | 1 - .../src/libmongoc/doc/html/tutorial.html | 1086 -- .../doc/html/visual-studio-guide.html | 156 - .../src/libmongoc/doc/includes/CMakeLists.txt | 10 - .../doc/includes/bulk-insert-opts.txt | 3 - .../src/libmongoc/doc/includes/bulk-opts.txt | 5 - .../doc/includes/bulk-remove-many-opts.txt | 3 - .../doc/includes/bulk-remove-one-opts.txt | 3 - .../doc/includes/bulk-remove-opts.txt | 3 - .../doc/includes/bulk-replace-one-opts.txt | 5 - .../doc/includes/bulk-update-many-opts.txt | 6 - .../doc/includes/bulk-update-one-opts.txt | 6 - .../doc/includes/cast-away-td-const.txt | 1 - .../doc/includes/create-index-opts.txt | 4 - .../doc/includes/delete-many-opts.txt | 6 - .../doc/includes/delete-one-opts.txt | 6 - .../libmongoc/doc/includes/generic-opts.txt | 4 - .../libmongoc/doc/includes/init_cleanup.txt | 3 - .../doc/includes/insert-many-opts.txt | 7 - .../doc/includes/insert-one-opts.txt | 6 - .../libmongoc/doc/includes/ipv4-and-ipv6.txt | 5 - .../includes/mongoc_client_pool_call_once.txt | 4 - .../mongoc_client_pool_thread_safe.txt | 4 - .../libmongoc/doc/includes/opts-sources.txt | 12 - .../doc/includes/read-cmd-opts-sources.txt | 3 - .../doc/includes/read-opts-sources.txt | 11 - .../src/libmongoc/doc/includes/read-opts.txt | 6 - .../doc/includes/read-write-opts-sources.txt | 13 - .../doc/includes/read-write-opts.txt | 7 - .../doc/includes/replace-one-opts.txt | 8 - .../doc/includes/session-lifecycle.txt | 9 - .../doc/includes/update-many-opts.txt | 9 - .../doc/includes/update-one-opts.txt | 9 - .../doc/includes/write-opts-sources.txt | 11 - .../src/libmongoc/doc/includes/write-opts.txt | 6 - .../src/libmongoc/doc/index.rst | 48 - .../src/libmongoc/doc/init-cleanup.rst | 29 - .../src/libmongoc/doc/installing.rst | 287 - .../src/libmongoc/doc/libbson-objects.inv | Bin 2948 -> 0 bytes .../src/libmongoc/doc/lifecycle.rst | 32 - .../src/libmongoc/doc/logging.rst | 130 - .../src/libmongoc/doc/man/CMakeLists.txt | 3 - .../doc/man/mongoc_advanced_connections.3 | 316 - .../src/libmongoc/doc/man/mongoc_aggregate.3 | 324 - .../doc/man/mongoc_apm_callbacks_destroy.3 | 55 - .../doc/man/mongoc_apm_callbacks_new.3 | 58 - .../doc/man/mongoc_apm_callbacks_t.3 | 48 - ...ngoc_apm_command_failed_get_command_name.3 | 64 - .../mongoc_apm_command_failed_get_context.3 | 64 - .../mongoc_apm_command_failed_get_duration.3 | 64 - .../man/mongoc_apm_command_failed_get_error.3 | 63 - .../man/mongoc_apm_command_failed_get_host.3 | 63 - ...ngoc_apm_command_failed_get_operation_id.3 | 64 - .../man/mongoc_apm_command_failed_get_reply.3 | 64 - ...mongoc_apm_command_failed_get_request_id.3 | 64 - .../mongoc_apm_command_failed_get_server_id.3 | 64 - .../doc/man/mongoc_apm_command_failed_t.3 | 46 - .../mongoc_apm_command_started_get_command.3 | 64 - ...goc_apm_command_started_get_command_name.3 | 64 - .../mongoc_apm_command_started_get_context.3 | 64 - ...oc_apm_command_started_get_database_name.3 | 64 - .../man/mongoc_apm_command_started_get_host.3 | 63 - ...goc_apm_command_started_get_operation_id.3 | 64 - ...ongoc_apm_command_started_get_request_id.3 | 64 - ...mongoc_apm_command_started_get_server_id.3 | 64 - .../doc/man/mongoc_apm_command_started_t.3 | 46 - ...c_apm_command_succeeded_get_command_name.3 | 64 - ...mongoc_apm_command_succeeded_get_context.3 | 64 - ...ongoc_apm_command_succeeded_get_duration.3 | 64 - .../mongoc_apm_command_succeeded_get_host.3 | 64 - ...c_apm_command_succeeded_get_operation_id.3 | 64 - .../mongoc_apm_command_succeeded_get_reply.3 | 64 - ...goc_apm_command_succeeded_get_request_id.3 | 64 - ...ngoc_apm_command_succeeded_get_server_id.3 | 64 - .../doc/man/mongoc_apm_command_succeeded_t.3 | 46 - .../mongoc_apm_server_changed_get_context.3 | 64 - .../man/mongoc_apm_server_changed_get_host.3 | 63 - ...c_apm_server_changed_get_new_description.3 | 64 - ..._server_changed_get_previous_description.3 | 64 - ...ongoc_apm_server_changed_get_topology_id.3 | 66 - .../doc/man/mongoc_apm_server_changed_t.3 | 46 - .../mongoc_apm_server_closed_get_context.3 | 63 - .../man/mongoc_apm_server_closed_get_host.3 | 63 - ...mongoc_apm_server_closed_get_topology_id.3 | 66 - .../doc/man/mongoc_apm_server_closed_t.3 | 46 - ..._apm_server_heartbeat_failed_get_context.3 | 64 - ...apm_server_heartbeat_failed_get_duration.3 | 64 - ...oc_apm_server_heartbeat_failed_get_error.3 | 63 - ...goc_apm_server_heartbeat_failed_get_host.3 | 64 - .../mongoc_apm_server_heartbeat_failed_t.3 | 46 - ...apm_server_heartbeat_started_get_context.3 | 64 - ...oc_apm_server_heartbeat_started_get_host.3 | 64 - .../mongoc_apm_server_heartbeat_started_t.3 | 46 - ...m_server_heartbeat_succeeded_get_context.3 | 64 - ..._server_heartbeat_succeeded_get_duration.3 | 64 - ..._apm_server_heartbeat_succeeded_get_host.3 | 64 - ...apm_server_heartbeat_succeeded_get_reply.3 | 64 - .../mongoc_apm_server_heartbeat_succeeded_t.3 | 46 - .../mongoc_apm_server_opening_get_context.3 | 64 - .../man/mongoc_apm_server_opening_get_host.3 | 63 - ...ongoc_apm_server_opening_get_topology_id.3 | 66 - .../doc/man/mongoc_apm_server_opening_t.3 | 46 - .../man/mongoc_apm_set_command_failed_cb.3 | 66 - .../man/mongoc_apm_set_command_started_cb.3 | 66 - .../man/mongoc_apm_set_command_succeeded_cb.3 | 66 - .../man/mongoc_apm_set_server_changed_cb.3 | 66 - .../doc/man/mongoc_apm_set_server_closed_cb.3 | 66 - ...ongoc_apm_set_server_heartbeat_failed_cb.3 | 66 - ...ngoc_apm_set_server_heartbeat_started_cb.3 | 66 - ...oc_apm_set_server_heartbeat_succeeded_cb.3 | 66 - .../man/mongoc_apm_set_server_opening_cb.3 | 66 - .../man/mongoc_apm_set_topology_changed_cb.3 | 66 - .../man/mongoc_apm_set_topology_closed_cb.3 | 66 - .../man/mongoc_apm_set_topology_opening_cb.3 | 66 - .../mongoc_apm_topology_changed_get_context.3 | 64 - ...apm_topology_changed_get_new_description.3 | 64 - ...opology_changed_get_previous_description.3 | 64 - ...goc_apm_topology_changed_get_topology_id.3 | 66 - .../doc/man/mongoc_apm_topology_changed_t.3 | 46 - .../mongoc_apm_topology_closed_get_context.3 | 64 - ...ngoc_apm_topology_closed_get_topology_id.3 | 66 - .../doc/man/mongoc_apm_topology_closed_t.3 | 46 - .../mongoc_apm_topology_opening_get_context.3 | 64 - ...goc_apm_topology_opening_get_topology_id.3 | 66 - .../doc/man/mongoc_apm_topology_opening_t.3 | 46 - ...ongoc_application_performance_monitoring.3 | 629 - .../libmongoc/doc/man/mongoc_authentication.3 | 304 - .../doc/man/mongoc_basic_troubleshooting.3 | 138 - .../src/libmongoc/doc/man/mongoc_bulk.3 | 1002 -- .../doc/man/mongoc_bulk_operation_delete.3 | 78 - .../man/mongoc_bulk_operation_delete_one.3 | 78 - .../doc/man/mongoc_bulk_operation_destroy.3 | 57 - .../doc/man/mongoc_bulk_operation_execute.3 | 87 - .../doc/man/mongoc_bulk_operation_get_hint.3 | 62 - .../mongoc_bulk_operation_get_write_concern.3 | 61 - .../doc/man/mongoc_bulk_operation_insert.3 | 68 - .../mongoc_bulk_operation_insert_with_opts.3 | 76 - .../doc/man/mongoc_bulk_operation_remove.3 | 72 - ...goc_bulk_operation_remove_many_with_opts.3 | 81 - .../man/mongoc_bulk_operation_remove_one.3 | 70 - ...ngoc_bulk_operation_remove_one_with_opts.3 | 81 - .../man/mongoc_bulk_operation_replace_one.3 | 81 - ...goc_bulk_operation_replace_one_with_opts.3 | 95 - ...operation_set_bypass_document_validation.3 | 64 - .../doc/man/mongoc_bulk_operation_set_hint.3 | 65 - .../doc/man/mongoc_bulk_operation_t.3 | 65 - .../doc/man/mongoc_bulk_operation_update.3 | 78 - ...goc_bulk_operation_update_many_with_opts.3 | 95 - .../man/mongoc_bulk_operation_update_one.3 | 80 - ...ngoc_bulk_operation_update_one_with_opts.3 | 95 - .../doc/man/mongoc_change_stream_destroy.3 | 57 - .../man/mongoc_change_stream_error_document.3 | 70 - .../doc/man/mongoc_change_stream_next.3 | 71 - .../doc/man/mongoc_change_stream_t.3 | 444 - .../libmongoc/doc/man/mongoc_check_version.3 | 64 - .../src/libmongoc/doc/man/mongoc_cleanup.3 | 55 - .../libmongoc/doc/man/mongoc_client_command.3 | 91 - .../doc/man/mongoc_client_command_simple.3 | 87 - ...goc_client_command_simple_with_server_id.3 | 78 - .../doc/man/mongoc_client_command_with_opts.3 | 151 - .../libmongoc/doc/man/mongoc_client_destroy.3 | 57 - .../mongoc_client_find_databases_with_opts.3 | 76 - .../doc/man/mongoc_client_get_collection.3 | 73 - .../doc/man/mongoc_client_get_database.3 | 69 - .../man/mongoc_client_get_database_names.3 | 73 - ...ngoc_client_get_database_names_with_opts.3 | 102 - .../man/mongoc_client_get_default_database.3 | 88 - .../doc/man/mongoc_client_get_gridfs.3 | 72 - .../doc/man/mongoc_client_get_max_bson_size.3 | 68 - .../man/mongoc_client_get_max_message_size.3 | 68 - .../doc/man/mongoc_client_get_read_concern.3 | 60 - .../doc/man/mongoc_client_get_read_prefs.3 | 60 - .../mongoc_client_get_server_description.3 | 63 - .../mongoc_client_get_server_descriptions.3 | 97 - .../doc/man/mongoc_client_get_server_status.3 | 77 - .../libmongoc/doc/man/mongoc_client_get_uri.3 | 60 - .../doc/man/mongoc_client_get_write_concern.3 | 60 - .../src/libmongoc/doc/man/mongoc_client_new.3 | 63 - .../doc/man/mongoc_client_new_from_uri.3 | 60 - .../doc/man/mongoc_client_pool_destroy.3 | 57 - .../doc/man/mongoc_client_pool_max_size.3 | 63 - .../doc/man/mongoc_client_pool_min_size.3 | 68 - .../doc/man/mongoc_client_pool_new.3 | 60 - .../doc/man/mongoc_client_pool_pop.3 | 63 - .../doc/man/mongoc_client_pool_push.3 | 62 - .../mongoc_client_pool_set_apm_callbacks.3 | 74 - .../doc/man/mongoc_client_pool_set_appname.3 | 67 - .../man/mongoc_client_pool_set_error_api.3 | 66 - .../doc/man/mongoc_client_pool_set_ssl_opts.3 | 80 - .../libmongoc/doc/man/mongoc_client_pool_t.3 | 166 - .../doc/man/mongoc_client_pool_try_pop.3 | 63 - .../mongoc_client_read_command_with_opts.3 | 295 - ...ngoc_client_read_write_command_with_opts.3 | 148 - .../doc/man/mongoc_client_select_server.3 | 71 - .../mongoc_client_session_abort_transaction.3 | 63 - ...ngoc_client_session_advance_cluster_time.3 | 62 - ...oc_client_session_advance_operation_time.3 | 65 - .../doc/man/mongoc_client_session_append.3 | 72 - ...mongoc_client_session_commit_transaction.3 | 68 - .../doc/man/mongoc_client_session_destroy.3 | 59 - .../man/mongoc_client_session_get_client.3 | 57 - .../mongoc_client_session_get_cluster_time.3 | 60 - .../doc/man/mongoc_client_session_get_lsid.3 | 60 - ...mongoc_client_session_get_operation_time.3 | 63 - .../doc/man/mongoc_client_session_get_opts.3 | 60 - .../mongoc_client_session_in_transaction.3 | 60 - .../mongoc_client_session_start_transaction.3 | 261 - .../doc/man/mongoc_client_session_t.3 | 205 - .../doc/man/mongoc_client_set_apm_callbacks.3 | 71 - .../doc/man/mongoc_client_set_appname.3 | 74 - .../doc/man/mongoc_client_set_error_api.3 | 64 - .../doc/man/mongoc_client_set_read_concern.3 | 64 - .../doc/man/mongoc_client_set_read_prefs.3 | 66 - .../doc/man/mongoc_client_set_ssl_opts.3 | 78 - .../man/mongoc_client_set_stream_initiator.3 | 63 - .../doc/man/mongoc_client_set_write_concern.3 | 64 - .../doc/man/mongoc_client_start_session.3 | 77 - .../src/libmongoc/doc/man/mongoc_client_t.3 | 161 - .../libmongoc/doc/man/mongoc_client_watch.3 | 102 - .../mongoc_client_write_command_with_opts.3 | 288 - .../doc/man/mongoc_collection_aggregate.3 | 215 - .../doc/man/mongoc_collection_command.3 | 84 - .../man/mongoc_collection_command_simple.3 | 119 - .../man/mongoc_collection_command_with_opts.3 | 148 - .../doc/man/mongoc_collection_copy.3 | 63 - .../doc/man/mongoc_collection_count.3 | 125 - .../man/mongoc_collection_count_documents.3 | 163 - .../man/mongoc_collection_count_with_opts.3 | 192 - .../mongoc_collection_create_bulk_operation.3 | 97 - ...llection_create_bulk_operation_with_opts.3 | 90 - .../doc/man/mongoc_collection_create_index.3 | 67 - ...mongoc_collection_create_index_with_opts.3 | 97 - .../doc/man/mongoc_collection_delete.3 | 85 - .../doc/man/mongoc_collection_delete_many.3 | 90 - .../doc/man/mongoc_collection_delete_one.3 | 90 - .../doc/man/mongoc_collection_destroy.3 | 65 - .../doc/man/mongoc_collection_drop.3 | 60 - .../doc/man/mongoc_collection_drop_index.3 | 64 - .../mongoc_collection_drop_index_with_opts.3 | 85 - .../man/mongoc_collection_drop_with_opts.3 | 117 - .../doc/man/mongoc_collection_ensure_index.3 | 71 - ...ngoc_collection_estimated_document_count.3 | 126 - .../doc/man/mongoc_collection_find.3 | 238 - .../man/mongoc_collection_find_and_modify.3 | 199 - ...goc_collection_find_and_modify_with_opts.3 | 84 - .../doc/man/mongoc_collection_find_indexes.3 | 71 - ...mongoc_collection_find_indexes_with_opts.3 | 76 - .../man/mongoc_collection_find_with_opts.3 | 359 - .../man/mongoc_collection_get_last_error.3 | 63 - .../doc/man/mongoc_collection_get_name.3 | 61 - .../man/mongoc_collection_get_read_concern.3 | 61 - .../man/mongoc_collection_get_read_prefs.3 | 61 - .../man/mongoc_collection_get_write_concern.3 | 61 - .../doc/man/mongoc_collection_insert.3 | 82 - .../doc/man/mongoc_collection_insert_bulk.3 | 87 - .../doc/man/mongoc_collection_insert_many.3 | 99 - .../doc/man/mongoc_collection_insert_one.3 | 94 - .../mongoc_collection_keys_to_index_string.3 | 63 - ...mongoc_collection_read_command_with_opts.3 | 137 - ..._collection_read_write_command_with_opts.3 | 145 - .../doc/man/mongoc_collection_remove.3 | 80 - .../doc/man/mongoc_collection_rename.3 | 70 - .../man/mongoc_collection_rename_with_opts.3 | 91 - .../doc/man/mongoc_collection_replace_one.3 | 103 - .../doc/man/mongoc_collection_save.3 | 83 - .../man/mongoc_collection_set_read_concern.3 | 63 - .../man/mongoc_collection_set_read_prefs.3 | 65 - .../man/mongoc_collection_set_write_concern.3 | 64 - .../doc/man/mongoc_collection_stats.3 | 80 - .../libmongoc/doc/man/mongoc_collection_t.3 | 56 - .../doc/man/mongoc_collection_update.3 | 85 - .../doc/man/mongoc_collection_update_many.3 | 106 - .../doc/man/mongoc_collection_update_one.3 | 188 - .../doc/man/mongoc_collection_validate.3 | 82 - .../doc/man/mongoc_collection_watch.3 | 102 - ...ongoc_collection_write_command_with_opts.3 | 130 - .../doc/man/mongoc_common_task_examples.3 | 496 - .../doc/man/mongoc_connection_pooling.3 | 102 - .../libmongoc/doc/man/mongoc_create_indexes.3 | 146 - .../libmongoc/doc/man/mongoc_cursor_clone.3 | 69 - .../libmongoc/doc/man/mongoc_cursor_current.3 | 61 - .../libmongoc/doc/man/mongoc_cursor_destroy.3 | 58 - .../libmongoc/doc/man/mongoc_cursor_error.3 | 66 - .../doc/man/mongoc_cursor_error_document.3 | 170 - .../doc/man/mongoc_cursor_get_batch_size.3 | 60 - .../doc/man/mongoc_cursor_get_hint.3 | 62 - .../doc/man/mongoc_cursor_get_host.3 | 60 - .../libmongoc/doc/man/mongoc_cursor_get_id.3 | 60 - .../doc/man/mongoc_cursor_get_limit.3 | 58 - .../man/mongoc_cursor_get_max_await_time_ms.3 | 58 - .../doc/man/mongoc_cursor_is_alive.3 | 62 - .../libmongoc/doc/man/mongoc_cursor_more.3 | 68 - .../mongoc_cursor_new_from_command_reply.3 | 111 - ..._cursor_new_from_command_reply_with_opts.3 | 120 - .../libmongoc/doc/man/mongoc_cursor_next.3 | 70 - .../doc/man/mongoc_cursor_set_batch_size.3 | 64 - .../doc/man/mongoc_cursor_set_hint.3 | 67 - .../doc/man/mongoc_cursor_set_limit.3 | 69 - .../man/mongoc_cursor_set_max_await_time_ms.3 | 70 - .../src/libmongoc/doc/man/mongoc_cursor_t.3 | 165 - .../src/libmongoc/doc/man/mongoc_cursors.3 | 265 - .../doc/man/mongoc_database_add_user.3 | 85 - .../doc/man/mongoc_database_command.3 | 86 - .../doc/man/mongoc_database_command_simple.3 | 77 - .../man/mongoc_database_command_with_opts.3 | 148 - .../libmongoc/doc/man/mongoc_database_copy.3 | 63 - .../man/mongoc_database_create_collection.3 | 75 - .../doc/man/mongoc_database_destroy.3 | 57 - .../libmongoc/doc/man/mongoc_database_drop.3 | 60 - .../doc/man/mongoc_database_drop_with_opts.3 | 82 - .../man/mongoc_database_find_collections.3 | 76 - ...ngoc_database_find_collections_with_opts.3 | 118 - .../doc/man/mongoc_database_get_collection.3 | 55 - .../mongoc_database_get_collection_names.3 | 72 - ..._database_get_collection_names_with_opts.3 | 113 - .../doc/man/mongoc_database_get_name.3 | 60 - .../man/mongoc_database_get_read_concern.3 | 60 - .../doc/man/mongoc_database_get_read_prefs.3 | 60 - .../man/mongoc_database_get_write_concern.3 | 60 - .../doc/man/mongoc_database_has_collection.3 | 71 - .../mongoc_database_read_command_with_opts.3 | 137 - ...oc_database_read_write_command_with_opts.3 | 145 - .../man/mongoc_database_remove_all_users.3 | 66 - .../doc/man/mongoc_database_remove_user.3 | 69 - .../man/mongoc_database_set_read_concern.3 | 62 - .../doc/man/mongoc_database_set_read_prefs.3 | 64 - .../man/mongoc_database_set_write_concern.3 | 62 - .../src/libmongoc/doc/man/mongoc_database_t.3 | 85 - .../libmongoc/doc/man/mongoc_database_watch.3 | 102 - .../mongoc_database_write_command_with_opts.3 | 132 - .../src/libmongoc/doc/man/mongoc_debugging.3 | 186 - .../libmongoc/doc/man/mongoc_delete_flags_t.3 | 64 - .../doc/man/mongoc_distinct_mapreduce.3 | 526 - .../doc/man/mongoc_error_has_label.3 | 62 - .../src/libmongoc/doc/man/mongoc_errors.3 | 418 - .../man/mongoc_find_and_modify_opts_append.3 | 135 - .../man/mongoc_find_and_modify_opts_destroy.3 | 59 - ...dify_opts_get_bypass_document_validation.3 | 59 - .../mongoc_find_and_modify_opts_get_fields.3 | 61 - .../mongoc_find_and_modify_opts_get_flags.3 | 59 - ...goc_find_and_modify_opts_get_max_time_ms.3 | 59 - .../mongoc_find_and_modify_opts_get_sort.3 | 61 - .../mongoc_find_and_modify_opts_get_update.3 | 61 - .../doc/man/mongoc_find_and_modify_opts_new.3 | 53 - ...dify_opts_set_bypass_document_validation.3 | 146 - .../mongoc_find_and_modify_opts_set_fields.3 | 144 - .../mongoc_find_and_modify_opts_set_flags.3 | 182 - ...goc_find_and_modify_opts_set_max_time_ms.3 | 135 - .../mongoc_find_and_modify_opts_set_sort.3 | 147 - .../mongoc_find_and_modify_opts_set_update.3 | 146 - .../doc/man/mongoc_find_and_modify_opts_t.3 | 577 - .../doc/man/mongoc_get_major_version.3 | 53 - .../doc/man/mongoc_get_micro_version.3 | 53 - .../doc/man/mongoc_get_minor_version.3 | 53 - .../libmongoc/doc/man/mongoc_get_version.3 | 53 - .../doc/man/mongoc_gridfs_create_file.3 | 66 - .../mongoc_gridfs_create_file_from_stream.3 | 68 - .../libmongoc/doc/man/mongoc_gridfs_destroy.3 | 58 - .../libmongoc/doc/man/mongoc_gridfs_drop.3 | 66 - .../doc/man/mongoc_gridfs_file_destroy.3 | 58 - .../doc/man/mongoc_gridfs_file_error.3 | 66 - .../doc/man/mongoc_gridfs_file_get_aliases.3 | 61 - .../man/mongoc_gridfs_file_get_chunk_size.3 | 61 - .../man/mongoc_gridfs_file_get_content_type.3 | 61 - .../doc/man/mongoc_gridfs_file_get_filename.3 | 61 - .../doc/man/mongoc_gridfs_file_get_id.3 | 63 - .../doc/man/mongoc_gridfs_file_get_length.3 | 61 - .../doc/man/mongoc_gridfs_file_get_md5.3 | 61 - .../doc/man/mongoc_gridfs_file_get_metadata.3 | 61 - .../man/mongoc_gridfs_file_get_upload_date.3 | 61 - .../doc/man/mongoc_gridfs_file_list_destroy.3 | 58 - .../doc/man/mongoc_gridfs_file_list_error.3 | 67 - .../doc/man/mongoc_gridfs_file_list_next.3 | 61 - .../doc/man/mongoc_gridfs_file_list_t.3 | 76 - .../doc/man/mongoc_gridfs_file_opt_t.3 | 59 - .../doc/man/mongoc_gridfs_file_readv.3 | 75 - .../doc/man/mongoc_gridfs_file_remove.3 | 66 - .../doc/man/mongoc_gridfs_file_save.3 | 65 - .../doc/man/mongoc_gridfs_file_seek.3 | 108 - .../doc/man/mongoc_gridfs_file_set_aliases.3 | 62 - .../man/mongoc_gridfs_file_set_content_type.3 | 63 - .../doc/man/mongoc_gridfs_file_set_filename.3 | 63 - .../doc/man/mongoc_gridfs_file_set_id.3 | 69 - .../doc/man/mongoc_gridfs_file_set_md5.3 | 62 - .../doc/man/mongoc_gridfs_file_set_metadata.3 | 63 - .../libmongoc/doc/man/mongoc_gridfs_file_t.3 | 74 - .../doc/man/mongoc_gridfs_file_tell.3 | 61 - .../doc/man/mongoc_gridfs_file_writev.3 | 74 - .../libmongoc/doc/man/mongoc_gridfs_find.3 | 67 - .../doc/man/mongoc_gridfs_find_one.3 | 74 - .../man/mongoc_gridfs_find_one_by_filename.3 | 70 - .../man/mongoc_gridfs_find_one_with_opts.3 | 76 - .../doc/man/mongoc_gridfs_find_with_opts.3 | 69 - .../doc/man/mongoc_gridfs_get_chunks.3 | 61 - .../doc/man/mongoc_gridfs_get_files.3 | 61 - .../man/mongoc_gridfs_remove_by_filename.3 | 70 - .../src/libmongoc/doc/man/mongoc_gridfs_t.3 | 236 - .../src/libmongoc/doc/man/mongoc_guides.3 | 3170 ----- .../libmongoc/doc/man/mongoc_host_list_t.3 | 62 - .../man/mongoc_index_opt_geo_get_default.3 | 53 - .../doc/man/mongoc_index_opt_geo_init.3 | 58 - .../doc/man/mongoc_index_opt_geo_t.3 | 66 - .../doc/man/mongoc_index_opt_get_default.3 | 53 - .../libmongoc/doc/man/mongoc_index_opt_init.3 | 58 - .../libmongoc/doc/man/mongoc_index_opt_t.3 | 122 - .../doc/man/mongoc_index_opt_wt_get_default.3 | 53 - .../doc/man/mongoc_index_opt_wt_init.3 | 58 - .../libmongoc/doc/man/mongoc_index_opt_wt_t.3 | 63 - .../src/libmongoc/doc/man/mongoc_init.3 | 55 - .../libmongoc/doc/man/mongoc_init_cleanup.3 | 58 - .../libmongoc/doc/man/mongoc_insert_flags_t.3 | 83 - .../src/libmongoc/doc/man/mongoc_installing.3 | 480 - .../src/libmongoc/doc/man/mongoc_iovec_t.3 | 68 - .../src/libmongoc/doc/man/mongoc_logging.3 | 188 - .../src/libmongoc/doc/man/mongoc_matcher.3 | 68 - .../doc/man/mongoc_matcher_destroy.3 | 65 - .../libmongoc/doc/man/mongoc_matcher_match.3 | 70 - .../libmongoc/doc/man/mongoc_matcher_new.3 | 73 - .../src/libmongoc/doc/man/mongoc_matcher_t.3 | 122 - .../libmongoc/doc/man/mongoc_query_flags_t.3 | 117 - .../src/libmongoc/doc/man/mongoc_rand.3 | 69 - .../src/libmongoc/doc/man/mongoc_rand_add.3 | 62 - .../src/libmongoc/doc/man/mongoc_rand_seed.3 | 60 - .../libmongoc/doc/man/mongoc_rand_status.3 | 56 - .../doc/man/mongoc_read_concern_append.3 | 66 - .../doc/man/mongoc_read_concern_copy.3 | 61 - .../doc/man/mongoc_read_concern_destroy.3 | 58 - .../doc/man/mongoc_read_concern_get_level.3 | 61 - .../doc/man/mongoc_read_concern_is_default.3 | 58 - .../doc/man/mongoc_read_concern_new.3 | 53 - .../doc/man/mongoc_read_concern_set_level.3 | 69 - .../libmongoc/doc/man/mongoc_read_concern_t.3 | 109 - .../libmongoc/doc/man/mongoc_read_mode_t.3 | 62 - .../doc/man/mongoc_read_prefs_add_tag.3 | 60 - .../doc/man/mongoc_read_prefs_copy.3 | 61 - .../doc/man/mongoc_read_prefs_destroy.3 | 58 - ...goc_read_prefs_get_max_staleness_seconds.3 | 59 - .../doc/man/mongoc_read_prefs_get_mode.3 | 61 - .../doc/man/mongoc_read_prefs_get_tags.3 | 61 - .../doc/man/mongoc_read_prefs_is_valid.3 | 63 - .../libmongoc/doc/man/mongoc_read_prefs_new.3 | 61 - ...goc_read_prefs_set_max_staleness_seconds.3 | 61 - .../doc/man/mongoc_read_prefs_set_mode.3 | 61 - .../doc/man/mongoc_read_prefs_set_tags.3 | 135 - .../libmongoc/doc/man/mongoc_read_prefs_t.3 | 131 - .../src/libmongoc/doc/man/mongoc_reference.3 | 10426 ---------------- .../libmongoc/doc/man/mongoc_remove_flags_t.3 | 75 - .../libmongoc/doc/man/mongoc_reply_flags_t.3 | 96 - .../man/mongoc_server_description_destroy.3 | 58 - .../doc/man/mongoc_server_description_host.3 | 61 - .../doc/man/mongoc_server_description_id.3 | 58 - .../man/mongoc_server_description_ismaster.3 | 62 - .../man/mongoc_server_description_new_copy.3 | 62 - ...ongoc_server_description_round_trip_time.3 | 59 - .../doc/man/mongoc_server_description_t.3 | 59 - .../doc/man/mongoc_server_description_type.3 | 78 - .../mongoc_server_descriptions_destroy_all.3 | 60 - .../libmongoc/doc/man/mongoc_session_opt_t.3 | 61 - .../doc/man/mongoc_session_opts_clone.3 | 57 - .../doc/man/mongoc_session_opts_destroy.3 | 60 - ...ngoc_session_opts_get_causal_consistency.3 | 57 - ...ession_opts_get_default_transaction_opts.3 | 57 - .../doc/man/mongoc_session_opts_new.3 | 60 - ...ngoc_session_opts_set_causal_consistency.3 | 109 - ...ession_opts_set_default_transaction_opts.3 | 72 - .../libmongoc/doc/man/mongoc_socket_accept.3 | 63 - .../libmongoc/doc/man/mongoc_socket_bind.3 | 67 - .../libmongoc/doc/man/mongoc_socket_close.3 | 61 - .../libmongoc/doc/man/mongoc_socket_connect.3 | 72 - .../libmongoc/doc/man/mongoc_socket_destroy.3 | 58 - .../libmongoc/doc/man/mongoc_socket_errno.3 | 61 - .../doc/man/mongoc_socket_getnameinfo.3 | 61 - .../doc/man/mongoc_socket_getsockname.3 | 67 - .../libmongoc/doc/man/mongoc_socket_listen.3 | 63 - .../src/libmongoc/doc/man/mongoc_socket_new.3 | 65 - .../libmongoc/doc/man/mongoc_socket_recv.3 | 73 - .../libmongoc/doc/man/mongoc_socket_send.3 | 70 - .../libmongoc/doc/man/mongoc_socket_sendv.3 | 70 - .../doc/man/mongoc_socket_setsockopt.3 | 73 - .../src/libmongoc/doc/man/mongoc_socket_t.3 | 56 - .../doc/man/mongoc_ssl_opt_get_default.3 | 53 - .../src/libmongoc/doc/man/mongoc_ssl_opt_t.3 | 192 - .../doc/man/mongoc_stream_buffered_new.3 | 64 - .../doc/man/mongoc_stream_buffered_t.3 | 57 - .../libmongoc/doc/man/mongoc_stream_close.3 | 63 - .../libmongoc/doc/man/mongoc_stream_cork.3 | 72 - .../libmongoc/doc/man/mongoc_stream_destroy.3 | 57 - .../doc/man/mongoc_stream_file_get_fd.3 | 67 - .../doc/man/mongoc_stream_file_new.3 | 62 - .../doc/man/mongoc_stream_file_new_for_path.3 | 66 - .../libmongoc/doc/man/mongoc_stream_file_t.3 | 51 - .../libmongoc/doc/man/mongoc_stream_flush.3 | 62 - .../doc/man/mongoc_stream_get_base_stream.3 | 60 - .../doc/man/mongoc_stream_gridfs_new.3 | 64 - .../libmongoc/doc/man/mongoc_stream_read.3 | 79 - .../libmongoc/doc/man/mongoc_stream_readv.3 | 79 - .../doc/man/mongoc_stream_setsockopt.3 | 72 - .../doc/man/mongoc_stream_socket_get_socket.3 | 60 - .../doc/man/mongoc_stream_socket_new.3 | 67 - .../doc/man/mongoc_stream_socket_t.3 | 51 - .../src/libmongoc/doc/man/mongoc_stream_t.3 | 65 - .../doc/man/mongoc_stream_timed_out.3 | 58 - .../libmongoc/doc/man/mongoc_stream_tls_t.3 | 51 - .../libmongoc/doc/man/mongoc_stream_uncork.3 | 72 - .../libmongoc/doc/man/mongoc_stream_write.3 | 76 - .../libmongoc/doc/man/mongoc_stream_writev.3 | 72 - .../mongoc_topology_description_get_servers.3 | 63 - ...topology_description_has_readable_server.3 | 70 - ...topology_description_has_writable_server.3 | 66 - .../doc/man/mongoc_topology_description_t.3 | 56 - .../man/mongoc_topology_description_type.3 | 70 - .../doc/man/mongoc_transaction_opt_t.3 | 256 - .../doc/man/mongoc_transaction_opts_clone.3 | 57 - .../doc/man/mongoc_transaction_opts_destroy.3 | 57 - ...mongoc_transaction_opts_get_read_concern.3 | 57 - .../mongoc_transaction_opts_get_read_prefs.3 | 57 - ...ongoc_transaction_opts_get_write_concern.3 | 57 - .../doc/man/mongoc_transaction_opts_new.3 | 52 - ...mongoc_transaction_opts_set_read_concern.3 | 60 - .../mongoc_transaction_opts_set_read_prefs.3 | 60 - ...ongoc_transaction_opts_set_write_concern.3 | 60 - .../src/libmongoc/doc/man/mongoc_tutorial.3 | 1327 -- .../libmongoc/doc/man/mongoc_update_flags_t.3 | 90 - .../src/libmongoc/doc/man/mongoc_uri_copy.3 | 61 - .../libmongoc/doc/man/mongoc_uri_destroy.3 | 58 - .../doc/man/mongoc_uri_get_auth_mechanism.3 | 61 - .../doc/man/mongoc_uri_get_auth_source.3 | 61 - .../doc/man/mongoc_uri_get_compressors.3 | 79 - .../doc/man/mongoc_uri_get_database.3 | 61 - .../libmongoc/doc/man/mongoc_uri_get_hosts.3 | 61 - .../man/mongoc_uri_get_mechanism_properties.3 | 101 - .../doc/man/mongoc_uri_get_option_as_bool.3 | 64 - .../doc/man/mongoc_uri_get_option_as_int32.3 | 78 - .../doc/man/mongoc_uri_get_option_as_utf8.3 | 64 - .../doc/man/mongoc_uri_get_options.3 | 61 - .../doc/man/mongoc_uri_get_password.3 | 61 - .../doc/man/mongoc_uri_get_read_concern.3 | 61 - .../doc/man/mongoc_uri_get_read_prefs.3 | 71 - .../doc/man/mongoc_uri_get_read_prefs_t.3 | 61 - .../doc/man/mongoc_uri_get_replica_set.3 | 61 - .../doc/man/mongoc_uri_get_service.3 | 61 - .../libmongoc/doc/man/mongoc_uri_get_ssl.3 | 61 - .../libmongoc/doc/man/mongoc_uri_get_string.3 | 61 - .../doc/man/mongoc_uri_get_username.3 | 61 - .../doc/man/mongoc_uri_get_write_concern.3 | 61 - .../src/libmongoc/doc/man/mongoc_uri_new.3 | 69 - .../doc/man/mongoc_uri_new_for_host_port.3 | 63 - .../doc/man/mongoc_uri_new_with_error.3 | 93 - .../doc/man/mongoc_uri_option_is_bool.3 | 58 - .../doc/man/mongoc_uri_option_is_int32.3 | 58 - .../doc/man/mongoc_uri_option_is_utf8.3 | 58 - .../doc/man/mongoc_uri_set_auth_mechanism.3 | 65 - .../doc/man/mongoc_uri_set_auth_source.3 | 65 - .../doc/man/mongoc_uri_set_compressors.3 | 83 - .../doc/man/mongoc_uri_set_database.3 | 65 - .../man/mongoc_uri_set_mechanism_properties.3 | 91 - .../doc/man/mongoc_uri_set_option_as_bool.3 | 71 - .../doc/man/mongoc_uri_set_option_as_int32.3 | 71 - .../doc/man/mongoc_uri_set_option_as_utf8.3 | 71 - .../doc/man/mongoc_uri_set_password.3 | 63 - .../doc/man/mongoc_uri_set_read_concern.3 | 61 - .../doc/man/mongoc_uri_set_read_prefs_t.3 | 61 - .../doc/man/mongoc_uri_set_username.3 | 63 - .../doc/man/mongoc_uri_set_write_concern.3 | 61 - .../src/libmongoc/doc/man/mongoc_uri_t.3 | 659 - .../libmongoc/doc/man/mongoc_uri_unescape.3 | 61 - .../src/libmongoc/doc/man/mongoc_version.3 | 78 - .../doc/man/mongoc_write_concern_append.3 | 67 - .../doc/man/mongoc_write_concern_copy.3 | 61 - .../doc/man/mongoc_write_concern_destroy.3 | 58 - .../doc/man/mongoc_write_concern_get_fsync.3 | 69 - .../man/mongoc_write_concern_get_journal.3 | 61 - .../doc/man/mongoc_write_concern_get_w.3 | 61 - .../man/mongoc_write_concern_get_wmajority.3 | 62 - .../doc/man/mongoc_write_concern_get_wtag.3 | 61 - .../man/mongoc_write_concern_get_wtimeout.3 | 63 - .../mongoc_write_concern_is_acknowledged.3 | 61 - .../doc/man/mongoc_write_concern_is_default.3 | 59 - .../doc/man/mongoc_write_concern_is_valid.3 | 58 - .../man/mongoc_write_concern_journal_is_set.3 | 59 - .../doc/man/mongoc_write_concern_new.3 | 53 - .../doc/man/mongoc_write_concern_set_fsync.3 | 76 - .../man/mongoc_write_concern_set_journal.3 | 66 - .../doc/man/mongoc_write_concern_set_w.3 | 67 - .../man/mongoc_write_concern_set_wmajority.3 | 68 - .../doc/man/mongoc_write_concern_set_wtag.3 | 66 - .../man/mongoc_write_concern_set_wtimeout.3 | 66 - .../doc/man/mongoc_write_concern_t.3 | 102 - .../src/libmongoc/doc/matcher.rst | 29 - .../doc/mongoc-common-task-examples.rst | 139 - .../doc/mongoc_apm_callbacks_destroy.rst | 20 - .../doc/mongoc_apm_callbacks_new.rst | 25 - .../libmongoc/doc/mongoc_apm_callbacks_t.rst | 43 - ...oc_apm_command_failed_get_command_name.rst | 31 - .../mongoc_apm_command_failed_get_context.rst | 31 - ...mongoc_apm_command_failed_get_duration.rst | 31 - .../mongoc_apm_command_failed_get_error.rst | 27 - .../mongoc_apm_command_failed_get_host.rst | 30 - ...oc_apm_command_failed_get_operation_id.rst | 31 - .../mongoc_apm_command_failed_get_reply.rst | 31 - ...ngoc_apm_command_failed_get_request_id.rst | 31 - ...ongoc_apm_command_failed_get_server_id.rst | 31 - .../doc/mongoc_apm_command_failed_t.rst | 36 - ...mongoc_apm_command_started_get_command.rst | 31 - ...c_apm_command_started_get_command_name.rst | 31 - ...mongoc_apm_command_started_get_context.rst | 31 - ..._apm_command_started_get_database_name.rst | 31 - .../mongoc_apm_command_started_get_host.rst | 30 - ...c_apm_command_started_get_operation_id.rst | 31 - ...goc_apm_command_started_get_request_id.rst | 31 - ...ngoc_apm_command_started_get_server_id.rst | 31 - .../doc/mongoc_apm_command_started_t.rst | 35 - ...apm_command_succeeded_get_command_name.rst | 31 - ...ngoc_apm_command_succeeded_get_context.rst | 31 - ...goc_apm_command_succeeded_get_duration.rst | 31 - .../mongoc_apm_command_succeeded_get_host.rst | 31 - ...apm_command_succeeded_get_operation_id.rst | 31 - ...mongoc_apm_command_succeeded_get_reply.rst | 31 - ...c_apm_command_succeeded_get_request_id.rst | 31 - ...oc_apm_command_succeeded_get_server_id.rst | 31 - .../doc/mongoc_apm_command_succeeded_t.rst | 35 - .../mongoc_apm_server_changed_get_context.rst | 31 - .../mongoc_apm_server_changed_get_host.rst | 30 - ...apm_server_changed_get_new_description.rst | 31 - ...erver_changed_get_previous_description.rst | 31 - ...goc_apm_server_changed_get_topology_id.rst | 32 - .../doc/mongoc_apm_server_changed_t.rst | 32 - .../mongoc_apm_server_closed_get_context.rst | 30 - .../doc/mongoc_apm_server_closed_get_host.rst | 30 - ...ngoc_apm_server_closed_get_topology_id.rst | 32 - .../doc/mongoc_apm_server_closed_t.rst | 30 - ...pm_server_heartbeat_failed_get_context.rst | 31 - ...m_server_heartbeat_failed_get_duration.rst | 31 - ..._apm_server_heartbeat_failed_get_error.rst | 27 - ...c_apm_server_heartbeat_failed_get_host.rst | 31 - .../mongoc_apm_server_heartbeat_failed_t.rst | 31 - ...m_server_heartbeat_started_get_context.rst | 31 - ..._apm_server_heartbeat_started_get_host.rst | 31 - .../mongoc_apm_server_heartbeat_started_t.rst | 29 - ...server_heartbeat_succeeded_get_context.rst | 31 - ...erver_heartbeat_succeeded_get_duration.rst | 31 - ...pm_server_heartbeat_succeeded_get_host.rst | 31 - ...m_server_heartbeat_succeeded_get_reply.rst | 31 - ...ongoc_apm_server_heartbeat_succeeded_t.rst | 31 - .../mongoc_apm_server_opening_get_context.rst | 31 - .../mongoc_apm_server_opening_get_host.rst | 30 - ...goc_apm_server_opening_get_topology_id.rst | 32 - .../doc/mongoc_apm_server_opening_t.rst | 30 - .../doc/mongoc_apm_set_command_failed_cb.rst | 30 - .../doc/mongoc_apm_set_command_started_cb.rst | 30 - .../mongoc_apm_set_command_succeeded_cb.rst | 30 - .../doc/mongoc_apm_set_server_changed_cb.rst | 30 - .../doc/mongoc_apm_set_server_closed_cb.rst | 30 - ...goc_apm_set_server_heartbeat_failed_cb.rst | 30 - ...oc_apm_set_server_heartbeat_started_cb.rst | 30 - ..._apm_set_server_heartbeat_succeeded_cb.rst | 30 - .../doc/mongoc_apm_set_server_opening_cb.rst | 30 - .../mongoc_apm_set_topology_changed_cb.rst | 30 - .../doc/mongoc_apm_set_topology_closed_cb.rst | 30 - .../mongoc_apm_set_topology_opening_cb.rst | 30 - ...ongoc_apm_topology_changed_get_context.rst | 31 - ...m_topology_changed_get_new_description.rst | 31 - ...ology_changed_get_previous_description.rst | 31 - ...c_apm_topology_changed_get_topology_id.rst | 32 - .../doc/mongoc_apm_topology_changed_t.rst | 31 - ...mongoc_apm_topology_closed_get_context.rst | 31 - ...oc_apm_topology_closed_get_topology_id.rst | 32 - .../doc/mongoc_apm_topology_closed_t.rst | 29 - ...ongoc_apm_topology_opening_get_context.rst | 31 - ...c_apm_topology_opening_get_topology_id.rst | 32 - .../doc/mongoc_apm_topology_opening_t.rst | 29 - .../doc/mongoc_bulk_operation_delete.rst | 43 - .../doc/mongoc_bulk_operation_delete_one.rst | 43 - .../doc/mongoc_bulk_operation_destroy.rst | 20 - .../doc/mongoc_bulk_operation_execute.rst | 51 - .../doc/mongoc_bulk_operation_get_hint.rst | 27 - ...ongoc_bulk_operation_get_write_concern.rst | 28 - .../doc/mongoc_bulk_operation_insert.rst | 34 - ...mongoc_bulk_operation_insert_with_opts.rst | 36 - .../doc/mongoc_bulk_operation_remove.rst | 38 - ...c_bulk_operation_remove_many_with_opts.rst | 44 - .../doc/mongoc_bulk_operation_remove_one.rst | 36 - ...oc_bulk_operation_remove_one_with_opts.rst | 44 - .../doc/mongoc_bulk_operation_replace_one.rst | 42 - ...c_bulk_operation_replace_one_with_opts.rst | 50 - ...eration_set_bypass_document_validation.rst | 29 - .../doc/mongoc_bulk_operation_set_hint.rst | 29 - .../libmongoc/doc/mongoc_bulk_operation_t.rst | 57 - .../doc/mongoc_bulk_operation_update.rst | 42 - ...c_bulk_operation_update_many_with_opts.rst | 47 - .../doc/mongoc_bulk_operation_update_one.rst | 39 - ...oc_bulk_operation_update_one_with_opts.rst | 47 - .../doc/mongoc_change_stream_destroy.rst | 19 - .../mongoc_change_stream_error_document.rst | 31 - .../doc/mongoc_change_stream_next.rst | 33 - .../libmongoc/doc/mongoc_change_stream_t.rst | 66 - .../libmongoc/doc/mongoc_check_version.rst | 27 - .../src/libmongoc/doc/mongoc_cleanup.rst | 17 - .../libmongoc/doc/mongoc_client_command.rst | 50 - .../doc/mongoc_client_command_simple.rst | 46 - ...c_client_command_simple_with_server_id.rst | 38 - .../doc/mongoc_client_command_with_opts.rst | 59 - .../libmongoc/doc/mongoc_client_destroy.rst | 20 - ...mongoc_client_find_databases_with_opts.rst | 37 - .../doc/mongoc_client_get_collection.rst | 33 - .../doc/mongoc_client_get_database.rst | 30 - .../doc/mongoc_client_get_database_names.rst | 42 - ...oc_client_get_database_names_with_opts.rst | 59 - .../mongoc_client_get_default_database.rst | 50 - .../doc/mongoc_client_get_gridfs.rst | 35 - .../doc/mongoc_client_get_max_bson_size.rst | 32 - .../mongoc_client_get_max_message_size.rst | 32 - .../doc/mongoc_client_get_read_concern.rst | 25 - .../doc/mongoc_client_get_read_prefs.rst | 25 - .../mongoc_client_get_server_description.rst | 27 - .../mongoc_client_get_server_descriptions.rst | 55 - .../doc/mongoc_client_get_server_status.rst | 43 - .../libmongoc/doc/mongoc_client_get_uri.rst | 25 - .../doc/mongoc_client_get_write_concern.rst | 25 - .../src/libmongoc/doc/mongoc_client_new.rst | 30 - .../doc/mongoc_client_new_from_uri.rst | 25 - .../doc/mongoc_client_pool_destroy.rst | 20 - .../doc/mongoc_client_pool_max_size.rst | 23 - .../doc/mongoc_client_pool_min_size.rst | 28 - .../libmongoc/doc/mongoc_client_pool_new.rst | 25 - .../libmongoc/doc/mongoc_client_pool_pop.rst | 26 - .../libmongoc/doc/mongoc_client_pool_push.rst | 22 - .../mongoc_client_pool_set_apm_callbacks.rst | 38 - .../doc/mongoc_client_pool_set_appname.rst | 29 - .../doc/mongoc_client_pool_set_error_api.rst | 28 - .../doc/mongoc_client_pool_set_ssl_opts.rst | 43 - .../libmongoc/doc/mongoc_client_pool_t.rst | 44 - .../doc/mongoc_client_pool_try_pop.rst | 26 - .../mongoc_client_read_command_with_opts.rst | 61 - ...oc_client_read_write_command_with_opts.rst | 62 - .../doc/mongoc_client_select_server.rst | 33 - ...ongoc_client_session_abort_transaction.rst | 32 - ...oc_client_session_advance_cluster_time.rst | 28 - ..._client_session_advance_operation_time.rst | 30 - .../doc/mongoc_client_session_append.rst | 39 - ...ngoc_client_session_commit_transaction.rst | 36 - .../doc/mongoc_client_session_destroy.rst | 26 - .../doc/mongoc_client_session_get_client.rst | 24 - ...mongoc_client_session_get_cluster_time.rst | 29 - .../doc/mongoc_client_session_get_lsid.rst | 29 - ...ngoc_client_session_get_operation_time.rst | 28 - .../doc/mongoc_client_session_get_opts.rst | 29 - .../mongoc_client_session_in_transaction.rst | 24 - ...ongoc_client_session_start_transaction.rst | 47 - .../libmongoc/doc/mongoc_client_session_t.rst | 42 - .../doc/mongoc_client_set_apm_callbacks.rst | 36 - .../doc/mongoc_client_set_appname.rst | 34 - .../doc/mongoc_client_set_error_api.rst | 27 - .../doc/mongoc_client_set_read_concern.rst | 26 - .../doc/mongoc_client_set_read_prefs.rst | 28 - .../doc/mongoc_client_set_ssl_opts.rst | 42 - .../mongoc_client_set_stream_initiator.rst | 24 - .../doc/mongoc_client_set_write_concern.rst | 26 - .../doc/mongoc_client_start_session.rst | 40 - .../src/libmongoc/doc/mongoc_client_t.rst | 88 - .../src/libmongoc/doc/mongoc_client_watch.rst | 55 - .../mongoc_client_write_command_with_opts.rst | 64 - .../doc/mongoc_collection_aggregate.rst | 124 - .../doc/mongoc_collection_command.rst | 42 - .../doc/mongoc_collection_command_simple.rst | 80 - .../mongoc_collection_command_with_opts.rst | 58 - .../libmongoc/doc/mongoc_collection_copy.rst | 30 - .../libmongoc/doc/mongoc_collection_count.rst | 86 - .../doc/mongoc_collection_count_documents.rst | 104 - .../doc/mongoc_collection_count_with_opts.rst | 140 - ...ongoc_collection_create_bulk_operation.rst | 65 - ...ection_create_bulk_operation_with_opts.rst | 52 - .../doc/mongoc_collection_create_index.rst | 28 - ...ngoc_collection_create_index_with_opts.rst | 60 - .../doc/mongoc_collection_delete.rst | 52 - .../doc/mongoc_collection_delete_many.rst | 47 - .../doc/mongoc_collection_delete_one.rst | 47 - .../doc/mongoc_collection_destroy.rst | 27 - .../libmongoc/doc/mongoc_collection_drop.rst | 24 - .../doc/mongoc_collection_drop_index.rst | 27 - ...mongoc_collection_drop_index_with_opts.rst | 43 - .../doc/mongoc_collection_drop_with_opts.rst | 71 - .../doc/mongoc_collection_ensure_index.rst | 35 - ...oc_collection_estimated_document_count.rst | 78 - .../libmongoc/doc/mongoc_collection_find.rst | 163 - .../doc/mongoc_collection_find_and_modify.rst | 68 - ...c_collection_find_and_modify_with_opts.rst | 51 - .../doc/mongoc_collection_find_indexes.rst | 38 - ...ngoc_collection_find_indexes_with_opts.rst | 38 - .../doc/mongoc_collection_find_with_opts.rst | 176 - .../doc/mongoc_collection_get_last_error.rst | 30 - .../doc/mongoc_collection_get_name.rst | 28 - .../mongoc_collection_get_read_concern.rst | 28 - .../doc/mongoc_collection_get_read_prefs.rst | 28 - .../mongoc_collection_get_write_concern.rst | 28 - .../doc/mongoc_collection_insert.rst | 47 - .../doc/mongoc_collection_insert_bulk.rst | 53 - .../doc/mongoc_collection_insert_many.rst | 54 - .../doc/mongoc_collection_insert_one.rst | 52 - ...mongoc_collection_keys_to_index_string.rst | 30 - ...ngoc_collection_read_command_with_opts.rst | 55 - ...ollection_read_write_command_with_opts.rst | 60 - .../doc/mongoc_collection_remove.rst | 45 - .../doc/mongoc_collection_rename.rst | 31 - .../mongoc_collection_rename_with_opts.rst | 48 - .../doc/mongoc_collection_replace_one.rst | 57 - .../libmongoc/doc/mongoc_collection_save.rst | 51 - .../mongoc_collection_set_read_concern.rst | 27 - .../doc/mongoc_collection_set_read_prefs.rst | 29 - .../mongoc_collection_set_write_concern.rst | 28 - .../libmongoc/doc/mongoc_collection_stats.rst | 48 - .../src/libmongoc/doc/mongoc_collection_t.rst | 85 - .../doc/mongoc_collection_update.rst | 49 - .../doc/mongoc_collection_update_many.rst | 58 - .../doc/mongoc_collection_update_one.rst | 66 - .../doc/mongoc_collection_validate.rst | 50 - .../libmongoc/doc/mongoc_collection_watch.rst | 55 - ...goc_collection_write_command_with_opts.rst | 60 - .../src/libmongoc/doc/mongoc_cursor_clone.rst | 33 - .../libmongoc/doc/mongoc_cursor_current.rst | 28 - .../libmongoc/doc/mongoc_cursor_destroy.rst | 22 - .../src/libmongoc/doc/mongoc_cursor_error.rst | 38 - .../doc/mongoc_cursor_error_document.rst | 137 - .../doc/mongoc_cursor_get_batch_size.rst | 25 - .../libmongoc/doc/mongoc_cursor_get_hint.rst | 27 - .../libmongoc/doc/mongoc_cursor_get_host.rst | 24 - .../libmongoc/doc/mongoc_cursor_get_id.rst | 25 - .../libmongoc/doc/mongoc_cursor_get_limit.rst | 23 - .../mongoc_cursor_get_max_await_time_ms.rst | 23 - .../libmongoc/doc/mongoc_cursor_is_alive.rst | 28 - .../src/libmongoc/doc/mongoc_cursor_more.rst | 37 - .../mongoc_cursor_new_from_command_reply.rst | 66 - ...ursor_new_from_command_reply_with_opts.rst | 64 - .../src/libmongoc/doc/mongoc_cursor_next.rst | 38 - .../doc/mongoc_cursor_set_batch_size.rst | 27 - .../libmongoc/doc/mongoc_cursor_set_hint.rst | 33 - .../libmongoc/doc/mongoc_cursor_set_limit.rst | 34 - .../mongoc_cursor_set_max_await_time_ms.rst | 36 - .../src/libmongoc/doc/mongoc_cursor_t.rst | 68 - .../doc/mongoc_database_add_user.rst | 44 - .../libmongoc/doc/mongoc_database_command.rst | 46 - .../doc/mongoc_database_command_simple.rst | 40 - .../doc/mongoc_database_command_with_opts.rst | 58 - .../libmongoc/doc/mongoc_database_copy.rst | 30 - .../doc/mongoc_database_create_collection.rst | 41 - .../libmongoc/doc/mongoc_database_destroy.rst | 20 - .../libmongoc/doc/mongoc_database_drop.rst | 24 - .../doc/mongoc_database_drop_with_opts.rst | 42 - .../doc/mongoc_database_find_collections.rst | 45 - ...oc_database_find_collections_with_opts.rst | 77 - .../doc/mongoc_database_get_collection.rst | 20 - .../mongoc_database_get_collection_names.rst | 41 - ...atabase_get_collection_names_with_opts.rst | 69 - .../doc/mongoc_database_get_name.rst | 25 - .../doc/mongoc_database_get_read_concern.rst | 25 - .../doc/mongoc_database_get_read_prefs.rst | 25 - .../doc/mongoc_database_get_write_concern.rst | 25 - .../doc/mongoc_database_has_collection.rst | 35 - ...mongoc_database_read_command_with_opts.rst | 55 - ..._database_read_write_command_with_opts.rst | 60 - .../doc/mongoc_database_remove_all_users.rst | 32 - .../doc/mongoc_database_remove_user.rst | 34 - .../doc/mongoc_database_set_read_concern.rst | 24 - .../doc/mongoc_database_set_read_prefs.rst | 26 - .../doc/mongoc_database_set_write_concern.rst | 24 - .../src/libmongoc/doc/mongoc_database_t.rst | 82 - .../libmongoc/doc/mongoc_database_watch.rst | 55 - ...ongoc_database_write_command_with_opts.rst | 61 - .../libmongoc/doc/mongoc_delete_flags_t.rst | 26 - .../libmongoc/doc/mongoc_error_has_label.rst | 25 - .../mongoc_find_and_modify_opts_append.rst | 41 - .../mongoc_find_and_modify_opts_destroy.rst | 24 - ...fy_opts_get_bypass_document_validation.rst | 24 - ...mongoc_find_and_modify_opts_get_fields.rst | 25 - .../mongoc_find_and_modify_opts_get_flags.rst | 24 - ...c_find_and_modify_opts_get_max_time_ms.rst | 24 - .../mongoc_find_and_modify_opts_get_sort.rst | 25 - ...mongoc_find_and_modify_opts_get_update.rst | 25 - .../doc/mongoc_find_and_modify_opts_new.rst | 18 - ...fy_opts_set_bypass_document_validation.rst | 61 - ...mongoc_find_and_modify_opts_set_fields.rst | 53 - .../mongoc_find_and_modify_opts_set_flags.rst | 69 - ...c_find_and_modify_opts_set_max_time_ms.rst | 41 - .../mongoc_find_and_modify_opts_set_sort.rst | 60 - ...mongoc_find_and_modify_opts_set_update.rst | 59 - .../doc/mongoc_find_and_modify_opts_t.rst | 182 - .../doc/mongoc_get_major_version.rst | 18 - .../doc/mongoc_get_micro_version.rst | 18 - .../doc/mongoc_get_minor_version.rst | 18 - .../src/libmongoc/doc/mongoc_get_version.rst | 18 - .../doc/mongoc_gridfs_create_file.rst | 32 - .../mongoc_gridfs_create_file_from_stream.rst | 32 - .../libmongoc/doc/mongoc_gridfs_destroy.rst | 22 - .../src/libmongoc/doc/mongoc_gridfs_drop.rst | 34 - .../doc/mongoc_gridfs_file_destroy.rst | 22 - .../doc/mongoc_gridfs_file_error.rst | 34 - .../doc/mongoc_gridfs_file_get_aliases.rst | 28 - .../doc/mongoc_gridfs_file_get_chunk_size.rst | 28 - .../mongoc_gridfs_file_get_content_type.rst | 28 - .../doc/mongoc_gridfs_file_get_filename.rst | 28 - .../doc/mongoc_gridfs_file_get_id.rst | 30 - .../doc/mongoc_gridfs_file_get_length.rst | 28 - .../doc/mongoc_gridfs_file_get_md5.rst | 28 - .../doc/mongoc_gridfs_file_get_metadata.rst | 28 - .../mongoc_gridfs_file_get_upload_date.rst | 28 - .../doc/mongoc_gridfs_file_list_destroy.rst | 22 - .../doc/mongoc_gridfs_file_list_error.rst | 35 - .../doc/mongoc_gridfs_file_list_next.rst | 28 - .../doc/mongoc_gridfs_file_list_t.rst | 50 - .../doc/mongoc_gridfs_file_opt_t.rst | 33 - .../doc/mongoc_gridfs_file_readv.rst | 38 - .../doc/mongoc_gridfs_file_remove.rst | 34 - .../libmongoc/doc/mongoc_gridfs_file_save.rst | 32 - .../libmongoc/doc/mongoc_gridfs_file_seek.rst | 46 - .../doc/mongoc_gridfs_file_set_aliases.rst | 26 - .../mongoc_gridfs_file_set_content_type.rst | 27 - .../doc/mongoc_gridfs_file_set_filename.rst | 27 - .../doc/mongoc_gridfs_file_set_id.rst | 33 - .../doc/mongoc_gridfs_file_set_md5.rst | 26 - .../doc/mongoc_gridfs_file_set_metadata.rst | 27 - .../libmongoc/doc/mongoc_gridfs_file_t.rst | 68 - .../libmongoc/doc/mongoc_gridfs_file_tell.rst | 28 - .../doc/mongoc_gridfs_file_writev.rst | 37 - .../src/libmongoc/doc/mongoc_gridfs_find.rst | 35 - .../libmongoc/doc/mongoc_gridfs_find_one.rst | 43 - .../mongoc_gridfs_find_one_by_filename.rst | 36 - .../doc/mongoc_gridfs_find_one_with_opts.rst | 41 - .../doc/mongoc_gridfs_find_with_opts.rst | 34 - .../doc/mongoc_gridfs_get_chunks.rst | 28 - .../libmongoc/doc/mongoc_gridfs_get_files.rst | 28 - .../doc/mongoc_gridfs_remove_by_filename.rst | 37 - .../src/libmongoc/doc/mongoc_gridfs_t.rst | 66 - .../src/libmongoc/doc/mongoc_host_list_t.rst | 29 - .../doc/mongoc_index_opt_geo_get_default.rst | 18 - .../doc/mongoc_index_opt_geo_init.rst | 23 - .../libmongoc/doc/mongoc_index_opt_geo_t.rst | 45 - .../doc/mongoc_index_opt_get_default.rst | 18 - .../libmongoc/doc/mongoc_index_opt_init.rst | 23 - .../src/libmongoc/doc/mongoc_index_opt_t.rst | 96 - .../doc/mongoc_index_opt_wt_get_default.rst | 18 - .../doc/mongoc_index_opt_wt_init.rst | 23 - .../libmongoc/doc/mongoc_index_opt_wt_t.rst | 42 - .../src/libmongoc/doc/mongoc_init.rst | 17 - .../libmongoc/doc/mongoc_insert_flags_t.rst | 33 - .../src/libmongoc/doc/mongoc_iovec_t.rst | 30 - .../libmongoc/doc/mongoc_matcher_destroy.rst | 27 - .../libmongoc/doc/mongoc_matcher_match.rst | 33 - .../src/libmongoc/doc/mongoc_matcher_new.rst | 38 - .../src/libmongoc/doc/mongoc_matcher_t.rst | 91 - .../libmongoc/doc/mongoc_query_flags_t.rst | 42 - .../src/libmongoc/doc/mongoc_rand.rst | 51 - .../src/libmongoc/doc/mongoc_rand_add.rst | 25 - .../src/libmongoc/doc/mongoc_rand_seed.rst | 24 - .../src/libmongoc/doc/mongoc_rand_status.rst | 23 - .../doc/mongoc_read_concern_append.rst | 34 - .../doc/mongoc_read_concern_copy.rst | 28 - .../doc/mongoc_read_concern_destroy.rst | 22 - .../doc/mongoc_read_concern_get_level.rst | 27 - .../doc/mongoc_read_concern_is_default.rst | 22 - .../libmongoc/doc/mongoc_read_concern_new.rst | 18 - .../doc/mongoc_read_concern_set_level.rst | 34 - .../libmongoc/doc/mongoc_read_concern_t.rst | 56 - .../src/libmongoc/doc/mongoc_read_mode_t.rst | 27 - .../doc/mongoc_read_prefs_add_tag.rst | 24 - .../libmongoc/doc/mongoc_read_prefs_copy.rst | 28 - .../doc/mongoc_read_prefs_destroy.rst | 22 - ...c_read_prefs_get_max_staleness_seconds.rst | 24 - .../doc/mongoc_read_prefs_get_mode.rst | 28 - .../doc/mongoc_read_prefs_get_tags.rst | 28 - .../doc/mongoc_read_prefs_is_valid.rst | 30 - .../libmongoc/doc/mongoc_read_prefs_new.rst | 28 - ...c_read_prefs_set_max_staleness_seconds.rst | 25 - .../doc/mongoc_read_prefs_set_mode.rst | 25 - .../doc/mongoc_read_prefs_set_tags.rst | 94 - .../src/libmongoc/doc/mongoc_read_prefs_t.rst | 91 - .../libmongoc/doc/mongoc_remove_flags_t.rst | 30 - .../libmongoc/doc/mongoc_reply_flags_t.rst | 36 - .../doc/mongoc_server_description_destroy.rst | 22 - .../doc/mongoc_server_description_host.rst | 28 - .../doc/mongoc_server_description_id.rst | 23 - .../mongoc_server_description_ismaster.rst | 29 - .../mongoc_server_description_new_copy.rst | 29 - ...goc_server_description_round_trip_time.rst | 24 - .../doc/mongoc_server_description_t.rst | 42 - .../doc/mongoc_server_description_type.rst | 33 - ...mongoc_server_descriptions_destroy_all.rst | 22 - .../libmongoc/doc/mongoc_session_opt_t.rst | 34 - .../doc/mongoc_session_opts_clone.rst | 24 - .../doc/mongoc_session_opts_destroy.rst | 29 - ...oc_session_opts_get_causal_consistency.rst | 24 - ...sion_opts_get_default_transaction_opts.rst | 24 - .../libmongoc/doc/mongoc_session_opts_new.rst | 21 - ...oc_session_opts_set_causal_consistency.rst | 71 - ...sion_opts_set_default_transaction_opts.rst | 34 - .../libmongoc/doc/mongoc_socket_accept.rst | 29 - .../src/libmongoc/doc/mongoc_socket_bind.rst | 32 - .../src/libmongoc/doc/mongoc_socket_close.rst | 28 - .../libmongoc/doc/mongoc_socket_connect.rst | 36 - .../libmongoc/doc/mongoc_socket_destroy.rst | 22 - .../src/libmongoc/doc/mongoc_socket_errno.rst | 28 - .../doc/mongoc_socket_getnameinfo.rst | 28 - .../doc/mongoc_socket_getsockname.rst | 32 - .../libmongoc/doc/mongoc_socket_listen.rst | 29 - .../src/libmongoc/doc/mongoc_socket_new.rst | 30 - .../src/libmongoc/doc/mongoc_socket_recv.rst | 36 - .../src/libmongoc/doc/mongoc_socket_send.rst | 34 - .../src/libmongoc/doc/mongoc_socket_sendv.rst | 34 - .../doc/mongoc_socket_setsockopt.rst | 36 - .../src/libmongoc/doc/mongoc_socket_t.rst | 45 - .../doc/mongoc_ssl_opt_get_default.rst | 18 - .../src/libmongoc/doc/mongoc_ssl_opt_t.rst | 130 - .../doc/mongoc_stream_buffered_new.rst | 28 - .../doc/mongoc_stream_buffered_t.rst | 24 - .../src/libmongoc/doc/mongoc_stream_close.rst | 30 - .../src/libmongoc/doc/mongoc_stream_cork.rst | 36 - .../libmongoc/doc/mongoc_stream_destroy.rst | 19 - .../doc/mongoc_stream_file_get_fd.rst | 29 - .../libmongoc/doc/mongoc_stream_file_new.rst | 27 - .../doc/mongoc_stream_file_new_for_path.rst | 29 - .../libmongoc/doc/mongoc_stream_file_t.rst | 27 - .../src/libmongoc/doc/mongoc_stream_flush.rst | 27 - .../doc/mongoc_stream_get_base_stream.rst | 25 - .../doc/mongoc_stream_gridfs_new.rst | 28 - .../src/libmongoc/doc/mongoc_stream_read.rst | 42 - .../src/libmongoc/doc/mongoc_stream_readv.rst | 42 - .../doc/mongoc_stream_setsockopt.rst | 33 - .../doc/mongoc_stream_socket_get_socket.rst | 25 - .../doc/mongoc_stream_socket_new.rst | 29 - .../libmongoc/doc/mongoc_stream_socket_t.rst | 26 - .../src/libmongoc/doc/mongoc_stream_t.rst | 54 - .../libmongoc/doc/mongoc_stream_timed_out.rst | 22 - .../src/libmongoc/doc/mongoc_stream_tls_t.rst | 23 - .../libmongoc/doc/mongoc_stream_uncork.rst | 36 - .../src/libmongoc/doc/mongoc_stream_write.rst | 40 - .../libmongoc/doc/mongoc_stream_writev.rst | 34 - ...ongoc_topology_description_get_servers.rst | 27 - ...pology_description_has_readable_server.rst | 38 - ...pology_description_has_writable_server.rst | 35 - .../doc/mongoc_topology_description_t.rst | 33 - .../doc/mongoc_topology_description_type.rst | 29 - .../doc/mongoc_transaction_opt_t.rst | 49 - .../doc/mongoc_transaction_opts_clone.rst | 24 - .../doc/mongoc_transaction_opts_destroy.rst | 24 - ...ngoc_transaction_opts_get_read_concern.rst | 24 - ...mongoc_transaction_opts_get_read_prefs.rst | 24 - ...goc_transaction_opts_get_write_concern.rst | 24 - .../doc/mongoc_transaction_opts_new.rst | 19 - ...ngoc_transaction_opts_set_read_concern.rst | 26 - ...mongoc_transaction_opts_set_read_prefs.rst | 26 - ...goc_transaction_opts_set_write_concern.rst | 26 - .../libmongoc/doc/mongoc_update_flags_t.rst | 35 - .../src/libmongoc/doc/mongoc_uri_copy.rst | 28 - .../src/libmongoc/doc/mongoc_uri_destroy.rst | 22 - .../doc/mongoc_uri_get_auth_mechanism.rst | 32 - .../doc/mongoc_uri_get_auth_source.rst | 32 - .../doc/mongoc_uri_get_compressors.rst | 42 - .../libmongoc/doc/mongoc_uri_get_database.rst | 28 - .../libmongoc/doc/mongoc_uri_get_hosts.rst | 27 - .../mongoc_uri_get_mechanism_properties.rst | 63 - .../doc/mongoc_uri_get_option_as_bool.rst | 27 - .../doc/mongoc_uri_get_option_as_int32.rst | 35 - .../doc/mongoc_uri_get_option_as_utf8.rst | 27 - .../libmongoc/doc/mongoc_uri_get_options.rst | 28 - .../libmongoc/doc/mongoc_uri_get_password.rst | 28 - .../doc/mongoc_uri_get_read_concern.rst | 28 - .../doc/mongoc_uri_get_read_prefs.rst | 37 - .../doc/mongoc_uri_get_read_prefs_t.rst | 28 - .../doc/mongoc_uri_get_replica_set.rst | 28 - .../libmongoc/doc/mongoc_uri_get_service.rst | 27 - .../src/libmongoc/doc/mongoc_uri_get_ssl.rst | 28 - .../libmongoc/doc/mongoc_uri_get_string.rst | 28 - .../libmongoc/doc/mongoc_uri_get_username.rst | 28 - .../doc/mongoc_uri_get_write_concern.rst | 28 - .../src/libmongoc/doc/mongoc_uri_new.rst | 33 - .../doc/mongoc_uri_new_for_host_port.rst | 29 - .../doc/mongoc_uri_new_with_error.rst | 58 - .../doc/mongoc_uri_option_is_bool.rst | 23 - .../doc/mongoc_uri_option_is_int32.rst | 23 - .../doc/mongoc_uri_option_is_utf8.rst | 23 - .../doc/mongoc_uri_set_auth_mechanism.rst | 35 - .../doc/mongoc_uri_set_auth_source.rst | 35 - .../doc/mongoc_uri_set_compressors.rst | 45 - .../libmongoc/doc/mongoc_uri_set_database.rst | 31 - .../mongoc_uri_set_mechanism_properties.rst | 59 - .../doc/mongoc_uri_set_option_as_bool.rst | 36 - .../doc/mongoc_uri_set_option_as_int32.rst | 35 - .../doc/mongoc_uri_set_option_as_utf8.rst | 36 - .../libmongoc/doc/mongoc_uri_set_password.rst | 29 - .../doc/mongoc_uri_set_read_concern.rst | 25 - .../doc/mongoc_uri_set_read_prefs_t.rst | 25 - .../libmongoc/doc/mongoc_uri_set_username.rst | 29 - .../doc/mongoc_uri_set_write_concern.rst | 25 - .../src/libmongoc/doc/mongoc_uri_t.rst | 311 - .../src/libmongoc/doc/mongoc_uri_unescape.rst | 28 - .../src/libmongoc/doc/mongoc_version.rst | 50 - .../doc/mongoc_write_concern_append.rst | 35 - .../doc/mongoc_write_concern_copy.rst | 28 - .../doc/mongoc_write_concern_destroy.rst | 22 - .../doc/mongoc_write_concern_get_fsync.rst | 35 - .../doc/mongoc_write_concern_get_journal.rst | 28 - .../doc/mongoc_write_concern_get_w.rst | 28 - .../mongoc_write_concern_get_wmajority.rst | 29 - .../doc/mongoc_write_concern_get_wtag.rst | 28 - .../doc/mongoc_write_concern_get_wtimeout.rst | 30 - .../mongoc_write_concern_is_acknowledged.rst | 26 - .../doc/mongoc_write_concern_is_default.rst | 23 - .../doc/mongoc_write_concern_is_valid.rst | 23 - .../mongoc_write_concern_journal_is_set.rst | 24 - .../doc/mongoc_write_concern_new.rst | 18 - .../doc/mongoc_write_concern_set_fsync.rst | 38 - .../doc/mongoc_write_concern_set_journal.rst | 29 - .../doc/mongoc_write_concern_set_w.rst | 30 - .../mongoc_write_concern_set_wmajority.rst | 31 - .../doc/mongoc_write_concern_set_wtag.rst | 29 - .../doc/mongoc_write_concern_set_wtimeout.rst | 29 - .../libmongoc/doc/mongoc_write_concern_t.rst | 76 - .../src/libmongoc/doc/static/CMakeLists.txt | 10 - .../static/msvc-add-dependencies-static.png | Bin 23627 -> 0 bytes .../doc/static/msvc-add-dependencies.png | Bin 7855 -> 0 bytes .../static/msvc-add-include-directories.png | Bin 7909 -> 0 bytes .../doc/static/msvc-create-project.png | Bin 12266 -> 0 bytes .../libmongoc/doc/static/msvc-set-path.png | Bin 24767 -> 0 bytes .../doc/static/msvc-switch-architecture.png | Bin 11221 -> 0 bytes .../src/libmongoc/doc/tutorial.rst | 867 -- .../src/libmongoc/doc/visual-studio-guide.rst | 88 - .../src/libmongoc/examples/CMakeLists.txt | 18 - .../examples/aggregation/aggregation1.c | 95 - .../basic_aggregation/basic-aggregation.c | 126 - .../examples/basic_aggregation/constants.c | 22 - .../examples/basic_aggregation/distinct.c | 51 - .../basic_aggregation/map-reduce-advanced.c | 47 - .../basic_aggregation/map-reduce-basic.c | 71 - .../libmongoc/examples/bulk/bulk-collation.c | 98 - .../src/libmongoc/examples/bulk/bulk1.c | 77 - .../src/libmongoc/examples/bulk/bulk2.c | 108 - .../src/libmongoc/examples/bulk/bulk3.c | 98 - .../src/libmongoc/examples/bulk/bulk4.c | 88 - .../src/libmongoc/examples/bulk/bulk5.c | 136 - .../src/libmongoc/examples/bulk/bulk6.c | 86 - .../cmake/find_package/CMakeLists.txt | 41 - .../cmake/find_package_static/CMakeLists.txt | 41 - .../common_operations/clone-collection.c | 34 - .../common_operations/common-operations.c | 135 - .../examples/common_operations/copydb.c | 40 - .../examples/common_operations/explain.c | 33 - .../compile-with-pkg-config-static.sh | 4 - .../examples/compile-with-pkg-config.sh | 4 - .../libmongoc/examples/doc-common-insert.c | 48 - .../src/libmongoc/examples/example-client.c | 83 - .../examples/example-collection-watch.c | 79 - .../examples/example-command-monitoring.c | 136 - .../examples/example-command-with-opts.c | 147 - .../examples/example-create-indexes.c | 92 - .../src/libmongoc/examples/example-gridfs.c | 154 - .../src/libmongoc/examples/example-pool.c | 102 - .../src/libmongoc/examples/example-resume.c | 161 - .../src/libmongoc/examples/example-scram.c | 118 - .../examples/example-sdam-monitoring.c | 293 - .../src/libmongoc/examples/example-session.c | 145 - .../examples/example-start-at-optime.c | 103 - .../libmongoc/examples/example-transaction.c | 180 - .../src/libmongoc/examples/example-update.c | 69 - .../src/libmongoc/examples/find-and-modify.c | 87 - .../examples/find_and_modify_with_opts/fam.c | 383 - .../src/libmongoc/examples/hello_mongoc.c | 116 - .../src/libmongoc/examples/mongoc-dump.c | 260 - .../src/libmongoc/examples/mongoc-ping.c | 91 - .../src/libmongoc/examples/mongoc-tail.c | 129 - .../src/libmongoc/src/CMakeLists.txt | 15 - .../src/libmongoc/src/libmongoc-1.0.pc.in | 11 - .../src/libmongoc/src/libmongoc-ssl-1.0.pc.in | 11 - .../libmongoc/src/libmongoc-static-1.0.pc.in | 11 - .../src/libmongoc/src/mongoc/CMakeLists.txt | 259 - .../libmongoc/src/mongoc/forwarding/mongoc.h | 18 - .../src/mongoc/modules/module.modulemap.in | 5 - .../libmongoc/src/mongoc/mongoc-apm-private.h | 197 - .../src/libmongoc/src/mongoc/mongoc-apm.c | 785 -- .../src/libmongoc/src/mongoc/mongoc-apm.h | 354 - .../src/mongoc/mongoc-array-private.h | 61 - .../src/libmongoc/src/mongoc/mongoc-array.c | 95 - .../src/mongoc/mongoc-async-cmd-private.h | 111 - .../libmongoc/src/mongoc/mongoc-async-cmd.c | 472 - .../src/mongoc/mongoc-async-private.h | 71 - .../src/libmongoc/src/mongoc/mongoc-async.c | 205 - .../src/mongoc/mongoc-buffer-private.h | 86 - .../src/libmongoc/src/mongoc/mongoc-buffer.c | 358 - .../mongoc/mongoc-bulk-operation-private.h | 62 - .../src/mongoc/mongoc-bulk-operation.c | 935 -- .../src/mongoc/mongoc-bulk-operation.h | 152 - .../src/mongoc/mongoc-change-stream-private.h | 72 - .../src/mongoc/mongoc-change-stream.c | 590 - .../src/mongoc/mongoc-change-stream.h | 41 - .../src/mongoc/mongoc-client-pool-private.h | 47 - .../libmongoc/src/mongoc/mongoc-client-pool.c | 453 - .../libmongoc/src/mongoc/mongoc-client-pool.h | 75 - .../src/mongoc/mongoc-client-private.h | 193 - .../mongoc/mongoc-client-session-private.h | 132 - .../src/mongoc/mongoc-client-session.c | 1142 -- .../src/mongoc/mongoc-client-session.h | 149 - .../src/libmongoc/src/mongoc/mongoc-client.c | 2816 ----- .../src/libmongoc/src/mongoc/mongoc-client.h | 266 - .../src/mongoc/mongoc-cluster-cyrus-private.h | 33 - .../src/mongoc/mongoc-cluster-cyrus.c | 140 - .../mongoc/mongoc-cluster-gssapi-private.h | 33 - .../src/mongoc/mongoc-cluster-gssapi.c | 53 - .../src/mongoc/mongoc-cluster-private.h | 181 - .../src/mongoc/mongoc-cluster-sasl-private.h | 33 - .../src/mongoc/mongoc-cluster-sasl.c | 113 - .../src/mongoc/mongoc-cluster-sspi-private.h | 33 - .../src/mongoc/mongoc-cluster-sspi.c | 293 - .../src/libmongoc/src/mongoc/mongoc-cluster.c | 2889 ----- .../libmongoc/src/mongoc/mongoc-cmd-private.h | 131 - .../src/libmongoc/src/mongoc/mongoc-cmd.c | 972 -- .../src/mongoc/mongoc-collection-private.h | 56 - .../libmongoc/src/mongoc/mongoc-collection.c | 3469 ----- .../libmongoc/src/mongoc/mongoc-collection.h | 359 - .../src/mongoc/mongoc-compression-private.h | 70 - .../libmongoc/src/mongoc/mongoc-compression.c | 225 - .../libmongoc/src/mongoc/mongoc-config.h.in | 382 - .../src/mongoc/mongoc-counters-private.h | 191 - .../libmongoc/src/mongoc/mongoc-counters.c | 324 - .../libmongoc/src/mongoc/mongoc-counters.defs | 61 - .../src/mongoc/mongoc-crypto-cng-private.h | 71 - .../libmongoc/src/mongoc/mongoc-crypto-cng.c | 239 - .../mongoc-crypto-common-crypto-private.h | 64 - .../src/mongoc/mongoc-crypto-common-crypto.c | 78 - .../mongoc/mongoc-crypto-openssl-private.h | 64 - .../src/mongoc/mongoc-crypto-openssl.c | 118 - .../src/mongoc/mongoc-crypto-private.h | 73 - .../src/libmongoc/src/mongoc/mongoc-crypto.c | 84 - .../src/mongoc/mongoc-cursor-array.c | 107 - .../src/mongoc/mongoc-cursor-cmd-deprecated.c | 105 - .../libmongoc/src/mongoc/mongoc-cursor-cmd.c | 206 - .../src/mongoc/mongoc-cursor-find-cmd.c | 107 - .../src/mongoc/mongoc-cursor-find-opquery.c | 114 - .../libmongoc/src/mongoc/mongoc-cursor-find.c | 103 - .../src/mongoc/mongoc-cursor-legacy.c | 622 - .../src/mongoc/mongoc-cursor-private.h | 307 - .../src/libmongoc/src/mongoc/mongoc-cursor.c | 1685 --- .../src/libmongoc/src/mongoc/mongoc-cursor.h | 96 - .../src/mongoc/mongoc-cyrus-private.h | 77 - .../src/libmongoc/src/mongoc/mongoc-cyrus.c | 418 - .../src/mongoc/mongoc-database-private.h | 53 - .../libmongoc/src/mongoc/mongoc-database.c | 1007 -- .../libmongoc/src/mongoc/mongoc-database.h | 158 - .../src/mongoc/mongoc-errno-private.h | 56 - .../src/libmongoc/src/mongoc/mongoc-error.c | 41 - .../src/libmongoc/src/mongoc/mongoc-error.h | 127 - .../mongoc/mongoc-find-and-modify-private.h | 43 - .../src/mongoc/mongoc-find-and-modify.c | 226 - .../src/mongoc/mongoc-find-and-modify.h | 105 - .../src/libmongoc/src/mongoc/mongoc-flags.h | 151 - .../mongoc/mongoc-gridfs-file-list-private.h | 54 - .../src/mongoc/mongoc-gridfs-file-list.c | 132 - .../src/mongoc/mongoc-gridfs-file-list.h | 48 - .../mongoc/mongoc-gridfs-file-page-private.h | 74 - .../src/mongoc/mongoc-gridfs-file-page.c | 233 - .../src/mongoc/mongoc-gridfs-file-page.h | 40 - .../src/mongoc/mongoc-gridfs-file-private.h | 74 - .../libmongoc/src/mongoc/mongoc-gridfs-file.c | 1073 -- .../libmongoc/src/mongoc/mongoc-gridfs-file.h | 116 - .../src/mongoc/mongoc-gridfs-private.h | 51 - .../src/libmongoc/src/mongoc/mongoc-gridfs.c | 492 - .../src/libmongoc/src/mongoc/mongoc-gridfs.h | 85 - .../src/mongoc/mongoc-gssapi-private.h | 44 - .../src/libmongoc/src/mongoc/mongoc-gssapi.c | 28 - .../mongoc-handshake-compiler-private.h | 63 - .../src/mongoc/mongoc-handshake-os-private.h | 90 - .../src/mongoc/mongoc-handshake-private.h | 131 - .../libmongoc/src/mongoc/mongoc-handshake.c | 646 - .../libmongoc/src/mongoc/mongoc-handshake.h | 97 - .../src/mongoc/mongoc-host-list-private.h | 60 - .../libmongoc/src/mongoc/mongoc-host-list.c | 248 - .../libmongoc/src/mongoc/mongoc-host-list.h | 52 - .../src/libmongoc/src/mongoc/mongoc-index.c | 100 - .../src/libmongoc/src/mongoc/mongoc-index.h | 91 - .../src/libmongoc/src/mongoc/mongoc-init.c | 202 - .../src/libmongoc/src/mongoc/mongoc-init.h | 40 - .../src/libmongoc/src/mongoc/mongoc-iovec.h | 56 - .../src/mongoc/mongoc-libressl-private.h | 44 - .../libmongoc/src/mongoc/mongoc-libressl.c | 77 - .../mongoc-linux-distro-scanner-private.h | 52 - .../src/mongoc/mongoc-linux-distro-scanner.c | 438 - .../src/mongoc/mongoc-list-private.h | 56 - .../src/libmongoc/src/mongoc/mongoc-list.c | 146 - .../libmongoc/src/mongoc/mongoc-log-private.h | 41 - .../src/libmongoc/src/mongoc/mongoc-log.c | 326 - .../src/libmongoc/src/mongoc/mongoc-log.h | 147 - .../src/libmongoc/src/mongoc/mongoc-macros.h | 71 - .../src/mongoc/mongoc-matcher-op-private.h | 132 - .../libmongoc/src/mongoc/mongoc-matcher-op.c | 1188 -- .../src/mongoc/mongoc-matcher-private.h | 41 - .../src/libmongoc/src/mongoc/mongoc-matcher.c | 433 - .../src/libmongoc/src/mongoc/mongoc-matcher.h | 47 - .../src/mongoc/mongoc-memcmp-private.h | 36 - .../src/libmongoc/src/mongoc/mongoc-memcmp.c | 31 - .../src/libmongoc/src/mongoc/mongoc-opcode.h | 46 - .../src/mongoc/mongoc-openssl-private.h | 52 - .../src/libmongoc/src/mongoc/mongoc-openssl.c | 674 - .../src/mongoc/mongoc-opts-helpers-private.h | 78 - .../src/mongoc/mongoc-opts-helpers.c | 247 - .../src/mongoc/mongoc-opts-private.h | 303 - .../src/libmongoc/src/mongoc/mongoc-opts.c | 1484 --- .../src/mongoc/mongoc-queue-private.h | 72 - .../src/libmongoc/src/mongoc/mongoc-queue.c | 139 - .../libmongoc/src/mongoc/mongoc-rand-cng.c | 75 - .../src/mongoc/mongoc-rand-common-crypto.c | 53 - .../src/mongoc/mongoc-rand-openssl.c | 52 - .../src/mongoc/mongoc-rand-private.h | 38 - .../src/libmongoc/src/mongoc/mongoc-rand.h | 43 - .../src/mongoc/mongoc-read-concern-private.h | 49 - .../src/mongoc/mongoc-read-concern.c | 250 - .../src/mongoc/mongoc-read-concern.h | 59 - .../src/mongoc/mongoc-read-prefs-private.h | 74 - .../libmongoc/src/mongoc/mongoc-read-prefs.c | 383 - .../libmongoc/src/mongoc/mongoc-read-prefs.h | 78 - .../libmongoc/src/mongoc/mongoc-rpc-private.h | 186 - .../src/libmongoc/src/mongoc/mongoc-rpc.c | 1341 -- .../src/mongoc/mongoc-sasl-private.h | 61 - .../src/libmongoc/src/mongoc/mongoc-sasl.c | 185 - .../src/mongoc/mongoc-scram-private.h | 133 - .../src/libmongoc/src/mongoc/mongoc-scram.c | 1146 -- .../mongoc/mongoc-secure-channel-private.h | 91 - .../src/mongoc/mongoc-secure-channel.c | 945 -- .../mongoc/mongoc-secure-transport-private.h | 62 - .../src/mongoc/mongoc-secure-transport.c | 505 - .../mongoc-server-description-private.h | 138 - .../src/mongoc/mongoc-server-description.c | 1000 -- .../src/mongoc/mongoc-server-description.h | 60 - .../src/mongoc/mongoc-server-stream-private.h | 63 - .../src/mongoc/mongoc-server-stream.c | 104 - .../libmongoc/src/mongoc/mongoc-set-private.h | 89 - .../src/libmongoc/src/mongoc/mongoc-set.c | 225 - .../src/mongoc/mongoc-socket-private.h | 46 - .../src/libmongoc/src/mongoc/mongoc-socket.c | 1558 --- .../src/libmongoc/src/mongoc/mongoc-socket.h | 119 - .../libmongoc/src/mongoc/mongoc-ssl-private.h | 44 - .../src/libmongoc/src/mongoc/mongoc-ssl.c | 137 - .../src/libmongoc/src/mongoc/mongoc-ssl.h | 53 - .../src/mongoc/mongoc-sspi-private.h | 90 - .../src/libmongoc/src/mongoc/mongoc-sspi.c | 507 - .../src/mongoc/mongoc-stream-buffered.c | 339 - .../src/mongoc/mongoc-stream-buffered.h | 40 - .../libmongoc/src/mongoc/mongoc-stream-file.c | 258 - .../libmongoc/src/mongoc/mongoc-stream-file.h | 45 - .../src/mongoc/mongoc-stream-gridfs.c | 182 - .../src/mongoc/mongoc-stream-gridfs.h | 41 - .../src/mongoc/mongoc-stream-private.h | 53 - .../src/mongoc/mongoc-stream-socket.c | 337 - .../src/mongoc/mongoc-stream-socket.h | 44 - .../mongoc-stream-tls-libressl-private.h | 46 - .../src/mongoc/mongoc-stream-tls-libressl.c | 532 - .../src/mongoc/mongoc-stream-tls-libressl.h | 41 - .../mongoc-stream-tls-openssl-bio-private.h | 63 - .../mongoc/mongoc-stream-tls-openssl-bio.c | 372 - .../mongoc-stream-tls-openssl-private.h | 45 - .../src/mongoc/mongoc-stream-tls-openssl.c | 762 -- .../src/mongoc/mongoc-stream-tls-openssl.h | 40 - .../src/mongoc/mongoc-stream-tls-private.h | 53 - ...mongoc-stream-tls-secure-channel-private.h | 80 - .../mongoc/mongoc-stream-tls-secure-channel.c | 1049 -- .../mongoc/mongoc-stream-tls-secure-channel.h | 40 - ...ngoc-stream-tls-secure-transport-private.h | 47 - .../mongoc-stream-tls-secure-transport.c | 540 - .../mongoc-stream-tls-secure-transport.h | 40 - .../libmongoc/src/mongoc/mongoc-stream-tls.c | 241 - .../libmongoc/src/mongoc/mongoc-stream-tls.h | 67 - .../src/libmongoc/src/mongoc/mongoc-stream.c | 465 - .../src/libmongoc/src/mongoc/mongoc-stream.h | 123 - .../src/mongoc/mongoc-thread-private.h | 88 - .../mongoc-topology-description-apm-private.h | 60 - .../mongoc/mongoc-topology-description-apm.c | 159 - .../mongoc-topology-description-private.h | 136 - .../src/mongoc/mongoc-topology-description.c | 2116 ---- .../src/mongoc/mongoc-topology-description.h | 44 - .../src/mongoc/mongoc-topology-private.h | 157 - .../mongoc/mongoc-topology-scanner-private.h | 213 - .../src/mongoc/mongoc-topology-scanner.c | 1163 -- .../libmongoc/src/mongoc/mongoc-topology.c | 1498 --- .../src/mongoc/mongoc-trace-private.h | 116 - .../libmongoc/src/mongoc/mongoc-uri-private.h | 51 - .../src/libmongoc/src/mongoc/mongoc-uri.c | 2344 ---- .../src/libmongoc/src/mongoc/mongoc-uri.h | 197 - .../src/mongoc/mongoc-util-private.h | 139 - .../src/libmongoc/src/mongoc/mongoc-util.c | 523 - .../src/mongoc/mongoc-version-functions.c | 78 - .../src/mongoc/mongoc-version-functions.h | 47 - .../src/libmongoc/src/mongoc/mongoc-version.h | 102 - .../libmongoc/src/mongoc/mongoc-version.h.in | 102 - .../mongoc-write-command-legacy-private.h | 61 - .../src/mongoc/mongoc-write-command-legacy.c | 519 - .../src/mongoc/mongoc-write-command-private.h | 224 - .../src/mongoc/mongoc-write-command.c | 1490 --- .../src/mongoc/mongoc-write-concern-private.h | 57 - .../src/mongoc/mongoc-write-concern.c | 589 - .../src/mongoc/mongoc-write-concern.h | 95 - .../src/libmongoc/src/mongoc/mongoc.h | 67 - .../libmongoc/src/mongoc/op-compressed.def | 11 - .../src/libmongoc/src/mongoc/op-delete.def | 11 - .../src/libmongoc/src/mongoc/op-get-more.def | 11 - .../src/libmongoc/src/mongoc/op-header.def | 7 - .../src/libmongoc/src/mongoc/op-insert.def | 10 - .../libmongoc/src/mongoc/op-kill-cursors.def | 9 - .../src/libmongoc/src/mongoc/op-msg.def | 9 - .../src/libmongoc/src/mongoc/op-query.def | 13 - .../libmongoc/src/mongoc/op-reply-header.def | 11 - .../src/libmongoc/src/mongoc/op-reply.def | 12 - .../src/libmongoc/src/mongoc/op-update.def | 12 - .../src/libmongoc/src/mongoc/utlist.h | 839 -- .../src/libmongoc/tests/CMakeLists.txt | 45 - .../src/libmongoc/tests/TestSuite.c | 1058 -- .../src/libmongoc/tests/TestSuite.h | 717 -- .../src/libmongoc/tests/binary/delete1.dat | Bin 39 -> 0 bytes .../src/libmongoc/tests/binary/empty.dat | 0 .../src/libmongoc/tests/binary/get_more1.dat | Bin 42 -> 0 bytes .../libmongoc/tests/binary/gridfs-large.dat | 945 -- .../src/libmongoc/tests/binary/gridfs.dat | 9 - .../src/libmongoc/tests/binary/insert1.dat | Bin 130 -> 0 bytes .../libmongoc/tests/binary/kill_cursors1.dat | Bin 64 -> 0 bytes .../src/libmongoc/tests/binary/msg1.dat | Bin 40 -> 0 bytes .../src/libmongoc/tests/binary/query1.dat | Bin 48 -> 0 bytes .../src/libmongoc/tests/binary/query2.dat | Bin 43 -> 0 bytes .../src/libmongoc/tests/binary/reply1.dat | Bin 536 -> 0 bytes .../src/libmongoc/tests/binary/reply2.dat | Bin 16236 -> 0 bytes .../src/libmongoc/tests/binary/update1.dat | Bin 44 -> 0 bytes .../src/libmongoc/tests/debug-stream.c | 201 - .../libmongoc/tests/json-test-monitoring.c | 489 - .../libmongoc/tests/json-test-monitoring.h | 39 - .../libmongoc/tests/json-test-operations.c | 1483 --- .../libmongoc/tests/json-test-operations.h | 71 - .../src/libmongoc/tests/json-test.c | 1261 -- .../src/libmongoc/tests/json-test.h | 104 - .../tests/json/auth/connection-string.json | 452 - .../change_streams/change-streams-errors.json | 78 - .../json/change_streams/change-streams.json | 445 - .../json/command_monitoring/bulkWrite.json | 112 - .../json/command_monitoring/command.json | 113 - .../json/command_monitoring/deleteMany.json | 115 - .../json/command_monitoring/deleteOne.json | 115 - .../tests/json/command_monitoring/find.json | 560 - .../json/command_monitoring/insertMany.json | 145 - .../json/command_monitoring/insertOne.json | 97 - .../unacknowledgedBulkWrite.json | 69 - .../json/command_monitoring/updateMany.json | 137 - .../json/command_monitoring/updateOne.json | 195 - .../additional-nonspec-tests.json | 108 - .../json/connection_uri/invalid-uris.json | 274 - .../tests/json/connection_uri/valid-auth.json | 332 - .../valid-db-with-dotted-name.json | 100 - .../valid-host_identifiers.json | 154 - .../json/connection_uri/valid-options.json | 25 - .../valid-unix_socket-absolute.json | 251 - .../valid-unix_socket-relative.json | 271 - .../json/connection_uri/valid-warnings.json | 68 - .../json/crud/read/aggregate-collation.json | 38 - .../tests/json/crud/read/aggregate-out.json | 121 - .../tests/json/crud/read/aggregate.json | 53 - .../tests/json/crud/read/count-collation.json | 47 - .../libmongoc/tests/json/crud/read/count.json | 112 - .../json/crud/read/distinct-collation.json | 33 - .../tests/json/crud/read/distinct.json | 55 - .../tests/json/crud/read/find-collation.json | 34 - .../libmongoc/tests/json/crud/read/find.json | 105 - .../crud/write/bulkWrite-arrayFilters.json | 110 - .../json/crud/write/deleteMany-collation.json | 47 - .../tests/json/crud/write/deleteMany.json | 76 - .../json/crud/write/deleteOne-collation.json | 51 - .../tests/json/crud/write/deleteOne.json | 96 - .../write/findOneAndDelete-collation.json | 59 - .../json/crud/write/findOneAndDelete.json | 127 - .../write/findOneAndReplace-collation.json | 58 - .../crud/write/findOneAndReplace-upsert.json | 201 - .../json/crud/write/findOneAndReplace.json | 273 - .../write/findOneAndUpdate-arrayFilters.json | 203 - .../write/findOneAndUpdate-collation.json | 67 - .../json/crud/write/findOneAndUpdate.json | 379 - .../tests/json/crud/write/insertMany.json | 52 - .../tests/json/crud/write/insertOne.json | 39 - .../json/crud/write/replaceOne-collation.json | 53 - .../tests/json/crud/write/replaceOne.json | 205 - .../crud/write/updateMany-arrayFilters.json | 182 - .../json/crud/write/updateMany-collation.json | 62 - .../tests/json/crud/write/updateMany.json | 183 - .../crud/write/updateOne-arrayFilters.json | 390 - .../json/crud/write/updateOne-collation.json | 54 - .../tests/json/crud/write/updateOne.json | 167 - .../tests/json/initial_dns_auth/dns-auth.json | 16 - .../longer-parent-in-return.json | 16 - .../misformatted-option.json | 7 - .../no-results.json | 7 - .../not-enough-parts.json | 7 - .../one-result-default-port.json | 15 - .../one-txt-record-multiple-strings.json | 15 - .../one-txt-record.json | 16 - .../parent-part-mismatch1.json | 7 - .../parent-part-mismatch2.json | 7 - .../parent-part-mismatch3.json | 7 - .../parent-part-mismatch4.json | 7 - .../parent-part-mismatch5.json | 7 - .../returned-parent-too-short.json | 7 - .../returned-parent-wrong.json | 7 - .../two-results-default-port.json | 16 - .../two-results-nonstandard-port.json | 16 - .../two-txt-records.json | 7 - .../txt-record-not-allowed-option.json | 7 - ...txt-record-with-overridden-ssl-option.json | 16 - ...txt-record-with-overridden-uri-option.json | 16 - .../txt-record-with-unallowed-option.json | 7 - .../uri-with-port.json | 7 - .../uri-with-two-hosts.json | 7 - .../DefaultNoMaxStaleness.json | 74 - .../ReplicaSetNoPrimary/Incompatible.json | 36 - .../ReplicaSetNoPrimary/LastUpdateTime.json | 88 - .../ReplicaSetNoPrimary/Nearest.json | 88 - .../ReplicaSetNoPrimary/Nearest2.json | 88 - .../ReplicaSetNoPrimary/NoKnownServers.json | 20 - .../ReplicaSetNoPrimary/PrimaryPreferred.json | 64 - .../PrimaryPreferred_tags.json | 84 - .../ReplicaSetNoPrimary/Secondary.json | 111 - .../SecondaryPreferred.json | 63 - .../SecondaryPreferred_tags.json | 111 - .../ReplicaSetNoPrimary/ZeroMaxStaleness.json | 36 - .../DefaultNoMaxStaleness.json | 74 - .../ReplicaSetWithPrimary/Incompatible.json | 36 - .../ReplicaSetWithPrimary/LastUpdateTime.json | 88 - .../ReplicaSetWithPrimary/LongHeartbeat.json | 76 - .../ReplicaSetWithPrimary/LongHeartbeat2.json | 37 - .../MaxStalenessTooSmall.json | 37 - .../MaxStalenessWithModePrimary.json | 35 - .../ReplicaSetWithPrimary/Nearest.json | 88 - .../ReplicaSetWithPrimary/Nearest2.json | 88 - .../ReplicaSetWithPrimary/Nearest_tags.json | 84 - .../PrimaryPreferred.json | 64 - .../PrimaryPreferred_incompatible.json | 36 - .../SecondaryPreferred.json | 63 - .../SecondaryPreferred_tags.json | 138 - .../SecondaryPreferred_tags2.json | 96 - .../ReplicaSetWithPrimary/Secondary_tags.json | 138 - .../Secondary_tags2.json | 96 - .../ZeroMaxStaleness.json | 36 - .../max_staleness/Sharded/Incompatible.json | 36 - .../Sharded/SmallMaxStaleness.json | 76 - .../max_staleness/Single/Incompatible.json | 24 - .../Single/SmallMaxStaleness.json | 52 - .../Unknown/SmallMaxStaleness.json | 19 - .../supplemental/MissingLastWriteDate.json | 19 - .../connection-string/read-concern.json | 29 - .../connection-string/write-concern.json | 118 - .../document/read-concern.json | 33 - .../document/write-concern.json | 174 - .../bulkWrite-serverErrors.json | 182 - .../json/retryable_writes/bulkWrite.json | 819 -- .../deleteOne-serverErrors.json | 96 - .../json/retryable_writes/deleteOne.json | 122 - .../findOneAndDelete-serverErrors.json | 108 - .../retryable_writes/findOneAndDelete.json | 139 - .../findOneAndReplace-serverErrors.json | 116 - .../retryable_writes/findOneAndReplace.json | 147 - .../findOneAndUpdate-serverErrors.json | 118 - .../retryable_writes/findOneAndUpdate.json | 149 - .../insertMany-serverErrors.json | 134 - .../json/retryable_writes/insertMany.json | 165 - .../insertOne-serverErrors.json | 1000 -- .../json/retryable_writes/insertOne.json | 141 - .../replaceOne-serverErrors.json | 116 - .../json/retryable_writes/replaceOne.json | 146 - .../retryable_writes/retryableErrors.json | 645 - .../updateOne-serverErrors.json | 118 - .../json/retryable_writes/updateOne.json | 299 - .../replica_set_with_no_primary.json | 150 - .../monitoring/replica_set_with_primary.json | 149 - .../monitoring/replica_set_with_removal.json | 152 - .../monitoring/required_replica_set.json | 149 - .../monitoring/standalone.json | 104 - .../rs/compatible.json | 55 - .../rs/discover_arbiters.json | 41 - .../rs/discover_passives.json | 78 - .../rs/discover_primary.json | 39 - .../rs/discover_secondary.json | 40 - .../rs/discovery.json | 175 - .../rs/equal_electionids.json | 67 - .../rs/ghost_discovered.json | 35 - .../rs/hosts_differ_from_seeds.json | 34 - .../rs/ls_timeout.json | 273 - .../rs/member_reconfig.json | 67 - .../rs/member_standalone.json | 58 - .../rs/new_primary.json | 72 - .../rs/new_primary_new_electionid.json | 132 - .../rs/new_primary_new_setversion.json | 132 - .../rs/new_primary_wrong_set_name.json | 67 - .../rs/non_rs_member.json | 29 - .../rs/normalize_case.json | 48 - .../rs/normalize_case_me.json | 93 - .../rs/null_election_id.json | 186 - .../rs/primary_becomes_standalone.json | 52 - .../rs/primary_changes_set_name.json | 57 - .../rs/primary_disconnect.json | 53 - .../rs/primary_disconnect_electionid.json | 210 - .../rs/primary_disconnect_setversion.json | 210 - ...int_from_secondary_with_mismatched_me.json | 66 - .../rs/primary_mismatched_me.json | 40 - .../rs/primary_reports_new_member.json | 151 - .../primary_to_no_primary_mismatched_me.json | 74 - .../rs/primary_wrong_set_name.json | 29 - .../rs/response_from_removed.json | 64 - .../rs/rsother_discovered.json | 64 - .../rs/sec_not_auth.json | 54 - .../rs/secondary_mismatched_me.json | 40 - .../rs/secondary_wrong_set_name.json | 30 - ...secondary_wrong_set_name_with_primary.json | 69 - .../rs/setversion_without_electionid.json | 80 - .../rs/stepdown_change_set_name.json | 58 - .../rs/too_new.json | 55 - .../rs/too_old.json | 53 - .../rs/unexpected_mongos.json | 26 - .../rs/use_setversion_without_electionid.json | 123 - .../rs/wrong_set_name.json | 36 - .../sharded/compatible.json | 46 - .../sharded/ls_timeout_mongos.json | 87 - .../sharded/mongos_disconnect.json | 97 - .../sharded/multiple_mongoses.json | 45 - .../sharded/non_mongos_removed.json | 44 - .../sharded/normalize_uri_case.json | 24 - .../sharded/too_new.json | 44 - .../sharded/too_old.json | 44 - .../single/compatible.json | 31 - .../single/direct_connection_external_ip.json | 34 - .../single/direct_connection_mongos.json | 31 - .../single/direct_connection_rsarbiter.json | 36 - .../single/direct_connection_rsprimary.json | 35 - .../single/direct_connection_rssecondary.json | 36 - .../single/direct_connection_slave.json | 30 - .../single/direct_connection_standalone.json | 30 - .../single/ls_timeout_standalone.json | 31 - .../single/not_ok_response.json | 39 - .../single/standalone_removed.json | 30 - .../single/too_new.json | 31 - .../single/too_old.json | 29 - .../single/unavailable_seed.json | 25 - .../supplemental/discover_rs_name.json | 44 - .../discover_rs_name_from_primary.json | 39 - .../discover_rs_name_from_secondary.json | 40 - .../server_selection/rtt/first_value.json | 5 - .../rtt/first_value_zero.json | 5 - .../server_selection/rtt/value_test_1.json | 5 - .../server_selection/rtt/value_test_2.json | 5 - .../server_selection/rtt/value_test_3.json | 5 - .../server_selection/rtt/value_test_4.json | 5 - .../server_selection/rtt/value_test_5.json | 5 - .../ReplicaSetNoPrimary/read/Nearest.json | 60 - .../read/Nearest_multiple.json | 68 - .../read/Nearest_non_matching.json | 34 - .../read/PossiblePrimary.json | 21 - .../read/PossiblePrimaryNearest.json | 21 - .../ReplicaSetNoPrimary/read/Primary.json | 29 - .../read/PrimaryPreferred.json | 58 - .../read/PrimaryPreferred_non_matching.json | 34 - .../ReplicaSetNoPrimary/read/Secondary.json | 60 - .../read/SecondaryPreferred.json | 60 - .../read/SecondaryPreferred_non_matching.json | 34 - .../read/Secondary_multi_tags.json | 60 - .../read/Secondary_multi_tags2.json | 60 - .../read/Secondary_non_matching.json | 34 - .../write/SecondaryPreferred.json | 34 - .../ReplicaSetWithPrimary/read/Nearest.json | 76 - .../read/Nearest_multiple.json | 84 - .../read/Nearest_non_matching.json | 42 - .../ReplicaSetWithPrimary/read/Primary.json | 55 - .../read/PrimaryPreferred.json | 58 - .../read/PrimaryPreferred_non_matching.json | 60 - .../ReplicaSetWithPrimary/read/Secondary.json | 68 - .../read/SecondaryPreferred.json | 68 - .../read/SecondaryPreferred_non_matching.json | 60 - .../read/SecondaryPreferred_tags.json | 52 - .../read/Secondary_non_matching.json | 42 - .../write/SecondaryPreferred.json | 60 - .../Sharded/read/Nearest.json | 45 - .../Sharded/read/Primary.json | 40 - .../Sharded/read/PrimaryPreferred.json | 45 - .../Sharded/read/Secondary.json | 45 - .../Sharded/read/SecondaryPreferred.json | 45 - .../Sharded/write/Nearest.json | 45 - .../Sharded/write/Primary.json | 40 - .../Sharded/write/PrimaryPreferred.json | 45 - .../Sharded/write/Secondary.json | 45 - .../Sharded/write/SecondaryPreferred.json | 45 - .../Single/read/SecondaryPreferred.json | 44 - .../Single/write/SecondaryPreferred.json | 44 - .../Unknown/read/SecondaryPreferred.json | 17 - .../Unknown/write/SecondaryPreferred.json | 17 - .../tests/json/transactions/abort.json | 607 - .../tests/json/transactions/bulk.json | 524 - .../json/transactions/causal-consistency.json | 294 - .../tests/json/transactions/commit.json | 899 -- .../tests/json/transactions/delete.json | 313 - .../tests/json/transactions/error-labels.json | 1539 --- .../tests/json/transactions/errors.json | 208 - .../json/transactions/findOneAndDelete.json | 207 - .../json/transactions/findOneAndReplace.json | 241 - .../json/transactions/findOneAndUpdate.json | 399 - .../tests/json/transactions/insert.json | 441 - .../tests/json/transactions/isolation.json | 211 - .../tests/json/transactions/opts.json | 664 - .../tests/json/transactions/read-pref.json | 706 -- .../tests/json/transactions/reads.json | 615 - .../json/transactions/retryable-abort.json | 1958 --- .../json/transactions/retryable-commit.json | 2069 --- .../json/transactions/retryable-writes.json | 329 - .../tests/json/transactions/run-command.json | 292 - .../transactions/transaction-options.json | 1534 --- .../tests/json/transactions/update.json | 436 - .../json/transactions/write-concern.json | 355 - .../tests/mock_server/future-functions.c | 2922 ----- .../tests/mock_server/future-functions.h | 624 - .../tests/mock_server/future-value.c | 576 - .../tests/mock_server/future-value.h | 511 - .../src/libmongoc/tests/mock_server/future.c | 586 - .../src/libmongoc/tests/mock_server/future.h | 166 - .../src/libmongoc/tests/mock_server/mock-rs.c | 1028 -- .../src/libmongoc/tests/mock_server/mock-rs.h | 130 - .../libmongoc/tests/mock_server/mock-server.c | 1997 --- .../libmongoc/tests/mock_server/mock-server.h | 222 - .../src/libmongoc/tests/mock_server/request.c | 1140 -- .../src/libmongoc/tests/mock_server/request.h | 122 - .../libmongoc/tests/mock_server/sync-queue.c | 122 - .../libmongoc/tests/mock_server/sync-queue.h | 40 - .../tests/release_files/empty-file.txt | 0 .../example-etc-fedora-release.txt | 1 - .../example-etc-os-release-ubuntu1604.txt | 10 - .../release_files/example-etc-os-release.txt | 9 - .../example-etc-xyz-release-no-delimiter.txt | 1 - .../release_files/example-key-value-file.txt | 101 - .../example-lsb-file-with-super-long-line.txt | 3 - .../tests/release_files/example-lsb-file.txt | 6 - .../src/libmongoc/tests/ssl-test.c | 325 - .../src/libmongoc/tests/ssl-test.h | 43 - .../src/libmongoc/tests/test-conveniences.c | 1540 --- .../src/libmongoc/tests/test-conveniences.h | 167 - .../src/libmongoc/tests/test-happy-eyeballs.c | 591 - .../src/libmongoc/tests/test-libmongoc.c | 2399 ---- .../src/libmongoc/tests/test-libmongoc.h | 203 - .../src/libmongoc/tests/test-mongoc-array.c | 44 - .../src/libmongoc/tests/test-mongoc-async.c | 382 - .../src/libmongoc/tests/test-mongoc-buffer.c | 42 - .../src/libmongoc/tests/test-mongoc-bulk.c | 4856 ------- .../tests/test-mongoc-change-stream.c | 1822 --- .../libmongoc/tests/test-mongoc-client-pool.c | 309 - .../tests/test-mongoc-client-session.c | 2812 ----- .../src/libmongoc/tests/test-mongoc-client.c | 3683 ------ .../src/libmongoc/tests/test-mongoc-cluster.c | 1691 --- .../test-mongoc-collection-find-with-opts.c | 1042 -- .../tests/test-mongoc-collection-find.c | 1262 -- .../libmongoc/tests/test-mongoc-collection.c | 5945 --------- .../tests/test-mongoc-command-monitoring.c | 1224 -- .../tests/test-mongoc-connection-uri.c | 221 - .../libmongoc/tests/test-mongoc-counters.c | 616 - .../src/libmongoc/tests/test-mongoc-crud.c | 37 - .../src/libmongoc/tests/test-mongoc-cursor.c | 2411 ---- .../src/libmongoc/tests/test-mongoc-cyrus.c | 102 - .../libmongoc/tests/test-mongoc-database.c | 1041 -- .../src/libmongoc/tests/test-mongoc-dns.c | 347 - .../src/libmongoc/tests/test-mongoc-error.c | 151 - .../src/libmongoc/tests/test-mongoc-exhaust.c | 598 - .../tests/test-mongoc-find-and-modify.c | 597 - .../tests/test-mongoc-gridfs-file-page.c | 225 - .../src/libmongoc/tests/test-mongoc-gridfs.c | 1520 --- .../src/libmongoc/tests/test-mongoc-gssapi.c | 151 - .../libmongoc/tests/test-mongoc-handshake.c | 762 -- .../tests/test-mongoc-linux-distro-scanner.c | 300 - .../src/libmongoc/tests/test-mongoc-list.c | 53 - .../src/libmongoc/tests/test-mongoc-log.c | 202 - .../src/libmongoc/tests/test-mongoc-matcher.c | 566 - .../tests/test-mongoc-max-staleness.c | 337 - .../src/libmongoc/tests/test-mongoc-opts.c | 1013 -- .../src/libmongoc/tests/test-mongoc-queue.c | 57 - .../tests/test-mongoc-read-concern.c | 290 - .../libmongoc/tests/test-mongoc-read-prefs.c | 984 -- .../tests/test-mongoc-read-write-concern.c | 246 - .../tests/test-mongoc-retryable-writes.c | 504 - .../src/libmongoc/tests/test-mongoc-rpc.c | 686 - .../tests/test-mongoc-sample-commands.c | 3339 ----- .../src/libmongoc/tests/test-mongoc-scram.c | 586 - .../tests/test-mongoc-sdam-monitoring.c | 881 -- .../src/libmongoc/tests/test-mongoc-sdam.c | 210 - .../test-mongoc-server-selection-errors.c | 341 - .../tests/test-mongoc-server-selection.c | 71 - .../src/libmongoc/tests/test-mongoc-set.c | 92 - .../src/libmongoc/tests/test-mongoc-socket.c | 476 - .../tests/test-mongoc-stream-tls-error.c | 368 - .../libmongoc/tests/test-mongoc-stream-tls.c | 422 - .../src/libmongoc/tests/test-mongoc-stream.c | 170 - .../src/libmongoc/tests/test-mongoc-thread.c | 36 - .../tests/test-mongoc-topology-description.c | 154 - .../tests/test-mongoc-topology-reconcile.c | 754 -- .../tests/test-mongoc-topology-scanner.c | 748 -- .../libmongoc/tests/test-mongoc-topology.c | 2038 --- .../tests/test-mongoc-transactions.c | 585 - .../src/libmongoc/tests/test-mongoc-uri.c | 1958 --- .../src/libmongoc/tests/test-mongoc-usleep.c | 22 - .../src/libmongoc/tests/test-mongoc-util.c | 73 - .../src/libmongoc/tests/test-mongoc-version.c | 24 - .../tests/test-mongoc-write-commands.c | 386 - .../tests/test-mongoc-write-concern.c | 539 - .../src/libmongoc/tests/test-mongoc-x509.c | 32 - .../src/libmongoc/tests/x509gen/7750279a.0 | 21 - .../src/libmongoc/tests/x509gen/altname.pem | 49 - .../src/libmongoc/tests/x509gen/ca.pem | 21 - .../tests/x509gen/client-private.pem | 27 - .../libmongoc/tests/x509gen/client-public.pem | 21 - .../src/libmongoc/tests/x509gen/client.pem | 48 - .../libmongoc/tests/x509gen/commonName.pem | 48 - .../src/libmongoc/tests/x509gen/crl.pem | 41 - .../src/libmongoc/tests/x509gen/expired.pem | 49 - .../libmongoc/tests/x509gen/legacy-x509.pem | 101 - .../tests/x509gen/password_protected.pem | 52 - .../src/libmongoc/tests/x509gen/server.pem | 48 - .../src/libmongoc/tests/x509gen/wild.pem | 49 - .../src/tools/CMakeLists.txt | 4 - .../src/tools/mongoc-stat.c | 241 - .../src/zlib-1.2.11/adler32.c | 186 - .../src/zlib-1.2.11/compress.c | 86 - .../src/zlib-1.2.11/crc32.c | 442 - .../src/zlib-1.2.11/crc32.h | 441 - .../src/zlib-1.2.11/deflate.c | 2163 ---- .../src/zlib-1.2.11/deflate.h | 349 - .../src/zlib-1.2.11/gzclose.c | 25 - .../src/zlib-1.2.11/gzguts.h | 218 - .../src/zlib-1.2.11/gzlib.c | 637 - .../src/zlib-1.2.11/gzread.c | 656 - .../src/zlib-1.2.11/gzwrite.c | 667 - .../src/zlib-1.2.11/infback.c | 640 - .../src/zlib-1.2.11/inffast.c | 323 - .../src/zlib-1.2.11/inffast.h | 11 - .../src/zlib-1.2.11/inffixed.h | 94 - .../src/zlib-1.2.11/inflate.c | 1561 --- .../src/zlib-1.2.11/inflate.h | 125 - .../src/zlib-1.2.11/inftrees.c | 304 - .../src/zlib-1.2.11/inftrees.h | 62 - .../src/zlib-1.2.11/trees.c | 1203 -- .../src/zlib-1.2.11/trees.h | 128 - .../src/zlib-1.2.11/uncompr.c | 93 - .../src/zlib-1.2.11/zconf.h | 534 - .../src/zlib-1.2.11/zconf.h.in | 534 - .../src/zlib-1.2.11/zlib.h | 1912 --- .../src/zlib-1.2.11/zutil.c | 325 - .../src/zlib-1.2.11/zutil.h | 271 - 3419 files changed, 6 insertions(+), 503521 deletions(-) create mode 160000 contrib/mongoc/mongo-c-driver delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/CONTRIBUTING.md delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/COPYING delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/NEWS delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/README.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/THIRD_PARTY_NOTICES delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/VERSION_CURRENT delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/VERSION_RELEASED delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/generate_uninstall/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-ssl.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-thisDB-ssl.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic-ssl.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth-ssl.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ipv4-only.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ssl.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/mmapv1.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy-zlib.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/wiredtiger.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/zlib.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth-ssl.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic-ssl.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/common/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-thread-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/NEWS delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/THIRD_PARTY_NOTICES delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/api.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_begin.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_end.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_binary.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_bool.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code_with_scope.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_date_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_dbpointer.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_decimal128.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_begin.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_end.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_double.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int32.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int64.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_iter.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_maxkey.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_minkey.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_now_utc.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_null.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_oid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex_w_len.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_symbol.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_time_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timestamp.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timeval.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_undefined.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_utf8.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_value.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_array_as_json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_canonical_extended_json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_relaxed_extended_json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_ascii_strtoll.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_check_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_compare.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_concat.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_get_default.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding_noinit.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_count_keys.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string_w_len.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_to_string.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy_with_steal.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_equal.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_error_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_free.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_data.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_major_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_micro_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_minor_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_monotonic_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_has_field.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_from_json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_static.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_array.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_bool.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_double.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_int64.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_binary.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_bool.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_code.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_codewscope.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_date_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dbpointer.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_decimal128.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_document.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_double.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dup_utf8.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_case.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_descendant.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_w_len.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_case.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_w_len.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data_at_offset.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int32.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int64.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key_len.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_next.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_offset.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_oid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_bool.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_date_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_decimal128.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_double.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int32.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int64.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_oid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_timestamp.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_recurse.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_regex.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_symbol.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_time_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timestamp.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timeval.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_type.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_utf8.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_value.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_visit_all.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_ingest.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_fd.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_file.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_read.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc0.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_append.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_finish.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_restore_vtable.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_set_vtable.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_memory.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_buffer.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_data.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_compare.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_equal.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_get_time_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_hash.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_data.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_string.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_sequence.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_is_valid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_to_string.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy_func_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_data.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_fd.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_file.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_handle.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read_func_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_reset.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_destroy_func.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_read_func.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_tell.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_ctx.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_func.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reinit.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reserve_buffer.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_set_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_sized_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_snprintf.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_steal.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strcasecmp.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup_printf.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdupv_printf.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strerror_r.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strfreev.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_c.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_printf.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_unichar.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_free.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_truncate.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strncpy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strndup.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strnlen.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_subtype_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_type_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_uint32_to_string.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_unichar_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_escape_for_json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_from_unichar.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_get_char.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_next_char.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_validate.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate_with_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_visitor_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_vsnprintf.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_begin.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_end.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_get_length.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_rollback.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_zero_free.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/character_and_string_routines.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/conf.py delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/creating.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/cross-platform-notes.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/endianness.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/errors.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/full_index.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/guides.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/.nojekyll delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/ajax-loader.gif delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/basic.css delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/comment-bright.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/comment-close.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/comment.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/doctools.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/down-pressed.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/down.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/file.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/jquery.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/minus.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/mongoc.css delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/plus.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/pygments.css delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/searchtools.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/underscore.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/up-pressed.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/up.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/websupport.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/api.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_begin.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_end.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_binary.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_bool.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code_with_scope.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_date_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_dbpointer.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_decimal128.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_begin.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_end.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_double.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int32.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int64.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_iter.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_maxkey.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_minkey.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_now_utc.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_null.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_oid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex_w_len.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_symbol.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_time_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timestamp.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timeval.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_undefined.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_utf8.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_value.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_array_as_json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_canonical_extended_json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_relaxed_extended_json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_ascii_strtoll.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_check_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_compare.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_concat.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_get_default.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding_noinit.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_count_keys.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string_w_len.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_to_string.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy_with_steal.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_equal.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_error_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_free.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_data.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_major_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_micro_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_minor_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_monotonic_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_has_field.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_from_json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_static.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_array.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_bool.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_double.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_int64.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_binary.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_bool.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_code.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_codewscope.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_date_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dbpointer.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_decimal128.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_document.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_double.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dup_utf8.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_case.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_descendant.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_w_len.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_case.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_w_len.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data_at_offset.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int32.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int64.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key_len.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_next.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_offset.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_oid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_bool.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_date_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_decimal128.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_double.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int32.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int64.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_oid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_timestamp.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_recurse.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_regex.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_symbol.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_time_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timestamp.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timeval.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_type.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_utf8.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_value.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_visit_all.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_ingest.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_fd.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_file.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_read.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc0.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_append.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_finish.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_restore_vtable.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_set_vtable.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_memory.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_buffer.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_data.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_compare.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_equal.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_get_time_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_hash.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_data.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_string.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_sequence.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_is_valid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_to_string.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy_func_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_data.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_fd.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_file.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_handle.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read_func_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_reset.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_destroy_func.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_read_func.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_tell.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_ctx.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_func.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reinit.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reserve_buffer.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_set_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_sized_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_snprintf.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_steal.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strcasecmp.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup_printf.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdupv_printf.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strerror_r.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strfreev.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_c.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_printf.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_unichar.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_free.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_truncate.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strncpy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strndup.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strnlen.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_subtype_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_type_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_uint32_to_string.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_unichar_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_escape_for_json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_from_unichar.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_get_char.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_next_char.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_validate.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate_with_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_visitor_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_vsnprintf.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_begin.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_end.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_get_length.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_rollback.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_zero_free.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/character_and_string_routines.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/creating.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/cross-platform-notes.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/endianness.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/errors.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/full_index.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/genindex.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/guides.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/include-and-link.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/index.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/json.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/objects.inv delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/oid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/parsing.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/search.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/searchindex.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/streaming-bson.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/threading.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/tutorial.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/utf8.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/valgrind.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/include-and-link.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/index.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/json.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_begin.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_end.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_binary.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_bool.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code_with_scope.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_date_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_dbpointer.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_decimal128.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_begin.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_end.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_double.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int32.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int64.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_iter.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_maxkey.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_minkey.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_now_utc.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_null.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_oid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex_w_len.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_symbol.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_time_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timestamp.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timeval.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_undefined.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_utf8.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_value.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_array_as_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_canonical_extended_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_relaxed_extended_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_ascii_strtoll.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_character_and_string_routines.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_check_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_compare.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_concat.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_get_default.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding_noinit.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_count_keys.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_creating.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_cross_platform_notes.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string_w_len.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_to_string.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy_with_steal.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_endianness.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_equal.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_error_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_errors.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_free.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_data.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_major_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_micro_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_minor_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_monotonic_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_guides.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_has_field.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_include_and_link.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_from_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_static.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_array.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_bool.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_double.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_int64.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_binary.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_bool.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_code.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_codewscope.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_date_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dbpointer.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_decimal128.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_document.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_double.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dup_utf8.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_case.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_descendant.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_w_len.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_case.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_w_len.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data_at_offset.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int32.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int64.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key_len.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_next.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_offset.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_oid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_bool.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_date_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_decimal128.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_double.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int32.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int64.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_oid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_timestamp.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_recurse.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_regex.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_symbol.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_time_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timestamp.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timeval.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_type.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_utf8.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_value.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_visit_all.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_ingest.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_fd.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_file.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_read.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc0.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_append.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_finish.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_restore_vtable.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_set_vtable.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_memory.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_buffer.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_data.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_compare.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_equal.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_get_time_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_hash.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_data.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_string.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_sequence.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_is_valid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_to_string.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_parsing.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy_func_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_data.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_fd.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_file.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_handle.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read_func_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_reset.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_destroy_func.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_read_func.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_tell.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_ctx.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_func.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reference.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reinit.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reserve_buffer.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_set_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_sized_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_snprintf.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_steal.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strcasecmp.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup_printf.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdupv_printf.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_streaming_bson.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strerror_r.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strfreev.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_c.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_printf.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_unichar.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_free.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_truncate.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strncpy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strndup.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strnlen.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_subtype_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_threading.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_tutorial.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_type_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_uint32_to_string.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_unichar_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_escape_for_json.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_from_unichar.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_get_char.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_next_char.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_validate.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_valgrind.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate_with_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_visitor_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_vsnprintf.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_begin.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_end.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_get_length.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_rollback.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_zero_free.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/oid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/parsing.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/streaming-bson.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/threading.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/tutorial.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/utf8.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/valgrind.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-col-view.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-speed.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-metrics.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-streaming-reader.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-to-json.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-validate.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package_static/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config-static.sh delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config.sh delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/hello_bson.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/json-to-bson.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-compat.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-config.h.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-endian.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-macros.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-types.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/forwarding/bson.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/modules/module.modulemap.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-1.0.pc.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-static-1.0.pc.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/binary_deprecated.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/cdriver2269.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/code_w_empty_scope.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/codewscope.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/dollarquery.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/dotkey.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/dotquery.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/empty_key.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/eurokey.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/overflow1.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/overflow2.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/overflow3.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/overflow4.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/readergrow.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/stackoverflow.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/stream.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/stream_corrupt.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test1.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test10.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test11.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test12.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test13.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test14.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test15.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test16.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test17.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test18.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test19.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test2.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test20.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test21.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test22.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test23.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test24.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test25.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test26.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test27.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test28.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test29.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test3.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test30.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test31.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test32.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test33.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test34.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test35.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test36.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test37.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test38.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test39.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test4.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test40.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test41.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test42.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test43.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test44.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test45.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test46.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test47.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test48.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test49.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test5.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test50.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test51.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test52.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test53.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test54.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test55.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test56.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test57.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test58.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test59.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test6.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test7.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test8.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test9.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/trailingnull.bson delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/array.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/binary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/boolean.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code_w_scope.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/datetime.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbpointer.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbref.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-1.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-3.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-4.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-5.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-6.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-7.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-mongoc.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/document.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int32.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int64.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/maxkey.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/minkey.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type-deprecated.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/null.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/oid.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/regex.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/string.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/symbol.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/timestamp.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/top.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/undefined.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/test.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-atomic.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-basic.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-extract.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-corpus.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-error.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-version.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-clock.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-decimal128.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-endian.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-fnv.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iso8601.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iter.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-json.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-oid.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-reader.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-string.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-utf8.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-value.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-writer.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/THIRD_PARTY_NOTICES delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/advanced-connections.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/aggregate.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/api.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/application-performance-monitoring.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/authentication.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/basic-troubleshooting.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/bulk.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/conf.py delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/connection-pooling.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/create-indexes.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/cursors.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/debugging.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/distinct-mapreduce.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/errors.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/full_index.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/guides.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/.nojekyll delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-add-dependencies-static.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-add-dependencies.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-add-include-directories.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-create-project.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-set-path.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-switch-architecture.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/ajax-loader.gif delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/basic.css delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/comment-bright.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/comment-close.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/comment.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/doctools.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/down-pressed.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/down.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/file.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/jquery.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/minus.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/mongoc.css delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/plus.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/pygments.css delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/searchtools.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/underscore.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/up-pressed.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/up.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/websupport.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/advanced-connections.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/aggregate.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/api.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/application-performance-monitoring.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/authentication.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/basic-troubleshooting.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/bulk.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/connection-pooling.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/create-indexes.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/cursors.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/debugging.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/distinct-mapreduce.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/errors.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/full_index.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/genindex.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/guides.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/index.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/init-cleanup.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/installing.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/lifecycle.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/logging.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/matcher.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc-common-task-examples.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_command_name.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_duration.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_operation_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_reply.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_request_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_server_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command_name.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_database_name.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_operation_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_request_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_server_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_command_name.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_duration.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_operation_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_reply.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_request_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_server_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_new_description.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_previous_description.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_topology_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_topology_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_duration.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_duration.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_reply.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_topology_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_failed_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_started_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_succeeded_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_changed_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_closed_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_failed_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_started_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_succeeded_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_opening_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_changed_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_closed_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_opening_cb.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_new_description.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_previous_description.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_topology_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_topology_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_context.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_topology_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_execute.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_hint.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_many_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_bypass_document_validation.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_hint.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_many_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_error_document.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_next.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_check_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cleanup.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple_with_server_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_find_databases_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_collection.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_default_database.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_gridfs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_bson_size.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_message_size.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_description.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_descriptions.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_status.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_uri.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new_from_uri.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_max_size.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_min_size.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_pop.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_push.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_apm_callbacks.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_appname.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_error_api.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_ssl_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_try_pop.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_write_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_select_server.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_abort_transaction.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_cluster_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_operation_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_append.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_commit_transaction.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_client.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_cluster_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_lsid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_operation_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_in_transaction.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_start_transaction.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_apm_callbacks.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_appname.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_error_api.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_ssl_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_stream_initiator.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_start_session.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_watch.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_write_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_aggregate.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_simple.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_documents.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_many.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_ensure_index.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_estimated_document_count.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_last_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_name.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_bulk.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_many.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_keys_to_index_string.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_write_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_remove.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_replace_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_save.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_stats.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_many.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_validate.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_watch.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_write_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_clone.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_current.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error_document.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_batch_size.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_hint.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_limit.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_max_await_time_ms.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_is_alive.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_more.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_next.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_batch_size.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_hint.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_limit.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_max_await_time_ms.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_add_user.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_simple.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_create_collection.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_name.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_has_collection.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_write_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_all_users.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_user.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_watch.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_write_command_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_delete_flags_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_error_has_label.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_append.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_bypass_document_validation.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_fields.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_flags.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_max_time_ms.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_sort.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_update.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_bypass_document_validation.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_fields.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_flags.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_max_time_ms.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_sort.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_update.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_major_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_micro_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_minor_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file_from_stream.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_drop.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_aliases.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_chunk_size.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_content_type.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_filename.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_length.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_md5.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_metadata.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_upload_date.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_next.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_opt_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_readv.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_remove.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_save.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_seek.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_aliases.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_content_type.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_filename.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_md5.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_metadata.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_tell.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_writev.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_by_filename.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_with_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_chunks.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_files.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_remove_by_filename.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_host_list_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_get_default.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_get_default.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_get_default.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_init.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_insert_flags_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_iovec_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_match.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_query_flags_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_add.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_seed.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_status.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_append.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_get_level.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_is_default.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_set_level.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_mode_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_add_tag.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_max_staleness_seconds.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_mode.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_tags.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_is_valid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_max_staleness_seconds.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_mode.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_tags.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_remove_flags_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_reply_flags_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_host.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_id.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_ismaster.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_new_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_round_trip_time.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_type.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_descriptions_destroy_all.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opt_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_clone.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_causal_consistency.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_default_transaction_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_causal_consistency.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_default_transaction_opts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_accept.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_bind.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_close.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_connect.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_errno.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getnameinfo.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getsockname.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_listen.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_recv.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_send.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_sendv.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_setsockopt.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_get_default.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_close.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_cork.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_get_fd.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new_for_path.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_flush.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_get_base_stream.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_gridfs_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_read.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_readv.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_setsockopt.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_get_socket.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_timed_out.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_tls_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_uncork.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_write.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_writev.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_get_servers.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_readable_server.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_writable_server.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_type.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opt_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_clone.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_update_flags_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_mechanism.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_source.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_compressors.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_database.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_hosts.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_mechanism_properties.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_bool.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_int32.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_utf8.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_options.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_password.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_replica_set.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_service.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_ssl.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_string.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_username.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_for_host_port.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_with_error.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_bool.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_int32.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_utf8.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_mechanism.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_source.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_compressors.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_database.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_mechanism_properties.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_bool.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_int32.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_utf8.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_password.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_prefs_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_username.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_write_concern.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_unescape.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_version.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_append.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_copy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_destroy.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_fsync.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_journal.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_w.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wmajority.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtag.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtimeout.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_acknowledged.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_default.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_valid.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_journal_is_set.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_new.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_fsync.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_journal.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_w.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wmajority.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtag.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtimeout.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_t.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/objects.inv delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/search.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/searchindex.js delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/tutorial.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/visual-studio-guide.html delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-insert-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-many-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-one-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-replace-one-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-many-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-one-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/cast-away-td-const.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/create-index-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-many-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-one-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/generic-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/init_cleanup.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-many-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-one-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/ipv4-and-ipv6.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_call_once.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_thread_safe.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/opts-sources.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-cmd-opts-sources.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts-sources.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts-sources.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/replace-one-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/session-lifecycle.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-many-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-one-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts-sources.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/index.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/init-cleanup.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/installing.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/libbson-objects.inv delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/lifecycle.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/logging.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_advanced_connections.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_aggregate.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_command_name.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_duration.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_operation_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_reply.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_request_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_server_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command_name.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_database_name.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_operation_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_request_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_server_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_command_name.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_duration.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_operation_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_reply.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_request_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_server_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_new_description.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_previous_description.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_topology_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_topology_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_duration.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_duration.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_reply.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_topology_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_failed_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_started_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_succeeded_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_changed_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_closed_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_failed_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_started_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_succeeded_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_opening_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_changed_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_closed_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_opening_cb.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_new_description.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_previous_description.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_topology_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_topology_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_context.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_topology_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_application_performance_monitoring.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_authentication.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_basic_troubleshooting.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_execute.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_hint.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_many_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_bypass_document_validation.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_hint.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_many_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_error_document.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_next.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_check_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cleanup.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple_with_server_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_find_databases_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_collection.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_default_database.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_gridfs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_bson_size.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_message_size.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_description.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_descriptions.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_status.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_uri.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new_from_uri.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_max_size.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_min_size.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_pop.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_push.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_apm_callbacks.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_appname.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_error_api.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_ssl_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_try_pop.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_write_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_select_server.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_abort_transaction.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_cluster_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_operation_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_append.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_commit_transaction.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_client.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_cluster_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_lsid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_operation_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_in_transaction.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_start_transaction.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_apm_callbacks.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_appname.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_error_api.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_ssl_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_stream_initiator.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_start_session.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_watch.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_write_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_aggregate.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_simple.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_documents.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_many.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_ensure_index.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_estimated_document_count.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find_and_modify.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find_and_modify_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find_indexes.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find_indexes_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_get_last_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_get_name.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_get_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_get_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_get_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_insert.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_insert_bulk.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_insert_many.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_insert_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_keys_to_index_string.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_read_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_read_write_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_remove.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_rename.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_rename_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_replace_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_save.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_set_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_set_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_set_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_stats.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_update.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_update_many.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_update_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_validate.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_watch.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_write_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_common_task_examples.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_connection_pooling.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_create_indexes.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_clone.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_current.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_error_document.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_get_batch_size.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_get_hint.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_get_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_get_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_get_limit.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_get_max_await_time_ms.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_is_alive.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_more.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_new_from_command_reply.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_new_from_command_reply_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_next.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_set_batch_size.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_set_hint.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_set_limit.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_set_max_await_time_ms.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursor_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cursors.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_add_user.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_command.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_command_simple.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_create_collection.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_drop.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_drop_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_find_collections.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_find_collections_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_get_collection.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_get_collection_names.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_get_collection_names_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_get_name.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_get_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_get_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_get_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_has_collection.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_read_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_read_write_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_remove_all_users.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_remove_user.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_set_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_set_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_set_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_watch.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_database_write_command_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_debugging.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_delete_flags_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_distinct_mapreduce.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_error_has_label.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_errors.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_append.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_get_bypass_document_validation.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_get_fields.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_get_flags.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_get_max_time_ms.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_get_sort.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_get_update.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_set_bypass_document_validation.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_set_fields.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_set_flags.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_set_max_time_ms.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_set_sort.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_set_update.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_find_and_modify_opts_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_get_major_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_get_micro_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_get_minor_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_get_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_create_file.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_create_file_from_stream.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_drop.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_aliases.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_chunk_size.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_content_type.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_filename.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_length.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_md5.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_metadata.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_get_upload_date.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_list_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_list_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_list_next.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_list_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_opt_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_readv.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_remove.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_save.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_seek.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_set_aliases.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_set_content_type.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_set_filename.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_set_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_set_md5.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_set_metadata.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_tell.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_file_writev.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_find.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_find_one.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_find_one_by_filename.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_find_one_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_find_with_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_get_chunks.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_get_files.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_remove_by_filename.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_gridfs_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_guides.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_host_list_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_geo_get_default.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_geo_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_geo_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_get_default.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_wt_get_default.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_wt_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_index_opt_wt_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_init.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_init_cleanup.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_insert_flags_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_installing.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_iovec_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_logging.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_matcher.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_matcher_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_matcher_match.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_matcher_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_matcher_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_query_flags_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_rand.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_rand_add.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_rand_seed.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_rand_status.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_append.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_get_level.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_is_default.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_set_level.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_concern_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_mode_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_add_tag.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_get_max_staleness_seconds.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_get_mode.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_get_tags.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_is_valid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_set_max_staleness_seconds.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_set_mode.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_set_tags.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_read_prefs_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_reference.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_remove_flags_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_reply_flags_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_host.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_id.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_ismaster.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_new_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_round_trip_time.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_description_type.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_server_descriptions_destroy_all.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opt_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opts_clone.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opts_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opts_get_causal_consistency.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opts_get_default_transaction_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opts_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opts_set_causal_consistency.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_session_opts_set_default_transaction_opts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_accept.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_bind.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_close.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_connect.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_errno.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_getnameinfo.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_getsockname.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_listen.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_recv.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_send.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_sendv.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_setsockopt.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_socket_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_ssl_opt_get_default.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_ssl_opt_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_buffered_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_buffered_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_close.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_cork.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_file_get_fd.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_file_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_file_new_for_path.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_file_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_flush.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_get_base_stream.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_gridfs_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_read.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_readv.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_setsockopt.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_socket_get_socket.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_socket_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_socket_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_timed_out.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_tls_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_uncork.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_write.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_stream_writev.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_topology_description_get_servers.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_topology_description_has_readable_server.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_topology_description_has_writable_server.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_topology_description_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_topology_description_type.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opt_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_clone.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_get_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_get_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_get_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_set_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_set_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_transaction_opts_set_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_tutorial.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_update_flags_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_auth_mechanism.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_auth_source.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_compressors.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_database.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_hosts.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_mechanism_properties.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_option_as_bool.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_option_as_int32.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_option_as_utf8.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_options.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_password.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_read_prefs.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_read_prefs_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_replica_set.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_service.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_ssl.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_string.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_username.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_get_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_new_for_host_port.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_new_with_error.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_option_is_bool.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_option_is_int32.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_option_is_utf8.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_auth_mechanism.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_auth_source.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_compressors.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_database.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_mechanism_properties.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_option_as_bool.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_option_as_int32.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_option_as_utf8.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_password.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_read_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_read_prefs_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_username.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_set_write_concern.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_uri_unescape.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_version.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_append.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_copy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_destroy.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_get_fsync.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_get_journal.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_get_w.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_get_wmajority.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_get_wtag.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_get_wtimeout.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_is_acknowledged.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_is_default.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_is_valid.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_journal_is_set.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_new.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_set_fsync.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_set_journal.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_set_w.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_set_wmajority.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_set_wtag.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_set_wtimeout.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_write_concern_t.3 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/matcher.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc-common-task-examples.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_callbacks_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_callbacks_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_callbacks_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_command_name.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_duration.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_operation_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_reply.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_request_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_get_server_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_failed_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_command.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_command_name.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_database_name.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_operation_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_request_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_get_server_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_started_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_command_name.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_duration.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_operation_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_reply.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_request_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_get_server_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_command_succeeded_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_changed_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_changed_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_changed_get_new_description.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_changed_get_previous_description.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_changed_get_topology_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_changed_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_closed_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_closed_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_closed_get_topology_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_closed_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_failed_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_failed_get_duration.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_failed_get_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_failed_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_failed_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_started_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_started_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_started_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_succeeded_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_succeeded_get_duration.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_succeeded_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_succeeded_get_reply.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_heartbeat_succeeded_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_opening_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_opening_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_opening_get_topology_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_server_opening_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_command_failed_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_command_started_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_command_succeeded_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_server_changed_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_server_closed_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_server_heartbeat_failed_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_server_heartbeat_started_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_server_heartbeat_succeeded_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_server_opening_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_topology_changed_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_topology_closed_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_set_topology_opening_cb.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_changed_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_changed_get_new_description.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_changed_get_previous_description.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_changed_get_topology_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_changed_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_closed_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_closed_get_topology_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_closed_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_opening_get_context.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_opening_get_topology_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_apm_topology_opening_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_delete.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_delete_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_execute.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_get_hint.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_get_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_insert.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_insert_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_remove.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_remove_many_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_remove_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_remove_one_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_replace_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_replace_one_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_set_bypass_document_validation.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_set_hint.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_update.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_update_many_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_update_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_bulk_operation_update_one_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_change_stream_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_change_stream_error_document.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_change_stream_next.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_change_stream_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_check_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cleanup.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_command.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_command_simple.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_command_simple_with_server_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_find_databases_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_collection.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_database.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_database_names.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_database_names_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_default_database.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_gridfs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_max_bson_size.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_max_message_size.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_server_description.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_server_descriptions.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_server_status.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_uri.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_get_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_new_from_uri.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_max_size.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_min_size.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_pop.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_push.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_set_apm_callbacks.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_set_appname.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_set_error_api.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_set_ssl_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_pool_try_pop.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_read_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_read_write_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_select_server.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_abort_transaction.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_advance_cluster_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_advance_operation_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_append.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_commit_transaction.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_get_client.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_get_cluster_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_get_lsid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_get_operation_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_get_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_in_transaction.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_start_transaction.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_session_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_apm_callbacks.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_appname.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_error_api.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_ssl_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_stream_initiator.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_set_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_start_session.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_watch.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_client_write_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_aggregate.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_command.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_command_simple.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_count.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_count_documents.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_count_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_create_bulk_operation.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_create_bulk_operation_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_create_index.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_create_index_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_delete.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_delete_many.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_delete_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_drop.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_drop_index.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_drop_index_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_drop_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_ensure_index.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_estimated_document_count.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_find.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_find_and_modify.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_find_and_modify_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_find_indexes.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_find_indexes_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_find_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_get_last_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_get_name.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_get_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_get_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_get_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_insert.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_insert_bulk.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_insert_many.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_insert_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_keys_to_index_string.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_read_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_read_write_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_remove.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_rename.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_rename_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_replace_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_save.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_set_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_set_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_set_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_stats.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_update.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_update_many.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_update_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_validate.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_watch.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_collection_write_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_clone.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_current.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_error_document.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_get_batch_size.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_get_hint.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_get_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_get_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_get_limit.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_get_max_await_time_ms.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_is_alive.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_more.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_new_from_command_reply.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_new_from_command_reply_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_next.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_set_batch_size.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_set_hint.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_set_limit.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_set_max_await_time_ms.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_cursor_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_add_user.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_command.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_command_simple.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_create_collection.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_drop.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_drop_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_find_collections.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_find_collections_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_get_collection.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_get_collection_names.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_get_collection_names_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_get_name.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_get_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_get_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_get_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_has_collection.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_read_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_read_write_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_remove_all_users.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_remove_user.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_set_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_set_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_set_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_watch.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_database_write_command_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_delete_flags_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_error_has_label.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_append.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_get_bypass_document_validation.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_get_fields.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_get_flags.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_get_max_time_ms.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_get_sort.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_get_update.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_set_bypass_document_validation.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_set_fields.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_set_flags.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_set_max_time_ms.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_set_sort.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_set_update.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_find_and_modify_opts_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_get_major_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_get_micro_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_get_minor_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_get_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_create_file.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_create_file_from_stream.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_drop.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_aliases.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_chunk_size.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_content_type.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_filename.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_length.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_md5.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_metadata.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_get_upload_date.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_list_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_list_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_list_next.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_list_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_opt_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_readv.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_remove.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_save.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_seek.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_set_aliases.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_set_content_type.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_set_filename.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_set_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_set_md5.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_set_metadata.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_tell.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_file_writev.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_find.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_find_one.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_find_one_by_filename.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_find_one_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_find_with_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_get_chunks.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_get_files.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_remove_by_filename.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_gridfs_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_host_list_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_geo_get_default.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_geo_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_geo_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_get_default.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_wt_get_default.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_wt_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_index_opt_wt_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_init.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_insert_flags_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_iovec_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_matcher_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_matcher_match.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_matcher_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_matcher_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_query_flags_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_rand.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_rand_add.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_rand_seed.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_rand_status.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_append.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_get_level.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_is_default.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_set_level.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_concern_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_mode_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_add_tag.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_get_max_staleness_seconds.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_get_mode.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_get_tags.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_is_valid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_set_max_staleness_seconds.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_set_mode.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_set_tags.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_read_prefs_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_remove_flags_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_reply_flags_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_host.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_id.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_ismaster.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_new_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_round_trip_time.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_description_type.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_server_descriptions_destroy_all.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opt_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opts_clone.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opts_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opts_get_causal_consistency.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opts_get_default_transaction_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opts_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opts_set_causal_consistency.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_session_opts_set_default_transaction_opts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_accept.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_bind.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_close.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_connect.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_errno.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_getnameinfo.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_getsockname.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_listen.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_recv.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_send.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_sendv.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_setsockopt.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_socket_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_ssl_opt_get_default.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_ssl_opt_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_buffered_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_buffered_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_close.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_cork.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_file_get_fd.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_file_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_file_new_for_path.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_file_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_flush.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_get_base_stream.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_gridfs_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_read.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_readv.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_setsockopt.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_socket_get_socket.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_socket_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_socket_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_timed_out.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_tls_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_uncork.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_write.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_stream_writev.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_topology_description_get_servers.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_topology_description_has_readable_server.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_topology_description_has_writable_server.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_topology_description_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_topology_description_type.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opt_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_clone.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_get_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_get_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_get_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_set_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_set_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_transaction_opts_set_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_update_flags_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_auth_mechanism.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_auth_source.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_compressors.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_database.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_hosts.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_mechanism_properties.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_option_as_bool.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_option_as_int32.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_option_as_utf8.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_options.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_password.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_read_prefs.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_read_prefs_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_replica_set.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_service.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_ssl.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_string.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_username.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_get_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_new_for_host_port.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_new_with_error.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_option_is_bool.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_option_is_int32.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_option_is_utf8.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_auth_mechanism.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_auth_source.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_compressors.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_database.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_mechanism_properties.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_option_as_bool.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_option_as_int32.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_option_as_utf8.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_password.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_read_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_read_prefs_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_username.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_set_write_concern.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_uri_unescape.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_version.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_append.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_copy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_destroy.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_get_fsync.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_get_journal.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_get_w.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_get_wmajority.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_get_wtag.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_get_wtimeout.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_is_acknowledged.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_is_default.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_is_valid.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_journal_is_set.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_new.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_set_fsync.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_set_journal.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_set_w.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_set_wmajority.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_set_wtag.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_set_wtimeout.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/mongoc_write_concern_t.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/static/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/static/msvc-add-dependencies-static.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/static/msvc-add-dependencies.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/static/msvc-add-include-directories.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/static/msvc-create-project.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/static/msvc-set-path.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/static/msvc-switch-architecture.png delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/tutorial.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/visual-studio-guide.rst delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/aggregation/aggregation1.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/basic_aggregation/basic-aggregation.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/basic_aggregation/constants.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/basic_aggregation/distinct.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/basic_aggregation/map-reduce-advanced.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/basic_aggregation/map-reduce-basic.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/bulk/bulk-collation.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/bulk/bulk1.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/bulk/bulk2.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/bulk/bulk3.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/bulk/bulk4.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/bulk/bulk5.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/bulk/bulk6.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/cmake/find_package/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/cmake/find_package_static/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/common_operations/clone-collection.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/common_operations/common-operations.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/common_operations/copydb.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/common_operations/explain.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/compile-with-pkg-config-static.sh delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/compile-with-pkg-config.sh delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/doc-common-insert.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-client.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-collection-watch.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-command-monitoring.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-command-with-opts.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-create-indexes.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-gridfs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-pool.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-resume.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-scram.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-sdam-monitoring.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-session.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-start-at-optime.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-transaction.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/example-update.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/find-and-modify.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/find_and_modify_with_opts/fam.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/hello_mongoc.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/mongoc-dump.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/mongoc-ping.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/examples/mongoc-tail.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/libmongoc-1.0.pc.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/libmongoc-ssl-1.0.pc.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/libmongoc-static-1.0.pc.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/forwarding/mongoc.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/modules/module.modulemap.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-apm-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-apm.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-apm.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-array-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-array.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-async-cmd-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-async-cmd.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-async-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-async.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-buffer-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-buffer.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-bulk-operation-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-bulk-operation.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-bulk-operation.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-change-stream-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-change-stream.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-change-stream.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client-pool-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client-pool.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client-pool.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client-session-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client-session.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client-session.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-client.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-cyrus-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-cyrus.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-gssapi-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-gssapi.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-sasl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-sasl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-sspi-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster-sspi.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cluster.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cmd-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cmd.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-collection-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-collection.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-collection.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-compression-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-compression.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-config.h.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-counters-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-counters.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-counters.defs delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto-cng-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto-cng.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto-openssl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-crypto.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-array.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-cmd-deprecated.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-cmd.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-find-cmd.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-find-opquery.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-find.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-legacy.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cursor.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cyrus-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-cyrus.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-database-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-database.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-database.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-errno-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-error.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-error.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-find-and-modify-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-find-and-modify.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-find-and-modify.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-flags.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file-list-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file-page-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-file.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gridfs.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gssapi-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-gssapi.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-handshake-compiler-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-handshake-os-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-handshake-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-handshake.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-handshake.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-host-list-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-host-list.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-host-list.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-index.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-index.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-init.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-init.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-iovec.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-libressl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-libressl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-list-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-list.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-log-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-log.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-log.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-macros.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-matcher-op-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-matcher-op.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-matcher-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-matcher.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-matcher.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-memcmp-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-memcmp.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-opcode.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-openssl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-openssl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-opts-helpers-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-opts-helpers.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-opts-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-opts.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-queue-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-queue.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-rand-cng.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-rand-common-crypto.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-rand-openssl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-rand-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-rand.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-read-concern-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-read-concern.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-read-concern.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-read-prefs-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-read-prefs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-read-prefs.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-rpc-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-rpc.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-sasl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-sasl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-scram-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-scram.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-secure-channel.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-secure-transport-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-secure-transport.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-server-description-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-server-description.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-server-description.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-server-stream-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-server-stream.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-set-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-set.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-socket-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-socket.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-socket.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-ssl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-ssl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-ssl.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-sspi-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-sspi.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-buffered.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-buffered.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-file.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-file.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-gridfs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-gridfs.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-socket.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-socket.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream-tls.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-stream.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-thread-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-description-apm-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-description-apm.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-description-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-description.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-description.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-scanner-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology-scanner.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-topology.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-trace-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-uri-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-uri.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-uri.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-util-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-util.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-version-functions.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-version-functions.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-version.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-version.h.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-write-command-legacy-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-write-command-legacy.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-write-command-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-write-command.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-write-concern-private.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-write-concern.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc-write-concern.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/mongoc.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-compressed.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-delete.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-get-more.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-header.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-insert.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-kill-cursors.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-msg.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-query.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-reply-header.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-reply.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/op-update.def delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/src/mongoc/utlist.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/TestSuite.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/TestSuite.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/delete1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/empty.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/get_more1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/gridfs-large.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/gridfs.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/insert1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/kill_cursors1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/msg1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/query1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/query2.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/reply1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/reply2.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/binary/update1.dat delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/debug-stream.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json-test-monitoring.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json-test-monitoring.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json-test-operations.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json-test-operations.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json-test.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json-test.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/auth/connection-string.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/change_streams/change-streams-errors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/change_streams/change-streams.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/bulkWrite.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/command.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/deleteMany.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/deleteOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/find.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/insertMany.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/insertOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/unacknowledgedBulkWrite.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/updateMany.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/command_monitoring/updateOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/additional-nonspec-tests.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/invalid-uris.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/valid-auth.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/valid-db-with-dotted-name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/valid-host_identifiers.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/valid-options.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/valid-unix_socket-absolute.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/valid-unix_socket-relative.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/connection_uri/valid-warnings.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/aggregate-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/aggregate-out.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/aggregate.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/count-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/count.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/distinct-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/distinct.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/find-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/read/find.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/bulkWrite-arrayFilters.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/deleteMany-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/deleteMany.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/deleteOne-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/deleteOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndDelete-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndDelete.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndReplace-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndReplace-upsert.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndReplace.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndUpdate-arrayFilters.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndUpdate-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/findOneAndUpdate.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/insertMany.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/insertOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/replaceOne-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/replaceOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/updateMany-arrayFilters.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/updateMany-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/updateMany.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/updateOne-arrayFilters.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/updateOne-collation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/crud/write/updateOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_auth/dns-auth.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/longer-parent-in-return.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/misformatted-option.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/no-results.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/not-enough-parts.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/one-result-default-port.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/one-txt-record-multiple-strings.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/one-txt-record.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/parent-part-mismatch1.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/parent-part-mismatch2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/parent-part-mismatch3.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/parent-part-mismatch4.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/parent-part-mismatch5.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/returned-parent-too-short.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/returned-parent-wrong.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/two-results-default-port.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/two-results-nonstandard-port.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/two-txt-records.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/txt-record-not-allowed-option.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/txt-record-with-overridden-ssl-option.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/txt-record-with-overridden-uri-option.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/txt-record-with-unallowed-option.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/uri-with-port.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/initial_dns_seedlist_discovery/uri-with-two-hosts.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/Incompatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/Nearest.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/Nearest2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/NoKnownServers.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/Secondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/Incompatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/Nearest.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/Nearest2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/Nearest_tags.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred_incompatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/Secondary_tags.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/Sharded/Incompatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/Sharded/SmallMaxStaleness.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/Single/Incompatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/Single/SmallMaxStaleness.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/Unknown/SmallMaxStaleness.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/max_staleness/supplemental/MissingLastWriteDate.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/read_write_concern/connection-string/read-concern.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/read_write_concern/connection-string/write-concern.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/read_write_concern/document/read-concern.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/read_write_concern/document/write-concern.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/bulkWrite-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/bulkWrite.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/deleteOne-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/deleteOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/findOneAndDelete-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/findOneAndDelete.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/findOneAndReplace-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/findOneAndReplace.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/findOneAndUpdate-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/findOneAndUpdate.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/insertMany-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/insertMany.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/insertOne-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/insertOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/replaceOne-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/replaceOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/retryableErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/updateOne-serverErrors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/retryable_writes/updateOne.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/monitoring/replica_set_with_no_primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/monitoring/replica_set_with_primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/monitoring/replica_set_with_removal.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/monitoring/required_replica_set.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/monitoring/standalone.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/compatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/discover_arbiters.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/discover_passives.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/discover_primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/discover_secondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/discovery.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/equal_electionids.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/ghost_discovered.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/hosts_differ_from_seeds.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/ls_timeout.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/member_reconfig.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/member_standalone.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/new_primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/new_primary_new_electionid.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/new_primary_new_setversion.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/new_primary_wrong_set_name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/non_rs_member.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/normalize_case.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/normalize_case_me.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/null_election_id.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_becomes_standalone.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_changes_set_name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_disconnect.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_disconnect_electionid.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_disconnect_setversion.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_hint_from_secondary_with_mismatched_me.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_mismatched_me.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_reports_new_member.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_to_no_primary_mismatched_me.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/primary_wrong_set_name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/response_from_removed.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/rsother_discovered.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/sec_not_auth.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/secondary_mismatched_me.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/secondary_wrong_set_name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/secondary_wrong_set_name_with_primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/setversion_without_electionid.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/stepdown_change_set_name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/too_new.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/too_old.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/unexpected_mongos.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/use_setversion_without_electionid.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/rs/wrong_set_name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/compatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/ls_timeout_mongos.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/mongos_disconnect.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/multiple_mongoses.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/non_mongos_removed.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/normalize_uri_case.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/too_new.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/sharded/too_old.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/compatible.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/direct_connection_external_ip.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/direct_connection_mongos.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/direct_connection_rsarbiter.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/direct_connection_rsprimary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/direct_connection_rssecondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/direct_connection_slave.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/direct_connection_standalone.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/ls_timeout_standalone.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/not_ok_response.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/standalone_removed.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/too_new.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/too_old.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/single/unavailable_seed.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/supplemental/discover_rs_name.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/supplemental/discover_rs_name_from_primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_discovery_and_monitoring/supplemental/discover_rs_name_from_secondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/rtt/first_value.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/rtt/first_value_zero.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/rtt/value_test_1.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/rtt/value_test_2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/rtt/value_test_3.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/rtt/value_test_4.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/rtt/value_test_5.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Nearest.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Nearest_multiple.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Nearest_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/PossiblePrimary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/PossiblePrimaryNearest.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/PrimaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Secondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Secondary_multi_tags.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Secondary_multi_tags2.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/read/Secondary_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetNoPrimary/write/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/Nearest.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/Nearest_multiple.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/Nearest_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/Primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/PrimaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/Secondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred_tags.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/read/Secondary_non_matching.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/ReplicaSetWithPrimary/write/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/read/Nearest.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/read/Primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/read/PrimaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/read/Secondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/read/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/write/Nearest.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/write/Primary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/write/PrimaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/write/Secondary.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Sharded/write/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Single/read/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Single/write/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Unknown/read/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/server_selection/server_selection/Unknown/write/SecondaryPreferred.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/abort.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/bulk.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/causal-consistency.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/commit.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/delete.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/error-labels.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/errors.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/findOneAndDelete.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/findOneAndReplace.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/findOneAndUpdate.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/insert.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/isolation.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/opts.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/read-pref.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/reads.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/retryable-abort.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/retryable-commit.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/retryable-writes.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/run-command.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/transaction-options.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/update.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/json/transactions/write-concern.json delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/future-functions.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/future-functions.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/future-value.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/future-value.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/future.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/future.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/mock-rs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/mock-rs.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/mock-server.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/mock-server.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/request.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/request.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/sync-queue.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/mock_server/sync-queue.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/empty-file.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/example-etc-fedora-release.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/example-etc-os-release-ubuntu1604.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/example-etc-os-release.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/example-etc-xyz-release-no-delimiter.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/example-key-value-file.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/example-lsb-file-with-super-long-line.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/release_files/example-lsb-file.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/ssl-test.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/ssl-test.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-conveniences.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-conveniences.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-happy-eyeballs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-libmongoc.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-libmongoc.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-array.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-async.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-buffer.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-bulk.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-change-stream.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-client-pool.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-client-session.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-client.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-cluster.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-collection-find-with-opts.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-collection-find.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-collection.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-command-monitoring.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-connection-uri.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-counters.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-crud.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-cursor.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-cyrus.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-database.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-dns.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-error.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-exhaust.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-find-and-modify.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-gridfs-file-page.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-gridfs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-gssapi.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-handshake.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-linux-distro-scanner.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-list.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-log.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-matcher.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-max-staleness.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-opts.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-queue.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-read-concern.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-read-prefs.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-read-write-concern.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-retryable-writes.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-rpc.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-sample-commands.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-scram.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-sdam-monitoring.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-sdam.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-server-selection-errors.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-server-selection.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-set.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-socket.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-stream-tls-error.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-stream-tls.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-stream.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-thread.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-topology-description.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-topology-reconcile.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-topology-scanner.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-topology.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-transactions.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-uri.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-usleep.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-util.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-version.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-write-commands.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-write-concern.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/test-mongoc-x509.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/7750279a.0 delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/altname.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/ca.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/client-private.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/client-public.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/client.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/commonName.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/crl.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/expired.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/legacy-x509.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/password_protected.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/server.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/tests/x509gen/wild.pem delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/tools/CMakeLists.txt delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/tools/mongoc-stat.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/adler32.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/compress.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/crc32.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/crc32.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/deflate.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/deflate.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/gzclose.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/gzguts.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/gzlib.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/gzread.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/gzwrite.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/infback.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/inffast.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/inffast.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/inffixed.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/inflate.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/inflate.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/inftrees.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/inftrees.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/trees.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/trees.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/uncompr.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/zconf.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/zconf.h.in delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/zlib.h delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/zutil.c delete mode 100644 contrib/mongoc/mongo-c-driver-1.13.1/src/zlib-1.2.11/zutil.h diff --git a/.gitmodules b/.gitmodules index 6300379..a36b3c9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,3 +6,7 @@ [submodule "contrib/iniParser/inih"] path = contrib/iniParser/inih url = https://github.com/benhoyt/inih.git +[submodule "contrib/mongoc/mongo-c-driver"] + path = contrib/mongoc/mongo-c-driver + url = https://github.com/mongodb/mongo-c-driver.git + branch = r1.13 diff --git a/contrib/mongoc/SConscript b/contrib/mongoc/SConscript index ec82d2a..92f8d85 100644 --- a/contrib/mongoc/SConscript +++ b/contrib/mongoc/SConscript @@ -5,7 +5,7 @@ Import('globalEnv') env = globalEnv.Clone() -env['MONGOC_1_13_1_PATH'] = os.path.join(env['MONGOCPATH'], 'mongo-c-driver-1.13.1') +env['MONGOC_1_13_1_PATH'] = os.path.join(env['MONGOCPATH'], 'mongo-c-driver') cmake_build_path = os.path.join(env['MONGOC_LIB_PATH'], 'cmake_build') diff --git a/contrib/mongoc/mongo-c-driver b/contrib/mongoc/mongo-c-driver new file mode 160000 index 0000000..5426a2e --- /dev/null +++ b/contrib/mongoc/mongo-c-driver @@ -0,0 +1 @@ +Subproject commit 5426a2ea6e24dbcf1370914263d816463d66cf2a diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/CMakeLists.txt deleted file mode 100644 index 9f315df..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/CMakeLists.txt +++ /dev/null @@ -1,361 +0,0 @@ -cmake_minimum_required (VERSION 3.1) - -# Used in MaintainerFlags.cmake to silence errors while testing configs. -set (MESSAGES_ENABLED 1) - -function (message) - list (GET ARGV 0 MessageType) - if (MESSAGES_ENABLED) - list (REMOVE_AT ARGV 0) - _message (${MessageType} "${ARGV}") - endif () -endfunction () - -set (ENABLE_SSL AUTO CACHE STRING - "Enable TLS connections and SCRAM-SHA-1 authentication. Options are - \"DARWIN\" to use Apple's Secure Transport, \"WINDOWS\" to use Windows - Secure Channel, \"OPENSSL\", \"LIBRESSL\", \"AUTO\",\ or \"OFF\". These options are - case-sensitive. The default is \"AUTO\". Note\ that SCRAM-SHA-1 is - required for authenticating to MongoDB 3.0 and later.") - -set (ENABLE_SASL AUTO CACHE STRING - "Enable SASL authentication (Kerberos). Options are \"CYRUS\" to use Cyrus - SASL, \"SSPI\" to use Windows Native SSPI, \"GSSAPI\" to use macOS Native GSS, - \"AUTO\",\ or \"OFF\". These options are case-sensitive.") - -set (ENABLE_STATIC AUTO CACHE STRING "Build static libmongoc. Set to ON/AUTO/OFF, default AUTO.") -option (ENABLE_TESTS "Build MongoDB C Driver tests." ON) -option (ENABLE_EXAMPLES "Build MongoDB C Driver examples." ON) -set (ENABLE_SRV AUTO CACHE STRING "Support mongodb+srv URIs. Set to ON/AUTO/OFF, default AUTO.") -option (ENABLE_MAINTAINER_FLAGS "Use strict compiler checks" OFF) -option (ENABLE_AUTOMATIC_INIT_AND_CLEANUP "Enable automatic init and cleanup (GCC only)" ON) -option (ENABLE_CRYPTO_SYSTEM_PROFILE "Use system crypto profile (OpenSSL only)" OFF) -option (ENABLE_TRACING "Turn on verbose debug output" OFF) -option (ENABLE_COVERAGE "Turn on compile options for lcov" OFF) -set (ENABLE_SHM_COUNTERS AUTO CACHE STRING "Enable memory performance counters that use shared memory on Linux. Set to ON/AUTO/OFF, default AUTO.") -set (ENABLE_MONGOC ON CACHE STRING "Whether to build libmongoc. Set to ON/OFF, default ON.") -set (ENABLE_BSON AUTO CACHE STRING "Whether to build libbson. Set to ON/AUTO/SYSTEM, default AUTO.") -set (ENABLE_SNAPPY AUTO CACHE STRING "Enable snappy support. Set to ON/AUTO/OFF, default AUTO.") -set (ENABLE_ZLIB AUTO CACHE STRING "Enable zlib support") -option (ENABLE_MAN_PAGES "Build MongoDB C Driver manual pages." OFF) -option (ENABLE_HTML_DOCS "Build MongoDB C Driver HTML documentation." OFF) -option (ENABLE_EXTRA_ALIGNMENT - "Turn on extra alignment of libbson types. Set to ON/OFF, default ON.\ - Required for the 1.0 ABI but better disabled." - ON -) -option (ENABLE_RDTSCP - "Fast performance counters on Intel using the RDTSCP instruction" - OFF -) -option (ENABLE_APPLE_FRAMEWORK "Build libraries as frameworks on darwin platforms" OFF) -set (ENABLE_ICU AUTO CACHE STRING "Enable ICU support, necessary to use non-ASCII usernames or passwords, default AUTO.") -option (ENABLE_UNINSTALL "Enable creation of uninstall script and associate uninstall build target." ON) - -project (mongo-c-driver C) - -if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE "RelWithDebInfo") - message ( - STATUS "No CMAKE_BUILD_TYPE selected, defaulting to ${CMAKE_BUILD_TYPE}" - ) -endif () - -set (CMAKE_MODULE_PATH - ${CMAKE_MODULE_PATH} - ${PROJECT_SOURCE_DIR}/build/cmake - ${PROJECT_SOURCE_DIR}/build/cmake/make_dist -) - -include (InstallRequiredSystemLibraries) -include (GNUInstallDirs) - -# Set MONGOC_MAJOR_VERSION, MONGOC_MINOR_VERSION, etc. -include (LoadVersion) -LoadVersion (${PROJECT_SOURCE_DIR}/VERSION_CURRENT MONGOC) -LoadVersion (${PROJECT_SOURCE_DIR}/VERSION_RELEASED MONGOC_RELEASED) - -include (MaintainerFlags) - -if ( (ENABLE_BUILD_DEPENDECIES STREQUAL OFF) AND (NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) ) - set (ENABLE_BUILD_DEPENDECIES ON) -endif () - -if (ENABLE_EXTRA_ALIGNMENT STREQUAL ON) - set (BSON_EXTRA_ALIGN 1) -else () - set (BSON_EXTRA_ALIGN 0) -endif () - -if (ENABLE_RDTSCP) - set (MONGOC_ENABLE_RDTSCP 1) -else () - set (MONGOC_ENABLE_RDTSCP 0) -endif () - -if (NOT ENABLE_MONGOC MATCHES "ON|OFF") - message (FATAL_ERROR "ENABLE_MONGOC option must be ON or OFF") -endif () - -if (NOT ENABLE_BSON MATCHES "ON|AUTO|SYSTEM") - message (FATAL_ERROR "ENABLE_BSON option must be ON, AUTO, or SYSTEM") -endif () - -if (ENABLE_BSON STREQUAL SYSTEM) - # The input variable BSON_ROOT_DIR is respected for backwards compatibility, - # but you should use the standard CMAKE_PREFIX_PATH instead. - message (STATUS "Searching for libbson CMake packages") - find_package (libbson-1.0 - "${MONGOC_MAJOR_VERSION}.${MONGOC_MINOR_VERSION}.${MONGOC_MICRO_VERSION}" - HINTS - ${BSON_ROOT_DIR}) - - if (ENABLE_BSON STREQUAL SYSTEM AND NOT BSON_LIBRARIES) - message (FATAL_ERROR "System libbson not found") - endif () - - if (BSON_LIBRARIES) - message ("-- libbson found version \"${BSON_VERSION}\"") - message ("-- libbson include path \"${BSON_INCLUDE_DIRS}\"") - message ("-- libbson libraries \"${BSON_LIBRARIES}\"") - message ("-- disabling test-libmongoc since using system libbson") - SET (ENABLE_TESTS OFF) - - if (ENABLE_STATIC MATCHES "ON|AUTO") - find_package (libbson-static-1.0 - "${MONGOC_MAJOR_VERSION}.${MONGOC_MINOR_VERSION}.${MONGOC_MICRO_VERSION}" - HINTS - ${BSON_ROOT_DIR}) - - if (ENABLE_STATIC STREQUAL ON AND NOT BSON_STATIC_LIBRARY) - message (FATAL_ERROR "Static libbson not found. Pass -DENABLE_STATIC=OFF") - endif () - - if (BSON_STATIC_LIBRARY) - set (MONGOC_ENABLE_STATIC ON) - endif () - - message ("-- libbson-static found version \"${BSON_STATIC_VERSION}\"") - message ("-- libbson-static include path \"${BSON_STATIC_INCLUDE_DIRS}\"") - message ("-- libbson-static libraries \"${BSON_STATIC_LIBRARIES}\"") - endif () - endif () -endif () - -unset (dist_generated CACHE) -unset (dist_generated_depends CACHE) - -set (BUILD_SOURCE_DIR ${CMAKE_BINARY_DIR}) - -include (MakeDistFiles) - -# Ensure the default behavior: don't ignore RPATH settings. -set (CMAKE_SKIP_BUILD_RPATH OFF) - -# Ensure the default behavior: don't use the final install destination as the -# temporary RPATH for executables (ensure we can run tests and programs from -# the build directory). -set (CMAKE_BUILD_WITH_INSTALL_RPATH OFF) - -# Include any custom library paths in the final RPATH. -set (CMAKE_INSTALL_RPATH_USE_LINK_PATH ON) - -# Install libs with names like @rpath/libmongoc-1.0.0.dylib, not bare names. -set (CMAKE_MACOSX_RPATH ON) - -# https://cmake.org/cmake/help/v3.11/policy/CMP0042.html -# Enable a CMake 3.0+ policy that sets CMAKE_MACOSX_RPATH by default, and -# silence a CMake 3.11 warning that the old behavior is deprecated. -cmake_policy (SET CMP0042 NEW) - -if (NOT BSON_LIBRARIES) - message (" -- Using bundled libbson") - if (ENABLE_STATIC MATCHES "ON|AUTO") - set (MONGOC_ENABLE_STATIC ON) - endif () - add_subdirectory (src/libbson) - # Defined in src/libbson/CMakeLists.txt - set (BSON_STATIC_LIBRARIES bson_static) - set (BSON_LIBRARIES bson_shared) - set (BSON_STATIC_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/libbson/src" "${PROJECT_BINARY_DIR}/src/libbson/src") - set (BSON_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/libbson/src" "${PROJECT_BINARY_DIR}/src/libbson/src") - set (BSON_STATIC_DEFINITIONS "BSON_STATIC") -endif () - -if (MSVC) - add_definitions (-D_CRT_SECURE_NO_WARNINGS) -endif () - -add_definitions (-D_GNU_SOURCE) -add_definitions (-D_BSD_SOURCE) -add_definitions (-D_DEFAULT_SOURCE) - -if (ENABLE_MONGOC) - - if (ENABLE_TESTS AND NOT MONGOC_ENABLE_STATIC) - message (FATAL_ERROR "ENABLE_TESTS requires ENABLE_STATIC") - endif () - - if (NOT ENABLE_SSL MATCHES "DARWIN|WINDOWS|OPENSSL|LIBRESSL|AUTO|OFF") - message (FATAL_ERROR - "ENABLE_SSL option must be DARWIN, WINDOWS, OPENSSL, LIBRESSL, AUTO, or OFF") - endif () - - set (SOURCE_DIR "${PROJECT_SOURCE_DIR}/") - - set (ZLIB_SOURCES - ${SOURCE_DIR}/src/zlib-1.2.11/adler32.c - ${SOURCE_DIR}/src/zlib-1.2.11/crc32.c - ${SOURCE_DIR}/src/zlib-1.2.11/deflate.c - ${SOURCE_DIR}/src/zlib-1.2.11/infback.c - ${SOURCE_DIR}/src/zlib-1.2.11/inffast.c - ${SOURCE_DIR}/src/zlib-1.2.11/inflate.c - ${SOURCE_DIR}/src/zlib-1.2.11/inftrees.c - ${SOURCE_DIR}/src/zlib-1.2.11/trees.c - ${SOURCE_DIR}/src/zlib-1.2.11/zutil.c - ${SOURCE_DIR}/src/zlib-1.2.11/compress.c - ${SOURCE_DIR}/src/zlib-1.2.11/uncompr.c - ${SOURCE_DIR}/src/zlib-1.2.11/gzclose.c - ${SOURCE_DIR}/src/zlib-1.2.11/gzlib.c - ${SOURCE_DIR}/src/zlib-1.2.11/gzread.c - ${SOURCE_DIR}/src/zlib-1.2.11/gzwrite.c - ) - - set (MONGOC_ENABLE_ICU 0) - - set (CPACK_RESOURCE_FILE_LICENSE "${SOURCE_DIR}/COPYING") - - include (CPack) - - # Ensure the default behavior: don't ignore RPATH settings. - set (CMAKE_SKIP_BUILD_RPATH OFF) - - if (APPLE) - # Until CDRIVER-520. - add_definitions (-Wno-deprecated-declarations) - endif () - - add_subdirectory (src/libmongoc) - - if (ENABLE_MAN_PAGES STREQUAL ON OR ENABLE_HTML_DOCS STREQUAL ON) - find_package (Sphinx REQUIRED) - add_custom_target (doc - ALL - DEPENDS - $<$:bson-doc> - $<$:mongoc-doc> - ) - endif () - - # Implement 'dist' and 'distcheck' targets - # - # CMake does not implement anything like 'dist' and 'distcheck' from autotools. - # This implementation is based on the one in GnuCash. - - add_subdirectory (build) - # sub-directory 'doc' was already included above - add_subdirectory (orchestration_configs) - add_subdirectory (src) - # 'src/libbson' was already included, so 'src' will not include it directly - # 'src/libmongoc' was already included, so 'src' will not include it directly - - set (PACKAGE_PREFIX "mongo-c-driver-${MONGOC_VERSION}") - set (DIST_FILE "${PACKAGE_PREFIX}.tar.gz") - - set (top_DIST_local - CMakeLists.txt - CONTRIBUTING.md - COPYING - NEWS - README.rst - THIRD_PARTY_NOTICES - VERSION_CURRENT - VERSION_RELEASED - # This sub-directory is added later, so manually include here - generate_uninstall/CMakeLists.txt - ) - - set_local_dist (top_DIST ${top_DIST_local}) - - set (ALL_DIST - ${top_DIST} - ${build_DIST} - ${orchestration_configs_DIST} - ${src_DIST} - ${src_libbson_DIST} - ${src_libmongoc_DIST} - ) - - # Write a dist manifest - string (REPLACE ";" "\n" ALL_DIST_LINES "${ALL_DIST}") - file (WRITE ${CMAKE_BINARY_DIR}/dist_manifest.txt ${ALL_DIST_LINES}) - - # This is the command that produces the distribution tarball - add_custom_command (OUTPUT ${DIST_FILE} - COMMAND ${CMAKE_COMMAND} - -D CMAKE_MODULE_PATH=${PROJECT_SOURCE_DIR}/build/cmake/make_dist - -D PACKAGE_PREFIX=${PACKAGE_PREFIX} - -D MONGOC_SOURCE_DIR=${CMAKE_SOURCE_DIR} - -D BUILD_SOURCE_DIR=${BUILD_SOURCE_DIR} - -D SHELL=${SHELL} - "-Ddist_generated=\"${dist_generated}\"" - -P ${PROJECT_SOURCE_DIR}/build/cmake/make_dist/MakeDist.cmake - - DEPENDS - ${ALL_DIST} ${dist_generated_depends} - ) - - if (ENABLE_BSON MATCHES "ON|AUTO" AND ENABLE_MAN_PAGES STREQUAL ON AND ENABLE_HTML_DOCS STREQUAL ON) - # Since our 'dist' implementation does not add top-level targets for every - # file to be included, we declare a dependency on the 'mongo-doc' target so - # that documentation is built before the distribution tarball is generated. - add_custom_target (dist DEPENDS doc ${DIST_FILE}) - - add_custom_target (distcheck DEPENDS dist - COMMAND ${CMAKE_COMMAND} - -D CMAKE_MODULE_PATH=${PROJECT_SOURCE_DIR}/build/cmake/make_dist - -D CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} - -D PACKAGE_PREFIX=${PACKAGE_PREFIX} - -D CMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -D CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} - -P ${PROJECT_SOURCE_DIR}/build/cmake/make_dist/MakeDistCheck.cmake - ) - else () - string (CONCAT DISTERRMSG - "The dist and distcheck targets disabled. Set ENABLE_BSON=ON, " - "ENABLE_MAN_PAGES=ON, and ENABLE_HTML_DOCS=ON to enable." - ) - - add_custom_target (dist - COMMAND ${CMAKE_COMMAND} -E echo "${DISTERRMSG}" - ) - - add_custom_target (distcheck - COMMAND ${CMAKE_COMMAND} -E echo "${DISTERRMSG}" - ) - endif () - -endif () - -if (ENABLE_UNINSTALL) - if (WIN32) - if (ENABLE_MONGOC) - set (UNINSTALL_PROG "uninstall.cmd") - else () - set (UNINSTALL_PROG "uninstall-bson.cmd") - endif () - else () - if (ENABLE_MONGOC) - set (UNINSTALL_PROG "uninstall.sh") - else () - set (UNINSTALL_PROG "uninstall-bson.sh") - endif () - endif () - set (UNINSTALL_PROG_DIR "${CMAKE_INSTALL_DATADIR}/mongo-c-driver") - - # Create uninstall program and associated uninstall target - # - # This needs to be last (after all other add_subdirectory calls) to ensure that - # the generated uninstall program is complete and correct - add_subdirectory (generate_uninstall) -endif () diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/CONTRIBUTING.md b/contrib/mongoc/mongo-c-driver-1.13.1/CONTRIBUTING.md deleted file mode 100644 index c8abbef..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/CONTRIBUTING.md +++ /dev/null @@ -1,258 +0,0 @@ -# Contributing to mongo-c-driver - -Thanks for considering contributing to the mongo-c-driver! - -This document intends to be a short guide to helping you contribute to the codebase. -It expects a familiarity with the C programming language and writing portable software. -Whenever in doubt, feel free to ask others that have contributed or look at the existing body of code. - - -## Guidelines - -The mongo-c-driver has a few guidelines that help direct the process. - - -### Portability - -mongo-c-driver is portable software. It needs to run on a multitude of -operating systems and architectures. - - * Linux (RHEL 5 and newer) - * FreeBSD (10 and newer) - * Windows (Vista and newer) - * macOS (10.8 and newer) - * ARM/SPARC/x86/x86_64 - - -### Licensing - -Some of the mongo-c-driver users embed the library statically in their -products. Therefore, the driver and all contributions must be liberally -licensed. As a policy, we have chosen Apache 2.0 as the license for the -project. - - -### Coding Style - -We try not to be pedantic with taking contributions that are not properly -formatted, but we will likely perform a followup commit that cleans things up. -The basics are, in vim: - -``` - : set ts=3 sw=3 et -``` - -3 space tabs, insert spaces instead of tabs. - -For all the gory details, see [.clang-format](.clang-format) - -### Adding a new error code or domain - -When adding a new error code or domain, you must do the following. This is most -applicable if you are adding a new symbol with a bson_error_t as a parameter, -and the existing codes or domains are inappropriate. - - - Add the domain to `mongoc_error_domain_t` in `src/mongoc/mongoc-error.h` - - Add the code to `mongoc_error_code_t` in `src/mongoc/mongoc-error.h` - - Add documentation for the domain or code to the table in `doc/mongoc_errors.rst` - -### Adding a new symbol - -This should be done rarely but there are several things that you need to do -when adding a new symbol. - - - Add documentation for the new symbol in `doc/mongoc_your_new_symbol_name.rst` - -### Documentation - -We strive to document all symbols. See doc/ for documentation examples. If you -add a new public function, add a new .rst file describing the function so that -we can generate man pages and HTML for it. - -For complex internal functions, comment above the function definition with -a block comment like the following: - -``` -/*-------------------------------------------------------------------------- - * - * mongoc_cmd_parts_append_read_write -- - * - * Append user-supplied options to @parts->command_extra, taking the - * selected server's max wire version into account. - * - * Return: - * True if the options were successfully applied. If any options are - * invalid, returns false and fills out @error. In that case @parts is - * invalid and must not be used. - * - * Side effects: - * May partly apply options before returning an error. - * - *-------------------------------------------------------------------------- - */ -``` - -Public functions do not need these comment blocks, since they are documented in -the .rst files. - - -### Testing - -To run the entire test suite, including authentication tests, -start `mongod` with auth enabled: - -``` -$ mongod --auth -``` - -In another terminal, use the `mongo` shell to create a user: - -``` -$ mongo --eval "db.createUser({user: 'admin', pwd: 'pass', roles: ['root']})" admin -``` - -Authentication in MongoDB 3.0 and later uses SCRAM-SHA-1, which in turn -requires a driver built with SSL. - -Set the user and password environment variables, then build and run the tests: - -``` -$ export MONGOC_TEST_USER=admin -$ export MONGOC_TEST_PASSWORD=pass -$ ./test-libmongoc -``` - -Additional environment variables: - -* `MONGOC_TEST_HOST`: default `localhost`, the host running MongoDB. -* `MONGOC_TEST_PORT`: default 27017, MongoDB's listening port. -* `MONGOC_TEST_URI`: override both host and port with a full connection string, - like "mongodb://server1,server2". -* `MONGOC_TEST_SERVER_LOG`: set to `stdout` or `stderr` for wire protocol - logging from tests that use `mock_server_t`. Set to `json` to include these - logs in the test framework's JSON output, in a format compatible with - [Evergreen](https://github.com/evergreen-ci/evergreen). -* `MONGOC_TEST_MONITORING_VERBOSE`: set to `on` for verbose output from - Application Performance Monitoring tests. -* `MONGOC_TEST_COMPRESSORS=snappy,zlib`: wire protocol compressors to use - -If you start `mongod` with SSL, set these variables to configure how -`test-libmongoc` connects to it: - -* `MONGOC_TEST_SSL`: set to `on` to connect to the server with SSL. -* `MONGOC_TEST_SSL_PEM_FILE`: path to a client PEM file. -* `MONGOC_TEST_SSL_PEM_PWD`: the PEM file's password. -* `MONGOC_TEST_SSL_CA_FILE`: path to a certificate authority file. -* `MONGOC_TEST_SSL_CA_DIR`: path to a certificate authority directory. -* `MONGOC_TEST_SSL_CRL_FILE`: path to a certificate revocation list. -* `MONGOC_TEST_SSL_WEAK_CERT_VALIDATION`: set to `on` to relax the client's - validation of the server's certificate. - -The SASL / GSSAPI / Kerberos tests are skipped by default. To run them, set up a -separate `mongod` with Kerberos and set its host and Kerberos principal name -as environment variables: - -* `MONGOC_TEST_GSSAPI_HOST` -* `MONGOC_TEST_GSSAPI_USER` - -URI-escape the username, for example write "user@realm" as "user%40realm". -The user must be authorized to query `kerberos.test`. - -MongoDB 3.2 adds support for readConcern, but does not enable support for -read concern majority by default. mongod must be launched using -`--enableMajorityReadConcern`. -The test framework does not (and can't) automatically discover if this option was -provided to MongoDB, so an additional variable must be set to enable these tests: - -* `MONGOC_ENABLE_MAJORITY_READ_CONCERN` - -Set this environment variable to `on` if MongoDB has enabled majority read concern. - -Some tests require Internet access, e.g. to check the error message when failing -to open a MongoDB connection to example.com. Skip them with: - -* `MONGOC_TEST_OFFLINE=on` - -Some tests require a running MongoDB server. Skip them with: - -* `MONGOC_TEST_SKIP_LIVE=on` - -For quick checks during development, disable long-running tests: - -* `MONGOC_TEST_SKIP_SLOW=on` - -Some tests run against a local mock server, these can be skipped with: - -* `MONGOC_TEST_SKIP_MOCK=on` - -If you have started with MongoDB with `--ipv6`, you can test IPv6 with: - -* `MONGOC_CHECK_IPV6=on` - -The tests for mongodb+srv:// connection strings require some setup, see the -Initial DNS Seedlist Discovery Spec. By default these connection strings are -NOT tested, enable them with: - -* `MONGOC_TEST_DNS=on` - -The mock server timeout threshold for future functions can be set with: - -* `MONGOC_TEST_FUTURE_TIMEOUT_MS=` - -This is useful for debugging, so future calls don't timeout when stepping through code. - -All tests should pass before submitting a patch. - -## Configuring the test runner - -The test runner can be configured with command-line options. Run `test-libmongoc ---help` for details. - -To run just a specific portion of the test suite use the -l option like so: - -``` -$ ./test-libmongoc -l "/server_selection/*" -``` - -The full list of tests is shown in the help. - -## Creating and checking a distribution tarball - -The `make distcheck` command can be used to confirm that any modifications are -able to be packaged into the distribution tarball and that the resulting -distribution tarball can be used to successfully build the project. - -A failure of the `make distcheck` target is an indicator of an oversight in the -modification to the project. For example, if a new source file is added to the -project but it is not added to the proper distribution list, it is possible that -the distribution tarball will be created without that file. An attempt to build -the project without the file is likely to fail. - -When `make distcheck` is invoked, several things happen. The `dist` target is -executed to create a distribution tarball. Then the tarball is unpacked, -configured (with an invocation of `cmake`), built (by calling `make`), installed -(by calling `make install`), and tested (by calling `make check`). Three -environment variables can be used to modify these steps. - -To adjust the options passed to `make` during the build step, set: - -* `DISTCHECK_BUILD_OPTS` - -If this variable is not set, then `make` is called with a default of "-j 8". - -To adjust the options passed to `make install` during the installation step, -set: - -* `DISTCHECK_INSTALL_OPTS` - -To adjust the options passed to `make check` during the test step, set: - -* `DISTCHECK_CHECK_OPTS` - -Remember, if you want to modify the top-level `make` invocation, you will need -to pass options on the command line as normal. - -For example, the command `make -j 6 distcheck DISTCHECK_BUILD_OPTS="-j 4"` will -call the standard sequence of targets depended upon by `distcheck` with a -parallelism level of 6, while the build step that is later called by the -`distcheck` target will be executed with a parallelism level of 4. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/COPYING b/contrib/mongoc/mongo-c-driver-1.13.1/COPYING deleted file mode 100644 index f433b1a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/COPYING +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/NEWS b/contrib/mongoc/mongo-c-driver-1.13.1/NEWS deleted file mode 100644 index 22d752b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/NEWS +++ /dev/null @@ -1,2413 +0,0 @@ -mongo-c-driver 1.13.1 -===================== - -It is my pleasure to announce the MongoDB C Driver 1.13.1. - -Bug fixes: - - * mongoc_collection_update_many and mongoc_collection_delete_many would fail - with the URI option retryWrites=true. - * Remove timestamp from uninstall scripts to permit reproducible build. - * Add missing header files to the release tarball to fix compilation when - configuring with ENABLE_SASL=GSSAPI. - * Separate libmongoc and libbson uninstall scripts so they do not overwrite - each other. - * Fix running make install with DESTDIR. - -Thanks to everyone who contributed to the development of this release. - - * Kevin Albertson - * A. Jesse Jiryu Davis - * Henrik Edin - -Peace, - - Kevin Albertson - - -mongo-c-driver 1.13.0 -===================== - -It is my pleasure to announce the MongoDB C Driver 1.13.0. - -Features: - - * Report a new error code, MONGOC_ERROR_GRIDFS_CORRUPT, when a chunk larger - than chunkSize is detected. Before, the driver had crashed with an assert. - * Restructure of install directory. All mongoc headers are under mongoc/ - and all bson headers are under bson/. The preferred way of including the - headers are mongoc/mongoc.h and bson/bson.h respectively. - Forwarding headers in the root are provided for backwards compatibility. - * The default CMake build type had been unspecified, now it is RelWithDebInfo. - * Support LibreSSL 2.7+. - -Bug fixes: - - * mongoc_collection_replace_one is now a correctly exported symbol. - * Fix multiple issues with readConcern and writeConcern inheritance. - * Fix rare crash with mongodb+srv URIs on Windows. - * mongoc_gridfs_create_file_from_stream ignored errors while writing chunks - to the server. - * The following functions should not have taken a "bypassDocumentValidation" - option in bson_t *opts, the option is now prohibited: - - mongoc_bulk_operation_insert_with_opts - - mongoc_bulk_operation_update_one_with_opts - - mongoc_bulk_operation_update_many_with_opts - - mongoc_bulk_operation_replace_one_with_opts - * The heartbeat-succeeded and heartbeat-failed events (part of SDAM - Monitoring) had uninitialized "duration" fields, they are now set correctly. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Roberto C. Sánchez - * Kevin Albertson - * Henrik Edin - * Spencer McKenney - * Jeremy Mikola - * Evgeni Dobranov - * Tomas Mozes - * Derick Rethans - * Gustaf Neumann - * Jeroen - * Jeroen Ooms - * Kaitlin Mahar - -Peace, - - Kevin Albertson - - -mongo-c-driver 1.12.0 -===================== - -It is my pleasure to announce the MongoDB C Driver 1.12.0. - -Features: - - * New function mongoc_client_session_in_transaction to check if a multi- - document transaction is started. - * New examples for change streams and transactions, improved guide for - migrating from mongoc_collection_count to mongoc_collection_count_documents - -Bug fixes: - - * Fix occasional crash in sharded queries - * Retry all retryable write concern errors - * mongoc_client_session_commit_transaction sets the correct error label when - the primary is unavailable - * mongoc_collection_find_with_opts had prohibited read preference "primary" - in a transaction - * mongoc_collection_aggregate had not inherited its mongoc_collection_t's - read preference; only an explicitly provided read preference was used. - * Allow unencoded delimiters in username/password if unambiguous - -Thanks to everyone who contributed to the development of this release. - - * Roberto C. Sánchez - * A. Jesse Jiryu Davis - * Kevin Albertson - * Spencer McKenney - * Evgeni Dobranov - * Jeremy Mikola - * 平民·寻梦(Pingmin Fenlly Liu) - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.11.0 -===================== - -It is my pleasure to announce the MongoDB C Driver 1.11.0. This release adds -support for MongoDB 4.0 features. It includes the following additions and -improvements: - - * Multi-document transactions, see mongoc_client_session_start_transaction - * New function mongoc_error_has_label to check for specific error labels such - as "TransientTransactionError" or "UnknownTransactionCommitResult" in - error replies. - * New functions to subscribe to changes on an entire client or database: - - mongoc_client_watch - - mongoc_database_watch - * New option for change streams, "startAtOperationTime". - * mongoc_collection_count_with_opts is deprecated for two new functions: - - mongoc_collection_count_documents - - mongoc_collection_estimated_document_count - * Support for SCRAM-SHA-256 authentication, including support for non-ASCII - passwords using libicu is an optional dependency. - * Faster mongoc_database_get_collection_names_with_opts fetches only names, - not the entire collection metadata. - -Additional changes not specific to MongoDB 4.0: - - * All "destroy" functions such as mongoc_collection_destroy now ignore a NULL - argument. - * The driver now returns an error if you attempt to use "arrayFilters" in an - update with a MongoDB server older than 3.6. - * Update functions include a new "upsertedCount" field in the reply document. - * Replace MD5 with FNV-1a hash to generate ObjectIds (for FIPS compliance). - -Bug fixes: - - * Functions incorrectly marked with the "const" compiler attribute are now - marked as "pure", fixes build error when link-time optimization is enabled. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Kevin Albertson - * Evgeni Dobranov - * Spencer McKenney - * Jeremy Mikola - * Roberto C. Sánchez - * Remi Collet - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.10.3 -===================== - -No change since 1.10.2; released to keep pace with libbson's version. - --- A. Jesse Jiryu Davis - - -mongo-c-driver 1.10.2 -===================== - -It is my pleasure to announce the MongoDB C Driver 1.10.2. This release fixes -the libbson and libmongoc installed library filenames and SONAMEs on Linux. -They had changed unintentionally with the switch to CMake in 1.10.0; they are -now consistent with 1.9.x and previous releases. Thanks to Roberto C. Sánchez -for the fix. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.10.1 -===================== - -It is my pleasure to announce the MongoDB C Driver 1.10.1. This release fixes -the following bugs introduced in version 1.10.0: - - * Client sessions were not prohibited with unacknowledged write concern and - mongoc_bulk_operation_execute; now they are prohibited. Client sessions have - been prohibited with all other unacknowledged writes since 1.10. - * The "arrayFilters" update option, new in MongoDB 3.6 and supported since - libmongoc 1.9.0, was inadvertently prohibited by - mongoc_bulk_operation_update_one_with_opts and - mongoc_bulk_operation_update_many_with_opts in 1.10. The option is now - permitted again. - * The mongoc-stat tool for displaying shared counters was disabled on Linux - and not installed; it is now restored. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Jeremy Mikola - * Remi Collet - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.10.0 -===================== - -It is my pleasure to announce MongoDB C Driver 1.10.0. This version drops -support for MongoDB 2.6 and adds the following features and bugfixes: - - * libbson and libmongoc are now maintained in the mongo-c-driver repository, - although they are still built as separate libraries, and libbson can still - be used without libmongoc. - * Building libbson and libmongoc now requires CMake on all platforms. The - Autotools build scripts ("configure" and related scripts) have been deleted. - See the "installing" page for updated instructions, including the new - ENABLE_MONGOC option and changes to the ENABLE_BSON option. - * IPv6 is now fully supported and conforms to RFC-6555. If a hostname has both - IPv4 and IPv6 DNS records, the driver tries connecting with IPv6 first. If a - connection can't be established after 250ms then IPv4 is tried in parallel. - Whichever succeeds connection first cancels the other. The successful DNS - result is cached for 10 minutes. - * If CMake is configured with ENABLE_SSL=AUTO (the default), libmongoc now - uses native TLS libraries on Mac and Windows, and OpenSSL everywhere else. - Before, it would search for OpenSSL on all platforms and only use native - TLS on Mac and Windows as a fallback. - * The driver now handshakes SSL connections to multiple servers in a replica - set or sharded cluster in parallel, so long as it uses OpenSSL or Windows - SChannel. (SSL handshakes with Apple's Secure Transport are still serial.) - A larger receive buffer with SChannel increases performance over slow - connections. - * All functions that accept read concern now prohibit it, if MongoDB is too - old to support it (MongoDB 3.0). - * Client sessions are now prohibited with unacknowledged writes. - * mongoc_collection_find_and_modify_with_opts now prohibits write concern if - MongoDB is too old to support it (MongoDB 3.0). - * Other helper functions for commands that write, now prohibit write concern - if MongoDB is too old to support it (pre-3.4): - mongoc_client_read_write_command_with_opts - mongoc_client_write_command_with_opts - mongoc_collection_read_write_command_with_opts - mongoc_collection_write_command_with_opts - mongoc_database_read_write_command_with_opts - mongoc_database_write_command_with_opts - mongoc_collection_aggregate with $out - mongoc_collection_drop_index_with_opts - mongoc_collection_drop_with_opts - mongoc_collection_rename_with_opts - mongoc_database_drop_with_opts - Write concern behavior is unchanged for regular CRUD functions. - * Setting a negative writeConcern level of -2 or smaller, via the "opts" - parameter to functions that accept BSON options, is now prohibited. The - special "w" values -2 through -4 are only used internally. The deprecated - "w=-1" is still allowed, as a synonym for "w=0". - * The Kerberos URI option authMechanismProperties=CANONICALIZE_HOST_NAME:true - is now implemented with the Windows Kerberos provider, SSPI. - * This repository now includes GDB and LLDB customizations for pretty-printing - bson_t structs as JSON while debugging. See the "debugging" page. - * The internal preprocessor symbol HAVE_STRINGS_H has been renamed - BSON_HAVE_STRINGS_H. If you maintain a handwritten bson-config.h you must - rename this symbol. - * The following helper functions do not work with mongoc_client_session_t, - they are deprecated in favor of running MongoDB commands directly with a - function like mongoc_client_read_command_with_opts: - mongoc_client_get_server_status - mongoc_collection_stats - mongoc_collection_validate - * mongoc_cursor_is_alive is now deprecated for mongoc_cursor_more, which is - functionally equivalent. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Kevin Albertson - * Roberto C. Sánchez - * Jeremy Mikola - * Xiangyu Yao - * Jeroen Ooms - * Derick Rethans - * Kaitlin Mahar - * Pavithra Vetriselvan - * NotSpooky - * Iulian Rotaru - * Katherine Walker - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.9.5 -==================== - -It is my pleasure to announce mongo-c-driver 1.9.5. This release fixes the following bugs: - - * New change streams API functions were not marked extern "C" - * mongoc_collection_watch now accepts a pipeline argument as a BSON array, in - addition to accepting a BSON document with a "pipeline" array field - * Crashes in several change stream error handling paths - * Commands could return false with an empty bson_error_t after a replica set - reconfig - * Network error messages omitted the command name when using OP_MSG - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Kevin Albertson - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.9.4 -==================== - -It is my pleasure to announce mongo-c-driver 1.9.4. This release offers -compatibility with Sphinx 1.7.0 and above and fixes two bugs: - - * Ensure a change stream uses the proper session id while iterating - * Fix a rare crash in pooled mode when a replica set member was disconnected - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Kevin Albertson - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.9.3 -==================== - -It is my pleasure to announce mongo-c-driver 1.9.3. This version fixes a -session-management bug that could cause an authentication error while connected -to MongoDB 3.6+ and iterating a cursor, and it permits the $gleStats modifier -with mongoc_collection_aggregate. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Jeremy Mikola - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.9.2 -==================== - -No change since 1.9.1; released to keep pace with libbson's version number. - --- A. Jesse Jiryu Davis - - -mongo-c-driver 1.9.1 -==================== - -It is my pleasure to announce mongo-c-driver 1.9.1. This release fixes a bug -that caused session ID to be included in authentication and server monitoring -commands. Thanks to Jeremy Mikola for finding and fixing the issue. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.9.0 -==================== - -It is my pleasure to announce mongo-c-driver 1.9.0. This version drops support -for MongoDB 2.4 and adds support for MongoDB 3.6 features: - - * New struct mongoc_change_stream_t to watch a collection for changes. - * New struct mongoc_client_session_t represents a MongoDB 3.6 session, - which supports causal consistency: you are guaranteed to read your writes - and to perform monotonic reads, even when reading from secondaries or in - a sharded cluster. - * New functions that accept flexible options as a BSON document. These - accept a "sessionId" option and any future options. In addition, the - two new "update" functions accept the "arrayFilters" option that is new - in MongoDB 3.6: - mongoc_collection_insert_one - mongoc_collection_insert_many - mongoc_collection_update_one - mongoc_collection_update_many - mongoc_collection_replace_one - mongoc_collection_delete_one - mongoc_collection_delete_many - mongoc_client_command_with_opts - mongoc_database_command_with_opts - mongoc_collection_command_with_opts - mongoc_client_find_databases_with_opts - mongoc_client_get_database_names_with_opts - mongoc_collection_create_bulk_operation_with_opts - mongoc_collection_find_indexes_with_opts - mongoc_database_find_collections_with_opts - mongoc_database_get_collection_names_with_opts - * New URI option "retryWrites=true" safely and automatically retries certain - write operations if the server is a MongoDB 3.6 replica set or sharded - cluster. - * Support for MongoDB OP_MSG wire protocol. - -Additional changes not specific to MongoDB 3.6: - - * Support for mongodb+srv URIs to query DNS for SRV and TXT records that - configure the connection to MongoDB. - * Support LibreSSL with CMake build - * The "minPoolSize" URI option is deprecated: it's confusing and not useful. - -Bug fixes: - - * mongoc_bulk_operation_execute did not always initialize "reply". - * Fix C99 pedantic warnings. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jeremy Mikola - * Kevin Albertson - * Jeroen Ooms - * Iulian Rotaru - * Derick Rethans - * Graham Whitted - * Brian Moss - * Alex Masterov - * Michael Kuhn - * Sriharsha Vardhan - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.8.2 -==================== - -It is my pleasure to announce mongo-c-driver 1.8.2. This release fixes the -following bugs: - - * Remove option to bundle the Snappy compression library, it caused issues - for programs linking to libmongoc - * Fix pkg-config and CMake config file flags for programs that statically - link to libmongoc when libmongoc is statically linked to zLib - * The configure flag "--with-zlib=no" was ignored - Crash in authentication when username is NULL - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Derick Rethans - * Hannes Magnusson - * Jeremy Mikola - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.8.1 -==================== - -It is my pleasure to announce mongo-c-driver 1.8.1. This release fixes the -following bugs: - - * Remove a syntax error in the configure script that affects some shells. - * The configure script respects --with-zlib=system and --with-snappy=system. - * The internal mongoc_server_description_t struct is properly reinitialized - after a network error. - * Fix the encoding of this NEWS file. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Jeremy Mikola - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.8.0 -==================== - - * The zLib and Snappy compression libraries are bundled if not available. - Wire protocol compression is enabled on Windows. - * mongoc_collection_find_and_modify_with_opts now respects a "writeConcern" - field in the "extra" BSON document in its mongoc_find_and_modify_opts_t. - * The command functions mongoc_client_read_write_command_with_opts, - mongoc_database_read_write_command_with_opts, and - mongoc_collection_read_write_command_with_opts now ignore the "read_prefs" - parameter. - * mongoc_collection_create_index and mongoc_collection_create_index_with_opts - are both now deprecated. Use mongoc_database_write_command_with_opts - instead; a guide to creating an index using that function has been added. - * Use select, not WSAPoll, on Windows. - * Always mark a server "Unknown" after a network error (besides a timeout). - * mongoc_client_pool_t sends platform metadata to the server; before, only a - single mongoc_client_t did. - * New stream method mongoc_stream_timed_out. - * Wire version checks introduced in 1.8.0 will prevent the driver from - connecting to a future MongoDB server version if its wire protocol is - incompatible. - * New CMake option ENABLE_MAINTAINER_FLAGS. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jeremy Mikola - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.7.0 -==================== - -It is my pleasure to announce mongo-c-driver 1.7.0. - -New features and bug fixes: - - * CMake build now installs .pc files for programs that link to libmongoc using - pkg-config. Both the CMake and Autotools build systems now install .cmake - files for programs that link to libmongoc using CMake. Linking to libmongoc - statically or dynamically is now much more convenient. See the new tutorial - section "Include and link libmongoc in your C program". - * New CMake option ENABLE_STATIC can be ON, OFF, or AUTO (the default) - * Minimum required CMake version has been increased to 3.1. - * CMake remains experimental on non-Windows platforms and issues a warning now - * Support for wire compression. - * Support for snappy and zlib. MongoDB 3.4 only supports snappy, while zlib - support is expected in MongoDB 3.6. - The enable, configure mongoc like so: - ./configure --with-snappy --with-zlib - * New functions: mongoc_uri_get_compressors & mongoc_uri_set_compressors, to - get and set compressor configuration on mongoc_uri_t - * Added support for comma separated "compressors" connection string option (e.g. - mongodb://localhost/?compressors=snappy,zlib) - * Added support for configuring zlib compression level in the connection string - (e.g. mongodb://localhost/?compressors=zlib&zlibcompressionlevel=8) - * Now requires the use of CMake config files for libbson to build libmongoc - with CMake - * Added pkg-config support for libressl. - * New function mongoc_uri_set_auth_mechanism to update the authentication - mechanism of a mongoc_uri_t after it is created from a string. - * New function mongoc_bulk_operation_insert_with_opts provides immediate - error checking. - * New function mongoc_uri_new_with_error provides a way to parse a connection - string, and retrieve the failure reason, if any. - * Support for MongoDB Connection String specification - * All connection string options are now represented by MONGOC_URI_xxx macros - * Paths to Unix Domain Sockets must be url encoded - * Repeated options now issue warnings - * Special characters in username, password and other values must be url encoded - * Unsupported connection string options now issue warnings - * Boolean values can now be represented as true/yes/y/t/1 and false/no/n/f/0. - * Case is now preserved in Unix domain paths. - * New function mongoc_cursor_error_document provides access to server's error - reply if a query or command fails. - * New function mongoc_write_concern_is_default determines whether any write - concern options have been set, and mongoc_read_concern_is_default checks if - read concern options are set. - * mongoc_gridfs_find_one_with_opts optimized to use limit 1. - -Thanks to everyone who contributed to the development of this release. - - * Hannes Magnusson - * A. Jesse Jiryu Davis - * David Golden - * Jeremy Mikola - * Bernard Spil - * Aleksander Melnikov - * Adam Seering - * Remi Collet - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.6.0 -==================== - -It is my pleasure to announce mongo-c-driver 1.6.0. - -New features and bug fixes: - - * Enterprise authentication on Windows now uses the native GSSAPI library; - Cyrus SASL is no longer required for enterprise auth on Windows. - * BSON documents are more thoroughly validated before insert or update. - * New function mongoc_uri_set_mechanism_properties to replace all the - authMechanismProperties on an existing URI. - * mongoc_uri_get_mechanism_properties asserts its inputs are not NULL. - * For consistency with other MongoDB drivers, mongoc_collection_save is - deprecated in favor of mongoc_collection_insert or mongoc_collection_update. - * The driver is now built and continuously tested with MinGW-W64 on Windows. - * Experimental support for HPUX. - * The correct operation ids are now passed to Command Monitoring callbacks. - * Fix a crash if the driver couldn't connect to the server to create an index. - * The documentation is ported from Mallard XML to ReStructured Text, the - HTML documentation is restyled, and numerous man page syntax errors fixed. - * Getter functions for options in mongoc_find_and_modify_opts_t: - * mongoc_find_and_modify_opts_get_bypass_document_validation - * mongoc_find_and_modify_opts_get_fields - * mongoc_find_and_modify_opts_get_flags - * mongoc_find_and_modify_opts_get_max_time_ms - * mongoc_find_and_modify_opts_get_sort - * mongoc_find_and_modify_opts_get_update - * All public functions now have the __cdecl calling convention on Windows. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Aleksander Melnikov - * Jeroen Ooms - * Brian McCarthy - * Jonathan Wang - * Peter Beckman - * Remi Collet - * Rockford Wei - * Alexey Ponomarev - * Christopher Wang - * David Golden - * Jeremy Mikola - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.5.5 -==================== - -It is my pleasure to announce mongo-c-driver 1.5.5. This release fixes bugs -parsing the localThresholdMS option from the MongoDB URI, and a crash in -mongoc_cursor_destroy if "query" or "filter" are invalid. Thanks to Jeremy -Mikola. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.5.4 -==================== - -It is my pleasure to announce mongo-c-driver 1.5.4. This release fixes an error -in cursor iteration when a readConcern is set. Thanks to Jeremy Mikola and -Hannes Magnusson. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.5.3 -==================== - -This release fixes a bug that prevented connecting to IPv4-only MongoDB servers -by hostname. - -https://jira.mongodb.org/browse/CDRIVER-1988 - -The driver has reverted to its 1.5.1 behavior: it connects to MongoDB over IPv6 -if given an IPv6 connection string like "mongodb://[::1]", and requires an IPv4 -connection when given a hostname like "mongodb://localhost". - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.5.2 -==================== - -It is my pleasure to announce mongo-c-driver 1.5.2. - -Thanks to everyone who contributed to the development of this release. - -New bug fixes: - * CDRIVER-1975 allow mixed $ and non-$ query ops. - * CDRIVER-1972 Support for ipv6 hostnames. - * CDRIVER-1971 Missing exports of mongoc_gridfs_file_set_*() functions. - * CDRIVER-1970 update define constants for "find" opts to be unique. - * CDRIVER-1964 Windows CA stores should be opened with read-only flag. - -Thanks to everyone who contributed to the development of this release. - - * Hannes Magnusson - * A. Jesse Jiryu Davis - * Alexey Ponomarev - * Peter Beckman - * Rockford Wei - -Peace, - - Hannes Magnusson - - -mongo-c-driver 1.5.1 -==================== - -It is my pleasure to announce mongo-c-driver 1.5.1. This is a bugfix release: - - * Fix SEGFAULT with performance counters on NUMA (thanks to Jonathan Wang). - * Prevent rare assertion error in mongoc_cluster_stream_for_server. - * Improve error messages from auth failure. - * Escape quotes when appending CFLAGS to handshake metadata. - * Fix OpenSSL header lookups in non-default paths. - * Fix build failure with LibreSSL. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jeroen Ooms - * Jonathan Wang - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.5.0 -==================== - -It is my pleasure to announce mongo-c-driver 1.5.0. - -New features and bug fixes: - * MongoDB 3.4 Support - * New URI and read preference option, "maxStalenessSeconds" - * MongoDB Handshake - * writeConcern and readConcern enhancements - * Collation allows users to specify language-specific rules for string - comparison when sorting documents. See the code examples for - mongoc_client_read_command_with_opts, mongoc_collection_count_with_opts, - mongoc_collection_find_with_opts, and mongoc_index_opt_t, as well as the - "Setting Collation Order" section of the "Bulk Write Operations" guide. - * mongoc_collection_count_with_opts uses the collection's read preference if - none is passed in - * Improved TLS support - * Fixed LibreSSL (libssl) support - * Added LibreSSL (libtls) support - * Fixed Secure Channel build on VS 2010 - * OpenSSL now supports SNI (all others already do) - * Additional features for Application Performance Monitoring: - * mongoc_topology_description_has_writable_server - * mongoc_topology_description_has_readable_server - * New functions accept flexible options as a BSON document: - * mongoc_collection_find_with_opts - * mongoc_client_read_command_with_opts - * mongoc_client_write_command_with_opts - * mongoc_client_read_write_command_with_opts - * mongoc_database_read_command_with_opts - * mongoc_database_write_command_with_opts - * mongoc_database_read_write_command_with_opts - * mongoc_collection_read_command_with_opts - * mongoc_collection_write_command_with_opts - * mongoc_collection_read_write_command_with_opts - * mongoc_gridfs_find_with_opts - * mongoc_gridfs_find_one_with_opts - * mongoc_collection_find is now deprecated in favor of - mongoc_collection_find_with_opts. - * New helper function to include read concern in one of the above function's - options parameter: mongoc_read_concern_append. - * mongoc_client_command no longer applies the client's read preference and - read concern by default. Same change for mongoc_database_command and - mongoc_collection_command. - * mongoc_collection_count_with_opts now applies the collection's read - preference if no read preference is provided - * mongoc_collection_create_index and mongoc_collection_drop_index now apply - the collection's write concern. - * connectTimeoutMS timer now begins after DNS resolution, and resets - for each interface attempted (e.g., if the driver first tries IPv6, - then IPv4). - * New error code MONGOC_ERROR_DUPLICATE_KEY. - * mongoc_collection_find no longer treats the "filter" key specially in - queries - querying for a document with a key named "filter" is the same - now as any other key. - * The server description parameter to the following functions is "const": - * mongoc_server_description_host - * mongoc_server_description_id - * mongoc_server_description_ismaster - * mongoc_server_description_round_trip_time - * mongoc_server_description_type - * Exported symbols are no longer declared in separate export files. - This could break ABI with applications using clang, which previously - exported symbols from the internal private ABI. - * mongoc no longer crashes when multi roundtrip bulk operation fails. - * Added support for the new readConcernLevel "linearizable". - * Clients now check for misformatted "readPreferenceTags" in URI. - * New CMake option ENABLE_TRACING allows debug output, which before had only - been available with "configure --enable-tracing". - * Bugfix: "PossiblePrimary"-type replicas could be selected for reads - * Bugfixes: The random number generator used to select servers is now properly - seeded, and secondary queries are now properly distributed according to - localThresholdMS, not just to the lowest-latency secondary. - * mongoc_collection_insert, mongoc_collection_update, mongoc_collection_remove - consistently use domain MONGOC_ERROR_BSON, code MONGOC_ERROR_BSON_INVALID - if passed oversized BSON, and MONGOC_ERROR_COLLECTION for other errors. - mongoc_bulk_operation_execute continues to use MONGOC_ERROR_COMMAND for - all errors. - * If mongoc_client_pool_t fails to start its scanner thread in the background, - it logs and aborts instead of silently continuing, then failing to connect. - * The driver now updates its view of the whole topology with information from - each new connection handshake. - * mongoc_client_set_apm_callbacks can be used repeatedly to change or clear - the list of monitoring callbacks. - * Improved error reporting when the driver fails to reach the server. - -Deprecations: - * mongoc_collection_find is deprecated for mongoc_collection_find_with_opts. - -Removed configure flags: - * --enable-experimental has been removed. All previously experimental - features are now always on. - * The configure option "--enable-hardening" had had no effect. It is removed - in favor of system-wide compiler configuration. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Fiona Rowan - * Ian Boros - * Remi Collet - * Brian McCarthy - * Jeroen Ooms - * J. Rassi - * Christoph Schwarz - * Alexey Vorobeyev - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.4.2 -==================== - -It is my pleasure to announce mongo-c-driver 1.4.2. This release fixes bugs in -"minPoolSize" logic, see CDRIVER-1558 for details. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.4.1 -==================== - -It is my pleasure to announce mongo-c-driver 1.4.1. This is a bugfix release: - - * mongoc_client_get_server_descriptions could return a list including NULLs - * Tailable cursors on MongoDB 3.2 only worked with MONGOC_QUERY_AWAIT_DATA - * Spurious warnings with MONGOC_DISABLE_SHM - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.4.0 -==================== - -It is my pleasure to announce the release of mongo-c-driver 1.4.0. - -TLS ---- - -The driver can now use the native TLS and crypto functions included in macOS -and Windows. OpenSSL is no longer required for TLS or authentication on Mac or -Windows. By default, OpenSSL is used if available, the default will switch in -version 2.0 to prefer native TLS. - -For native TLS on Mac: - - ./configure --enable-ssl=darwin - -For Windows: - - cmake "-DENABLE_SSL=WINDOWS" -G "Visual Studio 10 Win64" "-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver" - -All of the TLS implementations now load the native default certificate store, -with OpenSSL on Windows falling back on the Windows native certificate store if -no other can be found. - -The "ca_dir" field on mongoc_ssl_opt_t is only supported by OpenSSL. All other -fields, including "pem_file", are supported by all implementations. - -A new field, "allow_invalid_hostname", has been added to mongoc_ssl_opt_t and is -preferred over the existing "allow_invalid_certificate" to disable hostname -verification. - -The driver now supports the latest OpenSSL 1.1 in addition to past versions. - -Application Performance Monitoring ----------------------------------- - -The driver implements the MongoDB Command Monitoring Spec. Applications can -record the duration and other details of every operation the driver performs on -the server. See "Introduction to Application Performance Monitoring" in the -docs. - -Error API ---------- - -New functions mongoc_client_set_error_api and mongoc_client_pool_set_error_api -allow applications to distinguish client and server errors. See the "Error -Reporting" doc. - -Unacknowledged Write Results ----------------------------- - -Unacknowledged writes (writes whose mongoc_write_concern_t "w" value is zero) -now reply with an empty document instead of one with nInserted: 0, nUpdated: 0, -and so on. - -Command functions now ignore the read preferences set on a client, database, -or collection. Instead, they use the mongoc_read_prefs_t passed in explicitly, -or default to "primary". This change was made to bring them in line with the -Server Selection Spec. These are the affected functions: - - * mongoc_client_command - * mongoc_client_command_simple - * mongoc_database_command - * mongoc_database_command_simple - * mongoc_collection_command - * mongoc_collection_command_simple - -On the other hand, the following command-specific helper functions now use the -collection's read preference: - - * mongoc_collection_count - * mongoc_collection_stats - -New functions to send maxTimeMS or any arbitrary options with findAndModify: - - * mongoc_find_and_modify_opts_set_max_time_ms - * mongoc_find_and_modify_opts_append - -New function to include a write concern with a generic command function -like mongoc_client_command_simple: - - * mongoc_write_concern_append - -Public API For Higher-Level Drivers ------------------------------------ - -New functions support language drivers (specifically the PHP and HHVM drivers) -using only the libmongoc public API: - - * mongoc_bulk_operation_get_hint - * mongoc_client_command_simple_with_server_id - * mongoc_client_get_server_description - * mongoc_client_get_server_description_by_id - * mongoc_client_get_server_descriptions - * mongoc_client_select_server - * mongoc_cursor_get_limit - * mongoc_cursor_new_from_command_reply - * mongoc_cursor_set_hint - * mongoc_cursor_set_limit - * mongoc_log_trace_disable - * mongoc_log_trace_enable - * mongoc_server_description_ismaster - * mongoc_server_description_round_trip_time - * mongoc_server_description_type - * mongoc_server_descriptions_destroy_all - * mongoc_uri_get_option_as_bool - * mongoc_uri_get_option_as_int32 - * mongoc_uri_get_option_as_utf8 - * mongoc_uri_option_is_bool - * mongoc_uri_option_is_int32 - * mongoc_uri_option_is_utf8 - * mongoc_uri_set_auth_source - * mongoc_uri_set_database - * mongoc_uri_set_option_as_bool - * mongoc_uri_set_option_as_int32 - * mongoc_uri_set_option_as_utf8 - * mongoc_uri_set_password - * mongoc_uri_set_read_concern - * mongoc_uri_set_read_prefs_t - * mongoc_uri_set_username - * mongoc_uri_set_write_concern - * mongoc_write_concern_is_acknowledged - * mongoc_write_concern_is_valid - * mongoc_write_concern_journal_is_set - -Now that these public APIs are available, the PHP drivers no longer define the -MONGOC_I_AM_A_DRIVER preprocessor symbol to access private APIs. The symbol is -removed from C Driver headers, and libmongoc-priv.so is no longer installed. - -Other Features --------------- - - * New connection string option "localThresholdMS". - * zSeries and POWER8 platform support. - * Performance enhancements, reduce allocation and copying in command code. - * All man page names now begin with "mongoc_" to avoid install conflicts. - * New function mongoc_gridfs_file_set_id. - -Deprecations ------------- - -Automatically calling mongoc_init and mongoc_cleanup is a GCC-specific feature -that is now deprecated, and will be removed in version 2. The driver should be -built with: - -./configure --disable-automatic-init-and-cleanup - -Or: - - cmake "-DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF" -G "Visual Studio 10 Win64" "-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver" - -In this configuration, applications must explicitly init and cleanup libmongoc. - -Deprecated functions: - - * mongoc_write_concern_get_fsync - * mongoc_write_concern_set_fsync - -Notable Bug Fixes ------------------ - - * Logic bugs using tag sets to select replica set members with complex configs - * mongoc_client_get_database_names no longer filters out a replica set - member's "local" database. - * mongoc_client_get_gridfs now ensures the proper indexes on the files and - chunks collections. - * SecondaryPreferred fails if primary matches tags but secondaries don't. - * mongoc_collection_find_and_modify_with_opts can return true on - writeConcernError. - * mongoc_collection_validate doesn't always init "reply". - * The strings referred to by mongoc_ssl_opt_t, like pem_file and ca_file, are - now copied into the client or client pool by mongoc_client_set_ssl_opts or - mongoc_client_pool_set_ssl_opts, and need not be kept valid afterward. - * mongoc_collection_count_with_opts ignored flags and read_prefs. - * minPoolSize of 0 should mean "no minimum". - * mongoc_database_create_collection should always use the primary. - * The GSSAPI properties SERVICE_NAME and CANONICALIZE_HOST_NAME are now - properly parsed from the URI, see the "Authentication" doc for details. - * Comprehensive compatibility with various C standards and compilers. - -Acknowledgements ----------------- - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Ian Boros - * Fiona Rowan - * Jeremy Mikola - * Christoph Schwarz - * Mike Lloyd - * Remi Collet - * Jean-Bernard Jansen - * David Hatch - * Derick Rethans - * Brian Samek - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.3.5 -==================== - -It is my pleasure to announce mongo-c-driver 1.3.5. This release fixes a crash -in mongoc_cleanup when an allocator had been set with bson_mem_set_vtable, and -introduces a configure option MONGOC_NO_AUTOMATIC_GLOBALS which prevents code -built with GCC from automatically calling mongoc_init and mongoc_cleanup when -your code does not. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.3.4 -==================== - -It is my pleasure to announce the MongoDB C Driver 1.3.4. This release fixes a -security vulnerability: when a mongoc_client_t uses SSL and is disconnected, it -failed to re-verify the server certificate after reconnecting. This flaw affects -single clients, not pooled ones. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Remi Collet - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.3.3 -==================== - -It is my pleasure to announce MongoDB C Driver 1.3.3. This fixes a bug where -a slightly-oversized bulk write operation was not split into batches; instead, -it was sent whole to the server, which rejected it. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.3.2 -==================== - -It is my pleasure to announce MongoDB C Driver 1.3.2. This is a bugfix release: - - * A socket is properly discarded after a network error from a command. - * mongoc_database_get_collection now copies the database's read preferences, - read concern, and write concern, instead of copying the client's. - * mongoc_cursor_t's private struct now allows a negative limit. - -Thanks to everyone who contributed to this release. - - * A. Jesse Jiryu Davis - * Jeremy Mikola - * Hannes Magnusson - -Peace, - - A. Jesse Jiryu Davis - - - -mongo-c-driver 1.3.1 -==================== - -It is my pleasure to announce MongoDB C Driver 1.3.1. This is a bugfix release: - - * mongoc_client_get_gridfs now copies the client's read preferences, read - concern, and write concern to the newly created mongoc_gridfs_t. Before - this fix, GridFS operations were always executed with the default config: - data was read from the primary, with the read concern level "local", and - written with write concern "acknowledged". Now, if you have configured any - of these options on the mongoc_client_t, they are respected by the - mongoc_gridfs_t. - * CMakeLists.txt now includes and installs the pkg-config files. - -Thanks to everyone who contributed to this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Christopher Wang - * Jean-Bernard Jansen - * Jeremy Mikola - * Jeroen Ooms - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.3.0 -==================== - -It is my pleasure to announce to you the release of the MongoDB C Driver 1.3.0. - -Changes since the release candidate 1.3.0-rc0: - - * Fix a cursor bug introduced on big-endian platforms in 1.3.0-beta0. - * Improve documentation for mongoc_host_list_t. - * Move private mongoc_host_list_t functions from public header. - * Refactor the build system to declare library version in one place. - -All new features and changes since the previous stable release, 1.2.1: - - * If the driver is compiled without SSL support but a URI with "ssl=true" - is passed to mongoc_client_new, mongoc_client_new_from_uri, or - mongoc_client_pool_new, the function logs an error and returns NULL. Before, - the driver would attempt a non-SSL connection. - * mongoc_collection_find_and_modify will now apply the mongoc_collection_t's - write_concern_t when talking to MongoDB 3.2. - * Support for MongoDB 3.2's "readConcern" feature for queries, counts, and - aggregations. The option "readConcernLevel" is now accepted in the MongoDB - URI. New struct mongoc_read_concern_t, and functions operating on it: - - mongoc_client_get_read_concern - - mongoc_client_set_read_concern - - mongoc_database_get_read_concern - - mongoc_database_set_read_concern - - mongoc_collection_get_read_concern - - mongoc_collection_set_read_concern - - mongoc_read_concern_copy - - mongoc_read_concern_destroy - - mongoc_read_concern_get_level - - mongoc_read_concern_new - - mongoc_read_concern_set_level - - mongoc_uri_get_read_concern - * Support for MongoDB 3.2's "bypassDocumentValidation" option for writes. - * New struct mongoc_bulk_write_flags_t and related functions: - - mongoc_bulk_operation_set_bypass_document_validation - * New struct mongoc_find_and_modify_opts_t and related functions: - - mongoc_find_and_modify_opts_new - - mongoc_find_and_modify_opts_destroy - - mongoc_find_and_modify_opts_set_sort - - mongoc_find_and_modify_opts_set_update - - mongoc_find_and_modify_opts_set_fields - - mongoc_find_and_modify_opts_set_flags - - mongoc_find_and_modify_opts_set_bypass_document_validation - - mongoc_collection_find_and_modify_with_opts - * New functions to copy database and collection handles: - - mongoc_collection_copy - - mongoc_database_copy - * Support for MongoDB 3.2 wire protocol: use commands in place of OP_QUERY, - OP_GETMORE, and OP_KILLCURSORS messages. - * To explain a query plan with MongoDB 3.2, you must now call the "explain" - command, instead of including the "$explain" key in a mongoc_collection_find - query. See the mongoc_collection_find documentation page for details. - * Configurable wait time on tailable cursors with MongoDB 3.2: - - mongoc_cursor_get_max_await_time_ms - - mongoc_cursor_set_max_await_time_ms - * Use electionId to detect a stale replica set primary during a network split. - * Disconnect from replica set members whose "me" field does not match the - connection address. - * The client side matching feature, mongoc_matcher_t and related functions, - are deprecated and scheduled for removal in version 2.0. - * New CMake options ENABLE_SSL, ENABLE_SASL, ENABLE_TESTS, and ENABLE_EXAMPLES. - * Use constant-time comparison when verifying credentials. - * Combine environment's CFLAGS with configure options when building. - * Improved man page output and "whatis" entries. - -There are extensive bugfixes and improvements in GridFS since 1.2.1, including: - - * Handle seeking, reading, and writing past the end of a GridFS file. - * If a GridFS chunk is missing, mongoc_gridfs_file_readv sets file->error to - domain MONGOC_ERROR_GRIDFS and a new code MONGOC_ERROR_GRIDFS_CHUNK_MISSING. - * Optimization for long seeks forward with mongoc_gridfs_file_seek. - -Other fixes since 1.2.1: - - * Memory leaks in mongoc_database_has_collection and mongoc_cursor_next. - * Report writeConcern failures from findAndModify and from legacy writes. - * Memory leak in mongoc_database_find_collections. - * Set OP_QUERY's nToReturn from the provided limit. - * Fix compiler warnings and errors, especially with Visual Studio 2015, - GCC 4.8, and IBM XL C. - * Bugs and typos in tutorial examples. - -Thanks to everyone who contributed to this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Kyle Suarez - * Jose Sebastian Battig - * Matt Cotter - * Claudio Canella - * alexeyvo - * Christopher Wang - * Flavio Medeiros - * Iago Rubio - * Jeremy Mikola - * Victor Leschuk - * Jason Carey - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.3.0-rc0 -======================== - -It is my pleasure to announce to you the first release candidate of MongoDB C -driver 1.3.0. It includes additive ABI changes and bugfixes, and support for -the upcoming MongoDB 3.2. It is compatible with MongoDB 2.4 and later. - -New features and changes since 1.3.0-beta0: - - * If the driver is compiled without SSL support but a URI with "ssl=true" - is passed to mongoc_client_new, mongoc_client_new_from_uri, or - mongoc_client_pool_new, the function logs an error and returns NULL. Before, - the driver would attempt a non-SSL connection. - * New functions to copy database and collection handles: - - mongoc_collection_copy - - mongoc_database_copy - * If a GridFS chunk is missing, mongoc_gridfs_file_readv sets file->error to - domain MONGOC_ERROR_GRIDFS and a new code MONGOC_ERROR_GRIDFS_CHUNK_MISSING. - * Use electionId to detect a stale replica set primary during a network split. - * Disconnect from replica set members whose "me" field does not match the - connection address. - * The client side matching feature, mongoc_matcher_t and related functions, - are deprecated and scheduled for removal in version 2.0. - * New CMake options ENABLE_SSL, ENABLE_SASL, ENABLE_TESTS, and ENABLE_EXAMPLES. - * The build system is refactored to declare the current version and latest - release in one place. - -Other fixes: - - * Memory leaks in mongoc_database_has_collection and mongoc_cursor_next. - * Report writeConcern failures from findAndModify and from legacy writes. - -Thanks to everyone who contributed to this release candidate. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Matt Cotter - * Claudio Canella - * Victor Leschuk - * Flavio Medeiros - * Christopher Wang - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.3.0-beta0 -========================== - -It is my pleasure to announce to you the beta of MongoDB C driver 1.3.0. -This beta includes additive ABI changes and bugfixes, and support for -the upcoming MongoDB 3.2. It is compatible with MongoDB 2.4 and later. - -New features and changes: - - * mongoc_collection_find_and_modify will now apply the mongoc_collection_t's - write_concern_t when talking to MongoDB 3.2. - * Support for MongoDB 3.2's "readConcern" feature for queries, counts, and - aggregations. The option "readConcernLevel" is now accepted in the MongoDB - URI. New struct mongoc_read_concern_t, and functions operating on it: - - mongoc_client_get_read_concern - - mongoc_client_set_read_concern - - mongoc_database_get_read_concern - - mongoc_database_set_read_concern - - mongoc_collection_get_read_concern - - mongoc_collection_set_read_concern - - mongoc_read_concern_copy - - mongoc_read_concern_destroy - - mongoc_read_concern_get_level - - mongoc_read_concern_new - - mongoc_read_concern_set_level - - mongoc_uri_get_read_concern - * Support for MongoDB 3.2's "bypassDocumentValidation" option for writes. - * New struct mongoc_bulk_write_flags_t and related functions: - - mongoc_bulk_operation_set_bypass_document_validation - * New struct mongoc_find_and_modify_opts_t and related functions: - - mongoc_find_and_modify_opts_new - - mongoc_find_and_modify_opts_destroy - - mongoc_find_and_modify_opts_set_sort - - mongoc_find_and_modify_opts_set_update - - mongoc_find_and_modify_opts_set_fields - - mongoc_find_and_modify_opts_set_flags - - mongoc_find_and_modify_opts_set_bypass_document_validation - - mongoc_collection_find_and_modify_with_opts - * Configurable wait time on tailable cursors with MongoDB 3.2: - - mongoc_cursor_get_max_await_time_ms - - mongoc_cursor_set_max_await_time_ms - * Support for MongoDB 3.2 wire protocol: use commands in place of OP_QUERY, - OP_GETMORE, and OP_KILLCURSORS messages. - * To explain a query plan with MongoDB 3.2, you must now call the "explain" - command, instead of including the "$explain" key in a mongoc_collection_find - query. See the mongoc_collection_find documentation page for details. - * Use constant-time comparison when verifying credentials. - * Combine environment's CFLAGS with configure options when building. - * Improved man page output and "whatis" entries. - -Extensive bugfixes and improvements in GridFS, including: - - * Handle seeking, reading, and writing past the end of a GridFS file. - * Optimization for long seeks forward with mongoc_gridfs_file_seek. - -Other fixes: - - * Memory leak in mongoc_database_find_collections. - * Set OP_QUERY's nToReturn from the provided limit. - * Fix compiler warnings and errors, especially with Visual Studio 2015, - GCC 4.8, and IBM XL C. - * Bugs and typos in tutorial examples - -Thanks to everyone who contributed to this beta release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Kyle Suarez - * Jose Sebastian Battig - * Jeremy Mikola - * Iago Rubio - * Matt Cotter - * alexeyvo - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.2.2 -==================== - -It is my pleasure to announce to you the MongoDB C driver 1.2.2. - -This release fixes a rare bug where the driver can direct reads to hidden -secondaries unintentionally. It also includes fixes and improvements to the -build system. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.2.1 -==================== - -It is my pleasure to announce to you the MongoDB C driver 1.2.1. - -This release includes critical bugfixes for SSL connections with -mongoc_client_pool_t, and for Unix domain socket connections. - -The documentation is updated for a change introduced in version 1.2.0: -mongoc_client_set_ssl_opts and mongoc_client_pool_set_ssl_opts now configure -the driver to require an SSL connection to the server, even if "ssl=true" is -omitted from the MongoDB URI. Before, SSL options were ignored unless -"ssl=true" was included in the URI. - -The build instructions are improved, including the steps to build with OpenSSL -on OS X El Capitan. Build errors and warnings are fixed for clang in gnu99 -mode and MinGW. - -Thanks to everyone who contributed to this version of libmongoc. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Tamas Nagy - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.2.0 -==================== - -It is my pleasure to announce to you the MongoDB C driver 1.2.0. - -This is a stable release with additive ABI changes and bugfixes. It is -compatible with MongoDB version 2.4 and later. - -The following notes summarize changes since the previous stable release, -1.1.11, including changes in the 1.2.0 betas and release candidate. - -This version rewrites mongoc_client_t's internals to match two important new -specs for MongoDB drivers: the Server Discovery And Monitoring Spec and the -Server Selection Spec. The rewritten client has many advantages: - - * All replica set members or mongos servers are discovered and periodically - checked in parallel. The driver's performance is dramatically better and - more predictable with multi-server deployments, or with a flaky network, - or when some servers are slow or down. - * Clients from the same mongoc_client_pool_t share a background thread that - discovers and monitors all servers in parallel. - * Unnecessary round trips for server checks and pings are eliminated. - * Behavior is documented in the specs, and consistent with other drivers, - even in complex or unusual scenarios. - * The URI's "replicaSet" option is enforced: the driver now refuses to connect - to a server unless it is a member of a replica set with the correct setName. - * Many race conditions related to changing deployment conditions are fixed. - -To conform to the new specs, the client now accepts these options in the -MongoDB URI; see the mongoc_uri_t documentation for details: - - * heartbeatFrequencyMS - * serverSelectionTimeoutMS - * serverSelectionTryOnce - * socketCheckIntervalMS - -Other features: - - * All timeouts that can be configured in the URI now interpret 0 to mean "use - the default value for this timeout". - * The client's read preference can be configured in the URI with the new - options "readPreference" and "readPreferenceTags"; see the mongoc_uri_t - documentation. - * The new mongoc_uri_get_read_prefs_t function retrieves both the read mode - and tags from a mongoc_uri_t. - * New accessors mongoc_gridfs_file_get_id, mongoc_client_get_default_database, - and mongoc_bulk_operation_get_write_concern. - * Debug tracing can be controlled at runtime with mongoc_log_trace_enable and - mongoc_log_trace_disable. - * Set mongoc_client_pool_t's size with mongoc_client_pool_min_size() - and mongoc_client_pool_max_size(). - -Other changes: - - * Enable runtime asserts in release build. - * The libbson submodule's URL now uses the recommended https://, not git:// - * mongoc_client_kill_cursor is now deprecated and will be removed in 2.0. - * The write concern "w=-1" is documented as obsolete. - -These notable bugs have been fixed since 1.1.11: - - * The driver now uses the server's maxWireVersion to avoid an error and - extra round-trip when executing aggregations on MongoDB 2.4 and older. - * Much improved reporting of network errors, unavailable servers, and - authentication failure - * Off-by-one error in mongoc_gridfs_file_seek with mode SEEK_END - * The writeConcernErrors field of bulk results is properly formatted. - * A cursor with a server "hint" sets slaveOkay and / or $readPreference. - * Destroying an exhaust cursor must close its socket - * "wtimeoutms" was ignored for write concerns besides "majority". - * Bulk write operations might fail in mixed-version sharded clusters with - some pre-2.6 mongos servers. - * A variety of bugs and incorrect results in mongoc_bulk_operation_execute. - * Numerous compiler warnings and build failures on various platforms. - * Copious refinements to the documentation. - -Thanks to everyone who contributed to this version of libmongoc. - - * Jason Carey - * Samantha Ritter - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Kyle Suarez - * Jeremy Mikola - * Remi Collet - * Jose Sebastian Battig - * Derick Rethans - * Yuchen Xie - * Manuel Schoenlaub - * Sujan Dutta - * Lloyd Zhou - * rubicks - * Pawel Szczurko - * Yuval Hager - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.2.0-rc0 -======================== - -It is my pleasure to announce the release candidate of the MongoDB C driver -1.2.0. It includes features and bugfixes developed since 1.2.0-beta1. - -Notable bugs fixed: - - * Much improved reporting of network errors, unavailable servers, and - authentication failure - * Destroying an exhaust cursor must close its socket - * Various bugs in server reconnection logic - * mongoc_collection_aggregate returned invalid cursor after failure - * Wrong error message after failed network write on Sparc - * Missing JSON test files in release tarball - -Other changes: - - * Enable runtime asserts in release build. - * mongoc_client_kill_cursor is now deprecated and will be removed in - version 2.0. - -This release candidate also includes all bugfixes from 1.1.11. - -Version 1.2.0 final will be a stable release with additive ABI changes and -bugfixes. It is compatible with MongoDB version 2.4 and later. - -Thanks to everyone who contributed to this version of libmongoc. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Kyle Suarez - * rubicks - * Jose Sebastian Battig - * Jason Carey - * Remi Collet - * Yuval Hager - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.2.0-beta1 -========================== - -It is my pleasure to announce the second beta release of the MongoDB C driver -1.2.0. It includes features and bugfixes developed since 1.2.0-beta. - -New features: - - * Set mongoc_client_pool_t's size with mongoc_client_pool_min_size() - and mongoc_client_pool_max_size(). - * The write concern "w=-1" is now documented as obsolete. - * Abundant fixes and additions to the documentation, beyond those in the - previous beta. - -Notable bugs fixed: - - * Crashes and races in several replica set scenarios. - * The driver now uses the server's maxWireVersion to avoid an error and - extra round-trip when executing aggregations on MongoDB 2.4 and older. - * Fixed network error handling in multiple code paths. - * connectTimeoutMS limits the time the driver can spend reconnecting to - servers in single-threaded (non-pooled) mode with serverSelectionTryOnce. - -Version 1.2.0 final will be a stable release with additive ABI changes and -bugfixes. It is compatible with MongoDB version 2.4 and later. - -Thanks to everyone who contributed to this version of libmongoc. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Manuel Schoenlaub - * Kyle Suarez - * Remi Collet - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.2.0-beta -========================= - -It is my pleasure to announce to you the first beta release of the MongoDB C -driver 1.2.0. - -This release is a stable release with additive ABI changes and bugfixes. -It is compatible with MongoDB version 2.4 and later. - -Version 1.2.0 rewrites mongoc_client_t's internals to match two important new -specs for MongoDB drivers: the Server Discovery And Monitoring Spec and the -Server Selection Spec. The rewritten client has many advantages: - - * All replica set members or mongoses are discovered and periodically - checked in parallel. The driver's performance is dramatically better and - more predictable with multi-server deployments, or with a flaky network, - or when some servers are slow or down. - * Clients from the same mongoc_client_pool_t share a background thread that - discovers and monitors all servers in parallel. - * Unnecessary round trips for server checks and pings are eliminated. - * Behavior is documented in the specs, and consistent with other drivers, even - in complex or unusual scenarios. - * The URI's "replicaSet" option is enforced: the driver now refuses to connect - to a server unless it is a member of a replica set with the right setName. - * Many race conditions related to changing deployment conditions are fixed. - -To conform to the new specs, the client now accepts these options in the MongoDB -URI; see the mongoc_uri_t documentation for details: - - * heartbeatFrequencyMS - * serverSelectionTimeoutMS - * serverSelectionTryOnce - * socketCheckIntervalMS - -Other features: - - * All timeouts that can be configured in the URI now interpret 0 to mean "use - the default value for this timeout". - * The client's read preference can be configured in the URI with the new - options "readPreference" and "readPreferenceTags", see the mongoc_uri_t - documentation. - * The new mongoc_uri_get_read_prefs_t function retrieves both the read mode - and tags from a mongoc_uri_t. - * New accessors mongoc_gridfs_file_get_id, mongoc_client_get_default_database, - and mongoc_bulk_operation_get_write_concern. - * Debug tracing can be controlled at runtime with mongoc_log_trace_enable and - mongoc_log_trace_disable. - -Notable bugs fixed: - - * "wtimeoutms" was ignored for write concerns besides "majority". - * Bulk write operations might fail in mixed-version sharded clusters with - some pre-2.6 mongos servers. - * Normal operations were logged during startup and could not be silenced. - * A variety of bugs and incorrect results in mongoc_bulk_operation_execute. - * Numerous compiler warnings and build failures on various platforms. - * Copious refinements to the documentation. - -Thanks to everyone who contributed to this version of libmongoc. - - * A. Jesse Jiryu Davis - * Sujan Dutta - * Jason Carey - * Hannes Magnusson - * Jeremy Mikola - * Derick Rethans - * Samantha Ritter - * Yuchen Xie - * Lloyd Zhou - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.1.11 -===================== - -It is my pleasure to announce to you the MongoDB C driver 1.1.11. - -This is a patch release with bug fixes: - - * Undetected network errors when sending messages to the server - * Off-by-one error in mongoc_gridfs_file_seek with mode SEEK_END - * Memory leak parsing a URI that contains an invalid option - * The libbson submodule's URL now uses the recommended https://, not git:// - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jason Carey - * Jose Sebastian Battig - * rubicks - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.1.10 -===================== - -It is my pleasure to announce to you the MongoDB C driver 1.1.10. - -This is a patch release with bug fixes: - - * Occasional crash reconnecting to replica set. - * Queries sent to recovering replica set members. - * Memory leak when calling ismaster on replica set members. - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * A. Jesse Jiryu Davis - * Daniil Zaitsev - * Jason Carey - * Jeremy Mikola - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.1.9 -==================== - -It is my pleasure to announce to you the MongoDB C driver 1.1.9. - -This release fixes a common crash in 1.1.8, which itself was introduced while -fixing a rare crash in 1.1.7. For further details: - -https://jira.mongodb.org/browse/CDRIVER-721 -https://jira.mongodb.org/browse/CDRIVER-695 - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.1.8 -==================== - -UPDATE: 1.1.8 suffered a severe new bug so I removed the release from GitHub: - -https://jira.mongodb.org/browse/CDRIVER-721 - -This is a patch release with bug fixes: - - * Crash freeing client after a replica set auth error. - * Compile error strict C89 mode. - -mongo-c-driver 1.1.7 -==================== - -It is my pleasure to announce to you the 1.1.7 release of the MongoDB C driver. - -This is a patch release with bug fixes: - - * Thread-safe use of Cyrus SASL library. - * Experimental support for building with CMake and SASL. - * Faster reconnection to replica set with some hosts down. - * Crash iterating a cursor after reconnecting to a replica set. - * Unchecked errors decoding invalid UTF-8 in MongoDB URIs. - * Fix error reporting from mongoc_client_get_database_names. - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * A. Jesse Jiryu Davis - * Jason Carey - * Hannes Magnusson - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.1.6 -==================== - -It is my pleasure to announce to you the 1.1.6 release of the MongoDB C driver. - -This is a patch release with performance enhancements and bug fixes: - - * mongoc_bulk_operation_execute now coalesces consecutive update operations - into a single message to a MongoDB 2.6+ server, yielding huge performance - gains. Same for remove operations. (Inserts were always coalesced.) - * Large numbers of insert operations are now properly batched according to - number of documents and total data size. - * GSSAPI / Kerberos auth now works. - * The driver no longer tries three times in vain to reconnect to a primary, - so socketTimeoutMS and connectTimeoutMS now behave *closer* to what you - expect for replica sets with down members. A full fix awaits 1.2.0. - -I snuck in a feature: - - * mongoc_matcher_t now supports basic subdocument and array matching - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * A. Jesse Jiryu Davis - * Jason Carey - * Kai Mast - * Matt Cotter - -Peace, - - A. Jesse Jiryu Davis - - -mongo-c-driver 1.1.5 -==================== - -It is my pleasure to announce to you the 1.1.5 release of the MongoDB C driver. - -This is a patch release with performance enhancements and bug fixes: - - * The fsync and j write concern flags now imply acknowledged writes - * Prevent using fsync or j with conflicting w=0 write concern - * Obey socket timeout consistently in TLS/SSL mode - * Return an error promptly after a network hangup in TLS mode - * Prevent crash using SSL in FIPS mode - * Always return NULL from mongoc_database_get_collection_names on error - * Fix version check for GCC 5 and future versions of Clang - * Fix warnings and errors building on various platforms - * Add configure flag to enable/disable shared memory performance counters - * Minor docs improvements and fix links from C Driver docs to Libbson docs - -With this release, Libbson abandons the convention that odd-numbered patch -versions indicate unstable releases. We switch to simple semantic versioning: -1.1.5 is a stable release with bug fixes since 1.1.4. During subsequent -development the version will be "1.1.6-dev". - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * A. Jesse Jiryu Davis - * Christian Hergert - * Jason Carey - * Jeremy Mikola - * Jeroen Ooms - * Hannes Magnusson - -Enjoy! - --- A. Jesse Jiryu Davis - - -mongo-c-driver 1.1.4 -==================== - -It is my pleasure to announce to you the 1.1.4 release of the MongoDB C driver. - -This release is a stable release with performance enhancements and bugfixes. - -Changes include: - * Fixed client pool concurrency issues - * Fixed some scenarios where replica sets would fail to reconnect on primary - step down. - * Improved write concern handling - * Validate port number in URI - * Various other fixes - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * Jason Carey - * Andrew Clayton - * A. Jesse Jiryu Davis - * Jeremy Mikola - -Enjoy! - --- Jason Carey - - -mongo-c-driver 1.1.2 -==================== - -It is my pleasure to announce to you the 1.1.2 release of the MongoDB C driver. - -This release is a stable release with performance enhancements and bugfixes. - -Changes include: - * Process connectTimeoutMS cast insensitively - * Addition of missing trace macros - * Improvement of internal error messages - * Fix a segfault in OpenSSL cleanup routines - * Fix for IPv6 support for replica sets - * Coalesce small vectorized TLS writes - * MinGW fixups - * Fix for a memory leak in get_database_names() - * Fixes for patching write concern through the bulk api - * Fix to normalize hostnames in uri parsing - * Fix for managing connections in the client pool - * Various other fixes - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * Andrew Clayton - * Denis Gladkikh - * Hannes Magnusson - * Jason Carey - * Jeremy Mikola - * mschoenlaub - * Samantha Ritter - * Tyler Brock - -Enjoy! - --- Jason Carey - - -mongo-c-driver 1.1.0 -==================== - -It is my pleasure to announce to you the 1.1.0 release of the MongoDB C driver. - -This release is a stable release with additive ABI changes and bugfixes. - -The below changes include some carried over from RC0. - -Changes include: - * RC0 - * ABI versioning for 1.1 versus 1.0 symbols - * additional geo index options - * authMechanismProperties in URI - * fixes for OS X Yosemite - * removal of replica set member limit - * SCRAM-SHA-1 SASL mechanism - * updated dependency on libbson 1.1 abi - * validation for bulk insert - * various memory leak fixes - * Fixes to documentation typos - * "How to Ask For Help" in the README - * Removed dependency on sasl for PLAIN authentication - * Use provided username, if available, for X.509 auth - * Fixed WriteConcern error reporting for some writes - * Check for closed sockets before attempting RPCs - * Fixes for gridfs file seek - * Fixes for mongoc_cursor_clone() - * Fixes for unix domain socket support - * Fixes for polling on win32 - * Improved warnings on failure to connect - * Addition of wired tiger options - * Fixes for examples - -Additions to the ABI include: - * support for extra option in count - - mongoc_collection_count_with_opts - * additional index options - - mongoc_index_opt_geo_get_default - - mongoc_index_opt_geo_init - - mongoc_index_opt_wt_get_default - - mongoc_index_opt_wt_init - * rand interface to seed and verify the strong random number generation needed - by some auth mechanisms - - mongoc_rand_seed - - mongoc_rand_add - - mongoc_rand_status - * URI additions to support more complicated auth credentials - - mongoc_uri_get_credentials - - mongoc_uri_get_mechanism_properties - * Support for cursor returning metadata crud operations - - mongoc_client_find_databases - - mongoc_collection_find_indexes - - mongoc_database_find_collections - * Kill cursor support - - mongoc_client_kill_cursor - * Various get/setters on cursor - - mongoc_cursor_get_batch_size - - mongoc_cursor_get_id - - mongoc_cursor_set_batch_size - * More socket/stream options - - mongoc_socket_check_closed - - mongoc_socket_inet_ntop - - mongoc_stream_check_closed - - mongoc_stream_write - -Additional Notes: - Existing complex index names may contain a zero instead of a type due to -a bug in mongoc_collection_keys_to_index_string. As a result those indexes may -be hard to drop from the driver as they have a name you would not expect. - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * Adam Midvidy - * aherlihy - * alexeyvo - * Christian Hergert - * Hannes Magnusson - * Jason Carey - * Jérôme Lebel - * Jesse Jiryu Davis - * lloydzhou - * Mark Benevenuto - * Paul Melnikow - * Samantha Ritter - * Shraya Ramani - * Spencer Jackson - * Tyler Brock - - -Enjoy! - --- Jason Carey - - -mongo-c-driver 1.1.0-rc0 -======================== - -It is my pleasure to announce to you the 1.1.0-rc0 release of the MongoDB C driver. - -This release is a release candidate with additive ABI changes and bugfixes. - -Changes include: - * ABI versioning for 1.1 versus 1.0 symbols - * additional geo index options - * authMechanismProperties in URI - * fixes for OS X Yosemite - * removal of replica set member limit - * SCRAM-SHA-1 SASL mechanism - * updated dependency on libbson 1.1 abi - * validation for bulk insert - * various memory leak fixes - -Additions to the ABI include: - * support for extra option in count - - mongoc_collection_count_with_opts - * extra index and collection info - - mongoc_collection_get_index_info - - mongoc_database_get_collection_info - * additional geo options - - mongoc_index_opt_geo_get_default - - mongoc_index_opt_geo_init - * rand interface to seed and verify the strong random number generation needed - by some auth mechanisms - - mongoc_rand_seed - - mongoc_rand_add - - mongoc_rand_status - * URI additions to support more complicated auth credentials - - mongoc_uri_get_credentials - - mongoc_uri_get_mechanism_properties - -Additional Notes: - Existing complex index names may contain a zero instead of a type due to -a bug in mongoc_collection_keys_to_index_string. As a result those indexes may -be hard to drop from the driver as they have a name you would not expect. - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * Adam Midvidy - * aherlihy - * alexeyvo - * Christian Hergert - * Jason Carey - * Jérôme Lebel - * Samantha Ritter - * Spencer Jackson - * Tyler Brock - - -Enjoy! - --- Jason Carey - - -mongo-c-driver 1.0.2 -==================== - -It is my pleasure to announce to you the 1.0.2 release of the MongoDB C driver. - -This release is a minor point release with no ABI changes and mostly small -bugfixes. - -Changes include: - * A variety of fixes for read preference based node selection - * Avoided inclusion of getLastError in 2.6 writeConcern - * Correct handling of pass through params for collection_aggregate - * Improved error reporting in socket connect - * Public MONGOC_DEFAULT_CONNECTTIMEOUTMS - -Thanks to everyone who contributed to the development of this point release for -libmongoc. - - * Adam Midvidy - * Christian Hergert - * Denis Gladkikh - * Jason Carey - * Jeremy Mikola - * Jérôme Lebel - * Tyler Brock - * Wisdom Omuya - --- Jason Carey - - -mongo-c-driver 1.0.0 -==================== - -It is my very distinct pleasure to announce to you the 1.0 release of -the MongoDB C driver! - -This is the culmination of just over a year of work and could not have -been done without the help of our wonderful community. - -Thanks to everyone who contributed to the development of this driver! - - * Christian Hergert - * Jason Carey - * Gary Murakami - * Christian Heckl - * Frank Watson Song - * Hannes Magnusson - * Jérôme Lebel - * Kyle Suarez - * Maga Napanga - * Michael Kuhn - * Vincent Giersch - * essentia44 - * yuqing - -Happy Hacking! - --- Christian Hergert - - -mongo-c-driver 0.98.2 -===================== - -One final step before our journey to 1.0! - -This is a relatively small release, adding some features needed for drivers -building on top of the C driver. - -A new libmongoc-priv.so library is installed that does not have symbols -hidden. You can access private headers via the -private.h variants. This -means you will need to recompile your project every time the library is -changed (if you use those private headers, as they are subject to change). - -A special thanks to Hannes Magnusson for patches in this release. - -See `git shortlog 0.98.0..0.98.2` for a list of all the changes. - --- Christian Hergert - - -mongo-c-driver 0.98.0 -===================== - -Another step in the rapidly approaching path to 1.0! - -This release is primarily a bugfix release and stablization effort as we -approach 1.0 of the MongoDB C driver. - -This release requires 0.98.0 of Libbson for improvements to the memory -management system. You can now setup custom memory allocators at the -start of the process. - -This is a RC release that with a few improvements will likely become 1.0. - -A special thanks to the following for patches in this cycle: - - * Kyle Suarez - * yuqing - -See `git shortlog 0.96.4..0.98.0` for a list of all the changes. - --- Christian Hergert - - -mongo-c-driver 0.96.4 -===================== - -Another incremental feature update and bugfix release! - -In this release, you will find the following changes: - - * build/mci.sh script for automatically building Debian packages, RPMs, and - Solaris packaging based on the host operating system. - * Various libbson improvements, now depending on 0.8.4. - * Alignment fixes for Solaris Studio C compiler via libbson. - * Addition of mongoc_gridfs_remove_by_filename() for removing a file from - gridfs by filename. - * client command functions can now take a fully qualified namespace. - * collections can now support names that indicate a command namespace. - * Commands will no longer fail if they do not contain an "ok" field. - * OP_QUERY will now set the slaveOk bit in the wire protocol if - * readPreferences are set to non-PRIMARY. - * Various documentation and build fixes. - -Thanks again to all the contributors, and happy hacking! - - -mongo-c-driver 0.96.2 -===================== - -Hot on the heels of 0.96.0 we would like to present mongo-c-driver 0.96.2! - -This is primarily a bugfix release. Included in this release are: - - * Ensure batchSize is used in cursor GETMORE operations with `aggregate`. - * Ensure enough buffer space is allocated for incoming RPC when buffering - from a stream. - * Require libbson 0.8.2 for more robust `bson_next_power_of_two()` when - using `size_t` and BCON compilation fix with C++. - * Handle cursor id's that are not 64-bit values in response from - `aggregate` command. - * Handle upsert on MongoDB < 2.6 when _id does not contain an `ObjectId`. - * Use 100 for default batchSize in `aggregate` command. - -Happy Hacking! - - -mongo-c-driver 0.96.0 -===================== - -It's that time again, time for another mongo-c-driver release! - -This release includes much new documentation, which can be found at -http://docs.mongodb.org/ecosystem/drivers/c/. - -Additionally, this release improves support for various exotic systems. -Solaris 10 is supported much better on SPARC and x86_64 based systems. - -Some workarounds for mixed-mode sharded-clusters have been added to improve -resiliency when rolling upgrades are performed. - -Build improvements have been added to help us detect SASL and SSL -implementations on platforms that do not support pkg-config. This should -simplify building for some of you. - -We've added some more logging to SASL authentication to help debug -authentication failures. - -A bug causing an abort() when SSL is used and a server is down has been fixed. - -We've renamed various _delete() functions to _remove() to provide consistency -with other MongoDB drivers. - -You can now specify SSL options for client pools. - --D_REENTRANT is always defined now on Solaris to help with errno detection. -This may not have been done before if using a non-GCC platform with pthreads. - -A bug was fixed where timeouts could have been 1000x longer than expected -due to failure to convert from microseconds to milliseconds. - -A bug was fixed with authentication in sharded cluster and replica set -scenarios. - -Happy Hacking! - - -mongo-c-driver 0.94.2 -===================== - -Hot on the heels of 0.94.0 is 0.94.2, a bugfix release. - -A bug has been fixed when using TLS streams and large result sets. - -In this release, we added support for Sun's C compiler (Sun Pro C) on Solaris. -This allows for builds on Solaris 10 with SPARC using the native toolchain. - -This release contains a couple of fixes in libbson as well. - -Keep those bug reports coming, and as always, Happy Hacking! - - -mongo-c-driver 0.94.0 -===================== - -The mongo-c-driver team is proud to announce the release of 0.94.0. This -release is a followup to the previous release adding more features to be found -in MongoDB 2.6. - -You will find some new API's, bug fixes, and more documentation. Under the -hood, 0.94.0 uses the new write-commands as part of MongoDB 2.6 when it -discovers it is communicating with a MongoDB server. There is now a bulk -operation API (See `mongoc-bulk-operation.h`). - -Helpers for common server commands have been added. You can find most of -them `mongoc-collection.h`. - -To simply using mongo-c-driver from Windows, we've included pre-built binaries -on the release page. - -Thanks to all of the contributors this release! - -Happy Hacking! - - -mongo-c-driver 0.92.0 -===================== - -The mongo-c-driver team is proud to announce the release of 0.92.0. This -release is the culimation of a few months work and has many bug fixes and -new features. It contains over 350 commits from 4 authors since the 0.90.0 -release. - -The mongo-c-driver release tarballs now contain a bundled copy of libbson. -If you do not have libbson installed or the system installed libbson is too -old, the bundled copy of libbson will be installed. - - * Revamped build system to simplify installation. - * Windows Vista and newer support. - * Various GridFS fixes and features. - * Kerberos support via cyrus-sasl. - * Various SSL improvements. - * Support for Solaris 11, FreeBSD 10, RHEL 5+, and SmartOS. - * A new client side expression matcher to perform basic query processing. - It can perform queries such as {'field': {'$in': [1,2,3]}}. See - mongoc_matcher_t for more information. - * A new socket abstraction for platform independent network sockets. - * A new mongoc-dump example for how to write a simple mongodump replacement. - * Counters can use rdtscp instruction on Core iX systems for very fast - counters. - * configure has new options. If in doubt, the defaults are sensible. - * --enable-coverage=yes|no - * --enable-debug=yes|no - * --enable-debug-symbols=yes|no - * --enable-hardening=yes|no - * --enable-optimizations=yes|no - * --enable-ssl=yes|no - * --enable-sasl=yes|no - * --enable-tracing=yes|no - * --with-libbson=auto|system|bundled - -mongo-c-driver 0.92.0 requires libbson 0.6.4 or newer. - -Happy Hacking! - - -Libmongoc 0.90.0 -================ - -This is the initial release of the new Libmongoc. We chose 0.90.0 for the -release version to differentiate ourselves from the, now legacy, version of -libmongoc. We will rapidly work towards reaching an API/ABI stable library fit -for a 1.0.0 release. - -Libmongoc is Apache licensed so it can be embedded in a multitude of scenarios. - -The API of 0.90.0 is completely different from the previous versions. We think -this allowed us to create a high-quality library that you will enjoy using in -your applications. - -Many outstanding bugs were closed in the process of creating Libbson 0.90.0. So -if you had a pet issue, please take a look to see if it was resolved as part of -this effort! - -Thanks, and enjoy developing your applications with libmongoc! diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/README.rst b/contrib/mongoc/mongo-c-driver-1.13.1/README.rst deleted file mode 100644 index cefbc73..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/README.rst +++ /dev/null @@ -1,90 +0,0 @@ -============== -mongo-c-driver -============== - -About -===== - -mongo-c-driver is a project that includes two libraries: - -- libmongoc, a client library written in C for MongoDB. -- libbson, a library providing useful routines related to building, parsing, and iterating BSON documents. - -If libmongoc is not needed, it is possible to build and install only libbson. - -Documentation / Support / Feedback -================================== - -The documentation is available at http://mongoc.org/. -For issues with, questions about, or feedback for libmongoc, please look into -our `support channels `_. Please -do not email any of the libmongoc developers directly with issues or -questions - you're more likely to get an answer on the `mongodb-user list`_ -on Google Groups. - -Bugs / Feature Requests -======================= - -Think you’ve found a bug? Want to see a new feature in libmongoc? Please open a -case in our issue management tool, JIRA: - -- `Create an account and login `_. -- Navigate to `the CDRIVER project `_. -- Click **Create Issue** - Please provide as much information as possible about the issue type and how to reproduce it. - -Bug reports in JIRA for all driver projects (i.e. CDRIVER, CSHARP, JAVA) and the -Core Server (i.e. SERVER) project are **public**. - -How To Ask For Help -------------------- - -If you are having difficulty building the driver after reading the below instructions, please email -the `mongodb-user list`_ to ask for help. Please include in your email all of the following -information: - -- The version of the driver you are trying to build (branch or tag). - - Examples: master branch, 1.9.5 tag -- Host OS, version, and architecture. - - Examples: Windows 10 64-bit x86, Ubuntu 16.04 64-bit x86, macOS 10.13 -- C Compiler and version. - - Examples: GCC 7.3.0, Visual Studio Community 2017, clang 3.9, XCode 9.3 -- The output of ``cmake``. -- The text of the error you encountered. - -Failure to include the relevant information will delay a useful response. -Here is a made-up example of a help request that provides the relevant -information: - - Hello, I'm trying to build the C driver with Kerberos support, from - mongo-c-driver-1.9.5.tar.gz. I'm on Ubuntu 16.04, 64-bit Intel, with gcc - 5.4.0. I run CMake like:: - - $ cmake . - -- The C compiler identification is ;GNU 5.4.0 - -- Check for working C compiler: /usr/bin/cc - -- Check for working C compiler: /usr/bin/cc -- works - - ... SNIPPED OUTPUT, but when you ask for help, include full output without any omissions ... - - -- Searching for libsasl2 - -- Not found (specify -DCMAKE_LIBRARY_PATH=/path/to/sasl/lib for SASL support) - CMake Error at CMakeLists.txt:10 (_message): - SASL not found - - Can you tell me what I need to install? Thanks! - -.. _mongodb-user list: http://groups.google.com/group/mongodb-user - -Security Vulnerabilities ------------------------- - -If you’ve identified a security vulnerability in a driver or any other -MongoDB project, please report it according to the `instructions here -`_. - - -Installation -============ - -Detailed installation instructions are in the manual: -http://mongoc.org/libmongoc/current/installing.html diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/THIRD_PARTY_NOTICES b/contrib/mongoc/mongo-c-driver-1.13.1/THIRD_PARTY_NOTICES deleted file mode 100644 index beedada..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/THIRD_PARTY_NOTICES +++ /dev/null @@ -1,157 +0,0 @@ -The MongoDB C Driver uses third-party code distributed under different licenses. - -License notice for common-b64.c -------------------------------------------------------------------------------- - -ISC License - -Copyright: 1996, 1998 Internet Software Consortium - 1995 International Business Machines, Inc. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -Portions Copyright (c) 1995 by International Business Machines, Inc. - -International Business Machines, Inc. (hereinafter called IBM) grants -permission under its copyrights to use, copy, modify, and distribute this -Software with or without fee, provided that the above copyright notice and -all paragraphs of this notice appear in all copies, and that the name of IBM -not be used in connection with the marketing of any product incorporating -the Software or modifications thereof, without specific, written prior -permission. - -To the extent it has a right to do so, IBM grants an immunity from suit -under its patents, if any, for the use, sale or manufacture of products to -the extent that such products are used for performing Domain Name System -dynamic updates in TCP/IP networks by means of the Software. No immunity is -granted for any product per se or for any other function of any product. - -THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, -DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING -OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN -IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -License notice for taglist.py -------------------------------------------------------------------------------- - -MIT License - -Portions Copyright 2007-2009 by the Sphinx team. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -License notice for mongoc.css_t -------------------------------------------------------------------------------- - -MIT License - -Portions Copyright 2013 by Ignacy Sokolowski. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -License notice for zlib -------------------------------------------------------------------------------- -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.11, January 15th, 2017 - - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -License notice for common-md5.c -------------------------------------------------------------------------------- - -ZLib License - -Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -L. Peter Deutsch -ghost@aladdin.com \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/VERSION_CURRENT b/contrib/mongoc/mongo-c-driver-1.13.1/VERSION_CURRENT deleted file mode 100644 index b50dd27..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/VERSION_CURRENT +++ /dev/null @@ -1 +0,0 @@ -1.13.1 diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/VERSION_RELEASED b/contrib/mongoc/mongo-c-driver-1.13.1/VERSION_RELEASED deleted file mode 100644 index b50dd27..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/VERSION_RELEASED +++ /dev/null @@ -1 +0,0 @@ -1.13.1 diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/generate_uninstall/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/generate_uninstall/CMakeLists.txt deleted file mode 100644 index 052830e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/generate_uninstall/CMakeLists.txt +++ /dev/null @@ -1,56 +0,0 @@ -# Fabricate our own copy of the install manifest, since the installation has not -# generated the final version yet at this point - -set (UNINSTALL_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - -if (WIN32) - string (REPLACE "/" "\\\\" CMAKE_INSTALL_PREFIX_WIN32 - "${CMAKE_INSTALL_PREFIX}" - ) - install (CODE " - string(REPLACE \";\" \"\\n\" MONGOC_INSTALL_MANIFEST_CONTENT - \"\${CMAKE_INSTALL_MANIFEST_FILES}\") - string(REPLACE \"/\" \"\\\\\" MONGOC_INSTALL_MANIFEST_CONTENT_WIN32 - \"\${MONGOC_INSTALL_MANIFEST_CONTENT}\") - file(WRITE \"mongoc_install_manifest.txt\" - \"\${MONGOC_INSTALL_MANIFEST_CONTENT_WIN32}\") - execute_process ( - COMMAND - ${CMAKE_COMMAND} -E env - ENABLE_MONGOC=${ENABLE_MONGOC} - cmd.exe /c - \"${PROJECT_SOURCE_DIR}/build/generate-uninstall.cmd\" - mongoc_install_manifest.txt - ${CMAKE_INSTALL_PREFIX_WIN32} - OUTPUT_FILE - \"${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}\" - ) - ") - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}" DESTINATION "${UNINSTALL_PROG_DIR}" PERMISSIONS ${UNINSTALL_PERMISSIONS}) - - add_custom_target (uninstall - COMMAND call "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}" - ) -else () - install (CODE " - string(REPLACE \";\" \"\\n\" MONGOC_INSTALL_MANIFEST_CONTENT - \"\${CMAKE_INSTALL_MANIFEST_FILES}\") - file(WRITE \"mongoc_install_manifest.txt\" - \"\${MONGOC_INSTALL_MANIFEST_CONTENT}\") - execute_process ( - COMMAND - ${CMAKE_COMMAND} -E env - ENABLE_MONGOC=${ENABLE_MONGOC} - \"${PROJECT_SOURCE_DIR}/build/generate-uninstall.sh\" - mongoc_install_manifest.txt - ${CMAKE_INSTALL_PREFIX} - OUTPUT_FILE - \"${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}\" - ) - ") - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}" DESTINATION "${UNINSTALL_PROG_DIR}" PERMISSIONS ${UNINSTALL_PERMISSIONS}) - - add_custom_target (uninstall - COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}" - ) -endif () diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/CMakeLists.txt deleted file mode 100644 index 948e1ed..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -file (GLOB_RECURSE orchestration_configs_DIST_pems RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.pem) -file (GLOB_RECURSE orchestration_configs_DIST_jsons RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.json) - -set_dist_list (orchestration_configs_DIST - CMakeLists.txt - ${orchestration_configs_DIST_pems} - ${orchestration_configs_DIST_jsons} -) - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-ssl.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-ssl.json deleted file mode 100644 index 84eec1d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-ssl.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "auth_key": "secret", - "id": "repl0", - "login": "bob", - "password": "pwd123", - "members": [ - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27017, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "one", - "dc": "ny" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27018, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "two", - "dc": "pa" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27019, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "arbiterOnly": true - } - } - ], - "sslParams": { - "sslMode": "requireSSL", - "sslPEMKeyFile": "/tmp/orchestration-home/server.pem", - "sslCAFile": "/tmp/orchestration-home/ca.pem", - "sslAllowInvalidCertificates": true, - "sslWeakCertificateValidation" : true - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-thisDB-ssl.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-thisDB-ssl.json deleted file mode 100644 index b1f740a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth-thisDB-ssl.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "auth_key": "secret", - "id": "repl0", - "login": "bob", - "password": "pwd123", - "authSource": "thisDB", - "members": [ - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27017, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "one", - "dc": "ny" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27018, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "two", - "dc": "pa" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27019, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "arbiterOnly": true - } - } - ], - "sslParams": { - "sslMode": "requireSSL", - "sslPEMKeyFile": "/tmp/orchestration-home/server.pem", - "sslCAFile": "/tmp/orchestration-home/ca.pem", - "sslAllowInvalidCertificates": true, - "sslWeakCertificateValidation" : true - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth.json deleted file mode 100644 index d436c50..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/auth.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "auth_key": "secret", - "id": "repl0", - "login": "bob", - "members": [ - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27017, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "one", - "dc": "ny" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27018, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "two", - "dc": "pa" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27019, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "arbiterOnly": true - } - } - ], - "password": "pwd123" -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic-ssl.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic-ssl.json deleted file mode 100644 index db00a6a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic-ssl.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "id": "repl0", - "members": [ - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27017, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "one", - "dc": "ny" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27018, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "two", - "dc": "pa" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27019, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "arbiterOnly": true - } - } - ], - "sslParams": { - "sslMode": "requireSSL", - "sslPEMKeyFile": "/tmp/orchestration-home/server.pem", - "sslCAFile": "/tmp/orchestration-home/ca.pem", - "sslAllowInvalidCertificates": true, - "sslWeakCertificateValidation" : true - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic.json deleted file mode 100644 index 3d9d3dc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/replica_sets/basic.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "id": "repl0", - "members": [ - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27017, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "one", - "dc": "ny" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27018, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "tags": { - "ordinal": "two", - "dc": "pa" - } - } - }, - { - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "journal": true, - "port": 27019, - "setParameter" : { "enableTestCommands": 1 } - }, - "rsParams": { - "arbiterOnly": true - } - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth-ssl.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth-ssl.json deleted file mode 100644 index 7bf7c88..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth-ssl.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "id" : "standalonessl", - "name": "mongod", - "login": "bob", - "password": "pwd123", - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "port": 27017 - }, - "sslParams": { - "sslMode": "requireSSL", - "sslPEMKeyFile": "/tmp/orchestration-home/server.pem", - "sslCAFile": "/tmp/orchestration-home/ca.pem", - "sslAllowInvalidCertificates": true, - "sslWeakCertificateValidation" : true - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth.json deleted file mode 100644 index 0ccbb7f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/auth.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "id": "standalone", - "auth_key": "secret", - "login": "bob", - "name": "mongod", - "password": "pwd123", - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ipv4-only.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ipv4-only.json deleted file mode 100644 index f681a73..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ipv4-only.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "mongod", - "procParams": { - "ipv6": false, - "logappend": true, - "journal": true, - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ssl.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ssl.json deleted file mode 100644 index 959a240..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic-ssl.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "id" : "standalonenoauthssl", - "name": "mongod", - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "port": 27017 - }, - "sslParams": { - "sslMode": "requireSSL", - "sslPEMKeyFile": "/tmp/orchestration-home/server.pem", - "sslCAFile": "/tmp/orchestration-home/ca.pem", - "sslAllowInvalidCertificates": true, - "sslWeakCertificateValidation" : true - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic.json deleted file mode 100644 index e062966..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/basic.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "mongod", - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/mmapv1.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/mmapv1.json deleted file mode 100644 index 7bdca5d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/mmapv1.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "mongod", - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "storageEngine": "mmapv1", - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy-zlib.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy-zlib.json deleted file mode 100644 index 32de195..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy-zlib.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "mongod", - "procParams": { - "networkMessageCompressors": "snappy,zlib", - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy.json deleted file mode 100644 index 6e62d3f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/snappy.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "mongod", - "procParams": { - "networkMessageCompressors": "snappy", - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/wiredtiger.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/wiredtiger.json deleted file mode 100644 index e747d44..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/wiredtiger.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "mongod", - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "storageEngine": "wiredTiger", - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/zlib.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/zlib.json deleted file mode 100644 index 95f0a26..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/servers/zlib.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "mongod", - "procParams": { - "networkMessageCompressors": "zlib", - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "logappend": true, - "journal": true, - "port": 27017 - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth-ssl.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth-ssl.json deleted file mode 100644 index e25ff21..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth-ssl.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "id": "shard_cluster_1", - "login": "bob", - "password": "pwd123", - "auth_key": "secret", - "shards": [ - { - "id": "sh01", - "shardParams": { - "members": [{ - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "shardsvr": true, - "setParameter" : { "enableTestCommands": 1 }, - "port": 27217 - } - }] - } - }, - { - "id": "sh02", - "shardParams": { - "members": [{ - "procParams": { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "shardsvr": true, - "setParameter" : { "enableTestCommands": 1 }, - "port": 27218 - } - }] - } - } - ], - "routers": [ - { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "setParameter" : { "enableTestCommands": 1 }, - "port": 27017 - }, - { - "ipv6": true, - "bind_ip": "127.0.0.1,::1", - "setParameter" : { "enableTestCommands": 1 }, - "port": 27018 - } - ], - "sslParams": { - "sslOnNormalPorts": true, - "sslPEMKeyFile": "/tmp/orchestration-home/server.pem", - "sslCAFile": "/tmp/orchestration-home/ca.pem", - "sslWeakCertificateValidation" : true - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth.json deleted file mode 100644 index f5dfbdf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/auth.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "id": "shard_cluster_1", - "login": "bob", - "password": "pwd123", - "auth_key": "secret", - "shards": [ - { - "id": "sh01", - "shardParams": { - "members": [ - { - "procParams": { - "shardsvr": true, - "port": 27217 - } - }, - { - "procParams": { - "shardsvr": true, - "port": 27218 - } - } - ] - } - }, - { - "id": "sh02", - "shardParams": { - "members": [ - { - "procParams": { - "shardsvr": true, - "port": 27219 - } - }, - { - "procParams": { - "shardsvr": true, - "port": 27220 - } - } - ] - } - } - ], - "routers": [ - { - "port": 27017, - "ipv6": true, - "bind_ip": "127.0.0.1,::1" - }, - { - "port": 27018, - "ipv6": true, - "bind_ip": "127.0.0.1,::1" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic-ssl.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic-ssl.json deleted file mode 100644 index 7e4458b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic-ssl.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "id": "shard_cluster_1", - "shards": [ - { - "id": "sh01", - "shardParams": { - "members": [ - { - "procParams": { - "shardsvr": true, - "port": 27217 - } - }, - { - "procParams": { - "shardsvr": true, - "port": 27218 - } - } - ] - } - }, - { - "id": "sh02", - "shardParams": { - "members": [ - { - "procParams": { - "shardsvr": true, - "port": 27219 - } - }, - { - "procParams": { - "shardsvr": true, - "port": 27220 - } - } - ] - } - } - ], - "routers": [ - { - "port": 27017, - "ipv6": true, - "bind_ip": "127.0.0.1,::1" - }, - { - "port": 27018, - "ipv6": true, - "bind_ip": "127.0.0.1,::1" - } - ], - "sslParams": { - "sslMode": "requireSSL", - "sslPEMKeyFile": "/tmp/orchestration-home/server.pem", - "sslCAFile": "/tmp/orchestration-home/ca.pem", - "sslAllowInvalidCertificates": true, - "sslWeakCertificateValidation" : true - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic.json b/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic.json deleted file mode 100644 index 31f88e0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/orchestration_configs/sharded_clusters/basic.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "id": "shard_cluster_1", - "shards": [ - { - "id": "sh01", - "shardParams": { - "members": [ - { - "procParams": { - "shardsvr": true, - "port": 27217 - } - }, - { - "procParams": { - "shardsvr": true, - "port": 27218 - } - } - ] - } - }, - { - "id": "sh02", - "shardParams": { - "members": [ - { - "procParams": { - "shardsvr": true, - "port": 27219 - } - }, - { - "procParams": { - "shardsvr": true, - "port": 27220 - } - } - ] - } - } - ], - "routers": [ - { - "port": 27017, - "ipv6": true, - "bind_ip": "127.0.0.1,::1" - }, - { - "port": 27018, - "ipv6": true, - "bind_ip": "127.0.0.1,::1" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/CMakeLists.txt deleted file mode 100644 index 8c8e5cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -# sub-directory 'libbson' was already included at the top-level -# sub-directory 'libmongoc' was already included at the top-level -add_subdirectory (tools) -add_subdirectory (common) - -# zconf.h is generated by configure_file() in the parent CMakeLists.txt -extra_dist_generated (zlib-1.2.11/zconf.h) -set (src_zlib_DIST - src/zlib-1.2.11/crc32.h - src/zlib-1.2.11/deflate.h - src/zlib-1.2.11/gzguts.h - src/zlib-1.2.11/inffast.h - src/zlib-1.2.11/inffixed.h - src/zlib-1.2.11/inflate.h - src/zlib-1.2.11/inftrees.h - src/zlib-1.2.11/trees.h - src/zlib-1.2.11/zconf.h.in - src/zlib-1.2.11/zlib.h - src/zlib-1.2.11/zutil.h -) -# Strip leading directory components to make the paths relative for MakeDist. -# The ZLIB_SOURCES list is set in the top-level CMakeLists.txt. -foreach (zlib_src IN LISTS ZLIB_SOURCES) - string (REPLACE "${SOURCE_DIR}/" "" zlib_src_rel ${zlib_src}) - list (APPEND src_zlib_DIST ${zlib_src_rel}) -endforeach () - -set_local_dist (src_DIST_local - CMakeLists.txt -) - -set (src_DIST - ${src_DIST_local} - ${src_tools_DIST} - ${src_zlib_DIST} - ${src_common_DIST} - PARENT_SCOPE -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/common/CMakeLists.txt deleted file mode 100644 index 302a84f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -set (src_common_DIST_noinst_hs - common-b64-private.h - common-md5-private.h - common-thread-private.h -) - -set (src_common_DIST_cs - common-b64.c - common-md5.c -) - -set_dist_list (src_common_DIST - CMakeLists.txt - ${src_common_DIST_cs} - ${src_common_DIST_noinst_hs} -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64-private.h deleted file mode 100644 index 9d3e41a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64-private.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2018-present MongoDB Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef COMMON_B64_PRIVATE_H -#define COMMON_B64_PRIVATE_H - -#if !defined(MONGOC_COMPILATION) && !defined(BSON_COMPILATION) && \ - !defined(BSON_INSIDE) -#error "Only or can be included directly." -#endif - -#include - -int -bson_b64_ntop (uint8_t const *src, - size_t srclength, - char *target, - size_t targsize); - -int -bson_b64_pton (char const *src, uint8_t *target, size_t targsize); - -#endif /* COMMON_B64_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64.c deleted file mode 100644 index 905e306..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-b64.c +++ /dev/null @@ -1,528 +0,0 @@ -/* - * Copyright (c) 1996, 1998 by Internet Software Consortium. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS - * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE - * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -/* - * Portions Copyright (c) 1995 by International Business Machines, Inc. - * - * International Business Machines, Inc. (hereinafter called IBM) grants - * permission under its copyrights to use, copy, modify, and distribute this - * Software with or without fee, provided that the above copyright notice and - * all paragraphs of this notice appear in all copies, and that the name of IBM - * not be used in connection with the marketing of any product incorporating - * the Software or modifications thereof, without specific, written prior - * permission. - * - * To the extent it has a right to do so, IBM grants an immunity from suit - * under its patents, if any, for the use, sale or manufacture of products to - * the extent that such products are used for performing Domain Name System - * dynamic updates in TCP/IP networks by means of the Software. No immunity is - * granted for any product per se or for any other function of any product. - * - * THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, - * DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN - * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. - */ - -#include "bson/bson.h" -#include "common-b64-private.h" - -#define Assert(Cond) \ - if (!(Cond)) \ - abort () - -static const char Base64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -static const char Pad64 = '='; - -/* (From RFC1521 and draft-ietf-dnssec-secext-03.txt) - * The following encoding technique is taken from RFC 1521 by Borenstein - * and Freed. It is reproduced here in a slightly edited form for - * convenience. - * - * A 65-character subset of US-ASCII is used, enabling 6 bits to be - * represented per printable character. (The extra 65th character, "=", - * is used to signify a special processing function.) - * - * The encoding process represents 24-bit groups of input bits as output - * strings of 4 encoded characters. Proceeding from left to right, a - * 24-bit input group is formed by concatenating 3 8-bit input groups. - * These 24 bits are then treated as 4 concatenated 6-bit groups, each - * of which is translated into a single digit in the base64 alphabet. - * - * Each 6-bit group is used as an index into an array of 64 printable - * characters. The character referenced by the index is placed in the - * output string. - * - * Table 1: The Base64 Alphabet - * - * Value Encoding Value Encoding Value Encoding Value Encoding - * 0 A 17 R 34 i 51 z - * 1 B 18 S 35 j 52 0 - * 2 C 19 T 36 k 53 1 - * 3 D 20 U 37 l 54 2 - * 4 E 21 V 38 m 55 3 - * 5 F 22 W 39 n 56 4 - * 6 G 23 X 40 o 57 5 - * 7 H 24 Y 41 p 58 6 - * 8 I 25 Z 42 q 59 7 - * 9 J 26 a 43 r 60 8 - * 10 K 27 b 44 s 61 9 - * 11 L 28 c 45 t 62 + - * 12 M 29 d 46 u 63 / - * 13 N 30 e 47 v - * 14 O 31 f 48 w (pad) = - * 15 P 32 g 49 x - * 16 Q 33 h 50 y - * - * Special processing is performed if fewer than 24 bits are available - * at the end of the data being encoded. A full encoding quantum is - * always completed at the end of a quantity. When fewer than 24 input - * bits are available in an input group, zero bits are added (on the - * right) to form an integral number of 6-bit groups. Padding at the - * end of the data is performed using the '=' character. - * - * Since all base64 input is an integral number of octets, only the - * following cases can arise: - * - * (1) the final quantum of encoding input is an integral - * multiple of 24 bits; here, the final unit of encoded - * output will be an integral multiple of 4 characters - * with no "=" padding, - * (2) the final quantum of encoding input is exactly 8 bits; - * here, the final unit of encoded output will be two - * characters followed by two "=" padding characters, or - * (3) the final quantum of encoding input is exactly 16 bits; - * here, the final unit of encoded output will be three - * characters followed by one "=" padding character. - */ - -int -bson_b64_ntop (uint8_t const *src, - size_t srclength, - char *target, - size_t targsize) -{ - size_t datalength = 0; - uint8_t input[3]; - uint8_t output[4]; - size_t i; - - while (2 < srclength) { - input[0] = *src++; - input[1] = *src++; - input[2] = *src++; - srclength -= 3; - - output[0] = input[0] >> 2; - output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); - output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); - output[3] = input[2] & 0x3f; - Assert (output[0] < 64); - Assert (output[1] < 64); - Assert (output[2] < 64); - Assert (output[3] < 64); - - if (datalength + 4 > targsize) { - return -1; - } - target[datalength++] = Base64[output[0]]; - target[datalength++] = Base64[output[1]]; - target[datalength++] = Base64[output[2]]; - target[datalength++] = Base64[output[3]]; - } - - /* Now we worry about padding. */ - if (0 != srclength) { - /* Get what's left. */ - input[0] = input[1] = input[2] = '\0'; - - for (i = 0; i < srclength; i++) { - input[i] = *src++; - } - output[0] = input[0] >> 2; - output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); - output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); - Assert (output[0] < 64); - Assert (output[1] < 64); - Assert (output[2] < 64); - - if (datalength + 4 > targsize) { - return -1; - } - target[datalength++] = Base64[output[0]]; - target[datalength++] = Base64[output[1]]; - - if (srclength == 1) { - target[datalength++] = Pad64; - } else { - target[datalength++] = Base64[output[2]]; - } - target[datalength++] = Pad64; - } - - if (datalength >= targsize) { - return -1; - } - target[datalength] = '\0'; /* Returned value doesn't count \0. */ - return (int) datalength; -} - -/* (From RFC1521 and draft-ietf-dnssec-secext-03.txt) - The following encoding technique is taken from RFC 1521 by Borenstein - and Freed. It is reproduced here in a slightly edited form for - convenience. - - A 65-character subset of US-ASCII is used, enabling 6 bits to be - represented per printable character. (The extra 65th character, "=", - is used to signify a special processing function.) - - The encoding process represents 24-bit groups of input bits as output - strings of 4 encoded characters. Proceeding from left to right, a - 24-bit input group is formed by concatenating 3 8-bit input groups. - These 24 bits are then treated as 4 concatenated 6-bit groups, each - of which is translated into a single digit in the base64 alphabet. - - Each 6-bit group is used as an index into an array of 64 printable - characters. The character referenced by the index is placed in the - output string. - - Table 1: The Base64 Alphabet - - Value Encoding Value Encoding Value Encoding Value Encoding - 0 A 17 R 34 i 51 z - 1 B 18 S 35 j 52 0 - 2 C 19 T 36 k 53 1 - 3 D 20 U 37 l 54 2 - 4 E 21 V 38 m 55 3 - 5 F 22 W 39 n 56 4 - 6 G 23 X 40 o 57 5 - 7 H 24 Y 41 p 58 6 - 8 I 25 Z 42 q 59 7 - 9 J 26 a 43 r 60 8 - 10 K 27 b 44 s 61 9 - 11 L 28 c 45 t 62 + - 12 M 29 d 46 u 63 / - 13 N 30 e 47 v - 14 O 31 f 48 w (pad) = - 15 P 32 g 49 x - 16 Q 33 h 50 y - - Special processing is performed if fewer than 24 bits are available - at the end of the data being encoded. A full encoding quantum is - always completed at the end of a quantity. When fewer than 24 input - bits are available in an input group, zero bits are added (on the - right) to form an integral number of 6-bit groups. Padding at the - end of the data is performed using the '=' character. - - Since all base64 input is an integral number of octets, only the - following cases can arise: - - (1) the final quantum of encoding input is an integral - multiple of 24 bits; here, the final unit of encoded - output will be an integral multiple of 4 characters - with no "=" padding, - (2) the final quantum of encoding input is exactly 8 bits; - here, the final unit of encoded output will be two - characters followed by two "=" padding characters, or - (3) the final quantum of encoding input is exactly 16 bits; - here, the final unit of encoded output will be three - characters followed by one "=" padding character. - */ - -/* skips all whitespace anywhere. - converts characters, four at a time, starting at (or after) - src from base - 64 numbers into three 8 bit bytes in the target area. - it returns the number of data bytes stored at the target, or -1 on error. - */ - -static uint8_t mongoc_b64rmap[256]; - -static const uint8_t mongoc_b64rmap_special = 0xf0; -static const uint8_t mongoc_b64rmap_end = 0xfd; -static const uint8_t mongoc_b64rmap_space = 0xfe; -static const uint8_t mongoc_b64rmap_invalid = 0xff; - -/* initializing the reverse map isn't thread safe, do it in pthread_once */ -#if defined(BSON_OS_UNIX) -#include -#define mongoc_common_once_t pthread_once_t -#define mongoc_common_once pthread_once -#define MONGOC_COMMON_ONCE_FUN(n) void n (void) -#define MONGOC_COMMON_ONCE_RETURN return -#define MONGOC_COMMON_ONCE_INIT PTHREAD_ONCE_INIT -#else -#define mongoc_common_once_t INIT_ONCE -#define MONGOC_COMMON_ONCE_INIT INIT_ONCE_STATIC_INIT -#define mongoc_common_once(o, c) InitOnceExecuteOnce (o, c, NULL, NULL) -#define MONGOC_COMMON_ONCE_FUN(n) \ - BOOL CALLBACK n (PINIT_ONCE _ignored_a, PVOID _ignored_b, PVOID *_ignored_c) -#define MONGOC_COMMON_ONCE_RETURN return true -#endif - -static MONGOC_COMMON_ONCE_FUN (bson_b64_initialize_rmap) -{ - int i; - unsigned char ch; - - /* Null: end of string, stop parsing */ - mongoc_b64rmap[0] = mongoc_b64rmap_end; - - for (i = 1; i < 256; ++i) { - ch = (unsigned char) i; - /* Whitespaces */ - if (isspace (ch)) - mongoc_b64rmap[i] = mongoc_b64rmap_space; - /* Padding: stop parsing */ - else if (ch == Pad64) - mongoc_b64rmap[i] = mongoc_b64rmap_end; - /* Non-base64 char */ - else - mongoc_b64rmap[i] = mongoc_b64rmap_invalid; - } - - /* Fill reverse mapping for base64 chars */ - for (i = 0; Base64[i] != '\0'; ++i) - mongoc_b64rmap[(uint8_t) Base64[i]] = i; - - MONGOC_COMMON_ONCE_RETURN; -} - -static int -mongoc_b64_pton_do (char const *src, uint8_t *target, size_t targsize) -{ - int tarindex, state, ch; - uint8_t ofs; - - state = 0; - tarindex = 0; - - while (1) { - ch = *src++; - ofs = mongoc_b64rmap[ch]; - - if (ofs >= mongoc_b64rmap_special) { - /* Ignore whitespaces */ - if (ofs == mongoc_b64rmap_space) - continue; - /* End of base64 characters */ - if (ofs == mongoc_b64rmap_end) - break; - /* A non-base64 character. */ - return (-1); - } - - switch (state) { - case 0: - if ((size_t) tarindex >= targsize) - return (-1); - target[tarindex] = ofs << 2; - state = 1; - break; - case 1: - if ((size_t) tarindex + 1 >= targsize) - return (-1); - target[tarindex] |= ofs >> 4; - target[tarindex + 1] = (ofs & 0x0f) << 4; - tarindex++; - state = 2; - break; - case 2: - if ((size_t) tarindex + 1 >= targsize) - return (-1); - target[tarindex] |= ofs >> 2; - target[tarindex + 1] = (ofs & 0x03) << 6; - tarindex++; - state = 3; - break; - case 3: - if ((size_t) tarindex >= targsize) - return (-1); - target[tarindex] |= ofs; - tarindex++; - state = 0; - break; - default: - abort (); - } - } - - /* - * We are done decoding Base-64 chars. Let's see if we ended - * on a byte boundary, and/or with erroneous trailing characters. - */ - - if (ch == Pad64) { /* We got a pad char. */ - ch = *src++; /* Skip it, get next. */ - switch (state) { - case 0: /* Invalid = in first position */ - case 1: /* Invalid = in second position */ - return (-1); - - case 2: /* Valid, means one byte of info */ - /* Skip any number of spaces. */ - for ((void) NULL; ch != '\0'; ch = *src++) - if (mongoc_b64rmap[ch] != mongoc_b64rmap_space) - break; - /* Make sure there is another trailing = sign. */ - if (ch != Pad64) - return (-1); - ch = *src++; /* Skip the = */ - /* Fall through to "single trailing =" case. */ - /* FALLTHROUGH */ - - case 3: /* Valid, means two bytes of info */ - /* - * We know this char is an =. Is there anything but - * whitespace after it? - */ - for ((void) NULL; ch != '\0'; ch = *src++) - if (mongoc_b64rmap[ch] != mongoc_b64rmap_space) - return (-1); - - /* - * Now make sure for cases 2 and 3 that the "extra" - * bits that slopped past the last full byte were - * zeros. If we don't check them, they become a - * subliminal channel. - */ - if (target[tarindex] != 0) - return (-1); - default: - break; - } - } else { - /* - * We ended by seeing the end of the string. Make sure we - * have no partial bytes lying around. - */ - if (state != 0) - return (-1); - } - - return (tarindex); -} - - -static int -mongoc_b64_pton_len (char const *src) -{ - int tarindex, state, ch; - uint8_t ofs; - - state = 0; - tarindex = 0; - - while (1) { - ch = *src++; - ofs = mongoc_b64rmap[ch]; - - if (ofs >= mongoc_b64rmap_special) { - /* Ignore whitespaces */ - if (ofs == mongoc_b64rmap_space) - continue; - /* End of base64 characters */ - if (ofs == mongoc_b64rmap_end) - break; - /* A non-base64 character. */ - return (-1); - } - - switch (state) { - case 0: - state = 1; - break; - case 1: - tarindex++; - state = 2; - break; - case 2: - tarindex++; - state = 3; - break; - case 3: - tarindex++; - state = 0; - break; - default: - abort (); - } - } - - /* - * We are done decoding Base-64 chars. Let's see if we ended - * on a byte boundary, and/or with erroneous trailing characters. - */ - - if (ch == Pad64) { /* We got a pad char. */ - ch = *src++; /* Skip it, get next. */ - switch (state) { - case 0: /* Invalid = in first position */ - case 1: /* Invalid = in second position */ - return (-1); - - case 2: /* Valid, means one byte of info */ - /* Skip any number of spaces. */ - for ((void) NULL; ch != '\0'; ch = *src++) - if (mongoc_b64rmap[ch] != mongoc_b64rmap_space) - break; - /* Make sure there is another trailing = sign. */ - if (ch != Pad64) - return (-1); - ch = *src++; /* Skip the = */ - /* Fall through to "single trailing =" case. */ - /* FALLTHROUGH */ - - case 3: /* Valid, means two bytes of info */ - /* - * We know this char is an =. Is there anything but - * whitespace after it? - */ - for ((void) NULL; ch != '\0'; ch = *src++) - if (mongoc_b64rmap[ch] != mongoc_b64rmap_space) - return (-1); - - default: - break; - } - } else { - /* - * We ended by seeing the end of the string. Make sure we - * have no partial bytes lying around. - */ - if (state != 0) - return (-1); - } - - return (tarindex); -} - - -int -bson_b64_pton (char const *src, uint8_t *target, size_t targsize) -{ - static mongoc_common_once_t once = MONGOC_COMMON_ONCE_INIT; - - mongoc_common_once (&once, bson_b64_initialize_rmap); - - if (target) - return mongoc_b64_pton_do (src, target, targsize); - else - return mongoc_b64_pton_len (src); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5-private.h deleted file mode 100644 index 210b0f1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5-private.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2018-present MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef COMMON_MD5_PRIVATE_H -#define COMMON_MD5_PRIVATE_H - - -#if !defined(MONGOC_COMPILATION) && !defined(BSON_COMPILATION) && \ - !defined(BSON_INSIDE) -#error "Only or can be included directly." -#endif - -#include "bson/bson.h" - -BSON_BEGIN_DECLS - -void -_bson_md5_init (bson_md5_t *pms); -void -_bson_md5_append (bson_md5_t *pms, const uint8_t *data, uint32_t nbytes); -void -_bson_md5_finish (bson_md5_t *pms, uint8_t digest[16]); - -BSON_END_DECLS - -#endif /* COMMON_MD5_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5.c deleted file mode 100644 index 86f6f67..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-md5.c +++ /dev/null @@ -1,395 +0,0 @@ -/* - Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgement in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - L. Peter Deutsch - ghost@aladdin.com - - */ -/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */ -/* - Independent implementation of MD5 (RFC 1321). - - This code implements the MD5 Algorithm defined in RFC 1321, whose - text is available at - http://www.ietf.org/rfc/rfc1321.txt - The code is derived from the text of the RFC, including the test suite - (section A.5) but excluding the rest of Appendix A. It does not include - any code or documentation that is identified in the RFC as being - copyrighted. - - The original and principal author of md5.c is L. Peter Deutsch - . Other authors are noted in the change history - that follows (in reverse chronological order): - - 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order - either statically or dynamically; added missing #include - in library. - 2002-03-11 lpd Corrected argument list for main(), and added int return - type, in test program and T value program. - 2002-02-21 lpd Added missing #include in test program. - 2000-07-03 lpd Patched to eliminate warnings about "constant is - unsigned in ANSI C, signed in traditional"; made test program - self-checking. - 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. - 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). - 1999-05-03 lpd Original version. - */ - -/* - * The following MD5 implementation has been modified to use types as - * specified in libbson. - */ - -#include - -#include "common-md5-private.h" - -#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ -#if BSON_BYTE_ORDER == BSON_BIG_ENDIAN -#define BYTE_ORDER 1 -#else -#define BYTE_ORDER -1 -#endif - -#define T_MASK ((uint32_t) ~0) -#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) -#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) -#define T3 0x242070db -#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) -#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) -#define T6 0x4787c62a -#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) -#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) -#define T9 0x698098d8 -#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) -#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) -#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) -#define T13 0x6b901122 -#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) -#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) -#define T16 0x49b40821 -#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) -#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) -#define T19 0x265e5a51 -#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) -#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) -#define T22 0x02441453 -#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) -#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) -#define T25 0x21e1cde6 -#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) -#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) -#define T28 0x455a14ed -#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) -#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) -#define T31 0x676f02d9 -#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) -#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) -#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) -#define T35 0x6d9d6122 -#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) -#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) -#define T38 0x4bdecfa9 -#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) -#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) -#define T41 0x289b7ec6 -#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) -#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) -#define T44 0x04881d05 -#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) -#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) -#define T47 0x1fa27cf8 -#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) -#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) -#define T50 0x432aff97 -#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) -#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) -#define T53 0x655b59c3 -#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) -#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) -#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) -#define T57 0x6fa87e4f -#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) -#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) -#define T60 0x4e0811a1 -#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) -#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) -#define T63 0x2ad7d2bb -#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) - - -static void -bson_md5_process (bson_md5_t *md5, const uint8_t *data) -{ - uint32_t a = md5->abcd[0]; - uint32_t b = md5->abcd[1]; - uint32_t c = md5->abcd[2]; - uint32_t d = md5->abcd[3]; - uint32_t t; - -#if BYTE_ORDER > 0 - /* Define storage only for big-endian CPUs. */ - uint32_t X[16]; -#else - /* Define storage for little-endian or both types of CPUs. */ - uint32_t xbuf[16]; - const uint32_t *X; -#endif - - { -#if BYTE_ORDER == 0 - /* - * Determine dynamically whether this is a big-endian or - * little-endian machine, since we can use a more efficient - * algorithm on the latter. - */ - static const int w = 1; - - if (*((const uint8_t *) &w)) /* dynamic little-endian */ -#endif -#if BYTE_ORDER <= 0 /* little-endian */ - { - /* - * On little-endian machines, we can process properly aligned - * data without copying it. - */ - if (!((data - (const uint8_t *) 0) & 3)) { -/* data are properly aligned */ -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wcast-align" -#endif - X = (const uint32_t *) data; -#ifdef __clang__ -#pragma clang diagnostic pop -#endif - } else { - /* not aligned */ - memcpy (xbuf, data, sizeof (xbuf)); - X = xbuf; - } - } -#endif -#if BYTE_ORDER == 0 - else /* dynamic big-endian */ -#endif -#if BYTE_ORDER >= 0 /* big-endian */ - { - /* - * On big-endian machines, we must arrange the bytes in the - * right order. - */ - const uint8_t *xp = data; - int i; - -#if BYTE_ORDER == 0 - X = xbuf; /* (dynamic only) */ -#else -#define xbuf X /* (static only) */ -#endif - for (i = 0; i < 16; ++i, xp += 4) - xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); - } -#endif - } - -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) - -/* Round 1. */ -/* Let [abcd k s i] denote the operation - a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ -#define F(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define SET(a, b, c, d, k, s, Ti) \ - t = a + F (b, c, d) + X[k] + Ti; \ - a = ROTATE_LEFT (t, s) + b - /* Do the following 16 operations. */ - SET (a, b, c, d, 0, 7, T1); - SET (d, a, b, c, 1, 12, T2); - SET (c, d, a, b, 2, 17, T3); - SET (b, c, d, a, 3, 22, T4); - SET (a, b, c, d, 4, 7, T5); - SET (d, a, b, c, 5, 12, T6); - SET (c, d, a, b, 6, 17, T7); - SET (b, c, d, a, 7, 22, T8); - SET (a, b, c, d, 8, 7, T9); - SET (d, a, b, c, 9, 12, T10); - SET (c, d, a, b, 10, 17, T11); - SET (b, c, d, a, 11, 22, T12); - SET (a, b, c, d, 12, 7, T13); - SET (d, a, b, c, 13, 12, T14); - SET (c, d, a, b, 14, 17, T15); - SET (b, c, d, a, 15, 22, T16); -#undef SET - -/* Round 2. */ -/* Let [abcd k s i] denote the operation - a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ -#define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) -#define SET(a, b, c, d, k, s, Ti) \ - t = a + G (b, c, d) + X[k] + Ti; \ - a = ROTATE_LEFT (t, s) + b - /* Do the following 16 operations. */ - SET (a, b, c, d, 1, 5, T17); - SET (d, a, b, c, 6, 9, T18); - SET (c, d, a, b, 11, 14, T19); - SET (b, c, d, a, 0, 20, T20); - SET (a, b, c, d, 5, 5, T21); - SET (d, a, b, c, 10, 9, T22); - SET (c, d, a, b, 15, 14, T23); - SET (b, c, d, a, 4, 20, T24); - SET (a, b, c, d, 9, 5, T25); - SET (d, a, b, c, 14, 9, T26); - SET (c, d, a, b, 3, 14, T27); - SET (b, c, d, a, 8, 20, T28); - SET (a, b, c, d, 13, 5, T29); - SET (d, a, b, c, 2, 9, T30); - SET (c, d, a, b, 7, 14, T31); - SET (b, c, d, a, 12, 20, T32); -#undef SET - -/* Round 3. */ -/* Let [abcd k s t] denote the operation - a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define SET(a, b, c, d, k, s, Ti) \ - t = a + H (b, c, d) + X[k] + Ti; \ - a = ROTATE_LEFT (t, s) + b - /* Do the following 16 operations. */ - SET (a, b, c, d, 5, 4, T33); - SET (d, a, b, c, 8, 11, T34); - SET (c, d, a, b, 11, 16, T35); - SET (b, c, d, a, 14, 23, T36); - SET (a, b, c, d, 1, 4, T37); - SET (d, a, b, c, 4, 11, T38); - SET (c, d, a, b, 7, 16, T39); - SET (b, c, d, a, 10, 23, T40); - SET (a, b, c, d, 13, 4, T41); - SET (d, a, b, c, 0, 11, T42); - SET (c, d, a, b, 3, 16, T43); - SET (b, c, d, a, 6, 23, T44); - SET (a, b, c, d, 9, 4, T45); - SET (d, a, b, c, 12, 11, T46); - SET (c, d, a, b, 15, 16, T47); - SET (b, c, d, a, 2, 23, T48); -#undef SET - -/* Round 4. */ -/* Let [abcd k s t] denote the operation - a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ -#define I(x, y, z) ((y) ^ ((x) | ~(z))) -#define SET(a, b, c, d, k, s, Ti) \ - t = a + I (b, c, d) + X[k] + Ti; \ - a = ROTATE_LEFT (t, s) + b - /* Do the following 16 operations. */ - SET (a, b, c, d, 0, 6, T49); - SET (d, a, b, c, 7, 10, T50); - SET (c, d, a, b, 14, 15, T51); - SET (b, c, d, a, 5, 21, T52); - SET (a, b, c, d, 12, 6, T53); - SET (d, a, b, c, 3, 10, T54); - SET (c, d, a, b, 10, 15, T55); - SET (b, c, d, a, 1, 21, T56); - SET (a, b, c, d, 8, 6, T57); - SET (d, a, b, c, 15, 10, T58); - SET (c, d, a, b, 6, 15, T59); - SET (b, c, d, a, 13, 21, T60); - SET (a, b, c, d, 4, 6, T61); - SET (d, a, b, c, 11, 10, T62); - SET (c, d, a, b, 2, 15, T63); - SET (b, c, d, a, 9, 21, T64); -#undef SET - - /* Then perform the following additions. (That is increment each - of the four registers by the value it had before this block - was started.) */ - md5->abcd[0] += a; - md5->abcd[1] += b; - md5->abcd[2] += c; - md5->abcd[3] += d; -} - -void -_bson_md5_init (bson_md5_t *pms) -{ - pms->count[0] = pms->count[1] = 0; - pms->abcd[0] = 0x67452301; - pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; - pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; - pms->abcd[3] = 0x10325476; -} - -void -_bson_md5_append (bson_md5_t *pms, const uint8_t *data, uint32_t nbytes) -{ - const uint8_t *p = data; - int left = nbytes; - int offset = (pms->count[0] >> 3) & 63; - uint32_t nbits = (uint32_t) (nbytes << 3); - - if (nbytes <= 0) - return; - - /* Update the message length. */ - pms->count[1] += nbytes >> 29; - pms->count[0] += nbits; - if (pms->count[0] < nbits) - pms->count[1]++; - - /* Process an initial partial block. */ - if (offset) { - int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); - - memcpy (pms->buf + offset, p, copy); - if (offset + copy < 64) - return; - p += copy; - left -= copy; - bson_md5_process (pms, pms->buf); - } - - /* Process full blocks. */ - for (; left >= 64; p += 64, left -= 64) - bson_md5_process (pms, p); - - /* Process a final partial block. */ - if (left) - memcpy (pms->buf, p, left); -} - - -void -_bson_md5_finish (bson_md5_t *pms, uint8_t digest[16]) -{ - static const uint8_t pad[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t data[8]; - int i; - - /* Save the length before padding. */ - for (i = 0; i < 8; ++i) - data[i] = (uint8_t) (pms->count[i >> 2] >> ((i & 3) << 3)); - /* Pad to 56 bytes mod 64. */ - _bson_md5_append (pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); - /* Append the length. */ - _bson_md5_append (pms, data, sizeof (data)); - for (i = 0; i < 16; ++i) - digest[i] = (uint8_t) (pms->abcd[i >> 2] >> ((i & 3) << 3)); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-thread-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-thread-private.h deleted file mode 100644 index 2d86e1b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/common/common-thread-private.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2013-present MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef COMMON_THREAD_PRIVATE_H -#define COMMON_THREAD_PRIVATE_H - -#if !defined(MONGOC_COMPILATION) && !defined(BSON_COMPILATION) && \ - !defined(BSON_INSIDE) -#error "Only or can be included directly." -#endif - -#include "bson/bson-compat.h" -#include "bson/bson-config.h" -#include "bson/bson-macros.h" - -BSON_BEGIN_DECLS - -#if defined(BSON_OS_UNIX) -#include -#define BSON_ONCE_FUN(n) void n (void) -#define BSON_ONCE_RETURN return -#define BSON_ONCE_INIT PTHREAD_ONCE_INIT -#define bson_mutex_destroy pthread_mutex_destroy -#define bson_mutex_init(_n) pthread_mutex_init ((_n), NULL) -#define bson_mutex_lock pthread_mutex_lock -#define bson_mutex_t pthread_mutex_t -#define bson_mutex_unlock pthread_mutex_unlock -#define bson_once pthread_once -#define bson_once_t pthread_once_t -#define bson_thread_create(_t, _f, _d) pthread_create ((_t), NULL, (_f), (_d)) -#define bson_thread_join(_n) pthread_join ((_n), NULL) -#define bson_thread_t pthread_t -#else -#define BSON_ONCE_FUN(n) \ - BOOL CALLBACK n (PINIT_ONCE _ignored_a, PVOID _ignored_b, PVOID *_ignored_c) -#define BSON_ONCE_INIT INIT_ONCE_STATIC_INIT -#define BSON_ONCE_RETURN return true -#define bson_mutex_destroy DeleteCriticalSection -#define bson_mutex_init InitializeCriticalSection -#define bson_mutex_lock EnterCriticalSection -#define bson_mutex_t CRITICAL_SECTION -#define bson_mutex_unlock LeaveCriticalSection -#define bson_once(o, c) InitOnceExecuteOnce (o, c, NULL, NULL) -#define bson_once_t INIT_ONCE -#define bson_thread_create(_t, _f, _d) \ - (!(*(_t) = CreateThread (NULL, 0, (void *) _f, _d, 0, NULL))) -#define bson_thread_join(_n) WaitForSingleObject ((_n), INFINITE) -#define bson_thread_t HANDLE -#endif - -BSON_END_DECLS - -#endif /* COMMON_THREAD_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/CMakeLists.txt deleted file mode 100644 index 4bc2cb6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/CMakeLists.txt +++ /dev/null @@ -1,414 +0,0 @@ -cmake_minimum_required (VERSION 3.1) - -project (libbson C) - -# In the future we may need to check whether static dependencies are -# available. For now, AUTO means ON. -if (ENABLE_TESTS AND NOT ENABLE_STATIC MATCHES "ON|AUTO") - message (FATAL_ERROR "-DENABLE_STATIC=OFF also requires -DENABLE_TESTS=OFF") -endif () - -include (CheckFunctionExists) -include (CheckIncludeFile) -include (CheckStructHasMember) -include (CheckSymbolExists) -include (TestBigEndian) -include (InstallRequiredSystemLibraries) - -set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/build/cmake) - -# Set BSON_MAJOR_VERSION, BSON_MINOR_VERSION, etc. -set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/../../build/cmake) -include (LoadVersion) -LoadVersion (${PROJECT_SOURCE_DIR}/../../VERSION_CURRENT BSON) -LoadVersion (${PROJECT_SOURCE_DIR}/../../VERSION_RELEASED BSON_RELEASED) - -message ("libbson version (from VERSION_CURRENT file): ${BSON_VERSION}") -if (NOT ${BSON_VERSION} STREQUAL ${BSON_RELEASED_VERSION}) - message ("libbson previous release (from VERSION_RELEASED file): ${BSON_RELEASED_VERSION}") -endif () - -set (BSON_API_VERSION 1.0) - -set (CPACK_PACKAGE_VERSION_MAJOR ${BSON_MAJOR_VERSION}) -set (CPACK_PACKAGE_VERSION_MINOR ${BSON_MINOR_VERSION}) - -include (CPack) -TEST_BIG_ENDIAN (BSON_BIG_ENDIAN) - -#librt needed on linux for clock_gettime -find_library (RT_LIBRARY rt) -if (RT_LIBRARY) - #set required libraries for CHECK_FUNCTION_EXISTS - set (CMAKE_REQUIRED_LIBRARIES ${RT_LIBRARY}) - set (BSON_LIBRARIES ${BSON_LIBRARIES} ${RT_LIBRARY}) -endif () - -# See https://public.kitware.com/Bug/view.php?id=15659 -CHECK_SYMBOL_EXISTS (snprintf stdio.h BSON_HAVE_SNPRINTF) -if (NOT BSON_HAVE_SNPRINTF) - set (BSON_HAVE_SNPRINTF 0) -else () - set (BSON_HAVE_SNPRINTF 1) -endif () - -CHECK_FUNCTION_EXISTS (reallocf BSON_HAVE_REALLOCF) -if (NOT BSON_HAVE_REALLOCF) - set (BSON_HAVE_REALLOCF 0) -endif () - -CHECK_STRUCT_HAS_MEMBER ("struct timespec" tv_sec time.h BSON_HAVE_TIMESPEC) -if (NOT BSON_HAVE_TIMESPEC) - message (STATUS " no timespec struct") - set (BSON_HAVE_TIMESPEC 0) -else () - message (STATUS " struct timespec found") - set (BSON_HAVE_TIMESPEC 1) -endif () - -CHECK_SYMBOL_EXISTS (gmtime_r time.h BSON_HAVE_GMTIME_R) -if (NOT BSON_HAVE_GMTIME_R) - set (BSON_HAVE_GMTIME_R 0) -else () - set (BSON_HAVE_GMTIME_R 1) -endif () - -CHECK_FUNCTION_EXISTS (rand_r BSON_HAVE_RAND_R) -if (NOT BSON_HAVE_RAND_R) - set (BSON_HAVE_RAND_R 0) -else () - set (BSON_HAVE_RAND_R 1) -endif () - -if (WIN32) - set (BSON_OS 2) -else () - set (BSON_OS 1) -endif () - -include (CheckIncludeFiles) - -CHECK_INCLUDE_FILE (strings.h BSON_HAVE_STRINGS_H) -if (NOT BSON_HAVE_STRINGS_H) - set (BSON_HAVE_STRINGS_H 0) -endif () - -if (MSVC) - set (BSON_HAVE_CLOCK_GETTIME 0) - set (BSON_HAVE_STDBOOL_H 0) - set (BSON_HAVE_STRNLEN 0) - set (BSON_HAVE_SYSCALL_TID 0) -else () - check_symbol_exists (clock_gettime time.h BSON_HAVE_CLOCK_GETTIME) - if (NOT BSON_HAVE_CLOCK_GETTIME) - set (BSON_HAVE_CLOCK_GETTIME 0) - endif () - check_symbol_exists (strnlen string.h BSON_HAVE_STRNLEN) - if (NOT BSON_HAVE_STRNLEN) - set (BSON_HAVE_STRNLEN 0) - endif () - CHECK_INCLUDE_FILE (stdbool.h BSON_HAVE_STDBOOL_H) - if (NOT BSON_HAVE_STDBOOL_H) - set (BSON_HAVE_STDBOOL_H 0) - endif () - CHECK_SYMBOL_EXISTS (SYS_gettid sys/syscall.h BSON_HAVE_SYSCALL_TID) - check_symbol_exists (syscall unistd.h _TMP_HAVE_SYSCALL) - if (NOT BSON_HAVE_SYSCALL_TID OR NOT _TMP_HAVE_SYSCALL OR APPLE OR ANDROID) - set (BSON_HAVE_SYSCALL_TID 0) - endif () -endif () - -if (BSON_BIG_ENDIAN) - set (BSON_BYTE_ORDER 4321) -else () - set (BSON_BYTE_ORDER 1234) -endif () - -include (CheckAtomics) - -configure_file ( - "${PROJECT_SOURCE_DIR}/src/bson/bson-config.h.in" - "${PROJECT_BINARY_DIR}/src/bson/bson-config.h" -) - -configure_file ( - "${PROJECT_SOURCE_DIR}/src/bson/bson-version.h.in" - "${PROJECT_BINARY_DIR}/src/bson/bson-version.h" -) - -if (ENABLE_APPLE_FRAMEWORK) - configure_file ( - "${PROJECT_SOURCE_DIR}/src/bson/modules/module.modulemap.in" - "${PROJECT_BINARY_DIR}/src/bson/modules/module.modulemap" - ) -endif () - -include_directories ("${PROJECT_BINARY_DIR}/src") -include_directories ("${PROJECT_SOURCE_DIR}/src") -include_directories ("${PROJECT_SOURCE_DIR}/../../src/common") - -if (APPLE) - cmake_policy (SET CMP0042 OLD) -endif () - -include (MaintainerFlags) - -if (ENABLE_COVERAGE) - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g --coverage") -endif () - -set (SOURCES - ${PROJECT_SOURCE_DIR}/src/bson/bcon.c - ${PROJECT_SOURCE_DIR}/src/bson/bson.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-atomic.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-clock.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-context.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-decimal128.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-error.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-fnv.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-iso8601.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-iter.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-json.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-keys.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-md5.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-memory.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-oid.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-reader.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-string.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-timegm.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-utf8.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-value.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-version-functions.c - ${PROJECT_SOURCE_DIR}/src/bson/bson-writer.c - ${PROJECT_SOURCE_DIR}/src/jsonsl/jsonsl.c - ${PROJECT_SOURCE_DIR}/../../src/common/common-b64.c - ${PROJECT_SOURCE_DIR}/../../src/common/common-md5.c -) - -set (HEADERS - ${PROJECT_BINARY_DIR}/src/bson/bson-config.h - ${PROJECT_BINARY_DIR}/src/bson/bson-version.h - ${PROJECT_SOURCE_DIR}/src/bson/bcon.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-atomic.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-clock.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-compat.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-context.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-decimal128.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-endian.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-error.h - ${PROJECT_SOURCE_DIR}/src/bson/bson.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-iter.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-json.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-keys.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-macros.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-md5.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-memory.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-oid.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-reader.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-string.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-types.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-utf8.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-value.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-version-functions.h - ${PROJECT_SOURCE_DIR}/src/bson/bson-writer.h -) - -set (HEADERS_FORWARDING - ${PROJECT_SOURCE_DIR}/src/bson/forwarding/bson.h -) - -add_library (bson_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) -set (CMAKE_CXX_VISIBILITY_PRESET hidden) -set_target_properties (bson_shared PROPERTIES COMPILE_DEFINITIONS "BSON_COMPILATION;JSONSL_PARSE_NAN") -set_target_properties (bson_shared PROPERTIES VERSION 0.0.0 SOVERSION 0) -set_target_properties (bson_shared PROPERTIES OUTPUT_NAME "bson-${BSON_API_VERSION}" PREFIX "lib") - -if (ENABLE_APPLE_FRAMEWORK) - set_target_properties(bson_shared PROPERTIES - FRAMEWORK TRUE - MACOSX_FRAMEWORK_BUNDLE_VERSION ${MONGOC_VERSION} - MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${MONGOC_VERSION} - MACOSX_FRAMEWORK_IDENTIFIER org.mongodb.bson - OUTPUT_NAME "bson" - PUBLIC_HEADER "${HEADERS}" - ) -endif () - -if (RT_LIBRARY) - target_link_libraries (bson_shared ${RT_LIBRARY}) -endif () - -find_library (M_LIBRARY m) -if (M_LIBRARY) - target_link_libraries (bson_shared ${M_LIBRARY}) - set (BSON_LIBRARIES ${BSON_LIBRARIES} ${M_LIBRARY}) -endif () - -set (THREADS_PREFER_PTHREAD_FLAG 1) -find_package (Threads REQUIRED) -target_link_libraries (bson_shared Threads::Threads) -if (CMAKE_USE_PTHREADS_INIT) - set (BSON_LIBRARIES ${BSON_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) -endif () - -if (WIN32) - # gethostbyname - target_link_libraries (bson_shared ws2_32) - # Can't find_library () system dependencies - # must be handled specially since we can't resolve them - set (BSON_SYSTEM_LIBRARIES ${BSON_SYSTEM_LIBRARIES} ws2_32) -endif () - -if (ENABLE_STATIC MATCHES "ON|AUTO") - add_library (bson_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) - set_target_properties (bson_static PROPERTIES COMPILE_DEFINITIONS "BSON_COMPILATION;BSON_STATIC;JSONSL_PARSE_NAN") - set_target_properties (bson_static PROPERTIES VERSION 0.0.0) - set_target_properties (bson_static PROPERTIES OUTPUT_NAME "bson-static-${BSON_API_VERSION}") - target_link_libraries (bson_static Threads::Threads) - if (RT_LIBRARY) - target_link_libraries (bson_static ${RT_LIBRARY}) - endif () - if (M_LIBRARY) - target_link_libraries (bson_static ${M_LIBRARY}) - endif () - if (NOT UNIX) - # gethostbyname - target_link_libraries (bson_static ws2_32) - endif () -endif () - -function (add_example bin src) - set (BSON_EXAMPLE_SOURCES ${PROJECT_SOURCE_DIR}/${src}) - add_executable (${bin} ${BSON_EXAMPLE_SOURCES}) - - # Link against the shared lib like normal apps - target_link_libraries (${bin} bson_shared) - - set (EXAMPLES ${EXAMPLES} ${bin}) -endfunction () - -if (ENABLE_EXAMPLES) - add_example (bcon-col-view examples/bcon-col-view.c) - add_example (bcon-speed examples/bcon-speed.c) - add_example (bson-metrics examples/bson-metrics.c) - if (NOT WIN32) - target_link_libraries (bson-metrics m) - add_example (bson-streaming-reader examples/bson-streaming-reader.c) - endif () - add_example (bson-to-json examples/bson-to-json.c) - add_example (bson-validate examples/bson-validate.c) - add_example (json-to-bson examples/json-to-bson.c) -endif () # ENABLE_EXAMPLES - -set (BSON_HEADER_INSTALL_DIR - "${CMAKE_INSTALL_INCLUDEDIR}/libbson-${BSON_API_VERSION}" -) - -install ( - TARGETS bson_shared ${EXAMPLES} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} -) -if (ENABLE_STATIC MATCHES "ON|AUTO") - install ( - TARGETS bson_static ${EXAMPLES} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} - ) -endif () -install ( - FILES ${HEADERS} - DESTINATION "${BSON_HEADER_INSTALL_DIR}/bson" -) -install ( - FILES ${HEADERS_FORWARDING} - DESTINATION "${BSON_HEADER_INSTALL_DIR}" -) - -if (ENABLE_APPLE_FRAMEWORK) - install ( - FILES "${PROJECT_BINARY_DIR}/src/bson/modules/module.modulemap" - DESTINATION "${CMAKE_INSTALL_BINDIR}/bson.framework/Modules/" - ) -endif () - -set (LIBBSON_LIBRARIES "") -foreach (_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${BSON_LIBRARIES}) - if (_lib MATCHES ".*/.*" OR _lib MATCHES "^-") - set (LIBBSON_LIBRARIES "${LIBBSON_LIBRARIES} ${_lib}") - else () - set (LIBBSON_LIBRARIES "${LIBBSON_LIBRARIES} -l${_lib}") - endif () -endforeach () -# System dependencies don't match the above regexs, but also don't want the -l -foreach (_lib ${BSON_SYSTEM_LIBRARIES}) - set (LIBBSON_LIBRARIES "${LIBBSON_LIBRARIES} ${_lib}") -endforeach () - -set (VERSION "${BSON_VERSION}") -set (prefix "${CMAKE_INSTALL_PREFIX}") -set (libdir "\${prefix}/lib") -configure_file ( - ${CMAKE_CURRENT_SOURCE_DIR}/src/libbson-1.0.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/src/libbson-1.0.pc - @ONLY) - -install ( - FILES - ${CMAKE_CURRENT_BINARY_DIR}/src/libbson-1.0.pc - DESTINATION - ${CMAKE_INSTALL_LIBDIR}/pkgconfig -) - -if (ENABLE_STATIC MATCHES "ON|AUTO") - configure_file ( - ${CMAKE_CURRENT_SOURCE_DIR}/src/libbson-static-1.0.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/src/libbson-static-1.0.pc - @ONLY) - - install ( - FILES - ${CMAKE_CURRENT_BINARY_DIR}/src/libbson-static-1.0.pc - DESTINATION - ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) -endif () - -include (build/cmake/BSONPackage.cmake) - -if (ENABLE_MAN_PAGES STREQUAL ON OR ENABLE_HTML_DOCS STREQUAL ON) - find_package (Sphinx REQUIRED) - add_subdirectory (doc) - add_custom_target (bson-doc - ALL - DEPENDS - $<$:bson-man> - $<$:bson-html> - ) -endif () - -add_subdirectory (build) -# sub-directory 'doc' was already included above -add_subdirectory (examples) -add_subdirectory (src) -add_subdirectory (tests) - -set_local_dist (src_libbson_DIST_local - CMakeLists.txt - NEWS - THIRD_PARTY_NOTICES -) - -set (src_libbson_DIST - ${src_libbson_DIST_local} - ${src_libbson_build_DIST} - ${src_libbson_doc_DIST} - ${src_libbson_examples_DIST} - ${src_libbson_src_DIST} - ${src_libbson_tests_DIST} - PARENT_SCOPE -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/NEWS b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/NEWS deleted file mode 100644 index 3a37921..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/NEWS +++ /dev/null @@ -1,1328 +0,0 @@ -libbson 1.13.1 -============== - -It is my pleasure to announce libbson 1.13.1. - -Bug fixes: - - * Separate libmongoc and libbson uninstall scripts so they do not overwrite - each other. - -Thanks to everyone who contributed to the development of this release. - - * Kevin Albertson - * Henrik Edin - -Peace, - - Kevin Albertson - - -libbson 1.13.0 -============== - -It is my pleasure to announce libbson 1.13.0. - -Features: - - * New functions to save and restore progress of a bson_iter_t: - bson_iter_key_len, bson_iter_offset, and bson_iter_init_from_data_at_offset - * Additional functions bson_iter_overwrite_date_time, bson_iter_overwrite_oid, - and bson_iter_overwrite_timestamp. All fixed-length BSON values can now be - updated in place. - -Bug fixes: - - * Fix crash when iterating corrupt BSON. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Roberto C. Sánchez - * Kevin Albertson - * Henrik Edin - * Gustaf Neumann - * Scott Gayou - * Spencer McKenney - -Peace, - - Kevin Albertson - - -libbson 1.12.0 -============== - -It is my pleasure to announce libbson 1.12.0. This release deprecates all -MD5-related public APIs; they will be removed in the next major release. - -Bug fixes: - - * Properly handle zero-length BSON binary values - * Fix crash parsing Base64-encoded data in JSON when using libbson without - libmongoc - -Thanks to everyone who contributed to the development of this release. - - * Roberto C. Sánchez - * A. Jesse Jiryu Davis - * Kevin Albertson - -Peace, - - A. Jesse Jiryu Davis - - -libbson 1.11.0 -============== - -It is my pleasure to announce libbson 1.11.0. This version adds the following -features and improvements: - - * All "destroy" functions such as bson_destroy or bson_reader_destroy now - ignore a NULL argument. - * Replace MD5 with FNV-1a hash to generate ObjectIds (for FIPS compliance). - -Bug fixes: - - * Functions incorrectly marked with the "const" compiler attribute are now - marked as "pure", fixes build error when link-time optimization is enabled. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Kevin Albertson - * Roberto C. Sánchez - -Peace, - - A. Jesse Jiryu Davis - - -libbson 1.10.3 -============== - -It is my pleasure to announce libbson 1.10.3. This release fixes a crash when -parsing binary data from JSON if using libbson as a standalone library, without -calling mongoc_init. - -Peace, - - A. Jesse Jiryu Davis - - -libbson 1.10.2 -============== - -No change since 1.10.1; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -libbson 1.10.1 -============== - -No change since 1.10.0; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -libbson 1.10.0 -============== - -It is my pleasure to announce libbson 1.10.0. This version adds the following -features: - - * libbson and libmongoc are now maintained in the mongo-c-driver repository, - although they are still built as separate libraries, and libbson can still - be used without libmongoc. - * Building libbson and libmongoc now requires CMake on all platforms. The - Autotools build scripts ("configure" and related scripts) have been deleted. - See the "installing" page for updated instructions. - * Additional functions for strings of known length (not necessarily null- - terminated): - bson_iter_find_w_len - bson_iter_init_find_w_len - bson_append_regex_w_len - bson_decimal128_from_string_w_len - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Roberto C. Sánchez - * Xiangyu Yao - * Kevin Albertson - * Mansuro - * Petr Písař - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.9.5 -============= - -No change since 1.9.4; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.9.4 -============= - -It is my pleasure to announce Libbson-1.9.4. This release offers compatibility -with Sphinx 1.7.0 and later. - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.9.3 -============= - -No change since 1.9.2; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.9.2 -============= - -It is my pleasure to announce Libbson-1.9.2. This release completes reverting a -changed macro definition that broke API compatibility. The revert in 1.9.1 did -not completely fix the BC break. Thanks to Petr Písař for finding and fixing the -mistake. - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.9.1 -============= - -It is my pleasure to announce Libbson-1.9.1. This release reverts a changed -macro definition that broke API compatibility, and fixes an off-by-one error -in bson_append_regex that resulted in corrupt BSON. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Derick Rethans - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.9.0 -============= - -It is my pleasure to announce Libbson-1.9.0. - -New features and bugfixes: - - * Fix Autotools syntax for OpenBSD and any platform lacking stdint.h. - * Fix Android NDK incompatibilities. - * Fix a one-byte write past the end of a buffer in bson_decimal128_to_string. - * Avoid reading past the end of a string that contains UTF-8 multibyte NIL. - * Fix some pedantic warnings in C99 mode. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Kevin Albertson - * Jean-Marc Le Roux - * Jeremy Mikola - * Dimitri Gence - * Hannes Magnusson - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.8.2 -============= - -No change since 1.8.1; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.8.1 -============= - -It is my pleasure to announce libbson-1.8.1. This release removes a syntax -error in the configure script that affects some shells, and fixes the encoding -of this NEWS file. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Jeremy Mikola - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.8.0 -============= - -It is my pleasure to announce Libbson-1.8.0. - -New features and bugfixes: - - * Make symbols bson_get_major_version, bson_get_minor_version, - bson_get_micro_version, bson_get_version, and bson_check_version available - to C++ programs. - * New CMake option ENABLE_MAINTAINER_FLAGS. - * Crash iterating over invalid code with scope. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jeremy Mikola - * Kevin Albertson - * Michael Kuhn - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.7.0 -============= - - * Changes to JSON encoding and decoding: - * New functions bson_as_canonical_extended_json and - bson_as_relaxed_extended_json convert BSON to canonical and relaxed - extended JSON according to MongoDB Extended JSON Spec. - Output for the existing bson_as_json function has not been changed. - * When parsing JSON type wrappers like "$timestamp", any missing or extra - keys are an error. - * The JSON format for BSON regular expressions is now "$regularExpression": - {"pattern": "...", "options": "..."}. The old format {"$regex": "...", - "$options": "..."} is still parsed. - * The JSON format for BSON binary elements is now "$binary": {"base64": - "...", "subType": "..."}. The old format {"$binary": "...", "$type": - "..."} is still parsed. - * BSON dates can be parsed from "$date" as an ISO8601 date or "$numberLong" - as milliseconds since the epoch: "t": {"$date": {"$numberLong": "1234"}}. - Dates can no longer be formatted as raw integers. bson_as_json writes a - BSON date after 1970 as "$date" with an ISO8601 string, and dates before - 1970 as negative milliseconds wrapped in "$numberLong". - bson_as_canonical_extended_json always writes dates with "$numberLong". - bson_as_relaxed_extended_json always writes dates with "$date". - * The non-numbers NaN, Infinity, and -Infinity are now recognized (regardless - of case) when parsing JSON. - * CMake build now installs .pc files for programs that link to libbson using - pkg-config. Both the CMake and Autotools build systems now install .cmake - files for programs that link to libbson using CMake. Linking to libbson - statically or dynamically is now much more convenient. - * New CMake option, "ENABLE_STATIC", defaults to ON. - * Minimum required CMake version has been increased to 3.1. - * CMake remains experimental on non-Windows platforms and issues a warning now - * New functions - * bson_strcasecmp, a portable equivalent of strcasecmp. - * bson_iter_as_double, cast the current value to double. - * bson_iter_init_from_data, creates an iterator from BSON string. - * bson_validate_with_error, checks a document like bson_validate does but - also reports which key was invalid - * New convenience macros - * BSON_ITER_HOLDS_INT, checks if iterator holds int32 or int64 - * BSON_ITER_HOLDS_NUMBER, checks if iterator holds int32, int64 or double - * Raised BSON recursion limit to 200 - - -Libbson-1.6.0 -============= - -It is my pleasure to announce libbson-1.6.0. - -New features and bug fixes: - - * Use jsonsl instead of libyajl as our JSON parsing library, parse JSON more - strictly, fix minor parsing bugs. - * Extended JSON documents like '{"$code": "...", "$scope": {}}' are now parsed - into BSON "code" elements. - * ISO8601 dates now allow years from 0000 to 9999 inclusive. Before, years - before 1970 were prohibited. - * BSON floats and ints are now distinguished in JSON output. - * The library is now built and continuously tested with MinGW-W64 on Windows. - * The documentation is ported from Mallard XML to ReStructured Text, the - HTML documentation is restyled, and numerous man page syntax errors fixed. - * All public functions now have the __cdecl calling convention on Windows. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Aleksander Melnikov - * Remi Collet - -Peace, - - A. Jesse Jiryu Davis - - -libbson-1.5.5 -============= - -No change since 1.5.4; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.5.4 -============= - -No change since 1.5.3; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.5.3 -============= - -No change since 1.5.2; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.5.2 -============= - -This is a patch release that fixes a build error with MinGW on Windows. - - -Libbson-1.5.1 -============= - -No change since 1.5.0; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.5.2 -============= - -It is my pleasure to announce Libbson-1.5.2. - -New bug fixes: - - * CDRIVER-1982 fix ifdef for strerror_s with mingw. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - -Peace, - - Hannes Magnusson - - -Libbson-1.5.1 -============= - -No change since 1.5.0; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.5.0 -============= - -It is my pleasure to announce Libbson-1.5.0. - -New features and bug fixes: - - * New BSON Type, Decimal128 (bson_decimal128_t) along with the following - new functions and helpers: - * bson_decimal128_to_string() - * bson_decimal128_from_string() - * bson_iter_decimal128() - * bson_iter_overwrite_decimal128() - * BSON_ITER_HOLDS_DECIMAL128() - * bson_append_decimal128() - * BSON_APPEND_DECIMAL128() - * BCON_DECIMAL128() - See the documentations for further details. - * bson_validate and bson_iter_next now validate that BSON boolean values are - 0 or 1. Before, any non-zero value was considered true. - * bson_append_code_with_scope now preserves the "code with scope" type - if scope is an empty, non-NULL BSON document. - * BSON "code" and "code with scope" types are properly translated to and from - JSON of the form '{"$code": "...", "$scope": {...}}'. - * bson_json_reader functions now always validate UTF-8. - * JSON parsing now preserves integer width. - * bson_strtoll now matches stroll: it detects range errors, and when - parsing octal it stops at non-octal digits and returns what it parsed - instead of setting errno. - * New flag BSON_VALIDATE_EMPTY_KEYS causes bson_validate to fail if a document - contains zero-length field names. - * The configure option "--enable-hardening" had had no effect. It is removed - in favor of system-wide compiler configuration. - -Thanks to everyone who contributed to the development of this release. - - * Hannes Magnusson - * A. Jesse Jiryu Davis - * Fiona Rowan - * Brian Samek - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.4.1 -============= - -This release improves the HTML documentation's Makefile. - --- A. Jesse Jiryu Davis - - -Libbson-1.4.0 -============= - -It is my pleasure to announce Libbson-1.4.0. - -New features and bug fixes: - - * bson_reader_reset seeks to the beginning of a BSON buffer. - * bson_steal efficiently transfers contents from one bson_t to another. - * Fix Windows compile error with BSON_EXTRA_ALIGN disabled. - * Potential buffer overrun in bson_strndup. - * bson_oid_to_string optimization for MS Visual Studio - * bson_oid_is_valid accepts uppercase hex characters. - * bson_json_reader_read aborted on some invalid Extended JSON documents. - * All man page names now begin with "bson_" to avoid install conflicts. - * Error messages sometimes truncated at 63 chars. - -This release tentatively supports the new BSON decimal type when built with -"./configure --enable-experimental-features", or with -"cmake -DENABLE_EXPERIMENTAL_FEATURES=ON", but this feature may change -between now and libbson 1.5. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jeremy Mikola - * David Hatch - * Ian Boros - * Fiona Rowan - * Shane Harvey - * Runar Buvik - * Raymond Jacobson - * ReadmeCritic - * Mike Lloyd - * Derick Rethans - * Maverick Chan - -Peace, - - A. Jesse Jiryu Davis - -Libbson-1.3.5 -============= - -No change since 1.3.4; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.3.4 -============= - -No change since 1.3.3; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.3.3 -============= - -No change since 1.3.2; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.3.2 -============= - -This is a patch release with a fix for the build system: - - * man pages couldn't be built from a distribution tarball. - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.3.1 -============= - -It is my pleasure to announce Libbson-1.3.1. This is a bugfix release: - - * bson_strnlen is off by one on Windows. - * BSON_HAVE_STRNLEN config check used incorrectly. - * Incompatibility with older CMake versions. - * Wrong-sized allocation in bson_json_reader_new. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Alex Bishop - * Jeroen Ooms - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.3.0 -============= - -It is my pleasure to announce to you the release of Libbson-1.3.0. Since the -release candidate 1.3.0-rc0, the only changes have been fixes for compiler -warnings and errors on various platforms. - -All changes since the previous stable release, 1.2.1: - - * Fix potential crash in bson_strncpy on Windows. - * Parse DBRefs correctly from JSON. - * CMake option to disable building tests: "cmake -DENABLE_TESTS:BOOL=OFF". - * Refactor the build system to declare library version in one place. - * Fix compiler warnings and errors, especially with Visual Studio 2015 - and IBM XL C. - * Combine environment's CFLAGS with configure options when building. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Mark Benvenuto - * Petr Písař - * xpol - * Jose Sebastian Battig - * Jeroen Ooms - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.3.0-rc0 -================= - -It is my pleasure to announce to you first release candidate of Libbson-1.3.0. - -Changes since 1.3.0-beta0: - - * Parse DBRefs correctly from JSON. - * CMake option to disable building tests: "cmake -DENABLE_TESTS:BOOL=OFF". - * Fix build warnings on some platforms, and refactor the build system. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jose Sebastian Battig - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.3.0-beta0 -=================== - -It is my pleasure to announce to you the beta release of Libbson-1.3.0. - -Changes since the previous stable release, 1.2.1: - - * Fix potential crash in bson_strncpy on Windows. - * Fix compiler warnings and errors, especially with Visual Studio 2015 - and IBM XL C. - * Combine environment's CFLAGS with configure options when building. - -Thanks to everyone who contributed to the development of this release. - - * Hannes Magnusson - * A. Jesse Jiryu Davis - * Jeroen Ooms - * Petr Písař - * xpol - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.2.1 -============= - -It is my pleasure to announce to you the release of Libbson-1.2.1. - -Changes since the previous stable release, 1.2.0 are solely in the content -and format of documentation. - -Peace, - - A. Jesse Jiryu Davis - - -Libbson-1.2.0 -============= - -It is my pleasure to announce to you the release of Libbson-1.2.0. - -Changes since the previous stable release, 1.1.11: - - * Add bson_mem_restore_vtable(), the inverse of bson_mem_set_vtable(). - * Enable runtime asserts in release build. - * Fixed compiler warnings and build failures on various platforms. - * Improvements to the formatting and contents of the documentation. - -Thanks to everyone who contributed to the development of this release. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Jason Carey - * Kyle Suarez - * Derick Rethans - * David Hatch - -Peace, - - A. Jesse Jiryu Davis - - -Libbson 1.2.0-rc0 -================== - -It is my pleasure to announce to you the release candidate of Libbson-1.2.0. - -Changes: - - * Merge changes from 1.1.11. - * Enable runtime asserts in release build. - -Thanks to everyone who contributed to the development of this release candidate. - - * A. Jesse Jiryu Davis - * Hannes Magnusson - * Kyle Suarez - * Jason Carey - --- A. Jesse Jiryu Davis - - -Libbson 1.2.0-beta -================== - -It is my pleasure to announce to you the beta of Libbson-1.2.0. - -This release adds the bson_mem_restore_vtable() function to undo the effect -of bson_mem_set_vtable(). - -Thanks to everyone who contributed to the development of this beta. - - * Jason Carey - * Hannes Magnusson - - -Libbson-1.1.11 -============== - -It is my pleasure to announce to you the release of Libbson-1.1.11. - -This is a patch release with improvements to the documentation: - - * Document bson streaming reads with an example, - bson-streaming-reader.c. - * Document callback function types bson_reader_destroy_func_t and - bson_reader_read_func_t. - -Thanks to Kyle Suarez for his contributions to this version of Libbson. - --- A. Jesse Jiryu Davis - - -Libbson-1.1.10 -============== - -No change since 1.1.9; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.1.9 -============= - -This is a patch release with a fix for the build system: - - * "./configure --enable-coverage" works now. - --- A. Jesse Jiryu Davis - - -Libbson-1.1.8 -============= - -No change since 1.1.7; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson-1.1.7 -============= - -It is my pleasure to announce to you the release of Libbson-1.1.7. - -This is a patch release with bug fixes: - - * Unchecked error in bson_utf8_escape_for_json caused unbounded memory growth - and a crash. - * Nicer floating-point formatting in bson_as_json. - * Link error with CMake on Mac. - -Thanks to everyone who contributed to this version of Libbson. - - * A. Jesse Jiryu Davis - * Jason Carey - * Jeroen Ooms - * Hannes Magnusson - * Hendrik Dahlkamp - --- A. Jesse Jiryu Davis - - -Libbson-1.1.6 -============= - -No change since 1.1.5; released to keep pace with libmongoc's version. - --- A. Jesse Jiryu Davis - - -Libbson 1.1.5 -============= - -It is my pleasure to announce to you the release of Libbson-1.1.5. - -This is a patch release with small bug fixes: - - * Fix link error "missing __sync_add_and_fetch_4" in GCC on i386 - - the functions bson_atomic_int_add and bson_atomic_int64_add are now - compiled and exported if needed in i386 mode - * Fix version check for GCC 5 and future versions of Clang - * Fix warnings and errors building on various platforms - -With this release, Libbson abandons the convention that odd-numbered patch -versions indicate unstable releases. We switch to simple semantic versioning: -1.1.5 is a stable release with bug fixes since 1.1.4. During subsequent -development the version will be "1.1.6-dev". - -Thanks to everyone who contributed to this version of Libbson. - - * A. Jesse Jiryu Davis - * Christian Hergert - * Jason Carey - * Hannes Magnusson - * Paul Melnikow - --- A. Jesse Jiryu Davis - -Libbson 1.1.4 -============= - -It is my pleasure to announce to you the release of Libbson-1.1.4. - -This release is a minor patch release with one bug fix for bson_iter_timeval - -Thanks to everyone who contributed to the development of this release candidate for -Libbson. - - * Jason Carey - * A. Jesse Jiryu Davis - * Vladimir Zidar - --- Jason Carey - -Libbson 1.1.2 -============= - -It is my pleasure to announce to you the release of Libbson-1.1.2. - -This release is a minor patch release with one bug fix for mingw. - -* sscanf_s doesn't exist for mingw. - --- Jason Carey - -Libbson 1.1.0 -============= - -It is my pleasure to announce to you the release of Libbson-1.1.0. - -This release is a stable release with some ABI additions and bugfixes. - -The below changes include the changes mentioned in the rc0. - -ABI/API changes include: - * RC0 - * Deprecation of bson_copy_to_excluding - * Addition of bson_copy_to_excluding_noinit - * Removal of MIN, MAX and ABS macros in favor of BSON_MIN, BSON_MAX and - BSON_ABS. Note this is a breaking source level change if you relied on - these from bson.h. Also note that this is not a breaking ABI change. - * Addition of BSON_ERROR_BUFFER_SIZE macro - -Other changes include: - * RC0 - * Addition of a versioned ABI for the libbson shared library - * fixed bson_get_monotonic_time fallback when a system monotonic clock can not - be found. Formerly failed to compile with an incorrect call to - bson_gettimeofday - * Allow the "dbref" convention in bson_validate when BSON_VALIDATE_DOLLAR_KEYS - is present - * Support for ISO-8601 or $numberLong dates in bson <-> json parsing - * Quiet various compiler warnings - -Thanks to everyone who contributed to the development of this release candidate for -Libbson. - - * Adam Midvidy - * Christian Hergert - * Daniel Colchete - * Ivan Suvorov - * Hannes Magnusson - * Jason Carey - * Jérôme Lebel - * Samantha Ritter - --- Jason Carey - -Libbson 1.1.0-rc0 -================= - -It is my pleasure to announce to you the release of Libbson-1.1.0-rc0. - -This release is a release candidate release with some ABI additions and bugfixes. - -ABI changes include: - * Deprecation of bson_copy_to_excluding - * Addition of bson_copy_to_excluding_noinit - -Other changes include: - * Addition of a versioned ABI for the libbson shared library - * fixed bson_get_monotonic_time fallback when a system monotonic clock can not - be found. Formerly failed to compile with an incorrect call to - bson_gettimeofday - * Allow the "dbref" convention in bson_validate when BSON_VALIDATE_DOLLAR_KEYS - is present - * Support for ISO-8601 or $numberLong dates in bson <-> json parsing - * Quiet various compiler warnings - -Thanks to everyone who contributed to the development of this release candidate for -Libbson. - - * Adam Midvidy - * Christian Hergert - * Daniel Colchete - * Ivan Suvorov - * Jason Carey - * Jérôme Lebel - --- Jason Carey - -Libbson 1.0.2 -============= - -It is my pleasure to announce to you the release of Libbson-1.0.2. - -This release is a minor point release with no ABI changes and mostly small -bugfixes. - -Changes include: - * bson_init_from_json supports top level arrays - * fixes for bson_strerror_r - * fix for timeouts on OS X - * house cleaning for various integer types - -Thanks to everyone who contributed to the development of this point release for -Libbson. - - * Adam Midvidy - * Christian Hergert - * Jason Carey - * Jérôme Lebel - * Tyler Brock - --- Jason Carey - -Libbson 1.0.0 -============= - -It is my very distinct pleasure to announce to you the release of -Libbson-1.0.0! - -This is the culmination of just over a year of work and could not have been -done without the help of our wonderful community. - -Thanks to everyone who contributed to the development of Libbson! - - * Christian Hergert - * Jason Carey - * Jose Sebastian Battig - * Maxim Zakharov - * Jérôme Lebel - * Itay Neeman - * Mike Manilone - * Michael Kuhn - * Kyle Suarez - * Josh Blum - * Jason Choy - * mntmnt7@gmail.com - * Tyler Brock - * Stefan Kaes - * Paul Melnikow - * Matt Cotter - * Gary J. Murakami - * Toon Schoenmakers - * Máximo Cuadros - * Michael Whittaker - * Kota Yamaguchi - * Justin Case - * Jeff Yemin - * Ivan Suvorov - * Hannes Magnusson - * Eric Daniels - * Anil Kumar - * A. Jesse Jiryu Davis - -Happy Hacking! - --- Christian Hergert - - -Libbson 0.98.0 -============== - -One more step closer to a 1.0! - -This release has a few fixes as we near the finish line of a 1.0 release. -We have bumped the version to 0.98.0 to sync up with MongoDB C driver, which -is the primary consumer of this library. - -This release includes a new memory callback vtable to help in embedding -situations that have their own custom allocator such as various language -runtimes. - -A few compilation fixes for various C++ compilers have also been included. - -A special thanks to: - - * Itay Neeman - * Michael Whittaker - -Happy Hacking! - --- Christian - - -Libbson 0.8.4 -============= - -Another incremental release with a couple of new functions and bugfixes. - -In this release you will find the following changes: - - * Alignment fixes for Solaris Studio C compiler. - * RPM and Debian packaging helpers. - * bson_gettimeofday() has dropped the deprecated timezone field used - when calling posix gettimeofday(). This eases portability concerns. - It is technically an ABI break, but since the field was never set, - in reality it shouldn't be an issue. - * Multi-byte optimizations for bson_oid_to_string() have been disabled - on non-x86 based platforms. This should aid in architecture portability. - * The JSON parser can now support $numberLong. - * bson_ascii_strtoll() has been added, which is a portable strtoll() - implementation. This is primarily useful for Windows users and is - used by the JSON parser. - * A bug was fixed in bson_iter_find_descendent() where the wrong field - could be matched if it's prefix matched the query. - * bson_array_as_json() has been added to convert a bson_t as a top-level - array. - -Thanks to: - * Kyle Suarez - * Itay Neeman - -Happy Hacking! - - -Libbson 0.8.2 -============= - -A bugfix release is here as a follow up to 0.8.0. - -In this release you will find the following changes: - - * A fix for BCON when used from C++. - * Change bson_next_power_of_two() to accept size_t. This should not be - an ABI break since it is static inline. - -Happy Hacking! - - -Libbson 0.8.0 -============= - -It's that time again, time for another Libbson release! - -This cycle includes much, much more documentation for your perusing. There is -much more cross-referencing and structure for your navigation pleasure. - -We've improved support for Libbson on a few more exotic platforms. SPARC -support is looking pretty good these days. - -You'll also find some new examples in this release to help you get started a -bit faster. If there is something you'd like to see, just ask! - -There are a few ABI breaks this cycle, as we are well on the road to a 1.0 and -would like things as clean as possible. I anticipate a few more during the next -couple of cycles, but we will try to keep them to a minimum. With that said, -you *WILL* need to recompile your application against 0.8.0. - -Happy Hacking! - - -Libbson 0.6.8 -============= - -Quickly following up on the 0.6.6 release is 0.6.8. This release contains -a couple of bugfixes and more support for older architectures. - -On big-endian systems, bson_append_date_time() was not properly converting -to little-endian. This is now fixed. - -We've added support for Sun Pro C Compiler on Solaris 10 and 11. This includes -support for SPARC systems as well as x86_64. In particular, intrinsics were -added for the Solaris/SPARC/SunProC combination. If you are running SunProC -on a non-Solaris platform, a fallback path will be used which is slower than -native support for atomics. Additionally, bson_gettimeofday() does not fully -support timezones under SunProC as struct timezone is not defined. - -Libbson will now check for GLibc 2.19 to remove various warnings with both -_GNU_SOURCE and _BSD_SOURCE defined. - -Happy Hacking! - - -Libbson 0.6.6 -============= - -Another release for your hacking pleasure! - -First off, note that there are two ABI breaks as part of this release. We -felt they were important as they will help us stablize towards a 1.0 release. -It is recommended that you recompile against this version of libbson. - -Lots of small fixes went into this release to help get things building better -on various platforms. Windows support should be improved and many warnings have -been cleaned up. - -The signature of bson_realloc_func has changed to allow for context to be -provided. This should help in situations where a pointer to the memory pool is -required. - -bson_destroy_with_steal() has been added so that you can steal a buffer instead -of freeing it when bson_destroy() is called. - -bson_new_from_buffer() has been added so that you can provide your own realloc -function to manage the underlying buffer. This will be useful for bindings that -want to integrate their memory manager for bson documents. - -bson_value_t is a new container type that can hold any bson type. - -I'd like to thank everyone who contributed to this release. - - Gary Murakami - Jason Carey - Jose Sebastian Battig - Máximo Cuadros - Paul Melnikow - Stefan Kaes - -Happy hacking! - -Libbson 0.6.4 -============= - -This is just a followup release of libbson as we work towards stablizing for -the new mongo-c-driver release. In fact, it only includes build work and a -new macro, bson_clear(). - -Happy hacking! - - -Libbson 0.6.2 -============= - -A new Libbson release is already here as a follow up to the 0.6.0 release. - -This release includes a few build and installation fixes. In particular, - - * Windows build fixes - * CMake build fixes - * C++ build fixes. - -The monotonic clock is now more accurately calculated on Windows as well. -If you'd like to build on Windows, check out the section in README.md for -information on how to do so. - -Happy hacking! - - -Libbson 0.6.0 -============= - -Many changes have gone into this release! - -TL;DR - - * C99 types (from C89). - * JSON parsing. - * Lots of Operating System support, including Windows. - * Parallel Test Suite. - * Revamped build system. - * A couple ABI breaks. - -First off, 0.6.0 has gone through a significant amount of build system cleanup. -This should simplify using libbson as a submodule for those that wish to do so. -For example, the mongo-c-driver now does this using autotools. - -Windows Vista and higher is now supported as a build target through the use of -cmake. See README.md for the instructions. Other platforms should continue to -use autotools. - -The test suite has been improved and more tests added. We now generate random -seeds on every run to help catch more errors with additional fuzzing passes. -By default, the test suite will run all tests in parallel with subprocesses. -This should speed up execution of `make test' for contributors. - -bson_string_t went through an ABI break to support power-of-two growth. - -JSON parsing has been added through the bson_json_reader_t type. You can also -now use bson_init_from_json() for a simplified interface. - -Types were revamped to appear to be using C99 types. If C99 types are -available, they will be used. If not, they will be emulated. This means you -can just go on using uint64_t and similar. We even use bool now. - -Many functions have been made portable to deal with inconsistencies with Win32. - -This release has been tested on the following operating systems: - - * RedHat Enterprise 5, 6, and 7 beta. - * CentOS 6.5 - * Ubuntu 12.04 LTS - * Fedora 20 - * Windows 7 - * FreeBSD 10 - * DragonFly BSD - * Solaris 11 - * SmartOS - * mingw64 - -Thanks again and enjoy using libbson! - -Libbson 0.4.0 -============= - -This release includes a few bug fixes and copious documentation. Additionally, -we improved our fuzz testing and found a couple issues in the process. It is -suggested that everyone upgrade their installations to 0.4.0. - -We have been busy adding a lot of documentation that we hope you will like. -Many `man' pages have been added for various API endpoints and structures. If -you use vim, remember that you can jump to the documentation with k -while on a symbol. - -Thanks and enjoy using libbson! - -Libbson 0.2.4 -============= - -This release includes some more performance improvements and bug fixes. - -It contains an important fix for dealing with invalid string lengths that could -cause an integer overflow when checking to see if the string length fits within -the end of the buffer. - -There is preliminary support for Solaris on x86_64 and SPARC. - -Generating OIDs is now simpler with the use of bson_context_get_default(). This -function will return a thread-safe generic bson_context_t implementation. -Alternatively, you may pass NULL to bson_oid_init() for the context and the -default context is automatically used. - -The fuzz tests now use srand() with a 32-bit integer derived from /dev/urandom. - -Endianess conversions are now performed by __builtin_bswap*() functions when -available with the GCC compiler. - -Endianness conversions for the double type are now properly handled on -big-endian systems. - -bson_reinit() has been added to cleanup code that needs to destroy and then -initialize a bson_t. - -Validation of Code with Scope fields was absent from bson_validate(). This is -now supported. - -Libbson 0.2.2 -============= - -This release includes a few performance improvements and bug fixes. - -The bson_t structure is more efficient when growing allocated buffers. -The use of memalign() was unnecessary for allocated bson_t structures -and has therefore been removed. Performance sensitive allocations now -use bson_malloc() instead of calloc() and initialize fields directly. -Stack alignment of bson_t is now enforced through compiler intrinsics. - -The unit tests can now support running inside of valgrind to check for -various memory leaks. Simply defing VALGRIND=valgrind when running -`make test`. - -Enjoy libbson-0.2.2! - - -Libbson 0.2.0 -============= - -This is the initial release of Libbson. It has not yet reached API and ABI -maturity and is therefore subject to change without notice. Developers are -encouraged to start using Libbson as we journey on the road to 1.0, where ABI -stability will be guaranteed. - -Libbson is Apache 2.0 licensed so that it can be embedded in a multitude of -scenarios. This means that we try hard to not rely on external libraries. -Therefore, Libbson contains useful routines to help in portability as well -as BSON support. - -Libbson is the basis of a new MongoDB C driver that will follow shortly. - -Please see the doc/ directory for documentation on how to use Libbson. We -would love for you to contribute to Libbson, whether that is code, -documentation or packaging. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/THIRD_PARTY_NOTICES b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/THIRD_PARTY_NOTICES deleted file mode 100644 index dd62332..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/THIRD_PARTY_NOTICES +++ /dev/null @@ -1,45 +0,0 @@ -Libbson uses third-party libraries distributed under different licenses. - -License notice for jsonsl -------------------------------------------------------------------------------- - -MIT License - -Copyright (c) 2012-2015 M. Nunberg, mnunberg@haskalah.org - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -License notice for bson-fnv-private.h, bson-fnv.c and test-fnv.c -------------------------------------------------------------------------------- - -Please do not copyright this code. This code is in the public domain. - -LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO -EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -By: - chongo /\oo/\ - http://www.isthe.com/chongo/ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/CMakeLists.txt deleted file mode 100644 index 0d27291..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -include (SphinxBuild) - -if (ENABLE_HTML_DOCS) - sphinx_build_html (bson-html libbson) - set (src_libbson_doc_DIST_htmls ${doc_DIST_htmls}) -endif () - -if (ENABLE_MAN_PAGES) - sphinx_build_man (bson-man) - set (src_libbson_doc_DIST_mans ${doc_DIST_mans}) -endif () - -add_subdirectory (html) -add_subdirectory (man) - -file (GLOB src_libbson_doc_DIST_rsts RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.rst) - -extra_dist_generated ( - ${src_libbson_doc_DIST_htmls} - ${src_libbson_doc_DIST_mans} -) - -set_local_dist (src_libbson_doc_DIST_local - CMakeLists.txt - ${src_libbson_doc_DIST_rsts} - conf.py -) - -set (src_libbson_doc_DIST - ${src_libbson_doc_DIST_local} - ${src_libbson_doc_html_DIST} - ${src_libbson_doc_man_DIST} - ${src_libbson_doc_mongoc_DIST} - ${src_libbson_doc_mongoc-theme_DIST} - PARENT_SCOPE -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/api.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/api.rst deleted file mode 100644 index f5e24fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/api.rst +++ /dev/null @@ -1,27 +0,0 @@ -API Reference -============= - -.. toctree:: - :titlesonly: - :maxdepth: 2 - - bson_t - bson_context_t - bson_decimal128_t - bson_error_t - bson_iter_t - bson_json_reader_t - bson_md5_t - bson_oid_t - bson_reader_t - character_and_string_routines - bson_string_t - bson_subtype_t - bson_type_t - bson_unichar_t - bson_value_t - bson_visitor_t - bson_writer_t - bson_get_monotonic_time - bson_memory - version diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array.rst deleted file mode 100644 index 626e879..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_array - -bson_append_array() -=================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_ARRAY(b, key, val) \ - bson_append_array (b, key, (int) strlen (key), val) - - bool - bson_append_array (bson_t *bson, - const char *key, - int key_length, - const bson_t *array); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``array``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_append_array()` function shall append ``array`` to ``bson`` using the specified key. The type of the field will be an array, but it is the responsibility of the caller to ensure that the keys of ``array`` are properly formatted with string keys such as "0", "1", "2" and so forth. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function fails if appending the array grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_begin.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_begin.rst deleted file mode 100644 index 4a326d7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_begin.rst +++ /dev/null @@ -1,39 +0,0 @@ -:man_page: bson_append_array_begin - -bson_append_array_begin() -========================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_ARRAY_BEGIN(b, key, child) \ - bson_append_array_begin (b, key, (int) strlen (key), child) - - bool - bson_append_array_begin (bson_t *bson, - const char *key, - int key_length, - bson_t *child); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: A string containing the name for the key. -* ``key_length``: The length of ``key`` or -1 to call ``strlen()``. -* ``child``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_append_array_begin()` function shall begin appending an array field to ``bson``. This allows for incrementally building a sub-array. Doing so will generally yield better performance as you will serialize to a single buffer. When done building the sub-array, the caller *MUST* call :symbol:`bson_append_array_end()`. - -For generating array element keys, see :symbol:`bson_uint32_to_string`. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the array grows ``bson`` larger than INT32_MAX. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_end.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_end.rst deleted file mode 100644 index 5c0a2fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_array_end.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_append_array_end - -bson_append_array_end() -======================= - -Synopsis --------- - -.. code-block:: c - - bool - bson_append_array_end (bson_t *bson, bson_t *child); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``child``: The :symbol:`bson_t` initialized in a call to :symbol:`bson_append_array_begin()`. - -Description ------------ - -The :symbol:`bson_append_array_end()` function shall complete the appending of an array field started with :symbol:`bson_append_array_begin()`. ``child`` is invalid after calling this function. - -Returns -------- - -Returns ``true`` if successful. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_binary.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_binary.rst deleted file mode 100644 index 958f3b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_binary.rst +++ /dev/null @@ -1,40 +0,0 @@ -:man_page: bson_append_binary - -bson_append_binary() -==================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_BINARY(b, key, subtype, val, len) \ - bson_append_binary (b, key, (int) strlen (key), subtype, val, len) - - bool - bson_append_binary (bson_t *bson, - const char *key, - int key_length, - bson_subtype_t subtype, - const uint8_t *binary, - uint32_t length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: The key name. -* ``key_length``: The length of ``key`` in bytes or -1 to use strlen(). -* ``subtype``: A bson_subtype_t indicating the binary subtype. -* ``binary``: A buffer to embed as binary data. Must not be ``NULL``. -* ``length``: The length of ``buffer`` in bytes. - -Description ------------ - -The :symbol:`bson_append_binary()` function shall append a new element to ``bson`` containing the binary data provided. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``binary`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_bool.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_bool.rst deleted file mode 100644 index a0bcb4d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_bool.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_append_bool - -bson_append_bool() -================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_BOOL(b, key, val) \ - bson_append_bool (b, key, (int) strlen (key), val) - - bool - bson_append_bool (bson_t *bson, const char *key, int key_length, bool value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: The name of the field. -* ``key_length``: The length of ``key`` or -1 to use strlen(). -* ``value``: true or false. - -Description ------------ - -The :symbol:`bson_append_bool()` function shall append a new element to ``bson`` containing the boolean provided. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code.rst deleted file mode 100644 index 724927e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_code - -bson_append_code() -================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_CODE(b, key, val) \ - bson_append_code (b, key, (int) strlen (key), val) - - bool - bson_append_code (bson_t *bson, - const char *key, - int key_length, - const char *javascript); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: The key name. -* ``key_length``: The length of ``key`` or -1 to use strlen(). -* ``javascript``: A UTF-8 encoded string containing the javascript. - -Description ------------ - -The :symbol:`bson_append_code()` function shall append a new element to ``bson`` using the UTF-8 encoded ``javascript`` provided. ``javascript`` must be a NULL terminated C string. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``javascript`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code_with_scope.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code_with_scope.rst deleted file mode 100644 index 2c6e32c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_code_with_scope.rst +++ /dev/null @@ -1,40 +0,0 @@ -:man_page: bson_append_code_with_scope - -bson_append_code_with_scope() -============================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \ - bson_append_code_with_scope (b, key, (int) strlen (key), val, scope) - - bool - bson_append_code_with_scope (bson_t *bson, - const char *key, - int key_length, - const char *javascript, - const bson_t *scope); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``javascript``: A NULL-terminated UTF-8 encoded string containing the javascript fragment. -* ``scope``: Optional :symbol:`bson_t` containing the scope for ``javascript``. - -Description ------------ - -The :symbol:`bson_append_code_with_scope()` function shall perform like :symbol:`bson_append_code()` except it allows providing a scope to the javascript function in the form of a bson document. - -If ``scope`` is NULL, this function appends an element with BSON type "code", otherwise with BSON type "code with scope". - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``javascript`` and ``scope`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_date_time.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_date_time.rst deleted file mode 100644 index 974d052..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_date_time.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_date_time - -bson_append_date_time() -======================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_DATE_TIME(b, key, val) \ - bson_append_date_time (b, key, (int) strlen (key), val) - - bool - bson_append_date_time (bson_t *bson, - const char *key, - int key_length, - int64_t value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: The date and time as specified in milliseconds since the UNIX epoch. - -Description ------------ - -The :symbol:`bson_append_date_time()` function shall append a new element to a ``bson`` document containing a date and time with no timezone information. ``value`` is assumed to be in UTC format of milliseconds since the UNIX epoch. ``value`` *MAY* be negative. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``value`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_dbpointer.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_dbpointer.rst deleted file mode 100644 index 78387b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_dbpointer.rst +++ /dev/null @@ -1,40 +0,0 @@ -:man_page: bson_append_dbpointer - -bson_append_dbpointer() -======================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_DBPOINTER(b, key, coll, oid) \ - bson_append_dbpointer (b, key, (int) strlen (key), coll, oid) - - bool - bson_append_dbpointer (bson_t *bson, - const char *key, - int key_length, - const char *collection, - const bson_oid_t *oid); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``collection``: The target collection name. -* ``oid``: The target document identifier. - -Description ------------ - -.. warning:: - - The dbpointer field type is *DEPRECATED* and should only be used when interacting with legacy systems. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the array grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_decimal128.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_decimal128.rst deleted file mode 100644 index ee1ee5b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_decimal128.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_decimal128 - -bson_append_decimal128() -======================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_DECIMAL128(b, key, val) \ - bson_append_decimal128 (b, key, (int) strlen (key), val) - - bool - bson_append_decimal128 (bson_t *bson, - const char *key, - int key_length, - const bson_decimal128_t *value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: A :symbol:`bson_decimal128_t`. - -Description ------------ - -The :symbol:`bson_append_decimal128()` function shall append a new element to ``bson`` containing a Decimal 128. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``value`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document.rst deleted file mode 100644 index 76fea4e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_document - -bson_append_document() -====================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_DOCUMENT(b, key, val) \ - bson_append_document (b, key, (int) strlen (key), val) - - bool - bson_append_document (bson_t *bson, - const char *key, - int key_length, - const bson_t *value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: A :symbol:`bson_t` containing the sub-document to append. - -Description ------------ - -The :symbol:`bson_append_document()` function shall append ``child`` to ``bson`` using the specified key. The type of the field will be a document. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``value`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_begin.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_begin.rst deleted file mode 100644 index 416ae00..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_begin.rst +++ /dev/null @@ -1,38 +0,0 @@ -:man_page: bson_append_document_begin - -bson_append_document_begin() -============================ - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \ - bson_append_document_begin (b, key, (int) strlen (key), child) - - bool - bson_append_document_begin (bson_t *bson, - const char *key, - int key_length, - bson_t *child); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``child``: An uninitialized :symbol:`bson_t` to be initialized as the sub-document. - -Description ------------ - -The :symbol:`bson_append_document_begin()` function shall begin appending a sub-document to ``bson``. Use ``child`` to add fields to the sub-document. When completed, call :symbol:`bson_append_document_end()` to complete the element. - -``child`` *MUST* be an uninitialized :symbol:`bson_t` to avoid leaking memory. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if ``bson`` must grow larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_end.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_end.rst deleted file mode 100644 index 3eba9ad..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_document_end.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_append_document_end - -bson_append_document_end() -========================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_append_document_end (bson_t *bson, bson_t *child); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``child``: The child :symbol:`bson_t` initialized in a call to :symbol:`bson_append_document_begin()`. - -Description ------------ - -The :symbol:`bson_append_document_end()` function shall complete the appending of a document with :symbol:`bson_append_document_begin()`. ``child`` is invalid after calling this function. - -Returns -------- - -Returns ``true`` if successful. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_double.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_double.rst deleted file mode 100644 index fcb3552..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_double.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_double - -bson_append_double() -==================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_DOUBLE(b, key, val) \ - bson_append_double (b, key, (int) strlen (key), val) - - bool - bson_append_double (bson_t *bson, - const char *key, - int key_length, - double value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: A double value to append. - -Description ------------ - -The :symbol:`bson_append_double()` function shall append a new element to a bson document of type ``double``. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``value`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int32.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int32.rst deleted file mode 100644 index ca9f4d5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int32.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_int32 - -bson_append_int32() -=================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_INT32(b, key, val) \ - bson_append_int32 (b, key, (int) strlen (key), val) - - bool - bson_append_int32 (bson_t *bson, - const char *key, - int key_length, - int32_t value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: An int32_t. - -Description ------------ - -The :symbol:`bson_append_int32()` function shall append a new element to ``bson`` containing a 32-bit signed integer. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``value`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int64.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int64.rst deleted file mode 100644 index b037e83..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_int64.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_int64 - -bson_append_int64() -=================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_INT64(b, key, val) \ - bson_append_int64 (b, key, (int) strlen (key), val) - - bool - bson_append_int64 (bson_t *bson, - const char *key, - int key_length, - int64_t value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: An int64_t. - -Description ------------ - -The :symbol:`bson_append_int64()` function shall append a new element to ``bson`` containing a 64-bit signed integer. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``value`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_iter.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_iter.rst deleted file mode 100644 index 9c3a73b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_iter.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_append_iter - -bson_append_iter() -================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_append_iter (bson_t *bson, - const char *key, - int key_length, - const bson_iter_t *iter); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: Optional field name. If NULL, uses :symbol:`bson_iter_key(iter) `. -* ``key_length``: The length of ``key`` or -1 to use strlen(). -* ``iter``: A :symbol:`bson_iter_t` located on the position of the element to append. - -Description ------------ - -Appends the value at the current position of ``iter`` to the document. - -Returns -------- - -Returns ``true`` if successful; ``false`` if the operation would overflow the maximum document size or another invalid state is detected. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_maxkey.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_maxkey.rst deleted file mode 100644 index 8b8322a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_maxkey.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_append_maxkey - -bson_append_maxkey() -==================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_MAXKEY(b, key) \ - bson_append_maxkey (b, key, (int) strlen (key)) - - bool - bson_append_maxkey (bson_t *bson, const char *key, int key_length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. - -Description ------------ - -The :symbol:`bson_append_maxkey()` function shall append an element of type BSON_TYPE_MAXKEY to a bson document. This is primarily used in queries and unlikely to be used when storing a document to MongoDB. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_minkey.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_minkey.rst deleted file mode 100644 index cde6428..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_minkey.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_append_minkey - -bson_append_minkey() -==================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_MINKEY(b, key) \ - bson_append_minkey (b, key, (int) strlen (key)) - - bool - bson_append_minkey (bson_t *bson, const char *key, int key_length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. - -Description ------------ - -The :symbol:`bson_append_minkey()` function shall append an element of type BSON_TYPE_MINKEY to a bson document. This is primarily used in queries and unlikely to be used when storing a document to MongoDB. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_now_utc.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_now_utc.rst deleted file mode 100644 index 66d3dad..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_now_utc.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_append_now_utc - -bson_append_now_utc() -===================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_append_now_utc (bson_t *bson, const char *key, int key_length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. - -Description ------------ - -The :symbol:`bson_append_now_utc()` function is a helper to get the current date and time in UTC and append it to ``bson`` as a BSON_TYPE_DATE_TIME element. - -This function calls :symbol:`bson_append_date_time()` internally. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_null.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_null.rst deleted file mode 100644 index 1559154..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_null.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_append_null - -bson_append_null() -================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key)) - - bool - bson_append_null (bson_t *bson, const char *key, int key_length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. - -Description ------------ - -The :symbol:`bson_append_null()` function shall append a new element to ``bson`` of type BSON_TYPE_NULL. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_oid.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_oid.rst deleted file mode 100644 index c965533..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_oid.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_oid - -bson_append_oid() -================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_OID(b, key, val) \ - bson_append_oid (b, key, (int) strlen (key), val) - - bool - bson_append_oid (bson_t *bson, - const char *key, - int key_length, - const bson_oid_t *oid); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``oid``: A bson_oid_t. - -Description ------------ - -The :symbol:`bson_append_oid()` function shall append a new element to ``bson`` of type BSON_TYPE_OID. ``oid`` *MUST* be a pointer to a :symbol:`bson_oid_t`. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending ``oid`` grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex.rst deleted file mode 100644 index 48df06c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex.rst +++ /dev/null @@ -1,47 +0,0 @@ -:man_page: bson_append_regex - -bson_append_regex() -=================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_REGEX(b, key, val, opt) \ - bson_append_regex (b, key, (int) strlen (key), val, opt) - - bool - bson_append_regex (bson_t *bson, - const char *key, - int key_length, - const char *regex, - const char *options); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``regex``: An ASCII string containing the regex. -* ``options``: An optional string containing the regex options as a string. - -Description ------------ - -Appends a new field to ``bson`` of type BSON_TYPE_REGEX. ``regex`` should be the regex string. ``options`` should contain the options for the regex. - -Valid characters for ``options`` include: - -* ``'i'`` for case-insensitive. -* ``'m'`` for multiple matching. -* ``'x'`` for verbose mode. -* ``'l'`` to make \w and \W locale dependent. -* ``'s'`` for dotall mode ('.' matches everything) -* ``'u'`` to make \w and \W match unicode. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the regex grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex_w_len.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex_w_len.rst deleted file mode 100644 index 9335b35..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_regex_w_len.rst +++ /dev/null @@ -1,47 +0,0 @@ -:man_page: bson_append_regex_w_len - -bson_append_regex_w_len() -========================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_append_regex_w_len (bson_t *bson, - const char *key, - int key_length, - const char *regex, - int regex_length, - const char *options); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``regex``: An ASCII string containing the regex. -* ``regex_length``: The length of ``regex`` in bytes, or -1 to determine the length with ``strlen()``. -* ``options``: An optional string containing the regex options as a string. - -Description ------------ - -Appends a new field to ``bson`` of type BSON_TYPE_REGEX. ``regex`` should be the regex string. ``options`` should contain the options for the regex. - -Valid characters for ``options`` include: - -* ``'i'`` for case-insensitive. -* ``'m'`` for multiple matching. -* ``'x'`` for verbose mode. -* ``'l'`` to make \w and \W locale dependent. -* ``'s'`` for dotall mode ('.' matches everything) -* ``'u'`` to make \w and \W match unicode. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the regex grows ``bson`` larger than INT32_MAX. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_symbol.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_symbol.rst deleted file mode 100644 index 307c9fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_symbol.rst +++ /dev/null @@ -1,38 +0,0 @@ -:man_page: bson_append_symbol - -bson_append_symbol() -==================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_SYMBOL(b, key, val) \ - bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val)) - - bool - bson_append_symbol (bson_t *bson, - const char *key, - int key_length, - const char *value, - int length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: The symbol. -* ``length``: A length of ``symbol`` in bytes, or -1 to determine the length with ``strlen()``. - -Description ------------ - -Appends a new field to ``bson`` of type BSON_TYPE_SYMBOL. This BSON type is deprecated and should not be used in new code. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_time_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_time_t.rst deleted file mode 100644 index 17fb84d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_time_t.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_time_t - -bson_append_time_t() -==================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_TIME_T(b, key, val) \ - bson_append_time_t (b, key, (int) strlen (key), val) - - bool - bson_append_time_t (bson_t *bson, - const char *key, - int key_length, - time_t value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: A time_t. - -Description ------------ - -The :symbol:`bson_append_time_t()` function is a helper that takes a ``time_t`` instead of milliseconds since the UNIX epoch. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timestamp.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timestamp.rst deleted file mode 100644 index 913991d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timestamp.rst +++ /dev/null @@ -1,42 +0,0 @@ -:man_page: bson_append_timestamp - -bson_append_timestamp() -======================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_TIMESTAMP(b, key, val, inc) \ - bson_append_timestamp (b, key, (int) strlen (key), val, inc) - - bool - bson_append_timestamp (bson_t *bson, - const char *key, - int key_length, - uint32_t timestamp, - uint32_t increment); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``timestamp``: A uint32_t. -* ``increment``: A uint32_t. - -Description ------------ - -This function is not similar in functionality to :symbol:`bson_append_date_time()`. Timestamp elements are different in that they include only second precision and an increment field. - -They are primarily used for intra-MongoDB server communication. - -The :symbol:`bson_append_timestamp()` function shall append a new element of type BSON_TYPE_TIMESTAMP. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timeval.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timeval.rst deleted file mode 100644 index fb9bb64..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_timeval.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_timeval - -bson_append_timeval() -===================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_TIMEVAL(b, key, val) \ - bson_append_timeval (b, key, (int) strlen (key), val) - - bool - bson_append_timeval (bson_t *bson, - const char *key, - int key_length, - struct timeval *value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: A struct timeval. - -Description ------------ - -The :symbol:`bson_append_timeval()` function is a helper that takes a ``struct timeval`` instead of milliseconds since the UNIX epoch. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_undefined.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_undefined.rst deleted file mode 100644 index 09e265c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_undefined.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_append_undefined - -bson_append_undefined() -======================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_UNDEFINED(b, key) \ - bson_append_undefined (b, key, (int) strlen (key)) - - bool - bson_append_undefined (bson_t *bson, const char *key, int key_length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. - -Description ------------ - -The :symbol:`bson_append_undefined()` function shall append a new element to ``bson`` of type BSON_TYPE_UNDEFINED. Undefined is common in Javascript. However, this element type is deprecated and should not be used in new code. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_utf8.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_utf8.rst deleted file mode 100644 index 0500dc4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_utf8.rst +++ /dev/null @@ -1,44 +0,0 @@ -:man_page: bson_append_utf8 - -bson_append_utf8() -================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_UTF8(b, key, val) \ - bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val)) - - bool - bson_append_utf8 (bson_t *bson, - const char *key, - int key_length, - const char *value, - int length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: A UTF-8 encoded string. -* ``length``: The number of bytes in ``value`` excluding the trailing ``\0``, or -1 to determine the length with ``strlen()``. - -Description ------------ - -The :symbol:`bson_append_utf8()` function shall append a UTF-8 encoded string to ``bson``. - -``value`` *MUST* be valid UTF-8. - -Some UTF-8 implementations allow for ``\0`` to be contained within the string (excluding the termination ``\0``. This is allowed, but remember that it could cause issues with communicating with external systems that do not support it. - -It is suggested to use modified UTF-8 which uses a 2 byte representation for embedded ``\0`` within the string. This will allow these UTF-8 encoded strings to used with many libc functions. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_value.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_value.rst deleted file mode 100644 index 1deb5ce..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_append_value.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_append_value - -bson_append_value() -=================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_APPEND_VALUE(b, key, val) \ - bson_append_value (b, key, (int) strlen (key), (val)) - - bool - bson_append_value (bson_t *bson, - const char *key, - int key_length, - const bson_value_t *value); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: An ASCII C string containing the name of the field. -* ``key_length``: The length of ``key`` in bytes, or -1 to determine the length with ``strlen()``. -* ``value``: A :symbol:`bson_value_t`. - -Description ------------ - -Appends a new field to ``bson`` by determining the boxed type in ``value``. This is useful if you want to copy fields between documents but do not know the field type until runtime. - -Returns -------- - -Returns ``true`` if the operation was applied successfully. The function will fail if appending the value grows ``bson`` larger than INT32_MAX. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_array_as_json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_array_as_json.rst deleted file mode 100644 index cc12d61..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_array_as_json.rst +++ /dev/null @@ -1,71 +0,0 @@ -:man_page: bson_array_as_json - -bson_array_as_json() -==================== - -Synopsis --------- - -.. code-block:: c - - char * - bson_array_as_json (const bson_t *bson, size_t *length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``length``: An optional location for the length of the resulting string. - -Description ------------ - -The :symbol:`bson_array_as_json()` function shall encode ``bson`` as a UTF-8 -string using libbson's legacy JSON format, except the outermost element is -encoded as a JSON array, rather than a JSON document. -The caller is responsible for freeing the resulting UTF-8 encoded string by -calling :symbol:`bson_free()` with the result. - -If non-NULL, ``length`` will be set to the length of the result in bytes. - -Returns -------- - -If successful, a newly allocated UTF-8 encoded string and ``length`` is set. - -Upon failure, NULL is returned. - -Example -------- - -.. code-block:: c - - #include - - int main () - { - bson_t bson; - char *str; - - bson_init (&bson); - /* BSON array is a normal BSON document with integer values for the keys, - * starting with 0 and continuing sequentially - */ - BSON_APPEND_UTF8 (&bson, "0", "foo"); - BSON_APPEND_UTF8 (&bson, "1", "bar"); - - str = bson_array_as_json (&bson, NULL); - /* Prints - * [ "foo", "bar" ] - */ - printf ("%s\n", str); - bson_free (str); - - bson_destroy (&bson); - } - - -.. only:: html - - .. taglist:: See Also: - :tags: bson-as-json diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_canonical_extended_json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_canonical_extended_json.rst deleted file mode 100644 index 7f2f8fd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_canonical_extended_json.rst +++ /dev/null @@ -1,51 +0,0 @@ -:man_page: bson_as_canonical_extended_json - -bson_as_canonical_extended_json() -================================= - -Synopsis --------- - -.. code-block:: c - - char * - bson_as_canonical_extended_json (const bson_t *bson, size_t *length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``length``: An optional location for the length of the resulting string. - -Description ------------ - -The :symbol:`bson_as_canonical_extended_json()` encodes ``bson`` as a UTF-8 string in the canonical `MongoDB Extended JSON format`_. - -The caller is responsible for freeing the resulting UTF-8 encoded string by calling :symbol:`bson_free()` with the result. - -If non-NULL, ``length`` will be set to the length of the result in bytes. - -Returns -------- - -If successful, a newly allocated UTF-8 encoded string and ``length`` is set. - -Upon failure, NULL is returned. - -Example -------- - -.. code-block:: c - - char *str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\n", str); - bson_free (str); - - -.. only:: html - - .. taglist:: See Also: - :tags: bson-as-json - -.. _MongoDB Extended JSON format: https://github.com/mongodb/specifications/blob/master/source/extended-json.rst diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_json.rst deleted file mode 100644 index 816505e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_json.rst +++ /dev/null @@ -1,68 +0,0 @@ -:man_page: bson_as_json - -bson_as_json() -============== - -Synopsis --------- - -.. code-block:: c - - char * - bson_as_json (const bson_t *bson, size_t *length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``length``: An optional location for the length of the resulting string. - -Description ------------ - -The :symbol:`bson_as_json()` function shall encode ``bson`` as a UTF-8 string using libbson's legacy JSON format. This function is superseded by :symbol:`bson_as_canonical_extended_json()` and :symbol:`bson_as_relaxed_extended_json()`, which use the same `MongoDB Extended JSON format`_ as all other MongoDB drivers. - -The caller is responsible for freeing the resulting UTF-8 encoded string by calling :symbol:`bson_free()` with the result. - -If non-NULL, ``length`` will be set to the length of the result in bytes. - -Returns -------- - -If successful, a newly allocated UTF-8 encoded string and ``length`` is set. - -Upon failure, NULL is returned. - -Example -------- - -.. code-block:: c - - #include - - int main () - { - bson_t bson; - char *str; - - bson_init (&bson); - BSON_APPEND_UTF8 (&bson, "0", "foo"); - BSON_APPEND_UTF8 (&bson, "1", "bar"); - - str = bson_as_json (&bson, NULL); - /* Prints - * { "0" : "foo", "1" : "bar" } - */ - printf ("%s\n", str); - bson_free (str); - - bson_destroy (&bson); - } - -.. only:: html - - .. taglist:: See Also: - :tags: bson-as-json - -.. _MongoDB Extended JSON format: https://github.com/mongodb/specifications/blob/master/source/extended-json.rst - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_relaxed_extended_json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_relaxed_extended_json.rst deleted file mode 100644 index 37a6fcf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_as_relaxed_extended_json.rst +++ /dev/null @@ -1,51 +0,0 @@ -:man_page: bson_as_relaxed_extended_json - -bson_as_relaxed_extended_json() -=============================== - -Synopsis --------- - -.. code-block:: c - - char * - bson_as_relaxed_extended_json (const bson_t *bson, size_t *length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``length``: An optional location for the length of the resulting string. - -Description ------------ - -The :symbol:`bson_as_relaxed_extended_json()` encodes ``bson`` as a UTF-8 string in the relaxed `MongoDB Extended JSON format`_. - -The caller is responsible for freeing the resulting UTF-8 encoded string by calling :symbol:`bson_free()` with the result. - -If non-NULL, ``length`` will be set to the length of the result in bytes. - -Returns -------- - -If successful, a newly allocated UTF-8 encoded string and ``length`` is set. - -Upon failure, NULL is returned. - -Example -------- - -.. code-block:: c - - char *str = bson_as_relaxed_extended_json (doc, NULL); - printf ("%s\n", str); - bson_free (str); - - -.. only:: html - - .. taglist:: See Also: - :tags: bson-as-json - -.. _MongoDB Extended JSON format: https://github.com/mongodb/specifications/blob/master/source/extended-json.rst diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_ascii_strtoll.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_ascii_strtoll.rst deleted file mode 100644 index 24cc6d7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_ascii_strtoll.rst +++ /dev/null @@ -1,44 +0,0 @@ -:man_page: bson_ascii_strtoll - -bson_ascii_strtoll() -==================== - -Synopsis --------- - -.. code-block:: c - - int64_t - bson_ascii_strtoll (const char *str, char **endptr, int base); - -Parameters ----------- - -* ``str``: The string to convert. -* ``endptr``: Address of the first invalid character of ``str``, or null. -* ``base``: The base to use for the conversion. - -Description ------------ - -A portable version of ``strtoll()``. - - -Converts a string to a 64-bit signed integer according to the given ``base``, -which must be 16, 10, or 8. Leading whitespace will be ignored. - -If base is 0 is passed in, the base is inferred from the string's leading -characters. Base-16 numbers start with "0x" or "0X", base-8 numbers start with -"0", base-10 numbers start with a digit from 1 to 9. - -If ``endptr`` is not NULL, it will be assigned the address of the first invalid -character of ``str``, or its null terminating byte if the entire string was valid. - -If an invalid value is encountered, errno will be set to EINVAL and zero will -be returned. If the number is out of range, errno is set to ERANGE and -LLONG_MAX or LLONG_MIN is returned. - -Returns -------- - -The result of the conversion. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_check_version.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_check_version.rst deleted file mode 100644 index 139d365..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_check_version.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_check_version - -bson_check_version() -==================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_check_version (int required_major, int required_minor, int required_micro); - -Parameters ----------- - -* ``required_major``: The minimum major version required. -* ``required_minor``: The minimum minor version required. -* ``required_micro``: The minimum micro version required. - -Description ------------ - -Check at runtime if this release of libbson meets a required version. - -Returns -------- - -True if libbson's version is greater than or equal to the required version. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_compare.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_compare.rst deleted file mode 100644 index 5f7257e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_compare.rst +++ /dev/null @@ -1,37 +0,0 @@ -:man_page: bson_compare - -bson_compare() -============== - -Synopsis --------- - -.. code-block:: c - - int - bson_compare (const bson_t *bson, const bson_t *other); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``other``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_compare()` function shall compare two bson documents for equality. - -This can be useful in conjunction with _qsort()_. - -If equal, 0 is returned. - -.. tip:: - - This function uses _memcmp()_ internally, so the semantics are the same. - -Returns -------- - -less than zero, zero, or greater than zero in ``qsort()`` style. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_concat.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_concat.rst deleted file mode 100644 index ebe17f0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_concat.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_concat - -bson_concat() -============= - -Synopsis --------- - -.. code-block:: c - - bool - bson_concat (bson_t *dst, const bson_t *src); - -Parameters ----------- - -* ``dst``: A :symbol:`bson_t`. -* ``src``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_concat()` function shall append the contents of ``src`` to ``dst``. - -Returns -------- - -Returns ``true`` if successful; ``false`` if the operation would overflow the maximum document size or another invalid state is detected. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_destroy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_destroy.rst deleted file mode 100644 index 7255a9d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_destroy.rst +++ /dev/null @@ -1,25 +0,0 @@ -:man_page: bson_context_destroy - -bson_context_destroy() -====================== - -Synopsis --------- - -.. code-block:: c - - void - bson_context_destroy (bson_context_t *context); - -Parameters ----------- - -* ``context``: A :symbol:`bson_context_t`. - -Description ------------ - -The ``bson_context_destroy()`` function shall release all resources associated with ``context``. Does nothing if ``context`` is NULL. - -This should be called when you are no longer using a :symbol:`bson_context_t` that you have allocated with :symbol:`bson_context_new()`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_get_default.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_get_default.rst deleted file mode 100644 index 1eaf8cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_get_default.rst +++ /dev/null @@ -1,18 +0,0 @@ -:man_page: bson_context_get_default - -bson_context_get_default() -========================== - -Synopsis --------- - -.. code-block:: c - - bson_context_t * - bson_context_get_default (void); - -Returns -------- - -The ``bson_context_get_default()`` function shall return the default, thread-safe, :symbol:`bson_context_t` for the process. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_new.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_new.rst deleted file mode 100644 index 65d83d3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_new.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_context_new - -bson_context_new() -================== - -Synopsis --------- - -.. code-block:: c - - bson_context_t * - bson_context_new (bson_context_flags_t flags); - -Parameters ----------- - -* ``flags``: A :symbol:`bson_context_flags_t `. - -Description ------------ - -Creates a new :symbol:`bson_context_t`. This is rarely needed as :symbol:`bson_context_get_default()` serves most use-cases. - -Returns -------- - -A newly allocated :symbol:`bson_context_t` that should be freed with :symbol:`bson_context_destroy`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_t.rst deleted file mode 100644 index a425b29..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_context_t.rst +++ /dev/null @@ -1,77 +0,0 @@ -:man_page: bson_context_t - -bson_context_t -============== - -BSON OID Generation Context - -Synopsis --------- - -.. code-block:: c - - #include - - typedef enum { - BSON_CONTEXT_NONE = 0, - BSON_CONTEXT_THREAD_SAFE = (1 << 0), - BSON_CONTEXT_DISABLE_HOST_CACHE = (1 << 1), - BSON_CONTEXT_DISABLE_PID_CACHE = (1 << 2), - #ifdef BSON_HAVE_SYSCALL_TID - BSON_CONTEXT_USE_TASK_ID = (1 << 3), - #endif - } bson_context_flags_t; - - typedef struct _bson_context_t bson_context_t; - - bson_context_t * - bson_context_get_default (void) BSON_GNUC_CONST; - bson_context_t * - bson_context_new (bson_context_flags_t flags); - void - bson_context_destroy (bson_context_t *context); - -Description ------------ - -The :symbol:`bson_context_t` structure is context for generation of BSON Object IDs. This context allows for specialized overriding of how ObjectIDs are generated based on the applications requirements. For example, disabling of PID caching can be configured if the application cannot detect when a call to ``fork()`` has occurred. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_context_destroy - bson_context_get_default - bson_context_new - -Example -------- - -.. code-block:: c - - #include - - int - main (int argc, char *argv[]) - { - bson_context_t *ctx = NULL; - bson_oid_t oid; - - /* use default context, via bson_context_get_default() */ - bson_oid_init (&oid, NULL); - - /* specify a local context for additional control */ - ctx = bson_context_new (BSON_CONTEXT_DISABLE_PID_CACHE | - BSON_CONTEXT_THREAD_SAFE); - bson_oid_init (&oid, ctx); - - bson_context_destroy (ctx); - - return 0; - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy.rst deleted file mode 100644 index 6fe69cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_copy - -bson_copy() -=========== - -Synopsis --------- - -.. code-block:: c - - bson_t * - bson_copy (const bson_t *bson); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_copy()` function shall copy the contents of a bson document into a new :symbol:`bson_t`. - -The resulting :symbol:`bson_t` should be freed with :symbol:`bson_destroy()`. - -Returns -------- - -A newly allocated :symbol:`bson_t` that should be freed with :symbol:`bson_destroy()`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to.rst deleted file mode 100644 index 293f1cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to.rst +++ /dev/null @@ -1,26 +0,0 @@ -:man_page: bson_copy_to - -bson_copy_to() -============== - -Synopsis --------- - -.. code-block:: c - - void - bson_copy_to (const bson_t *src, bson_t *dst); - -Parameters ----------- - -* ``src``: A :symbol:`bson_t`. -* ``dst``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_copy_to()` function shall initialize ``dst`` with a copy of the contents of ``src``. - -``dst`` *MUST* be an uninitialized :symbol:`bson_t` to avoid leaking memory. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding.rst deleted file mode 100644 index 05c89c5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding.rst +++ /dev/null @@ -1,41 +0,0 @@ -:man_page: bson_copy_to_excluding - -bson_copy_to_excluding() -======================== - -Synopsis --------- - -.. code-block:: c - - void - bson_copy_to_excluding (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) BSON_GNUC_NULL_TERMINATED - BSON_GNUC_DEPRECATED_FOR (bson_copy_to_excluding_noinit); - -Parameters ----------- - -* ``src``: A :symbol:`bson_t`. -* ``dst``: A :symbol:`bson_t`. -* ``first_exclude``: The first field name to exclude. - -Description ------------ - -The :symbol:`bson_copy_to_excluding()` function shall copy all fields from -``src`` to ``dst`` except those specified by the variadic, NULL terminated list -of keys starting from ``first_exclude``. - -Deprecated ----------- - - This function is deprecated. Please use - :symbol:`bson_copy_to_excluding_noinit` in new code. - -.. warning:: - - :symbol:`bson_init` is called on ``dst``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding_noinit.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding_noinit.rst deleted file mode 100644 index a3f5952..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_copy_to_excluding_noinit.rst +++ /dev/null @@ -1,69 +0,0 @@ -:man_page: bson_copy_to_excluding_noinit - -bson_copy_to_excluding_noinit() -=============================== - -Synopsis --------- - -.. code-block:: c - - void - bson_copy_to_excluding_noinit (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) BSON_GNUC_NULL_TERMINATED; - -Parameters ----------- - -* ``src``: A :symbol:`bson_t`. -* ``dst``: A :symbol:`bson_t`. -* ``first_exclude``: The first field name to exclude. - -Description ------------ - -The :symbol:`bson_copy_to_excluding_noinit()` function shall copy all fields -from ``src`` to ``dst`` except those specified by the variadic, NULL terminated -list of keys starting from ``first_exclude``. -Works the same way as :symbol:`bson_copy_to_excluding`, except does **not** call -:symbol:`bson_init` on ``dst``. -This function should be preferred in new code over :symbol:`bson_copy_to_excluding`. - -.. warning:: - - This is generally not needed except in very special situations. - -Example -------- - -.. code-block:: c - - #include - - int main () - { - bson_t bson; - bson_t bson2; - char *str; - - bson_init (&bson); - bson_append_int32 (&bson, "a", 1, 1); - bson_append_int32 (&bson, "b", 1, 2); - bson_append_int32 (&bson, "c", 1, 2); - - bson_init (&bson2); - bson_copy_to_excluding_noinit (&bson, &bson2, "b", NULL); - - str = bson_as_json (&bson2, NULL); - /* Prints - * { "a" : 1, "c" : 2 } - */ - printf ("%s\n", str); - bson_free (str); - - bson_destroy (&bson); - bson_destroy (&bson2); - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_count_keys.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_count_keys.rst deleted file mode 100644 index ab99542..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_count_keys.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_count_keys - -bson_count_keys() -================= - -Synopsis --------- - -.. code-block:: c - - uint32_t - bson_count_keys (const bson_t *bson); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_count_keys()` function shall count the number of elements within ``bson``. - -Returns -------- - -A positive integer or zero. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string.rst deleted file mode 100644 index a10acc4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string.rst +++ /dev/null @@ -1,41 +0,0 @@ -:man_page: bson_decimal128_from_string - -bson_decimal128_from_string() -============================= - -Synopsis --------- - -.. code-block:: c - - bool - bson_decimal128_from_string (const char *string, bson_decimal128_t *dec); - -Parameters ----------- - -* ``string``: A string containing ASCII encoded Decimal128. -* ``dec``: A :symbol:`bson_decimal128_t`. - -Description ------------ - -Parses the string containing ascii encoded Decimal128 and initialize the bytes -in ``dec``. See the `Decimal128 specification -`_ -for the exact string format. - -Returns -------- - -Returns ``true`` if valid Decimal128 string was provided, otherwise ``false`` -and ``dec`` will be set to ``NaN``. - -Example -------- - -.. code-block:: c - - bson_decimal128_t dec; - bson_decimal128_from_string ("1.00", &dec); - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string_w_len.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string_w_len.rst deleted file mode 100644 index 8693580..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_from_string_w_len.rst +++ /dev/null @@ -1,44 +0,0 @@ -:man_page: bson_decimal128_from_string_w_len - -bson_decimal128_from_string_w_len() -=================================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_decimal128_from_string_w_len (const char *string, - int len, - bson_decimal128_t *dec); - -Parameters ----------- - -* ``string``: A string containing ASCII encoded Decimal128. -* ``len``: The length of ``string`` in bytes, or -1 meaning the string is null-terminated. -* ``dec``: A :symbol:`bson_decimal128_t`. - -Description ------------ - -Parses the string containing ascii encoded Decimal128 and initialize the bytes -in ``dec``. See the `Decimal128 specification -`_ -for the exact string format. - -Returns -------- - -Returns ``true`` if valid Decimal128 string was provided, otherwise ``false`` -and ``dec`` will be set to ``NaN``. - -Example -------- - -.. code-block:: c - - bson_decimal128_t dec; - bson_decimal128_from_string_w_len ("1.00", 4, &dec); - bson_decimal128_from_string_w_len ("1.00", -1, &dec); diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_t.rst deleted file mode 100644 index ac7baa2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_t.rst +++ /dev/null @@ -1,68 +0,0 @@ -:man_page: bson_decimal128_t - -bson_decimal128_t -================= - -BSON Decimal128 Abstraction - -Synopsis --------- - -.. code-block:: c - - #include - - #define BSON_DECIMAL128_STRING 43 - #define BSON_DECIMAL128_INF "Infinity" - #define BSON_DECIMAL128_NAN "NaN" - - typedef struct { - #if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN - uint64_t low; - uint64_t high; - #elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN - uint64_t high; - uint64_t low; - #endif - } bson_decimal128_t; - -Description ------------ - -The :symbol:`bson_decimal128_t` structure -represents the IEEE-754 Decimal128 data type. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_decimal128_from_string - bson_decimal128_from_string_w_len - bson_decimal128_to_string - -Example -------- - -.. code-block:: c - - #include - #include - - int - main (int argc, char *argv[]) - { - char string[BSON_DECIMAL128_STRING]; - bson_decimal128_t decimal128; - - bson_decimal128_from_string ("100.00", &decimal128); - bson_decimal128_to_string (&decimal128, string); - printf ("Decimal128 value: %s\n", string); - - return 0; - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_to_string.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_to_string.rst deleted file mode 100644 index 7a12fe7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_decimal128_to_string.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_decimal128_to_string - -bson_decimal128_to_string() -=========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_decimal128_to_string (const bson_decimal128_t *dec, char *str); - -Parameters ----------- - -* ``dec``: A :symbol:`bson_decimal128_t`. -* ``str``: A location of length BSON_DECIMAL128_STRING for the resulting string. - -Description ------------ - -Converts ``dec`` into a printable string. - -Example -------- - -.. code-block:: c - - char decimal128_string[BSON_DECIMAL128_STRING]; - bson_decimal128_to_string (&decimal128t, decimal128_string); - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy.rst deleted file mode 100644 index d2fea65..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy.rst +++ /dev/null @@ -1,25 +0,0 @@ -:man_page: bson_destroy - -bson_destroy() -============== - -Synopsis --------- - -.. code-block:: c - - void - bson_destroy (bson_t *bson); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_destroy()` function shall free an allocated :symbol:`bson_t` structure. Does nothing if ``bson`` is NULL. - -This function should always be called when you are done with a :symbol:`bson_t` unless otherwise specified. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy_with_steal.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy_with_steal.rst deleted file mode 100644 index a409a71..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_destroy_with_steal.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_destroy_with_steal - -bson_destroy_with_steal() -========================= - -Synopsis --------- - -.. code-block:: c - - uint8_t * - bson_destroy_with_steal (bson_t *bson, bool steal, uint32_t *length); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``steal``: A bool indicating if the underlying buffer should be stolen. -* ``length``: A location for storing the resulting buffer length. - -Description ------------ - -The :symbol:`bson_destroy_with_steal()` function shall destroy a :symbol:`bson_t` structure but return the underlying buffer instead of freeing it. If steal is false, this is equivalent to calling bson_destroy(). It is a programming error to call this function on a :symbol:`bson_t` that is not a top-level :symbol:`bson_t`, such as those initialized with :symbol:`bson_append_document_begin()`, :symbol:`bson_append_array_begin()`, and :symbol:`bson_writer_begin()`. - -See also :symbol:`bson_steal`, a higher-level function that efficiently transfers the contents of one :symbol:`bson_t` to another. - -Returns -------- - -:symbol:`bson_destroy_with_steal()` shall return a buffer containing the contents of the :symbol:`bson_t` if ``steal`` is non-zero. This should be freed with :symbol:`bson_free()` when no longer in use. ``length`` will be set to the length of the bson document if non-NULL. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_equal.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_equal.rst deleted file mode 100644 index 7950e35..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_equal.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_equal - -bson_equal() -============ - -Synopsis --------- - -.. code-block:: c - - bool - bson_equal (const bson_t *bson, const bson_t *other); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``other``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_equal()` function shall return true if both documents are equal. - -Returns -------- - -true if both documents are equal. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_error_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_error_t.rst deleted file mode 100644 index 8fad1b6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_error_t.rst +++ /dev/null @@ -1,53 +0,0 @@ -:man_page: bson_error_t - -bson_error_t -============ - -BSON Error Encapsulation - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct { - uint32_t domain; - uint32_t code; - char message[504]; - } bson_error_t; - -Description ------------ - -The :symbol:`bson_error_t` structure is used as an out-parameter to pass error information to the caller. It should be stack-allocated and does not requiring freeing. - -See :doc:`Handling Errors `. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_set_error - bson_strerror_r - -Example -------- - -.. code-block:: c - - bson_reader_t *reader; - bson_error_t error; - - reader = bson_reader_new_from_file ("dump.bson", &error); - if (!reader) { - fprintf ( - stderr, "ERROR: %d.%d: %s\n", error.domain, error.code, error.message); - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_free.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_free.rst deleted file mode 100644 index 88e8512..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_free.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_free - -bson_free() -=========== - -Synopsis --------- - -.. code-block:: c - - void - bson_free (void *mem); - -Parameters ----------- - -* ``mem``: A memory region. - -Description ------------ - -This function shall free the memory supplied by ``mem``. This should be used by functions that require you free the result with ``bson_free()``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_data.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_data.rst deleted file mode 100644 index 631dd9b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_data.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_get_data - -bson_get_data() -=============== - -Synopsis --------- - -.. code-block:: c - - const uint8_t * - bson_get_data (const bson_t *bson); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_get_data()` function shall return the raw buffer of a bson document. This can be used in conjunction with the ``len`` property of a :symbol:`bson_t` if you want to copy the raw buffer around. - -Returns -------- - -A buffer which should not be modified or freed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_major_version.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_major_version.rst deleted file mode 100644 index 14fec71..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_major_version.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_get_major_version - -bson_get_major_version() -======================== - -Synopsis --------- - -.. code-block:: c - - int - bson_get_major_version (void); - -Description ------------ - -Get the first number in libbson's MAJOR.MINOR.MICRO release version. - -Returns -------- - -The value of ``BSON_MAJOR_VERSION`` when Libbson was compiled. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_micro_version.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_micro_version.rst deleted file mode 100644 index 8594145..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_micro_version.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_get_micro_version - -bson_get_micro_version() -======================== - -Synopsis --------- - -.. code-block:: c - - int - bson_get_micro_version (void); - -Description ------------ - -Get the third number in libbson's MAJOR.MINOR.MICRO release version. - -Returns -------- - -The value of ``BSON_MICRO_VERSION`` when Libbson was compiled. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_minor_version.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_minor_version.rst deleted file mode 100644 index f14be8e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_minor_version.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_get_minor_version - -bson_get_minor_version() -======================== - -Synopsis --------- - -.. code-block:: c - - int - bson_get_minor_version (void); - -Description ------------ - -Get the middle number in libbson's MAJOR.MINOR.MICRO release version. - -Returns -------- - -The value of ``BSON_MINOR_VERSION`` when Libbson was compiled. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_monotonic_time.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_monotonic_time.rst deleted file mode 100644 index 8da7053..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_monotonic_time.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_get_monotonic_time - -System Clock -============ - -BSON Clock Abstraction - -Synopsis --------- - -.. code-block:: c - - int64_t - bson_get_monotonic_time (void); - int - bson_gettimeofday (struct timeval *tv, - struct timezone *tz); - -Description ------------ - -The clock abstraction in Libbson provides a cross-platform way to handle timeouts within the BSON library. It abstracts the differences in implementations of ``gettimeofday()`` as well as providing a monotonic (incrementing only) clock in microseconds. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_version.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_version.rst deleted file mode 100644 index 755dba3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_get_version.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_get_version - -bson_get_version() -================== - -Synopsis --------- - -.. code-block:: c - - const char * - bson_get_version (void); - -Description ------------ - -A string representation of Libbson's version, formatted something like "1.2.3" or "1.2.3-dev". - -Returns -------- - -A string you must not modify or free. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_has_field.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_has_field.rst deleted file mode 100644 index eab6cec..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_has_field.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_has_field - -bson_has_field() -================ - -Synopsis --------- - -.. code-block:: c - - bool - bson_has_field (const bson_t *bson, const char *key); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``key``: A string containing the name of the field to check for. - -Description ------------ - -Checks to see if key contains an element named ``key``. This also accepts "dotkey" notation such as "a.b.c.d". - -Returns -------- - -true if ``key`` was found within ``bson``; otherwise false. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init.rst deleted file mode 100644 index 4139b70..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init.rst +++ /dev/null @@ -1,27 +0,0 @@ -:man_page: bson_init - -bson_init() -=========== - -Synopsis --------- - -.. code-block:: c - - void - bson_init (bson_t *b); - -Parameters ----------- - -* ``b``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_init()` function shall initialize a :symbol:`bson_t` that is placed on the stack. This is equivalent to initializing a :symbol:`bson_t` to ``BSON_INITIALIZER``. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_from_json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_from_json.rst deleted file mode 100644 index d333cce..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_from_json.rst +++ /dev/null @@ -1,45 +0,0 @@ -:man_page: bson_init_from_json - -bson_init_from_json() -===================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_init_from_json (bson_t *bson, - const char *data, - ssize_t len, - bson_error_t *error); - -Parameters ----------- - -* ``bson``: Pointer to an uninitialized :symbol:`bson_t`. -* ``data``: A UTF-8 encoded string containing valid JSON. -* ``len``: The length of ``data`` in bytes excluding a trailing ``\0`` or -1 to determine the length with ``strlen()``. -* ``error``: An optional location for a :symbol:`bson_error_t`. - -Description ------------ - -The ``bson_init_from_json()`` function will initialize a new :symbol:`bson_t` by parsing the JSON found in ``data``. Only a single JSON object may exist in ``data`` or an error will be set and false returned. - -``data`` should be in `MongoDB Extended JSON `_ format. - -Errors ------- - -Errors are propagated via the ``error`` parameter. - -Returns -------- - -Returns ``true`` if valid JSON was parsed, otherwise ``false`` and ``error`` is set. On success, ``bson`` is initialized and must be freed with :symbol:`bson_destroy`, otherwise ``bson`` is invalid. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson json diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_static.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_static.rst deleted file mode 100644 index ae77633..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_init_static.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_init_static - -bson_init_static() -================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_init_static (bson_t *b, const uint8_t *data, size_t length); - -Parameters ----------- - -* ``b``: A :symbol:`bson_t`. -* ``data``: A buffer to initialize with. -* ``length``: The length of ``data`` in bytes. - -Description ------------ - -The :symbol:`bson_init_static()` function shall shall initialize a read-only :symbol:`bson_t` on the stack using the data provided. No copies of the data will be made and therefore must remain valid for the lifetime of the :symbol:`bson_t`. - -The resulting `bson_t` has internal references and therefore must not be copied to avoid dangling pointers in the copy. - -Returns -------- - -Returns ``true`` if :symbol:`bson_t` was successfully initialized, otherwise ``false``. The function can fail if ``data`` or ``length`` are invalid. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_array.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_array.rst deleted file mode 100644 index 6b03e92..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_array.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_iter_array - -bson_iter_array() -================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_ARRAY(iter) (bson_iter_type ((iter)) == BSON_TYPE_ARRAY) - - void - bson_iter_array (const bson_iter_t *iter, - uint32_t *array_len, - const uint8_t **array); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``array_len``: A location for the buffer length. -* ``array``: A location for the immutable buffer. - -Description ------------ - -The ``bson_iter_array()`` function shall retrieve the raw buffer of a sub-array from ``iter``. ``iter`` *MUST* be on an element that is of type BSON_TYPE_ARRAY. This can be verified with :symbol:`bson_iter_type()` or the ``BSON_ITER_HOLDS_ARRAY()`` macro. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_bool.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_bool.rst deleted file mode 100644 index a120a13..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_bool.rst +++ /dev/null @@ -1,40 +0,0 @@ -:man_page: bson_iter_as_bool - -bson_iter_as_bool() -=================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_as_bool (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the current field as if it were a boolean. - -``bson_iter_as_bool()`` currently knows how to determine a boolean value from the following types: - -* BSON_TYPE_BOOL -* BSON_TYPE_DOUBLE -* BSON_TYPE_INT32 -* BSON_TYPE_INT64 -* BSON_TYPE_NULL -* BSON_TYPE_UNDEFINED -* BSON_TYPE_UTF8 - -BSON_TYPE_UTF8 will always equate to ``true``. - -Returns -------- - -true if the field equates to non-zero. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_double.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_double.rst deleted file mode 100644 index bb5d52a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_double.rst +++ /dev/null @@ -1,37 +0,0 @@ -:man_page: bson_iter_as_double - -bson_iter_as_double() -===================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_as_double (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the current field as if it were a double. - -``bson_iter_as_double()`` will cast the following types to double - -* BSON_TYPE_BOOL -* BSON_TYPE_DOUBLE -* BSON_TYPE_INT32 -* BSON_TYPE_INT64 - -Any other value will return 0. - -Returns -------- - -The value type casted to double. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_int64.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_int64.rst deleted file mode 100644 index 54f5b64..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_as_int64.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_as_int64 - -bson_iter_as_int64() -==================== - -Synopsis --------- - -.. code-block:: c - - int64_t - bson_iter_as_int64 (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -The ``bson_iter_as_int64()`` function shall return the contents of the current element as if it were a BSON_TYPE_INT64 element. The currently supported casts include: - -* BSON_TYPE_BOOL -* BSON_TYPE_DOUBLE -* BSON_TYPE_INT32 -* BSON_TYPE_INT64 - -Returns -------- - -A 64-bit signed integer. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_binary.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_binary.rst deleted file mode 100644 index b456bfb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_binary.rst +++ /dev/null @@ -1,34 +0,0 @@ -:man_page: bson_iter_binary - -bson_iter_binary() -================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_BINARY(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_BINARY) - - void - bson_iter_binary (const bson_iter_t *iter, - bson_subtype_t *subtype, - uint32_t *binary_len, - const uint8_t **binary); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``subtype``: A location for a :symbol:`bson_subtype_t` or NULL. -* ``binary_len``: A location for the length of ``binary``. -* ``binary``: A location for a pointer to the immutable buffer. - -Description ------------ - -This function shall return the binary data of a BSON_TYPE_BINARY element. It is a programming error to call this function on a field that is not of type BSON_TYPE_BINARY. You can check this with the BSON_ITER_HOLDS_BINARY() macro or :symbol:`bson_iter_type()`. - -The buffer that ``binary`` points to is only valid until the iterator's :symbol:`bson_t` is modified or freed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_bool.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_bool.rst deleted file mode 100644 index a46f539..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_bool.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_iter_bool - -bson_iter_bool() -================ - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_BOOL(iter) (bson_iter_type ((iter)) == BSON_TYPE_BOOL) - - bool - bson_iter_bool (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -The ``bson_iter_bool()`` function shall return the boolean value of a BSON_TYPE_BOOL element. It is a programming error to call this function on an element other than BSON_TYPE_BOOL. You can check this with :symbol:`bson_iter_type()` or ``BSON_ITER_HOLDS_BOOL()``. - -Returns -------- - -Either ``true`` or ``false``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_code.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_code.rst deleted file mode 100644 index b9efdd1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_code.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_code - -bson_iter_code() -================ - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_CODE(iter) (bson_iter_type ((iter)) == BSON_TYPE_CODE) - - const char * - bson_iter_code (const bson_iter_t *iter, uint32_t *length); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``length``: A location for the length of the UTF-8 encoded string or NULL. - -Description ------------ - -This function returns the contents of a BSON_TYPE_CODE field. The length of the string is stored in ``length`` if non-NULL. - -It is invalid to call this function on a field that is not of type BSON_TYPE_CODE. - -Returns -------- - -A UTF-8 encoded string which should not be modified or freed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_codewscope.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_codewscope.rst deleted file mode 100644 index c220bc9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_codewscope.rst +++ /dev/null @@ -1,37 +0,0 @@ -:man_page: bson_iter_codewscope - -bson_iter_codewscope() -====================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_CODEWSCOPE(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_CODEWSCOPE) - - const char * - bson_iter_codewscope (const bson_iter_t *iter, - uint32_t *length, - uint32_t *scope_len, - const uint8_t **scope); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``length``: An optional location for the length of the resulting UTF-8 encoded string. -* ``scope_len``: A optional location for the length of ``scope``. -* ``scope``: An optional location to store the immutable raw scope BSON document. - -Description ------------ - -The ``bson_iter_codewscope()`` function acts similar to :symbol:`bson_iter_code()` except for BSON_TYPE_CODEWSCOPE elements. It also will provide a pointer to the buffer for scope, which can be loaded into a :symbol:`bson_t` using :symbol:`bson_init_static()`. - -Returns -------- - -An UTF-8 encoded string containing the JavaScript code which should not be modified or freed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_date_time.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_date_time.rst deleted file mode 100644 index 5d11d7d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_date_time.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_iter_date_time - -bson_iter_date_time() -===================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_DATE_TIME(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DATE_TIME) - - int64_t - bson_iter_date_time (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -The bson_iter_date_time() function shall return the number of milliseconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element. - -Returns -------- - -A 64-bit integer containing the number of milliseconds since the UNIX epoch. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dbpointer.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dbpointer.rst deleted file mode 100644 index 5c99189..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dbpointer.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_dbpointer - -bson_iter_dbpointer() -===================== - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_dbpointer (const bson_iter_t *iter, - uint32_t *collection_len, - const char **collection, - const bson_oid_t **oid); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``collection_len``: A location for the length of the collection name. -* ``collection``: A location for the collection name.. -* ``oid``: A location for a :symbol:`bson_oid_t`. - -Description ------------ - -Fetches the contents of a BSON_TYPE_DBPOINTER element. - -.. warning:: - - The BSON_TYPE_DBPOINTER field type is deprecated by the BSON spec and should not be used in new code. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_decimal128.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_decimal128.rst deleted file mode 100644 index a76f44d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_decimal128.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_decimal128 - -bson_iter_decimal128() -====================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_DECIMAL128(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DECIMAL128) - - bool - bson_iter_decimal128 (const bson_iter_t *iter, /* IN */ - bson_decimal128_t *dec); /* OUT */ - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``dec``: A location for a :symbol:`bson_decimal128_t`. - -Description ------------ - -Fetches the value from a BSON_TYPE_DECIMAL128 field. You should verify that this is a BSON_TYPE_DECIMAL128 field before calling this function. - -Returns -------- - -true if type was BSON_TYPE_DECIMAL128, otherwise false. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_document.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_document.rst deleted file mode 100644 index ff5b717..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_document.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_iter_document - -bson_iter_document() -==================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_DOCUMENT(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DOCUMENT) - - void - bson_iter_document (const bson_iter_t *iter, - uint32_t *document_len, - const uint8_t **document); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``document_len``: A location for the length of the document in bytes. -* ``document``: A location for the document buffer. - -Description ------------ - -The ``bson_iter_document()`` function shall retrieve the raw buffer of a sub-document from ``iter``. ``iter`` *MUST* be on an element that is of type BSON_TYPE_DOCUMENT. This can be verified with :symbol:`bson_iter_type()` or the ``BSON_ITER_HOLDS_DOCUMENT()`` macro. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_double.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_double.rst deleted file mode 100644 index 7beccd5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_double.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_iter_double - -bson_iter_double() -================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_DOUBLE(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DOUBLE) - - double - bson_iter_double (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the contents of a BSON_TYPE_DOUBLE field. - -Returns -------- - -A double. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dup_utf8.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dup_utf8.rst deleted file mode 100644 index ac2a396..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_dup_utf8.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_iter_dup_utf8 - -bson_iter_dup_utf8() -==================== - -Synopsis --------- - -.. code-block:: c - - char * - bson_iter_dup_utf8 (const bson_iter_t *iter, uint32_t *length); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``length``: An optional location for the length of the UTF-8 encoded string. - -Description ------------ - -This function is similar to :symbol:`bson_iter_utf8()` except that it calls :symbol:`bson_strndup()` on the result. - -Returns -------- - -A newly allocated string that should be freed with :symbol:`bson_free()`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find.rst deleted file mode 100644 index 73ab0e4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_iter_find - -bson_iter_find() -================ - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_find (bson_iter_t *iter, const char *key); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``key``: A string containing the requested key. - -Description ------------ - -The ``bson_iter_find()`` function shall advance ``iter`` to the element named ``key`` or exhaust all elements of ``iter``. If ``iter`` is exhausted, false is returned and ``iter`` should be considered invalid. - -``key`` is case-sensitive. For a case-folded version, see :symbol:`bson_iter_find_case()`. - -Returns -------- - -true is returned if the requested key was found. If not, ``iter`` was exhausted and should now be considered invalid. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_case.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_case.rst deleted file mode 100644 index f5d03f5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_case.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_iter_find_case - -bson_iter_find_case() -===================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_find_case (bson_iter_t *iter, const char *key); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``key``: An ASCII string containing the field to locate. - -Description ------------ - -Advances ``iter`` until it is observing an element matching the name of ``key`` or exhausting all elements. - -``key`` is not case-sensitive. The keys will be case-folded to determine a match using the current locale. - -Returns -------- - -true if ``key`` was found. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_descendant.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_descendant.rst deleted file mode 100644 index 36bb14e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_descendant.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_iter_find_descendant - -bson_iter_find_descendant() -=========================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_find_descendant (bson_iter_t *iter, - const char *dotkey, - bson_iter_t *descendant); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``dotkey``: A dot-notation key like ``"a.b.c.d"``. -* ``descendant``: A :symbol:`bson_iter_t`. - -Description ------------ - -The :symbol:`bson_iter_find_descendant()` function shall follow standard MongoDB dot notation to recurse into subdocuments. ``descendant`` will be initialized and advanced to the descendant. If false is returned, both ``iter`` and ``descendant`` should be considered invalid. - -Returns -------- - -true is returned if the requested key was found. If not, false is returned and ``iter`` was exhausted and should now be considered invalid. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_w_len.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_w_len.rst deleted file mode 100644 index 5cb8feb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_find_w_len.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_iter_find_w_len - -bson_iter_find_w_len() -====================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_find_w_len (bson_iter_t *iter, const char *key, int keylen); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``key``: A string containing the requested key. -* ``keylen``: An integer indicating the length of the key string. - -Description ------------ - -The ``bson_iter_find_w_len()`` function shall advance ``iter`` to the element named ``key`` or exhaust all elements of ``iter``. If ``iter`` is exhausted, false is returned and ``iter`` should be considered invalid. - -``key`` is case-sensitive. For a case-folded version, see :symbol:`bson_iter_find_case()`. - -Returns -------- - -true is returned if the requested key was found. If not, ``iter`` was exhausted and should now be considered invalid. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init.rst deleted file mode 100644 index 0128f7c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init.rst +++ /dev/null @@ -1,73 +0,0 @@ -:man_page: bson_iter_init - -bson_iter_init() -================ - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_init (bson_iter_t *iter, const bson_t *bson); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``bson``: A :symbol:`bson_t`. - -Description ------------ - -The ``bson_iter_init()`` function shall initialize ``iter`` to iterate upon the BSON document ``bson``. Upon initialization, ``iter`` is placed before the first element. Callers must call :symbol:`bson_iter_next()`, :symbol:`bson_iter_find()`, or :symbol:`bson_iter_find_case()` to advance to an element. - -Returns -------- - -Returns true if the iter was successfully initialized. - -Example -------- - -.. code-block:: c - - static void - print_doc_id (const bson_t *doc) - { - bson_iter_t iter; - bson_oid_t oid; - char oidstr[25]; - - if (bson_iter_init (&iter, doc) && bson_iter_find (&iter, "_id") && - BSON_ITER_HOLDS_OID (&iter)) { - bson_iter_oid (&iter, &oid); - bson_oid_to_string (&oid, oidstr); - printf ("%s\n", oidstr); - } else { - printf ("Document is missing _id.\n"); - } - } - - /* alternatively */ - - static void - print_doc_id (const bson_t *doc) - { - bson_iter_t iter; - bson_oid_t oid; - char oidstr[25]; - - if (bson_iter_init_find (&iter, doc, "_id") && BSON_ITER_HOLDS_OID (&iter)) { - bson_iter_oid (&iter, &oid); - bson_oid_to_string (&oid, oidstr); - printf ("%s\n", oidstr); - } else { - printf ("Document is missing _id.\n"); - } - } - -.. only:: html - - .. taglist:: See Also: - :tags: iter-init diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find.rst deleted file mode 100644 index 7fb04c4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_iter_init_find - -bson_iter_init_find() -===================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_init_find (bson_iter_t *iter, const bson_t *bson, const char *key); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``bson``: A :symbol:`bson_t`. -* ``key``: A key to locate after initializing the iter. - -Description ------------ - -This function is identical to ``(bson_iter_init() && bson_iter_find())``. - -.. only:: html - - .. taglist:: See Also: - :tags: iter-init diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_case.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_case.rst deleted file mode 100644 index 0938bc7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_case.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_iter_init_find_case - -bson_iter_init_find_case() -========================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_init_find_case (bson_iter_t *iter, - const bson_t *bson, - const char *key); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``bson``: A :symbol:`bson_t`. -* ``key``: A key to locate after initializing the iter. - -Description ------------ - -This function is identical to ``bson_iter_init() && bson_iter_find_case()``. - -.. only:: html - - .. taglist:: See Also: - :tags: iter-init diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_w_len.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_w_len.rst deleted file mode 100644 index 83508f1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_find_w_len.rst +++ /dev/null @@ -1,34 +0,0 @@ -:man_page: bson_iter_init_find_w_len - -bson_iter_init_find_w_len() -=========================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_init_find_w_len (bson_iter_t *iter, - const bson_t *bson, - const char *key, - int keylen); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``bson``: A :symbol:`bson_t`. -* ``key``: A key to locate after initializing the iter. -* ``keylen``: An integer indicating the length of the key string. - -Description ------------ - -This function is identical to ``(bson_iter_init() && bson_iter_find_w_len())``. - -.. only:: html - - .. taglist:: See Also: - :tags: iter-init - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data.rst deleted file mode 100644 index 5adcc63..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data.rst +++ /dev/null @@ -1,56 +0,0 @@ -:man_page: bson_iter_init_from_data - -bson_iter_init_from_data() -========================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_init_from_data (bson_iter_t *iter, const uint8_t *data, size_t length); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``data``: A buffer to initialize with. -* ``length``: The length of ``data`` in bytes. - -Description ------------ - -The ``bson_iter_init_from_data()`` function shall initialize ``iter`` to iterate upon the buffer ``data``, which must contain a BSON document. Upon initialization, ``iter`` is placed before the first element. Callers must call :symbol:`bson_iter_next()`, :symbol:`bson_iter_find()`, or :symbol:`bson_iter_find_case()` to advance to an element. - -Returns -------- - -Returns true if the iter was successfully initialized. - -Example -------- - -.. code-block:: c - - static void - print_doc_id (const uint8_t *data, size_t length) - { - bson_iter_t iter; - bson_oid_t oid; - char oidstr[25]; - - if (bson_iter_init_from_data (&iter, data, length) && bson_iter_find (&iter, "_id") && - BSON_ITER_HOLDS_OID (&iter)) { - bson_iter_oid (&iter, &oid); - bson_oid_to_string (&oid, oidstr); - printf ("%s\n", oidstr); - } else { - printf ("Document is missing _id.\n"); - } - } - -.. only:: html - - .. taglist:: See Also: - :tags: iter-init diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data_at_offset.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data_at_offset.rst deleted file mode 100644 index 10d9cfc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_init_from_data_at_offset.rst +++ /dev/null @@ -1,57 +0,0 @@ -:man_page: bson_iter_init_from_data_at_offset - -bson_iter_init_from_data_at_offset() -==================================== - - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_init_from_data_at_offset (bson_iter_t *iter, - const uint8_t *data, - size_t length, - uint32_t offset, - uint32_t keylen); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``data``: A buffer to initialize with. This is not validated. -* ``length``: The length of ``data`` in bytes. This is not validated. -* ``offset``: The offset of the field to start iterating. This is not validated. This should be an offset previously obtained from :symbol:`bson_iter_offset()`. -* ``keylen``: The string length of the key of the field to start iterating. This is not validated. This should be a length previously obtained from :symbol:`bson_iter_key_len()`. - -Description ------------ - -Creates a :symbol:`bson_iter_t` and starts iteration on a field at the offset. - -:symbol:`bson_iter_init_from_data_at_offset` is useful for situations where the -progress of a :symbol:`bson_iter_t` must be saved and restored without relying -on the :symbol:`bson_iter_t` data layout. Saving the progress could be -accomplished by: - -- Saving the current field's key length with :symbol:`bson_iter_key_len()` -- Saving the current offset with :symbol:`bson_iter_offset()` -- Saving the data pointer of the iterated :symbol:`bson_t` with :symbol:`bson_get_data()` -- Saving the data length of the iterated :symbol:`bson_t` with the ``len`` struct field - -Then later, these saved values can be passed to -:symbol:`bson_iter_init_from_data_at_offset()` to reconstruct the -:symbol:`bson_iter_t` in constant time. - -See Also --------- - -* :symbol:`bson_iter_key_len()` -* :symbol:`bson_iter_offset()` -* :symbol:`bson_get_data()` - -Returns -------- - -Returns true if the iter was successfully initialized. \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int32.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int32.rst deleted file mode 100644 index 94fef37..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int32.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_iter_int32 - -bson_iter_int32() -================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_INT32(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT32) - - int32_t - bson_iter_int32 (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the value from a BSON_TYPE_INT32 element. You should verify that the field is a BSON_TYPE_INT32 field before calling this function. - -Returns -------- - -A 32-bit integer. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int64.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int64.rst deleted file mode 100644 index 99ec975..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_int64.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_iter_int64 - -bson_iter_int64() -================= - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_INT64(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT64) - - int64_t - bson_iter_int64 (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the value from a BSON_TYPE_INT64 field. You should verify that this is a BSON_TYPE_INT64 field before calling this function. - -Returns -------- - -A 64-bit integer. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key.rst deleted file mode 100644 index af422e0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_key - -bson_iter_key() -=============== - -Synopsis --------- - -.. code-block:: c - - const char * - bson_iter_key (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the key for the current element observed by ``iter``. - -See Also --------- - -:symbol:`bson_iter_key_len()` to retrieve the length of the key in constant time. - -Returns -------- - -A string which should not be modified or freed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key_len.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key_len.rst deleted file mode 100644 index 16acb13..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_key_len.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_key_len - -bson_iter_key_len() -=================== - -Synopsis --------- - -.. code-block:: c - - uint32_t - bson_iter_key_len (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the length of the key for the current element observed by ``iter``. This is a constant time computation, and therefore faster than calling ``strlen()`` on a key returned by :symbol:`bson_iter_key()`. - -See Also --------- - -:symbol:`bson_iter_key()` to retrieve current key. - -Returns -------- - -An integer representing the key length. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_next.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_next.rst deleted file mode 100644 index fc7bdb6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_next.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_iter_next - -bson_iter_next() -================ - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_next (bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Advances ``iter`` to the next element in the document. - -Returns -------- - -true if ``iter`` was advanced. Returns false if ``iter`` has passed the last element in the document or encountered invalid BSON. - -It is a programming error to use ``iter`` after this function has returned false. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_offset.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_offset.rst deleted file mode 100644 index 86430d3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_offset.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_offset - -bson_iter_offset() -================== - -Synopsis --------- - -.. code-block:: c - - uint32_t - bson_iter_offset (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the offset for the current element observed by ``iter``. - -See Also --------- - -:symbol:`bson_iter_init_from_data_at_offset()` to use this offset to reconstruct a :symbol:`bson_iter_t` in constant time. - -Returns -------- - -An unsigned integer representing the offset in the BSON data of the current element. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_oid.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_oid.rst deleted file mode 100644 index 9a6633a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_oid.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_iter_oid - -bson_iter_oid() -=============== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_OID(iter) (bson_iter_type ((iter)) == BSON_TYPE_OID) - - const bson_oid_t * - bson_iter_oid (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the :symbol:`bson_oid_t` for a BSON_TYPE_OID element. You should verify it is an element of type BSON_TYPE_OID before calling this function. - -Returns -------- - -A :symbol:`bson_oid_t` that should not be modified or freed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_bool.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_bool.rst deleted file mode 100644 index 3c85b0d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_bool.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_overwrite_bool - -bson_iter_overwrite_bool() -========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_overwrite_bool (bson_iter_t *iter, bool value); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``value``: A bool containing the new value. - -Description ------------ - -The ``bson_iter_overwrite_bool()`` function shall overwrite the contents of a BSON_TYPE_BOOL element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_BOOL. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_date_time.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_date_time.rst deleted file mode 100644 index 8fccb13..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_date_time.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_overwrite_date_time - -bson_iter_overwrite_date_time() -=============================== - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_overwrite_date_time (bson_iter_t *iter, int64_t value); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``value``: The date and time as specified in milliseconds since the UNIX epoch. - -Description ------------ - -The ``bson_iter_overwrite_date_time()`` function shall overwrite the contents of a BSON_TYPE_DATE_TIME element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_DATE_TIME. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_decimal128.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_decimal128.rst deleted file mode 100644 index d1308e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_decimal128.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_overwrite_decimal128 - -bson_iter_overwrite_decimal128() -================================ - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_overwrite_decimal128 (bson_iter_t *iter, bson_decimal128_t *value); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``value``: The new Decimal128 value. - -Description ------------ - -The :symbol:`bson_iter_overwrite_decimal128()` function shall overwrite the contents of a BSON_TYPE_DECIMAL128 element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_DECIMAL128. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_double.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_double.rst deleted file mode 100644 index ca42333..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_double.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_overwrite_double - -bson_iter_overwrite_double() -============================ - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_overwrite_double (bson_iter_t *iter, double value); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``value``: The new double value. - -Description ------------ - -The :symbol:`bson_iter_overwrite_double()` function shall overwrite the contents of a BSON_TYPE_DOUBLE element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_DOUBLE. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int32.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int32.rst deleted file mode 100644 index 931f60f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int32.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_overwrite_int32 - -bson_iter_overwrite_int32() -=========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_overwrite_int32 (bson_iter_t *iter, int32_t value); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``value``: A int32_t. - -Description ------------ - -The :symbol:`bson_iter_overwrite_int32()` function shall overwrite the contents of a BSON_TYPE_INT32 element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_BOOL. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int64.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int64.rst deleted file mode 100644 index e74714d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_int64.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_overwrite_int64 - -bson_iter_overwrite_int64() -=========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_overwrite_int64 (bson_iter_t *iter, int64_t value); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``value``: A int64_t. - -Description ------------ - -The :symbol:`bson_iter_overwrite_int64()` function shall overwrite the contents of a BSON_TYPE_INT64 element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_INT64. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_oid.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_oid.rst deleted file mode 100644 index 85f013f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_oid.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_overwrite_oid - -bson_iter_overwrite_oid() -========================= - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_overwrite_oid (bson_iter_t *iter, const bson_oid_t *value); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``oid``: A :symbol:`bson_oid_t`. - -Description ------------ - -The ``bson_iter_overwrite_oid()`` function shall overwrite the contents of a BSON_TYPE_OID element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_OID. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_timestamp.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_timestamp.rst deleted file mode 100644 index 8973009..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_overwrite_timestamp.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_iter_overwrite_timestamp - -bson_iter_overwrite_timestamp() -=============================== - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_overwrite_timestamp (bson_iter_t *iter, - uint32_t timestamp, - uint32_t increment); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``timestamp``: A uint32_t. -* ``increment``: A uint32_t. - -Description ------------ - -The ``bson_iter_overwrite_timestamp()`` function shall overwrite the contents of a BSON_TYPE_TIMESTAMP element in place. - -This may only be done when the underlying bson document allows mutation. - -It is a programming error to call this function when ``iter`` is not observing an element of type BSON_TYPE_TIMESTAMP. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_recurse.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_recurse.rst deleted file mode 100644 index f13843c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_recurse.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_iter_recurse - -bson_iter_recurse() -=================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_recurse (const bson_iter_t *iter, bson_iter_t *child); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``child``: A :symbol:`bson_iter_t`. - -Description ------------ - -The :symbol:`bson_iter_recurse()` function shall initialize ``child`` using the embedded document or array currently observed by ``iter``. - -If there was a failure to initialize the ``iter``, false is returned and both ``iter`` and ``child`` should be considered invalid. - -This should only be called when observing an element of type BSON_TYPE_ARRAY or BSON_TYPE_DOCUMENT. - -Returns -------- - -If ``iter`` observes an element of type BSON_TYPE_ARRAY or BSON_TYPE_DOCUMENT, then ``child`` is initialized and the function returns ``true``. Otherwise, the function returns ``false`` and ``child`` is invalid. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_regex.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_regex.rst deleted file mode 100644 index aa87e12..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_regex.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_iter_regex - -bson_iter_regex() -================= - -Synopsis --------- - -.. code-block:: c - - const char * - bson_iter_regex (const bson_iter_t *iter, const char **options); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``options``: A (null). - -Description ------------ - -The :symbol:`bson_iter_regex()` function shall retrieve the contents of a BSON_TYPE_REGEX element currently observed by ``iter``. - -It is invalid to call this function when not observing an element of type BSON_TYPE_REGEX. - -Returns -------- - -A string containing the regex which should not be modified or freed. ``options`` is set to the options provided for the regex. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_symbol.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_symbol.rst deleted file mode 100644 index d21d67b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_symbol.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_iter_symbol - -bson_iter_symbol() -================== - -Synopsis --------- - -.. code-block:: c - - const char * - bson_iter_symbol (const bson_iter_t *iter, uint32_t *length); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``length``: A uint32_t. - -Description ------------ - -The symbol element type is *DEPRECATED* in the bson specification at http://bsonspec.org. - -The :symbol:`bson_iter_symbol()` function shall return the contents of a BSON_TYPE_SYMBOL element. - -If non-NULL, ``length`` will be set to the length of the resulting string. - -Returns -------- - -The symbol and ``length`` is set. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_t.rst deleted file mode 100644 index 620388f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_t.rst +++ /dev/null @@ -1,178 +0,0 @@ -:man_page: bson_iter_t - -bson_iter_t -=========== - -BSON Document Iterator - -Synopsis --------- - -.. code-block:: c - - #include - - #define BSON_ITER_HOLDS_DOUBLE(iter) /* ... */ - - #define BSON_ITER_HOLDS_UTF8(iter) /* ... */ - - #define BSON_ITER_HOLDS_DOCUMENT(iter) /* ... */ - - #define BSON_ITER_HOLDS_ARRAY(iter) /* ... */ - - #define BSON_ITER_HOLDS_BINARY(iter) /* ... */ - - #define BSON_ITER_HOLDS_UNDEFINED(iter) /* ... */ - - #define BSON_ITER_HOLDS_OID(iter) /* ... */ - - #define BSON_ITER_HOLDS_BOOL(iter) /* ... */ - - #define BSON_ITER_HOLDS_DATE_TIME(iter) /* ... */ - - #define BSON_ITER_HOLDS_NULL(iter) /* ... */ - - #define BSON_ITER_HOLDS_REGEX(iter) /* ... */ - - #define BSON_ITER_HOLDS_DBPOINTER(iter) /* ... */ - - #define BSON_ITER_HOLDS_CODE(iter) /* ... */ - - #define BSON_ITER_HOLDS_SYMBOL(iter) /* ... */ - - #define BSON_ITER_HOLDS_CODEWSCOPE(iter) /* ... */ - - #define BSON_ITER_HOLDS_INT32(iter) /* ... */ - - #define BSON_ITER_HOLDS_TIMESTAMP(iter) /* ... */ - - #define BSON_ITER_HOLDS_INT64(iter) /* ... */ - - #define BSON_ITER_HOLDS_DECIMAL128(iter) /* ... */ - - #define BSON_ITER_HOLDS_MAXKEY(iter) /* ... */ - - #define BSON_ITER_HOLDS_MINKEY(iter) /* ... */ - - #define BSON_ITER_HOLDS_INT(iter) \ - (BSON_ITER_HOLDS_INT32 (iter) || BSON_ITER_HOLDS_INT64 (iter)) - - #define BSON_ITER_HOLDS_NUMBER(iter) \ - (BSON_ITER_HOLDS_INT (iter) || BSON_ITER_HOLDS_DOUBLE (iter)) - - #define BSON_ITER_IS_KEY(iter, key) \ - (0 == strcmp ((key), bson_iter_key ((iter)))) - - typedef struct { - /*< private >*/ - } bson_iter_t; - -Description ------------ - -:symbol:`bson_iter_t` is a structure used to iterate through the elements of a :symbol:`bson_t`. It is meant to be used on the stack and can be discarded at any time as it contains no external allocation. The contents of the structure should be considered private and may change between releases, however the structure size will not change. - -The :symbol:`bson_t` *MUST* be valid for the lifetime of the iter and it is an error to modify the :symbol:`bson_t` while using the iter. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_iter_array - bson_iter_as_bool - bson_iter_as_double - bson_iter_as_int64 - bson_iter_binary - bson_iter_bool - bson_iter_code - bson_iter_codewscope - bson_iter_date_time - bson_iter_dbpointer - bson_iter_decimal128 - bson_iter_document - bson_iter_double - bson_iter_dup_utf8 - bson_iter_find - bson_iter_find_case - bson_iter_find_descendant - bson_iter_find_w_len - bson_iter_init - bson_iter_init_find - bson_iter_init_find_case - bson_iter_init_find_w_len - bson_iter_init_from_data - bson_iter_init_from_data_at_offset - bson_iter_int32 - bson_iter_int64 - bson_iter_key - bson_iter_key_len - bson_iter_next - bson_iter_offset - bson_iter_oid - bson_iter_overwrite_bool - bson_iter_overwrite_date_time - bson_iter_overwrite_decimal128 - bson_iter_overwrite_double - bson_iter_overwrite_int32 - bson_iter_overwrite_int64 - bson_iter_overwrite_oid - bson_iter_overwrite_timestamp - bson_iter_recurse - bson_iter_regex - bson_iter_symbol - bson_iter_time_t - bson_iter_timestamp - bson_iter_timeval - bson_iter_type - bson_iter_utf8 - bson_iter_value - bson_iter_visit_all - -Examples --------- - -.. code-block:: c - - bson_iter_t iter; - - if (bson_iter_init (&iter, my_bson_doc)) { - while (bson_iter_next (&iter)) { - printf ("Found a field named: %s\n", bson_iter_key (&iter)); - } - } - -.. code-block:: c - - bson_iter_t iter; - - if (bson_iter_init (&iter, my_bson_doc) && bson_iter_find (&iter, "my_field")) { - printf ("Found the field named: %s\n", bson_iter_key (&iter)); - } - -.. code-block:: c - - bson_iter_t iter; - bson_iter_t sub_iter; - - if (bson_iter_init_find (&iter, my_bson_doc, "mysubdoc") && - (BSON_ITER_HOLDS_DOCUMENT (&iter) || BSON_ITER_HOLDS_ARRAY (&iter)) && - bson_iter_recurse (&iter, &sub_iter)) { - while (bson_iter_next (&sub_iter)) { - printf ("Found key \"%s\" in sub document.\n", bson_iter_key (&sub_iter)); - } - } - -.. code-block:: c - - bson_iter_t iter; - - if (bson_iter_init (&iter, my_doc) && - bson_iter_find_descendant (&iter, "a.b.c.d", &sub_iter)) { - printf ("The type of a.b.c.d is: %d\n", (int) bson_iter_type (&sub_iter)); - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_time_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_time_t.rst deleted file mode 100644 index 080c55a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_time_t.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_time_t - -bson_iter_time_t() -================== - -Synopsis --------- - -.. code-block:: c - - time_t - bson_iter_time_t (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -The :symbol:`bson_iter_time_t()` function shall return the number of seconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element. - -Returns -------- - -A ``time_t`` containing the number of seconds since the UNIX epoch. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timestamp.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timestamp.rst deleted file mode 100644 index c0be03a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timestamp.rst +++ /dev/null @@ -1,34 +0,0 @@ -:man_page: bson_iter_timestamp - -bson_iter_timestamp() -===================== - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_TIMESTAMP(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_TIMESTAMP) - - void - bson_iter_timestamp (const bson_iter_t *iter, - uint32_t *timestamp, - uint32_t *increment); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``timestamp``: A uint32_t. -* ``increment``: A uint32_t. - -Description ------------ - -The BSON_TYPE_TIMESTAMP type is not a date/time and is typically used for intra-server communication. - -You probably want :symbol:`bson_iter_date_time()`. - -The :symbol:`bson_iter_timestamp()` function shall return the contents of a BSON_TYPE_TIMESTAMP element. It is invalid to call this function while observing an element that is not of type BSON_TYPE_TIMESTAMP. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timeval.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timeval.rst deleted file mode 100644 index 6e10ff4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_timeval.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_iter_timeval - -bson_iter_timeval() -=================== - -Synopsis --------- - -.. code-block:: c - - void - bson_iter_timeval (const bson_iter_t *iter, struct timeval *tv); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``tv``: A struct timeval. - -Description ------------ - -The :symbol:`bson_iter_timeval()` function shall return the number of seconds and microseconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element into ``tv``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_type.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_type.rst deleted file mode 100644 index f8aafe3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_type.rst +++ /dev/null @@ -1,52 +0,0 @@ -:man_page: bson_iter_type - -bson_iter_type() -================ - -Synopsis --------- - -.. code-block:: c - - typedef enum { - BSON_TYPE_EOD = 0x00, - BSON_TYPE_DOUBLE = 0x01, - BSON_TYPE_UTF8 = 0x02, - BSON_TYPE_DOCUMENT = 0x03, - BSON_TYPE_ARRAY = 0x04, - BSON_TYPE_BINARY = 0x05, - BSON_TYPE_UNDEFINED = 0x06, - BSON_TYPE_OID = 0x07, - BSON_TYPE_BOOL = 0x08, - BSON_TYPE_DATE_TIME = 0x09, - BSON_TYPE_NULL = 0x0A, - BSON_TYPE_REGEX = 0x0B, - BSON_TYPE_DBPOINTER = 0x0C, - BSON_TYPE_CODE = 0x0D, - BSON_TYPE_SYMBOL = 0x0E, - BSON_TYPE_CODEWSCOPE = 0x0F, - BSON_TYPE_INT32 = 0x10, - BSON_TYPE_TIMESTAMP = 0x11, - BSON_TYPE_INT64 = 0x12, - BSON_TYPE_MAXKEY = 0x7F, - BSON_TYPE_MINKEY = 0xFF, - } bson_type_t; - - bson_type_t - bson_iter_type (const bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -The ``bson_iter_type()`` function shall return the type of the observed element in a bson document. - -Returns -------- - -A :symbol:`bson_type_t`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_utf8.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_utf8.rst deleted file mode 100644 index 1e113ca..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_utf8.rst +++ /dev/null @@ -1,37 +0,0 @@ -:man_page: bson_iter_utf8 - -bson_iter_utf8() -================ - -Synopsis --------- - -.. code-block:: c - - #define BSON_ITER_HOLDS_UTF8(iter) (bson_iter_type ((iter)) == BSON_TYPE_UTF8) - - const char * - bson_iter_utf8 (const bson_iter_t *iter, uint32_t *length); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``length``: An optional location for the length of the resulting UTF-8 encoded string. - -Description ------------ - -The :symbol:`bson_iter_utf8()` function shall retrieve the contents of a BSON_TYPE_UTF8 element currently observed by ``iter``. - -It is invalid to call this function while observing an element other than BSON_TYPE_UTF8. - -Returns -------- - -A UTF-8 encoded string that has not been modified or freed. - -It is suggested that the caller validate the content is valid UTF-8 before using this in other places. That can be done by calling :symbol:`bson_utf8_validate()` or validating the underlying :symbol:`bson_t` before iterating it. - -Note that not all drivers use multi-byte representation for ``\0`` in UTF-8 encodings (commonly referred to as modified-UTF8). You probably want to take a look at the length field when marshaling to other runtimes. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_value.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_value.rst deleted file mode 100644 index d528b5b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_value.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_iter_value - -bson_iter_value() -================= - -Synopsis --------- - -.. code-block:: c - - const bson_value_t * - bson_iter_value (bson_iter_t *iter); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. - -Description ------------ - -Fetches the value for the currently observed type as a boxed type. This allows passing around the value without knowing the type at runtime. - -Returns -------- - -A :symbol:`bson_value_t` that should not be modified or freed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_visit_all.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_visit_all.rst deleted file mode 100644 index e7e3523..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_iter_visit_all.rst +++ /dev/null @@ -1,34 +0,0 @@ -:man_page: bson_iter_visit_all - -bson_iter_visit_all() -===================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_iter_visit_all (bson_iter_t *iter, - const bson_visitor_t *visitor, - void *data); - -Parameters ----------- - -* ``iter``: A :symbol:`bson_iter_t`. -* ``visitor``: A :symbol:`bson_visitor_t`. -* ``data``: Optional data for ``visitor``. - -Description ------------ - -A convenience function to iterate all remaining fields of ``iter`` using the callback vtable provided by ``visitor``. - -Returns -------- - -Returns true if visitation was prematurely stopped by a callback function. Returns false either because all elements were visited *or* due to corrupt BSON. - -See :symbol:`bson_visitor_t` for examples of how to set your own callbacks to provide information about the location of corrupt or unsupported BSON document entries. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_ingest.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_ingest.rst deleted file mode 100644 index 7bdc4b2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_ingest.rst +++ /dev/null @@ -1,27 +0,0 @@ -:man_page: bson_json_data_reader_ingest - -bson_json_data_reader_ingest() -============================== - -Synopsis --------- - -.. code-block:: c - - void - bson_json_data_reader_ingest (bson_json_reader_t *reader, - const uint8_t *data, - size_t len); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_json_reader_t`. -* ``data``: A uint8_t containing data to feed. -* ``len``: A size_t containing the length of ``data``. - -Description ------------ - -Feed data to a memory based json reader. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_new.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_new.rst deleted file mode 100644 index c263320..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_data_reader_new.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_json_data_reader_new - -bson_json_data_reader_new() -=========================== - -Synopsis --------- - -.. code-block:: c - - bson_json_reader_t * - bson_json_data_reader_new (bool allow_multiple, size_t size); - -Parameters ----------- - -* ``allow_multiple``: Unused. -* ``size``: A requested buffer size. - -Description ------------ - -Creates a new streaming JSON reader that will convert JSON documents to BSON. - -The ``allow_multiple`` parameter is unused. - -Returns -------- - -A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy(). - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_destroy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_destroy.rst deleted file mode 100644 index eb1eb3d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_destroy.rst +++ /dev/null @@ -1,22 +0,0 @@ -:man_page: bson_json_reader_destroy - -bson_json_reader_destroy() -========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_json_reader_destroy (bson_json_reader_t *reader); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_json_reader_t`. - -Description ------------ - -Frees a bson_json_reader_t. Does nothing if ``reader`` is NULL. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new.rst deleted file mode 100644 index f37c151..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new.rst +++ /dev/null @@ -1,38 +0,0 @@ -:man_page: bson_json_reader_new - -bson_json_reader_new() -====================== - -Synopsis --------- - -.. code-block:: c - - bson_json_reader_t * - bson_json_reader_new (void *data, - bson_json_reader_cb cb, - bson_json_destroy_cb dcb, - bool allow_multiple, - size_t buf_size); - -Parameters ----------- - -* ``data``: A user-defined pointer. -* ``cb``: A bson_json_reader_cb. -* ``dcb``: A bson_json_destroy_cb. -* ``allow_multiple``: Unused. -* ``buf_size``: A size_t containing the requested internal buffer size. - -Description ------------ - -Creates a new bson_json_reader_t that can read from an arbitrary data source in a streaming fashion. - -The ``allow_multiple`` parameter is unused. - -Returns -------- - -A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy(). - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_fd.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_fd.rst deleted file mode 100644 index 9b7982b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_fd.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_json_reader_new_from_fd - -bson_json_reader_new_from_fd() -============================== - -Synopsis --------- - -.. code-block:: c - - bson_json_reader_t * - bson_json_reader_new_from_fd (int fd, bool close_on_destroy); - -Parameters ----------- - -* ``fd``: An open file-descriptor. -* ``close_on_destroy``: Whether ``close()`` should be called on ``fd`` when the reader is destroyed. - -Description ------------ - -Creates a new JSON to BSON converter that will be reading from the file-descriptor ``fd``. - -Returns -------- - -A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy(). - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_file.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_file.rst deleted file mode 100644 index 1d603fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_new_from_file.rst +++ /dev/null @@ -1,34 +0,0 @@ -:man_page: bson_json_reader_new_from_file - -bson_json_reader_new_from_file() -================================ - -Synopsis --------- - -.. code-block:: c - - bson_json_reader_t * - bson_json_reader_new_from_file (const char *filename, bson_error_t *error); - -Parameters ----------- - -* ``filename``: A file-name in the system file-name encoding. -* ``error``: A :symbol:`bson_error_t`. - -Description ------------ - -Creates a new bson_json_reader_t using the underlying file found at ``filename``. - -Errors ------- - -Errors are propagated via ``error``. - -Returns -------- - -A newly allocated bson_json_reader_t if successful, otherwise NULL and error is set. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_read.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_read.rst deleted file mode 100644 index ae6c69e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_read.rst +++ /dev/null @@ -1,41 +0,0 @@ -:man_page: bson_json_reader_read - -bson_json_reader_read() -======================= - -Synopsis --------- - -.. code-block:: c - - int - bson_json_reader_read (bson_json_reader_t *reader, - bson_t *bson, - bson_error_t *error); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_json_reader_t`. -* ``bson``: A :symbol:`bson_t`. -* ``error``: A :symbol:`bson_error_t`. - -Description ------------ - -Reads the next BSON document from the underlying JSON source. - -Errors ------- - -Errors are propagated via the ``error`` parameter. - -Returns -------- - -1 if successful and data was read. 0 if successful and no data was read. -1 if there was an error. - -.. only:: html - - .. taglist:: See Also: - :tags: json diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_t.rst deleted file mode 100644 index cd79588..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_json_reader_t.rst +++ /dev/null @@ -1,143 +0,0 @@ -:man_page: bson_json_reader_t - -bson_json_reader_t -================== - -Bulk JSON to BSON conversion - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct _bson_json_reader_t bson_json_reader_t; - - typedef enum { - BSON_JSON_ERROR_READ_CORRUPT_JS = 1, - BSON_JSON_ERROR_READ_INVALID_PARAM, - BSON_JSON_ERROR_READ_CB_FAILURE, - } bson_json_error_code_t; - -Description ------------ - -The :symbol:`bson_json_reader_t` structure is used for reading a sequence of JSON documents and transforming them to :symbol:`bson_t` documents. - -This can often be useful if you want to perform bulk operations that are defined in a file containing JSON documents. - -.. tip:: - - :symbol:`bson_json_reader_t` works upon JSON documents formatted in `MongoDB extended JSON `_ format. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_json_data_reader_ingest - bson_json_data_reader_new - bson_json_reader_destroy - bson_json_reader_new - bson_json_reader_new_from_fd - bson_json_reader_new_from_file - bson_json_reader_read - -Example -------- - -.. code-block:: c - - /* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - /* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - - #include - #include - #include - - - int - main (int argc, char *argv[]) - { - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\n%s\n", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\n"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc.rst deleted file mode 100644 index f7a09c4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_malloc - -bson_malloc() -============= - -Synopsis --------- - -.. code-block:: c - - void * - bson_malloc (size_t num_bytes); - -Parameters ----------- - -* ``num_bytes``: A size_t containing the number of bytes to allocate. - -Description ------------ - -This is a portable ``malloc()`` wrapper. - -In general, this function will return an allocation at least ``sizeof(void*)`` bytes or bigger. - -If there was a failure to allocate ``num_bytes`` bytes, the process will be aborted. - -.. warning:: - - This function will abort on failure to allocate memory. - -Returns -------- - -A pointer to a memory region which *HAS NOT* been zeroed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc0.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc0.rst deleted file mode 100644 index bbab2fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_malloc0.rst +++ /dev/null @@ -1,36 +0,0 @@ -:man_page: bson_malloc0 - -bson_malloc0() -============== - -Synopsis --------- - -.. code-block:: c - - void * - bson_malloc0 (size_t num_bytes); - -Parameters ----------- - -* ``num_bytes``: A size_t. - -Description ------------ - -This is a portable ``malloc()`` wrapper that also sets the memory to zero. Similar to ``calloc()``. - -In general, this function will return an allocation at least ``sizeof(void*)`` bytes or bigger. - -If there was a failure to allocate ``num_bytes`` bytes, the process will be aborted. - -.. warning:: - - This function will abort on failure to allocate memory. - -Returns -------- - -A pointer to a memory region which *HAS* been zeroed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_append.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_append.rst deleted file mode 100644 index fc11db6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_append.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_md5_append - -bson_md5_append() -================= - -Deprecated ----------- -All MD5 APIs are deprecated in libbson. - -Synopsis --------- - -.. code-block:: c - - void - bson_md5_append (bson_md5_t *pms, - const uint8_t *data, - uint32_t nbytes) BSON_GNUC_DEPRECATED; - -Parameters ----------- - -* ``pms``: A :symbol:`bson_md5_t`. -* ``data``: A memory region to feed to the md5 algorithm. -* ``nbytes``: The length of ``data`` in bytes. - -Description ------------ - -Feeds more data into the MD5 algorithm. - -This function is deprecated and should not be used in new code. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_finish.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_finish.rst deleted file mode 100644 index 1013c11..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_finish.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_md5_finish - -bson_md5_finish() -================= - -Deprecated ----------- -All MD5 APIs are deprecated in libbson. - -Synopsis --------- - -.. code-block:: c - - void - bson_md5_finish (bson_md5_t *pms, uint8_t digest[16]) BSON_GNUC_DEPRECATED; - -Parameters ----------- - -* ``pms``: A :symbol:`bson_md5_t`. -* ``digest``: A location for the digest. - -Description ------------ - -Completes the MD5 algorithm and stores the digest in ``digest``. - -This function is deprecated and should not be used in new code. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_init.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_init.rst deleted file mode 100644 index c96b089..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_init.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_md5_init - -bson_md5_init() -=============== - -Deprecated ----------- -All MD5 APIs are deprecated in libbson. - -Synopsis --------- - -.. code-block:: c - - void - bson_md5_init (bson_md5_t *pms) BSON_GNUC_DEPRECATED; - -Parameters ----------- - -* ``pms``: A :symbol:`bson_md5_t`. - -Description ------------ - -Initialize a new instance of the MD5 algorithm. - -This function is deprecated and should not be used in new code. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_t.rst deleted file mode 100644 index 6dc2e51..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_md5_t.rst +++ /dev/null @@ -1,40 +0,0 @@ -:man_page: bson_md5_t - -bson_md5_t -========== - -BSON MD5 Abstraction - -Deprecated ----------- -All MD5 APIs are deprecated in libbson. - -Synopsis --------- - -.. code-block:: c - - typedef struct { - uint32_t count[2]; /* message length in bits, lsw first */ - uint32_t abcd[4]; /* digest buffer */ - uint8_t buf[64]; /* accumulate block */ - } bson_md5_t; - -Description ------------ - -bson_md5_t encapsulates an implementation of the MD5 algorithm. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_md5_append - bson_md5_finish - bson_md5_init - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_restore_vtable.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_restore_vtable.rst deleted file mode 100644 index 418c76d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_restore_vtable.rst +++ /dev/null @@ -1,22 +0,0 @@ -:man_page: bson_mem_restore_vtable - -bson_mem_restore_vtable() -========================= - -Synopsis --------- - -.. code-block:: c - - void - bson_mem_restore_vtable (void); - -Description ------------ - -This function shall restore the default memory allocator to be used by Libbson. - -.. warning:: - - This function *MUST* be called at the end of the process. Failure to do so will result in memory being freed by the wrong allocator. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_set_vtable.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_set_vtable.rst deleted file mode 100644 index 85574aa..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_mem_set_vtable.rst +++ /dev/null @@ -1,35 +0,0 @@ -:man_page: bson_mem_set_vtable - -bson_mem_set_vtable() -===================== - -Synopsis --------- - -.. code-block:: c - - typedef struct _bson_mem_vtable_t { - void *(*malloc) (size_t num_bytes); - void *(*calloc) (size_t n_members, size_t num_bytes); - void *(*realloc) (void *mem, size_t num_bytes); - void (*free) (void *mem); - void *padding[4]; - } bson_mem_vtable_t; - - void - bson_mem_set_vtable (const bson_mem_vtable_t *vtable); - -Parameters ----------- - -* ``vtable``: A bson_mem_vtable_t with every non-padding field set. - -Description ------------ - -This function shall install a new memory allocator to be used by Libbson. - -.. warning:: - - This function *MUST* be called at the beginning of the process. Failure to do so will result in memory being freed by the wrong allocator. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_memory.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_memory.rst deleted file mode 100644 index c3802ac..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_memory.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_memory - -Memory Management -================= - -BSON Memory Abstraction. - -Description ------------ - -Libbson contains a lightweight memory abstraction to make portability to new platforms easier. Additionally, it helps us integrate with interesting higher-level languages. One caveat, however, is that Libbson is not designed to deal with Out of Memory (OOM) situations. Doing so requires extreme diligence throughout the application stack that has rarely been implemented correctly. This may change in the future. As it stands now, Libbson will ``abort()`` under OOM situations. - -To aid in language binding integration, Libbson allows for setting a custom memory allocator via :symbol:`bson_mem_set_vtable()`. This allocation may be reversed via :symbol:`bson_mem_restore_vtable()`. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_free - bson_malloc - bson_malloc0 - bson_mem_restore_vtable - bson_mem_set_vtable - bson_realloc - bson_realloc_ctx - bson_realloc_func - bson_zero_free - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new.rst deleted file mode 100644 index c100d3e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new.rst +++ /dev/null @@ -1,27 +0,0 @@ -:man_page: bson_new - -bson_new() -========== - -Synopsis --------- - -.. code-block:: c - - bson_t * - bson_new (void); - -Description ------------ - -The :symbol:`bson_new()` function shall create a new :symbol:`bson_t` structure on the heap. It should be freed with :symbol:`bson_destroy()` when it is no longer in use. - -Returns -------- - -A newly allocated :symbol:`bson_t` that should be freed with :symbol:`bson_destroy()`. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_buffer.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_buffer.rst deleted file mode 100644 index 69294ea..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_buffer.rst +++ /dev/null @@ -1,42 +0,0 @@ -:man_page: bson_new_from_buffer - -bson_new_from_buffer() -====================== - -Synopsis --------- - -.. code-block:: c - - bson_t * - bson_new_from_buffer (uint8_t **buf, - size_t *buf_len, - bson_realloc_func realloc_func, - void *realloc_func_ctx); - -Parameters ----------- - -* ``buf``: An out-pointer to a buffer containing a serialized BSON document, or to NULL. -* ``buf_len``: An out-pointer to the length of the buffer in bytes. -* ``realloc_func``: Optional :symbol:`bson_realloc_func` for reallocating the buffer. -* ``realloc_func_ctx``: Optional pointer that will be passed as ``ctx`` to ``realloc_func``. - -Description ------------ - -Creates a new :symbol:`bson_t` using the data provided. - -The ``realloc_func``, if provided, is called to resize ``buf`` if the document is later expanded, for example by a call to one of the ``bson_append`` functions. - -If ``*buf`` is initially NULL then it is allocated, using ``realloc_func`` or the default allocator, and initialized with an empty BSON document, and ``*buf_len`` is set to 5, the size of an empty document. - -Returns -------- - -A newly-allocated :symbol:`bson_t` on success, or NULL. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_data.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_data.rst deleted file mode 100644 index 9612c13..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_data.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_new_from_data - -bson_new_from_data() -==================== - -Synopsis --------- - -.. code-block:: c - - bson_t * - bson_new_from_data (const uint8_t *data, size_t length); - -Parameters ----------- - -* ``data``: A BSON encoded document buffer. -* ``length``: The length of ``data`` in bytes. - -Description ------------ - -The :symbol:`bson_new_from_data()` function shall create a new :symbol:`bson_t` on the heap and copy the contents of ``data``. This may be helpful when working with language bindings but is generally expected to be slower. - -Returns -------- - -A newly allocated :symbol:`bson_t` if successful, otherwise NULL. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_json.rst deleted file mode 100644 index e061c59..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_new_from_json.rst +++ /dev/null @@ -1,39 +0,0 @@ -:man_page: bson_new_from_json - -bson_new_from_json() -==================== - -Synopsis --------- - -.. code-block:: c - - bson_t * - bson_new_from_json (const uint8_t *data, ssize_t len, bson_error_t *error); - -Parameters ----------- - -* ``data``: A UTF-8 encoded string containing valid JSON. -* ``len``: The length of ``data`` in bytes excluding a trailing ``\0`` or -1 to determine the length with ``strlen()``. -* ``error``: An optional location for a :symbol:`bson_error_t`. - -Description ------------ - -The ``bson_new_from_json()`` function allocates and initialize a new :symbol:`bson_t` by parsing the JSON found in ``data``. Only a single JSON object may exist in ``data`` or an error will be set and NULL returned. - -Errors ------- - -Errors are propagated via the ``error`` parameter. - -Returns -------- - -A newly allocated :symbol:`bson_t` if successful, otherwise NULL and ``error`` is set. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson json diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_compare.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_compare.rst deleted file mode 100644 index 5a48c2c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_compare.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_oid_compare - -bson_oid_compare() -================== - -Synopsis --------- - -.. code-block:: c - - int - bson_oid_compare (const bson_oid_t *oid1, const bson_oid_t *oid2); - -Parameters ----------- - -* ``oid1``: A :symbol:`bson_oid_t`. -* ``oid2``: A :symbol:`bson_oid_t`. - -Description ------------ - -The :symbol:`bson_oid_compare()` function shall return a qsort() style value of a lexicographical sort of _oid1_ and _oid2_. - -Returns -------- - -less than 0, 0, or greater than 0 based on the comparison. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_copy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_copy.rst deleted file mode 100644 index 39d4fe7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_copy.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_oid_copy - -bson_oid_copy() -=============== - -Synopsis --------- - -.. code-block:: c - - void - bson_oid_copy (const bson_oid_t *src, bson_oid_t *dst); - -Parameters ----------- - -* ``src``: A :symbol:`bson_oid_t`. -* ``dst``: A :symbol:`bson_oid_t`. - -Description ------------ - -Copies the contents of src into dst. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_equal.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_equal.rst deleted file mode 100644 index e1014e7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_equal.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_oid_equal - -bson_oid_equal() -================ - -Synopsis --------- - -.. code-block:: c - - bool - bson_oid_equal (const bson_oid_t *oid1, const bson_oid_t *oid2); - -Parameters ----------- - -* ``oid1``: A :symbol:`bson_oid_t`. -* ``oid2``: A :symbol:`bson_oid_t`. - -Description ------------ - -Checks if two bson_oid_t contain the same bytes. - -Returns -------- - -true if they are equal, otherwise false. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_get_time_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_get_time_t.rst deleted file mode 100644 index 4aad5db..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_get_time_t.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_oid_get_time_t - -bson_oid_get_time_t() -===================== - -Synopsis --------- - -.. code-block:: c - - time_t - bson_oid_get_time_t (const bson_oid_t *oid); - -Parameters ----------- - -* ``oid``: A :symbol:`bson_oid_t`. - -Description ------------ - -Fetches the generation time in seconds since the UNIX Epoch of ``oid``. - -Returns -------- - -A time_t containing the seconds since the UNIX epoch of ``oid``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_hash.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_hash.rst deleted file mode 100644 index 57222d3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_hash.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_oid_hash - -bson_oid_hash() -=============== - -Synopsis --------- - -.. code-block:: c - - uint32_t - bson_oid_hash (const bson_oid_t *oid); - -Parameters ----------- - -* ``oid``: A :symbol:`bson_oid_t`. - -Description ------------ - -Generates a hash code for ``oid`` suitable for a hashtable. - -Returns -------- - -A 32-bit hash code. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init.rst deleted file mode 100644 index 7066621..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_oid_init - -bson_oid_init() -=============== - -Synopsis --------- - -.. code-block:: c - - void - bson_oid_init (bson_oid_t *oid, bson_context_t *context); - -Parameters ----------- - -* ``oid``: A :symbol:`bson_oid_t`. -* ``context``: An *optional* :symbol:`bson_context_t` or NULL. - -Description ------------ - -Generates a new :symbol:`bson_oid_t` using either ``context`` or the default :symbol:`bson_context_t`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_data.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_data.rst deleted file mode 100644 index fc978d2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_data.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_oid_init_from_data - -bson_oid_init_from_data() -========================= - -Synopsis --------- - -.. code-block:: c - - void - bson_oid_init_from_data (bson_oid_t *oid, const uint8_t *data); - -Parameters ----------- - -* ``oid``: A :symbol:`bson_oid_t`. -* ``data``: A buffer containing 12 bytes for the oid. - -Description ------------ - -Initializes a :symbol:`bson_oid_t` using the raw buffer provided. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_string.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_string.rst deleted file mode 100644 index 38f14e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_from_string.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_oid_init_from_string - -bson_oid_init_from_string() -=========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_oid_init_from_string (bson_oid_t *oid, const char *str); - -Parameters ----------- - -* ``oid``: A :symbol:`bson_oid_t`. -* ``str``: A string containing a hex encoded version of the oid. - -Description ------------ - -Parses the string containing hex encoded oid and initialize the bytes in ``oid``. - -Example -------- - -.. code-block:: c - - bson_oid_init_from_string (&oid, "012345678901234567890123"); - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_sequence.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_sequence.rst deleted file mode 100644 index ba14ca0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_init_sequence.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_oid_init_sequence - -bson_oid_init_sequence() -======================== - -Synopsis --------- - -.. code-block:: c - - void - bson_oid_init_sequence (bson_oid_t *oid, bson_context_t *context); - -Parameters ----------- - -* ``oid``: A :symbol:`bson_oid_t`. -* ``context``: An optional :symbol:`bson_context_t`. - -Description ------------ - -Generates a new ObjectID using the 64-bit sequence. - -.. warning:: - - This form of ObjectID is generally used by MongoDB replica peers only. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_is_valid.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_is_valid.rst deleted file mode 100644 index c64bf05..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_is_valid.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_oid_is_valid - -bson_oid_is_valid() -=================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_oid_is_valid (const char *str, size_t length); - -Parameters ----------- - -* ``str``: A string. -* ``length``: The length of ``str``. - -Description ------------ - -Checks if a string containing a hex encoded string is a valid BSON ObjectID. - -Returns -------- - -true if ``str`` could be parsed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_t.rst deleted file mode 100644 index 4d52816..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_t.rst +++ /dev/null @@ -1,98 +0,0 @@ -:man_page: bson_oid_t - -bson_oid_t -========== - -BSON ObjectID Abstraction - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct { - uint8_t bytes[12]; - } bson_oid_t; - -Description ------------ - -The :symbol:`bson_oid_t` structure contains the 12-byte ObjectId notation defined by the `BSON ObjectID specification `_. - -ObjectId is a 12-byte BSON type, constructed using: - -* a 4-byte value representing the seconds since the Unix epoch (in Big Endian) -* a 3-byte machine identifier -* a 2-byte process id (Big Endian), and -* a 3-byte counter (Big Endian), starting with a random value. - -String Conversion ------------------ - -You can convert an Object ID to a string using :symbol:`bson_oid_to_string()` and back with :symbol:`bson_oid_init_from_string()`. - -Hashing -------- - -A :symbol:`bson_oid_t` can be used in hashtables using the function :symbol:`bson_oid_hash()` and :symbol:`bson_oid_equal()`. - -Comparing ---------- - -A :symbol:`bson_oid_t` can be compared to another using :symbol:`bson_oid_compare()` for ``qsort()`` style comparing and :symbol:`bson_oid_equal()` for direct equality. - -Validating ----------- - -You can validate that a string containing a hex-encoded ObjectID is valid using the function :symbol:`bson_oid_is_valid()`. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_oid_compare - bson_oid_copy - bson_oid_equal - bson_oid_get_time_t - bson_oid_hash - bson_oid_init - bson_oid_init_from_data - bson_oid_init_from_string - bson_oid_init_sequence - bson_oid_is_valid - bson_oid_to_string - -Example -------- - -.. code-block:: c - - #include - #include - - int - main (int argc, char *argv[]) - { - bson_oid_t oid; - char str[25]; - - bson_oid_init (&oid, NULL); - bson_oid_to_string (&oid, str); - printf ("%s\n", str); - - if (bson_oid_is_valid (str, sizeof str)) { - bson_oid_init_from_string (&oid, str); - } - - printf ("The UNIX time was: %u\n", (unsigned) bson_oid_get_time_t (&oid)); - - return 0; - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_to_string.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_to_string.rst deleted file mode 100644 index 2fec669..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_oid_to_string.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_oid_to_string - -bson_oid_to_string() -==================== - -Synopsis --------- - -.. code-block:: c - - void - bson_oid_to_string (const bson_oid_t *oid, char str[25]); - -Parameters ----------- - -* ``oid``: A :symbol:`bson_oid_t`. -* ``str``: A location for the resulting string. - -Description ------------ - -Converts ``oid`` into a hex encoded string. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy.rst deleted file mode 100644 index b02fbdf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy.rst +++ /dev/null @@ -1,22 +0,0 @@ -:man_page: bson_reader_destroy - -bson_reader_destroy() -===================== - -Synopsis --------- - -.. code-block:: c - - void - bson_reader_destroy (bson_reader_t *reader); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_reader_t`. - -Description ------------ - -Destroys and releases all resources associated with ``reader``. Does nothing if ``reader`` is NULL. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy_func_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy_func_t.rst deleted file mode 100644 index 6388ae1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_destroy_func_t.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_reader_destroy_func_t - -bson_reader_destroy_func_t -========================== - -Synopsis --------- - -.. code-block:: c - - typedef void (*bson_reader_destroy_func_t) (void *handle); - -Parameters ----------- - -* ``handle``: The opaque handle provided to :symbol:`bson_reader_new_from_handle`. - -Description ------------ - -An optional callback function that will be called when a :symbol:`bson_reader_t` created with :symbol:`bson_reader_new_from_handle` is destroyed with :symbol:`bson_reader_destroy()`. - -The handle used when creating the reader is passed to this callback. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_data.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_data.rst deleted file mode 100644 index 1f0ebf5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_data.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_reader_new_from_data - -bson_reader_new_from_data() -=========================== - -Synopsis --------- - -.. code-block:: c - - bson_reader_t * - bson_reader_new_from_data (const uint8_t *data, size_t length); - -Parameters ----------- - -* ``data``: A uint8_t. -* ``length``: A size_t. - -Description ------------ - -The :symbol:`bson_reader_new_from_data()` function shall create a new :symbol:`bson_reader_t` using the buffer supplied. ``data`` is not copied and *MUST* be valid for the lifetime of the resulting :symbol:`bson_reader_t`. - -Returns -------- - -A newly allocated :symbol:`bson_reader_t`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_fd.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_fd.rst deleted file mode 100644 index 8f6f809..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_fd.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_reader_new_from_fd - -bson_reader_new_from_fd() -========================= - -Synopsis --------- - -.. code-block:: c - - bson_reader_t * - bson_reader_new_from_fd (int fd, bool close_on_destroy); - -Parameters ----------- - -* ``fd``: A valid file-descriptor. -* ``close_on_destroy``: Whether ``close()`` should be called on ``fd`` when the reader is destroyed. - -Description ------------ - -The :symbol:`bson_reader_new_from_fd()` function shall create a new :symbol:`bson_reader_t` that will read from the provided file-descriptor. - -fd *MUST* be in blocking mode. - -If ``close_fd`` is true, then ``fd`` will be closed when the :symbol:`bson_reader_t` is destroyed with :symbol:`bson_reader_destroy()`. - -Returns -------- - -A newly allocated :symbol:`bson_reader_t` that should be freed with :symbol:`bson_reader_destroy`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_file.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_file.rst deleted file mode 100644 index a1c5fb3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_file.rst +++ /dev/null @@ -1,34 +0,0 @@ -:man_page: bson_reader_new_from_file - -bson_reader_new_from_file() -=========================== - -Synopsis --------- - -.. code-block:: c - - bson_reader_t * - bson_reader_new_from_file (const char *path, bson_error_t *error); - -Parameters ----------- - -* ``path``: A filename in the host filename encoding. -* ``error``: A :symbol:`bson_error_t`. - -Description ------------ - -Creates a new :symbol:`bson_reader_t` using the file denoted by ``filename``. - -Errors ------- - -Errors are propagated via the ``error`` parameter. - -Returns -------- - -A newly allocated :symbol:`bson_reader_t` on success, otherwise NULL and error is set. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_handle.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_handle.rst deleted file mode 100644 index e1c63ce..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_new_from_handle.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_reader_new_from_handle - -bson_reader_new_from_handle() -============================= - -Synopsis --------- - -.. code-block:: c - - bson_reader_t * - bson_reader_new_from_handle (void *handle, - bson_reader_read_func_t rf, - bson_reader_destroy_func_t df); - -Parameters ----------- - -* ``handle``: A user-provided pointer or NULL. -* ``rf``: A :symbol:`bson_reader_read_func_t`. -* ``df``: A :symbol:`bson_reader_destroy_func_t`. - -Description ------------ - -This function allows for a pluggable data stream for the reader. This can be used to read from sockets, files, memory, or other arbitrary sources. - -Returns -------- - -A newly allocated bson_reader_t if successful; otherwise NULL. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read.rst deleted file mode 100644 index bcaf211..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read.rst +++ /dev/null @@ -1,51 +0,0 @@ -:man_page: bson_reader_read - -bson_reader_read() -================== - -Synopsis --------- - -.. code-block:: c - - const bson_t * - bson_reader_read (bson_reader_t *reader, bool *reached_eof); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_reader_t`. -* ``reached_eof``: A UNKNOWN. - -Description ------------ - -The :symbol:`bson_reader_read()` function shall read the next document from the underlying file-descriptor or buffer. - -If there are no further documents or a failure was detected, then NULL is returned. - -If we reached the end of the sequence, ``reached_eof`` is set to true. - -To detect an error, check for NULL and ``reached_of`` is false. - -Returns -------- - -A :symbol:`bson_t` that should not be modified or freed. - -Example -------- - -.. code-block:: c - - const bson_t *doc; - bool reached_eof = false; - - while ((doc = bson_reader_read (reader, &reached_eof))) { - /* do something */ - } - - if (!reached_eof) { - fprintf (stderr, "Failed to read all documents.\n"); - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read_func_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read_func_t.rst deleted file mode 100644 index 87aa826..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_read_func_t.rst +++ /dev/null @@ -1,37 +0,0 @@ -:man_page: bson_reader_read_func_t - -bson_reader_read_func_t -======================= - -Synopsis --------- - -.. code-block:: c - - typedef ssize_t (*bson_reader_read_func_t) (void *handle, - void *buf, - size_t count); - -Parameters ----------- - -* ``handle``: The handle to read from. -* ``buf``: The buffer to read into. -* ``count``: The number of bytes to read. - -Description ------------ - -A callback function that will be called by :symbol:`bson_reader_t` to read the next chunk of data from the underlying opaque file descriptor. - -This function is meant to operate similar to the ``read(2)`` function as part of libc on UNIX-like systems. - -Returns -------- - -0 for end of stream. - --1 for a failure on read. - -A value greater than zero for the number of bytes read into ``buf``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_reset.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_reset.rst deleted file mode 100644 index 28b4c50..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_reset.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_reader_reset - -bson_reader_reset() -=================== - -Synopsis --------- - -.. code-block:: c - - void - bson_reader_reset (bson_reader_t *reader); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_reader_t`. - -Description ------------ - -Seeks to the beginning of the underlying buffer. Valid only for a reader created from a buffer with :symbol:`bson_reader_new_from_data`, not one created from a file, file descriptor, or handle. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_destroy_func.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_destroy_func.rst deleted file mode 100644 index 770b85a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_destroy_func.rst +++ /dev/null @@ -1,25 +0,0 @@ -:man_page: bson_reader_set_destroy_func - -bson_reader_set_destroy_func() -============================== - -Synopsis --------- - -.. code-block:: c - - void - bson_reader_set_destroy_func (bson_reader_t *reader, - bson_reader_destroy_func_t func); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_reader_t`. -* ``func``: A :symbol:`bson_reader_destroy_func_t`. - -Description ------------ - -Allows for setting a callback to be executed when a reader is destroyed. This should only be used by implementations implementing their own read callbacks. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_read_func.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_read_func.rst deleted file mode 100644 index badcb51..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_set_read_func.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_reader_set_read_func - -bson_reader_set_read_func() -=========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_reader_set_read_func (bson_reader_t *reader, bson_reader_read_func_t func); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_reader_t`. -* ``func``: A :symbol:`bson_reader_read_func_t`. - -Description ------------ - -Sets the function to read more data from the underlying stream in a custom bson_reader_t. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_t.rst deleted file mode 100644 index b5aa4d4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_t.rst +++ /dev/null @@ -1,141 +0,0 @@ -:man_page: bson_reader_t - -bson_reader_t -============= - -Streaming BSON Document Reader - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct _bson_reader_t bson_reader_t; - - bson_reader_t * - bson_reader_new_from_handle (void *handle, - bson_reader_read_func_t rf, - bson_reader_destroy_func_t df); - bson_reader_t * - bson_reader_new_from_fd (int fd, bool close_on_destroy); - bson_reader_t * - bson_reader_new_from_file (const char *path, bson_error_t *error); - bson_reader_t * - bson_reader_new_from_data (const uint8_t *data, size_t length); - - void - bson_reader_destroy (bson_reader_t *reader); - -Description ------------ - -:symbol:`bson_reader_t` is a structure used for reading a sequence of BSON documents. The sequence can come from a file-descriptor, memory region, or custom callbacks. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_reader_destroy - bson_reader_destroy_func_t - bson_reader_new_from_data - bson_reader_new_from_fd - bson_reader_new_from_file - bson_reader_new_from_handle - bson_reader_read - bson_reader_read_func_t - bson_reader_reset - bson_reader_set_destroy_func - bson_reader_set_read_func - bson_reader_tell - -Example -------- - -.. code-block:: c - - /* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - /* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - - #include - #include - - - int - main (int argc, char *argv[]) - { - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | -]...\nUse - for STDIN.\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\n", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_tell.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_tell.rst deleted file mode 100644 index 6ac344c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reader_tell.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_reader_tell - -bson_reader_tell() -================== - -Synopsis --------- - -.. code-block:: c - - off_t - bson_reader_tell (bson_reader_t *reader); - -Parameters ----------- - -* ``reader``: A :symbol:`bson_reader_t`. - -Description ------------ - -Tells the current position within the underlying stream. - -Returns -------- - --1 on failure, otherwise the offset within the underlying stream. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc.rst deleted file mode 100644 index ad9e802..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc.rst +++ /dev/null @@ -1,37 +0,0 @@ -:man_page: bson_realloc - -bson_realloc() -============== - -Synopsis --------- - -.. code-block:: c - - void * - bson_realloc (void *mem, size_t num_bytes); - -Parameters ----------- - -* ``mem``: A memory region. -* ``num_bytes``: A size_t containing the new requested size. - -Description ------------ - -This is a portable ``realloc()`` wrapper. - -In general, this function will return an allocation at least ``sizeof(void*)`` bytes or bigger. If ``num_bytes`` is 0, then the allocation will be freed. - -If there was a failure to allocate ``num_bytes`` bytes, the process will be aborted. - -.. warning:: - - This function will abort on failure to allocate memory. - -Returns -------- - -A pointer to a memory region which *HAS NOT* been zeroed. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_ctx.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_ctx.rst deleted file mode 100644 index 2955c48..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_ctx.rst +++ /dev/null @@ -1,25 +0,0 @@ -:man_page: bson_realloc_ctx - -bson_realloc_ctx() -================== - -Synopsis --------- - -.. code-block:: c - - void * - bson_realloc_ctx (void *mem, size_t num_bytes, void *ctx); - -Parameters ----------- - -* ``mem``: A memory region. -* ``num_bytes``: A size_t containing the requested size. -* ``ctx``: A consumer-specific pointer or ``NULL``. - -Description ------------ - -This function is identical to :symbol:`bson_realloc()` except it takes a context parameter. This is useful when working with pooled or specific memory allocators. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_func.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_func.rst deleted file mode 100644 index e0299ed..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_realloc_func.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_realloc_func - -bson_realloc_func -================= - -Synopsis --------- - -.. code-block:: c - - typedef void *(*bson_realloc_func) (void *mem, size_t num_bytes, void *ctx); - -Parameters ----------- - -* ``mem``: A memory region. -* ``num_bytes``: A size_t containing the requested size. -* ``ctx``: A consumer-specific pointer or ``NULL``. - -Description ------------ - -This is a prototype for pluggable realloc functions used through the Libbson library. If you wish to use a custom allocator this is one way to do it. Additionally, :symbol:`bson_realloc_ctx()` is a default implementation of this prototype. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reinit.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reinit.rst deleted file mode 100644 index b20b57c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reinit.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_reinit - -bson_reinit() -============= - -Synopsis --------- - -.. code-block:: c - - void - bson_reinit (bson_t *b); - -Parameters ----------- - -* ``b``: A :symbol:`bson_t`. - -Description ------------ - -The :symbol:`bson_reinit()` function shall be equivalent to calling :symbol:`bson_destroy()` and :symbol:`bson_init()`. - -However, if the :symbol:`bson_t` structure contains a malloc()'d buffer, it may be reused. To be certain that any buffer is freed, always call :symbol:`bson_destroy` on any :symbol:`bson_t` structure, whether initialized or reinitialized, after its final use. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reserve_buffer.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reserve_buffer.rst deleted file mode 100644 index 1bf5146..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_reserve_buffer.rst +++ /dev/null @@ -1,112 +0,0 @@ -:man_page: bson_reserve_buffer - -bson_reserve_buffer() -===================== - -Synopsis --------- - -.. code-block:: c - - uint8_t * - bson_reserve_buffer (bson_t *bson, uint32_t size); - -Parameters ----------- - -* ``bson``: An initialized :symbol:`bson_t`. -* ``size``: The length in bytes of the new buffer. - -Description ------------ - -Grow the internal buffer of ``bson`` to ``size`` and set the document length to ``size``. Useful for eliminating copies when reading BSON bytes from a stream. - -First, initialize ``bson`` with :symbol:`bson_init` or :symbol:`bson_new`, then call this function. After it returns, the length of ``bson`` is set to ``size`` but its contents are uninitialized memory: you must fill the contents with a BSON document of the correct length before any other operations. - -The document must be freed with :symbol:`bson_destroy`. - -Returns -------- - -A pointer to the internal buffer, which is at least ``size`` bytes, or NULL if the space could not be allocated. - -Example -------- - -Use ``bson_reserve_buffer`` to write a function that takes a :symbol:`bson_t` pointer and reads a file into it directly: - -.. code-block:: c - - #include - #include - - bool - read_into (bson_t *bson, FILE *fp) - { - uint8_t *buffer; - long size; - - if (fseek (fp, 0L, SEEK_END) < 0) { - perror ("Couldn't get file size"); - return 1; - } - - size = ftell (fp); - if (size == EOF) { - perror ("Couldn't get file size"); - return 1; - } - - if (size > INT32_MAX) { - fprintf (stderr, "File too large\n"); - return 1; - } - - /* reserve buffer space - bson is temporarily invalid */ - buffer = bson_reserve_buffer (bson, (uint32_t) size); - if (!buffer) { - fprintf (stderr, "Couldn't reserve %ld bytes", size); - return false; - } - - /* read file directly into the buffer */ - rewind (fp); - if (fread ((void *) buffer, 1, (size_t) size, fp) < (size_t) size) { - perror ("Couldn't read file"); - return false; - } - - return true; - } - - int - main () - { - FILE *fp; - char *json; - - /* stack-allocated, initialized bson_t */ - bson_t bson = BSON_INITIALIZER; - - if (!(fp = fopen ("document.bson", "rb"))) { - perror ("Couldn't read file"); - return 1; - } - - read_into (&bson, fp); - fclose (fp); - - json = bson_as_canonical_extended_json (&bson, NULL); - printf ("%s\n", json); - - bson_free (json); - bson_destroy (&bson); - - return 0; - } - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_set_error.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_set_error.rst deleted file mode 100644 index 8d13d0e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_set_error.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_set_error - -bson_set_error() -================ - -Synopsis --------- - -.. code-block:: c - - void - bson_set_error ( - bson_error_t *error, uint32_t domain, uint32_t code, const char *format, ...) - BSON_GNUC_PRINTF (4, 5); - -Parameters ----------- - -* ``error``: A :symbol:`bson_error_t`. -* ``domain``: A ``uint32_t``. -* ``code``: A ``uint32_t``. -* ``format``: A ``printf()`` style format string. - -Description ------------ - -This is a helper function to set the parameters of a :symbol:`bson_error_t`. It handles the case where ``error`` is NULL by doing nothing. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_sized_new.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_sized_new.rst deleted file mode 100644 index 7dda529..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_sized_new.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_sized_new - -bson_sized_new() -================ - -Synopsis --------- - -.. code-block:: c - - bson_t * - bson_sized_new (size_t size); - -Parameters ----------- - -* ``size``: The size to pre-allocate for the underlying buffer. - -Description ------------ - -The :symbol:`bson_sized_new()` function shall create a new :symbol:`bson_t` on the heap with a preallocated buffer. This is useful if you have a good idea of the size of the resulting document. - -Returns -------- - -A newly allocated :symbol:`bson_t` that should be freed with :symbol:`bson_destroy()`. - -.. only:: html - - .. taglist:: See Also: - :tags: create-bson diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_snprintf.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_snprintf.rst deleted file mode 100644 index 92e8ec6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_snprintf.rst +++ /dev/null @@ -1,31 +0,0 @@ -:man_page: bson_snprintf - -bson_snprintf() -=============== - -Synopsis --------- - -.. code-block:: c - - int - bson_snprintf (char *str, size_t size, const char *format, ...) - BSON_GNUC_PRINTF (3, 4); - -Parameters ----------- - -* ``str``: The destination buffer. -* ``size``: The size of ``str``. -* ``format``: A printf style format string. - -Description ------------ - -This is a portable wrapper around ``snprintf()``. It also enforces a trailing ``\0`` in the resulting string. - -Returns -------- - -The number of bytes written to ``str``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_steal.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_steal.rst deleted file mode 100644 index 6165323..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_steal.rst +++ /dev/null @@ -1,79 +0,0 @@ -:man_page: bson_steal - -bson_steal() -============ - -Synopsis --------- - -.. code-block:: c - - bool - bson_steal (bson_t *dst, bson_t *src); - -Parameters ----------- - -* ``dst``: An uninitialized :symbol:`bson_t`. -* ``src``: A :symbol:`bson_t`. - -Description ------------ - -Efficiently transfer the contents of ``src`` to ``dst`` and destroy ``src``. - -Before calling this function, ``src`` must be initialized and ``dst`` must be uninitialized. After this function returns successfully, ``src`` is destroyed, and ``dst`` is initialized and must be freed with :symbol:`bson_destroy`. - -For example, if you have a higher-level structure that wraps a :symbol:`bson_t`, use ``bson_steal`` to transfer BSON data into it: - -.. code-block:: c - - typedef struct { - bson_t bson; - } bson_wrapper_t; - - - bson_wrapper_t * - wrap_bson (bson_t *b) - { - bson_wrapper_t *wrapper = bson_malloc (sizeof (bson_wrapper_t)); - - if (bson_steal (&wrapper->bson, b)) { - return wrapper; - } - - bson_free (wrapper); - return NULL; - } - - - void - bson_wrapper_destroy (bson_wrapper_t *wrapper) - { - bson_destroy (&wrapper->bson); - bson_free (wrapper); - } - - - int - main (int argc, char *argv[]) - { - bson_t bson = BSON_INITIALIZER; - bson_wrapper_t *wrapper; - - BSON_APPEND_UTF8 (&bson, "key", "value"); - - /* now "bson" is destroyed */ - wrapper = wrap_bson (&bson); - - /* clean up */ - bson_wrapper_destroy (wrapper); - } - -See also :symbol:`bson_destroy_with_steal`, a lower-level function that returns the raw contents of a :symbol:`bson_t`. - -Returns -------- - -Returns ``true`` if ``src`` was successfully moved to ``dst``, ``false`` if ``src`` is invalid, or was statically initialized, or another error occurred. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strcasecmp.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strcasecmp.rst deleted file mode 100644 index fbb318a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strcasecmp.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_strcasecmp - -bson_strcasecmp() -================= - -Synopsis --------- - -.. code-block:: c - - int - bson_strcasecmp (const char *s1, const char *s2); - -Parameters ----------- - -* ``s1``: A string. -* ``s2``: A string. - -Description ------------ - -A portable version of ``strcasecmp()``. - -Returns -------- - -Returns a negative integer if s1 sorts lexicographically before s2, a positive -integer if it sorts after, or 0 if they are equivalent, after translating both -strings to lower case. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup.rst deleted file mode 100644 index fcafc2c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_strdup - -bson_strdup() -============= - -Synopsis --------- - -.. code-block:: c - - char * - bson_strdup (const char *str); - -Parameters ----------- - -* ``str``: A string. - -Description ------------ - -Copies ``str`` into a new string. If ``str`` is NULL, then NULL is returned. - -Returns -------- - -A newly allocated string that should be freed with bson_free(). - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup_printf.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup_printf.rst deleted file mode 100644 index d28ad54..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdup_printf.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_strdup_printf - -bson_strdup_printf() -==================== - -Synopsis --------- - -.. code-block:: c - - char * - bson_strdup_printf (const char *format, ...) BSON_GNUC_PRINTF (1, 2); - -Parameters ----------- - -* ``format``: A printf style format string. - -Description ------------ - -This function performs a printf style format but into a newly allocated string. - -Returns -------- - -A newly allocated string that should be freed with bson_free(). - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdupv_printf.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdupv_printf.rst deleted file mode 100644 index 0b9eb89..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strdupv_printf.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_strdupv_printf - -bson_strdupv_printf() -===================== - -Synopsis --------- - -.. code-block:: c - - char * - bson_strdupv_printf (const char *format, va_list args) BSON_GNUC_PRINTF (1, 0); - -Parameters ----------- - -* ``format``: A printf style format string. -* ``args``: A va_list. - -Description ------------ - -This function is like :symbol:`bson_strdup_printf()` except takes a va_list of parameters. - -Returns -------- - -A newly allocated string that should be freed with bson_free(). - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strerror_r.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strerror_r.rst deleted file mode 100644 index 9a0f417..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strerror_r.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_strerror_r - -bson_strerror_r() -================= - -Synopsis --------- - -.. code-block:: c - - char * - bson_strerror_r (int err_code, char *buf, size_t buflen); - -Parameters ----------- - -* ``err_code``: An errno. -* ``buf``: A location to store the string. -* ``buflen``: The size of ``buf``. - -Description ------------ - -This is a portability wrapper around ``strerror()``. - -Returns -------- - -The passed in ``buf`` parameter or an internal string. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strfreev.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strfreev.rst deleted file mode 100644 index abe325b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strfreev.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_strfreev - -bson_strfreev() -=============== - -Synopsis --------- - -.. code-block:: c - - void - bson_strfreev (char **strv); - -Parameters ----------- - -* ``strv``: A NULL-terminated array of strings to free, including the array. - -Description ------------ - -This will free each string in a NULL-terminated array of strings and then the array itself. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append.rst deleted file mode 100644 index d456a16..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_string_append - -bson_string_append() -==================== - -Synopsis --------- - -.. code-block:: c - - void - bson_string_append (bson_string_t *string, const char *str); - -Parameters ----------- - -* ``string``: A :symbol:`bson_string_t`. -* ``str``: A string. - -Description ------------ - -Appends the ASCII or UTF-8 encoded string ``str`` to ``string``. This is not suitable for embedding NULLs in strings. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_c.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_c.rst deleted file mode 100644 index e723846..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_c.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_string_append_c - -bson_string_append_c() -====================== - -Synopsis --------- - -.. code-block:: c - - void - bson_string_append_c (bson_string_t *string, char str); - -Parameters ----------- - -* ``string``: A :symbol:`bson_string_t`. -* ``str``: An ASCII char. - -Description ------------ - -Appends ``c`` to the string builder ``string``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_printf.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_printf.rst deleted file mode 100644 index 926e6c4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_printf.rst +++ /dev/null @@ -1,25 +0,0 @@ -:man_page: bson_string_append_printf - -bson_string_append_printf() -=========================== - -Synopsis --------- - -.. code-block:: c - - void - bson_string_append_printf (bson_string_t *string, const char *format, ...) - BSON_GNUC_PRINTF (2, 3); - -Parameters ----------- - -* ``string``: A :symbol:`bson_string_t`. -* ``format``: A printf style format string. - -Description ------------ - -Like bson_string_append() but formats a printf style string and then appends that to ``string``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_unichar.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_unichar.rst deleted file mode 100644 index 426d992..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_append_unichar.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_string_append_unichar - -bson_string_append_unichar() -============================ - -Synopsis --------- - -.. code-block:: c - - void - bson_string_append_unichar (bson_string_t *string, bson_unichar_t unichar); - -Parameters ----------- - -* ``string``: A :symbol:`bson_string_t`. -* ``unichar``: A :symbol:`bson_unichar_t`. - -Description ------------ - -Appends a unicode character to string. The character will be encoded into its multi-byte UTF-8 representation. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_free.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_free.rst deleted file mode 100644 index c9ca381..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_free.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_string_free - -bson_string_free() -================== - -Synopsis --------- - -.. code-block:: c - - char * - bson_string_free (bson_string_t *string, bool free_segment); - -Parameters ----------- - -* ``string``: A :symbol:`bson_string_t`. -* ``free_segment``: A bool indicating if ``str->str`` should be returned. - -Description ------------ - -Frees the bson_string_t structure and optionally the string itself. - -Returns -------- - -``str->str`` if ``free_segment`` is true, otherwise NULL. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_new.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_new.rst deleted file mode 100644 index d13162b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_new.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_string_new - -bson_string_new() -================= - -Synopsis --------- - -.. code-block:: c - - bson_string_t * - bson_string_new (const char *str); - -Parameters ----------- - -* ``str``: A string to be copied or NULL. - -Description ------------ - -Creates a new string builder, which uses power-of-two growth of buffers. Use the various bson_string_append*() functions to append to the string. - -Returns -------- - -A newly allocated bson_string_t that should be freed with bson_string_free() when no longer in use. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_t.rst deleted file mode 100644 index 1fe930c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_t.rst +++ /dev/null @@ -1,61 +0,0 @@ -:man_page: bson_string_t - -bson_string_t -============= - -String Building Abstraction - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct { - char *str; - uint32_t len; - uint32_t alloc; - } bson_string_t; - -Description ------------ - -:symbol:`bson_string_t` is an abstraction for building strings. As chunks are added to the string, allocations are performed in powers of two. - -This API is useful if you need to build UTF-8 encoded strings. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_string_append - bson_string_append_c - bson_string_append_printf - bson_string_append_unichar - bson_string_free - bson_string_new - bson_string_truncate - -Example -------- - -.. code-block:: c - - bson_string_t *str; - - str = bson_string_new (NULL); - bson_string_append_printf (str, "%d %s %f\n", 0, "some string", 0.123); - printf ("%s\n", str->str); - - bson_string_free (str, true); - -.. tip:: - - You can call :symbol:`bson_string_free()` with ``false`` if you would like to take ownership of ``str->str``. Some APIs that do this might call ``return bson_string_free (str, false);`` after building the string. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_truncate.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_truncate.rst deleted file mode 100644 index 1871e02..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_string_truncate.rst +++ /dev/null @@ -1,26 +0,0 @@ -:man_page: bson_string_truncate - -bson_string_truncate() -====================== - -Synopsis --------- - -.. code-block:: c - - void - bson_string_truncate (bson_string_t *string, uint32_t len); - -Parameters ----------- - -* ``string``: A :symbol:`bson_string_t`. -* ``len``: The new length of the string, excluding the trailing ``\0``. - -Description ------------ - -Truncates the string so that it is ``len`` bytes in length. This must be smaller or equal to the current length of the string. - -A ``\0`` byte will be placed where the end of the string occurs. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strncpy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strncpy.rst deleted file mode 100644 index 0286c59..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strncpy.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_strncpy - -bson_strncpy() -============== - -Synopsis --------- - -.. code-block:: c - - void - bson_strncpy (char *dst, const char *src, size_t size); - -Parameters ----------- - -* ``dst``: The destination buffer. -* ``src``: The src buffer. -* ``size``: The number of bytes to copy into dst, which must be at least that size. - -Description ------------ - -Copies up to ``size`` bytes from ``src`` into ``dst``. ``dst`` must be at least ``size`` bytes in size. A trailing ``\0`` is always set. - -Does nothing if ``size`` is zero. - -``bson_strncpy`` matches the behavior of the C11 standard ``strncpy_s``, rather than ``strncpy``. This means that ``bson_strncpy`` always writes a null terminator to ``dst``, even if ``dst`` is too short to fit the entire string from ``src``. If there is additional space left in ``dst`` after copying ``src``, ``bson_strncpy`` does not fill the remaining space with null characters. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strndup.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strndup.rst deleted file mode 100644 index 92ea0c4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strndup.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_strndup - -bson_strndup() -============== - -Synopsis --------- - -.. code-block:: c - - char * - bson_strndup (const char *str, size_t n_bytes); - -Parameters ----------- - -* ``str``: A string to copy. -* ``n_bytes``: A size_t. - -Description ------------ - -Allocates a new string and copies up to ``n_bytes`` from ``str`` into it. A trailing ``\0`` is always set. - -Returns -------- - -A newly allocated string that should be freed with bson_free(). - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strnlen.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strnlen.rst deleted file mode 100644 index 6877fff..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_strnlen.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_strnlen - -bson_strnlen() -============== - -Synopsis --------- - -.. code-block:: c - - size_t - bson_strnlen (const char *s, size_t maxlen); - -Parameters ----------- - -* ``s``: A string. -* ``maxlen``: The maximum size of string to check. - -Description ------------ - -A portable version of ``strnlen()``. - -Returns -------- - -The length of ``s`` in bytes or ``maxlen`` if no ``\0`` was found. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_subtype_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_subtype_t.rst deleted file mode 100644 index 6c1599e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_subtype_t.rst +++ /dev/null @@ -1,48 +0,0 @@ -:man_page: bson_subtype_t - -bson_subtype_t -============== - -Binary Field Subtype - -Synopsis --------- - -.. code-block:: c - - #include - - - typedef enum { - BSON_SUBTYPE_BINARY = 0x00, - BSON_SUBTYPE_FUNCTION = 0x01, - BSON_SUBTYPE_BINARY_DEPRECATED = 0x02, - BSON_SUBTYPE_UUID_DEPRECATED = 0x03, - BSON_SUBTYPE_UUID = 0x04, - BSON_SUBTYPE_MD5 = 0x05, - BSON_SUBTYPE_USER = 0x80, - } bson_subtype_t; - -Description ------------ - -This enumeration contains the various subtypes that may be used in a binary field. See `http://bsonspec.org `_ for more information. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - -Example -------- - -.. code-block:: c - - bson_t doc = BSON_INITIALIZER; - - BSON_APPEND_BINARY (&doc, "binary", BSON_SUBTYPE_BINARY, data, data_len); - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_t.rst deleted file mode 100644 index 09ad5de..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_t.rst +++ /dev/null @@ -1,230 +0,0 @@ -:man_page: bson_t - -bson_t -====== - -BSON Document Abstraction - -Synopsis --------- - -.. code-block:: c - - #include - - /** - * bson_empty: - * @b: a bson_t. - * - * Checks to see if @b is an empty BSON document. An empty BSON document is - * a 5 byte document which contains the length (4 bytes) and a single NUL - * byte indicating end of fields. - */ - #define bson_empty(b) /* ... */ - - /** - * bson_empty0: - * - * Like bson_empty() but treats NULL the same as an empty bson_t document. - */ - #define bson_empty0(b) /* ... */ - - /** - * bson_clear: - * - * Easily free a bson document and set it to NULL. Use like: - * - * bson_t *doc = bson_new(); - * bson_clear (&doc); - * BSON_ASSERT (doc == NULL); - */ - #define bson_clear(bptr) /* ... */ - - /** - * BSON_MAX_SIZE: - * - * The maximum size in bytes of a BSON document. - */ - #define BSON_MAX_SIZE /* ... */ - - #define BSON_APPEND_ARRAY(b, key, val) \ - bson_append_array (b, key, (int) strlen (key), val) - - #define BSON_APPEND_ARRAY_BEGIN(b, key, child) \ - bson_append_array_begin (b, key, (int) strlen (key), child) - - #define BSON_APPEND_BINARY(b, key, subtype, val, len) \ - bson_append_binary (b, key, (int) strlen (key), subtype, val, len) - - #define BSON_APPEND_BOOL(b, key, val) \ - bson_append_bool (b, key, (int) strlen (key), val) - - #define BSON_APPEND_CODE(b, key, val) \ - bson_append_code (b, key, (int) strlen (key), val) - - #define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \ - bson_append_code_with_scope (b, key, (int) strlen (key), val, scope) - - #define BSON_APPEND_DBPOINTER(b, key, coll, oid) \ - bson_append_dbpointer (b, key, (int) strlen (key), coll, oid) - - #define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \ - bson_append_document_begin (b, key, (int) strlen (key), child) - - #define BSON_APPEND_DOUBLE(b, key, val) \ - bson_append_double (b, key, (int) strlen (key), val) - - #define BSON_APPEND_DOCUMENT(b, key, val) \ - bson_append_document (b, key, (int) strlen (key), val) - - #define BSON_APPEND_INT32(b, key, val) \ - bson_append_int32 (b, key, (int) strlen (key), val) - - #define BSON_APPEND_INT64(b, key, val) \ - bson_append_int64 (b, key, (int) strlen (key), val) - - #define BSON_APPEND_MINKEY(b, key) \ - bson_append_minkey (b, key, (int) strlen (key)) - - #define BSON_APPEND_DECIMAL128(b, key, val) \ - bson_append_decimal128 (b, key, (int) strlen (key), val) - - #define BSON_APPEND_MAXKEY(b, key) \ - bson_append_maxkey (b, key, (int) strlen (key)) - - #define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key)) - - #define BSON_APPEND_OID(b, key, val) \ - bson_append_oid (b, key, (int) strlen (key), val) - - #define BSON_APPEND_REGEX(b, key, val, opt) \ - bson_append_regex (b, key, (int) strlen (key), val, opt) - - #define BSON_APPEND_UTF8(b, key, val) \ - bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val)) - - #define BSON_APPEND_SYMBOL(b, key, val) \ - bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val)) - - #define BSON_APPEND_TIME_T(b, key, val) \ - bson_append_time_t (b, key, (int) strlen (key), val) - - #define BSON_APPEND_TIMEVAL(b, key, val) \ - bson_append_timeval (b, key, (int) strlen (key), val) - - #define BSON_APPEND_DATE_TIME(b, key, val) \ - bson_append_date_time (b, key, (int) strlen (key), val) - - #define BSON_APPEND_TIMESTAMP(b, key, val, inc) \ - bson_append_timestamp (b, key, (int) strlen (key), val, inc) - - #define BSON_APPEND_UNDEFINED(b, key) \ - bson_append_undefined (b, key, (int) strlen (key)) - - #define BSON_APPEND_VALUE(b, key, val) \ - bson_append_value (b, key, (int) strlen (key), (val)) - - BSON_ALIGNED_BEGIN (128) - typedef struct { - uint32_t flags; /* Internal flags for the bson_t. */ - uint32_t len; /* Length of BSON data. */ - uint8_t padding[120]; /* Padding for stack allocation. */ - } bson_t BSON_ALIGNED_END (128); - -Description ------------ - -The :symbol:`bson_t` structure represents a BSON document. This structure manages the underlying BSON encoded buffer. For mutable documents, it can append new data to the document. - -Performance Notes ------------------ - -The :symbol:`bson_t` structure attempts to use an inline allocation within the structure to speed up performance of small documents. When this internal buffer has been exhausted, a heap allocated buffer will be dynamically allocated. Therefore, it is essential to call :symbol:`bson_destroy()` on allocated documents. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_append_array - bson_append_array_begin - bson_append_array_end - bson_append_binary - bson_append_bool - bson_append_code - bson_append_code_with_scope - bson_append_date_time - bson_append_dbpointer - bson_append_decimal128 - bson_append_document - bson_append_document_begin - bson_append_document_end - bson_append_double - bson_append_int32 - bson_append_int64 - bson_append_iter - bson_append_maxkey - bson_append_minkey - bson_append_now_utc - bson_append_null - bson_append_oid - bson_append_regex - bson_append_regex_w_len - bson_append_symbol - bson_append_time_t - bson_append_timestamp - bson_append_timeval - bson_append_undefined - bson_append_utf8 - bson_append_value - bson_array_as_json - bson_as_canonical_extended_json - bson_as_json - bson_as_relaxed_extended_json - bson_compare - bson_concat - bson_copy - bson_copy_to - bson_copy_to_excluding - bson_copy_to_excluding_noinit - bson_count_keys - bson_destroy - bson_destroy_with_steal - bson_equal - bson_get_data - bson_has_field - bson_init - bson_init_from_json - bson_init_static - bson_new - bson_new_from_buffer - bson_new_from_data - bson_new_from_json - bson_reinit - bson_reserve_buffer - bson_sized_new - bson_steal - bson_validate - bson_validate_with_error - -Example -------- - -.. code-block:: c - - static void - create_on_heap (void) - { - bson_t *b = bson_new (); - - BSON_APPEND_INT32 (b, "foo", 123); - BSON_APPEND_UTF8 (b, "bar", "foo"); - BSON_APPEND_DOUBLE (b, "baz", 1.23f); - - bson_destroy (b); - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_type_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_type_t.rst deleted file mode 100644 index 8079089..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_type_t.rst +++ /dev/null @@ -1,65 +0,0 @@ -:man_page: bson_type_t - -bson_type_t -=========== - -BSON Type Enumeration - -Synopsis --------- - -.. code-block:: c - - #include - - typedef enum { - BSON_TYPE_EOD = 0x00, - BSON_TYPE_DOUBLE = 0x01, - BSON_TYPE_UTF8 = 0x02, - BSON_TYPE_DOCUMENT = 0x03, - BSON_TYPE_ARRAY = 0x04, - BSON_TYPE_BINARY = 0x05, - BSON_TYPE_UNDEFINED = 0x06, - BSON_TYPE_OID = 0x07, - BSON_TYPE_BOOL = 0x08, - BSON_TYPE_DATE_TIME = 0x09, - BSON_TYPE_NULL = 0x0A, - BSON_TYPE_REGEX = 0x0B, - BSON_TYPE_DBPOINTER = 0x0C, - BSON_TYPE_CODE = 0x0D, - BSON_TYPE_SYMBOL = 0x0E, - BSON_TYPE_CODEWSCOPE = 0x0F, - BSON_TYPE_INT32 = 0x10, - BSON_TYPE_TIMESTAMP = 0x11, - BSON_TYPE_INT64 = 0x12, - BSON_TYPE_DECIMAL128 = 0x13, - BSON_TYPE_MAXKEY = 0x7F, - BSON_TYPE_MINKEY = 0xFF, - } bson_type_t; - -Description ------------ - -The :symbol:`bson_type_t` enumeration contains all of the types from the `BSON Specification `_. It can be used to determine the type of a field at runtime. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - -Example -------- - -.. code-block:: c - - bson_iter_t iter; - - if (bson_iter_init_find (&iter, doc, "foo") && - (BSON_TYPE_INT32 == bson_iter_type (&iter))) { - printf ("'foo' is an int32.\n"); - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_uint32_to_string.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_uint32_to_string.rst deleted file mode 100644 index 9f5b782..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_uint32_to_string.rst +++ /dev/null @@ -1,57 +0,0 @@ -:man_page: bson_uint32_to_string - -bson_uint32_to_string() -======================= - -Synopsis --------- - -.. code-block:: c - - size_t - bson_uint32_to_string (uint32_t value, - const char **strptr, - char *str, - size_t size); - - -Parameters ----------- - -* ``value``: A uint32_t. -* ``strptr``: A location for the resulting string pointer. -* ``str``: A location to buffer the string. -* ``size``: A size_t containing the size of ``str``. - -Description ------------ - -Converts ``value`` to a string. - -If ``value`` is from 0 to 999, it will use a constant string in the data section of the library. - -If not, a string will be formatted using ``str`` and ``snprintf()``. - -``strptr`` will always be set. It will either point to ``str`` or a constant string. Use this as your key. - -Array Element Key Building --------------------------- - -Each element in a BSON array has a monotonic string key like ``"0"``, ``"1"``, etc. This function is optimized for generating such string keys. - -.. code-block:: c - - char str[16]; - const char *key; - uint32_t i; - - for (i = 0; i < 10; i++) { - bson_uint32_to_string (i, &key, str, sizeof str); - printf ("Key: %s\n", key); - } - -Returns -------- - -The number of bytes in the resulting string. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_unichar_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_unichar_t.rst deleted file mode 100644 index 0a7fda4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_unichar_t.rst +++ /dev/null @@ -1,44 +0,0 @@ -:man_page: bson_unichar_t - -bson_unichar_t -============== - -Unicode Character Abstraction - -Synopsis --------- - -.. code-block:: c - - typedef uint32_t bson_unichar_t; - -Description ------------ - -:symbol:`bson_unichar_t` provides an abstraction on a single unicode character. It is the 32-bit representation of a character. As UTF-8 can contain multi-byte characters, this should be used when iterating through UTF-8 text. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - -Example -------- - -.. code-block:: c - - static void - print_each_char (const char *str) - { - bson_unichar_t c; - - for (; *str; str = bson_utf8_next_char (str)) { - c = bson_utf8_get_char (str); - printf ("The numberic value is %u.\n", (unsigned) c); - } - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_escape_for_json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_escape_for_json.rst deleted file mode 100644 index 8c2af20..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_escape_for_json.rst +++ /dev/null @@ -1,34 +0,0 @@ -:man_page: bson_utf8_escape_for_json - -bson_utf8_escape_for_json() -=========================== - -Synopsis --------- - -.. code-block:: c - - char * - bson_utf8_escape_for_json (const char *utf8, ssize_t utf8_len); - -Parameters ----------- - -* ``utf8``: A UTF-8 encoded string. -* ``utf8_len``: The length of ``utf8`` in bytes or -1 if it is NULL terminated. - -Description ------------ - -Allocates a new string matching ``utf8`` except that special -characters in JSON are escaped. The resulting string is also -UTF-8 encoded. - -Both " and \\ characters will be backslash-escaped. If a NUL -byte is found before ``utf8_len`` bytes, it is converted to -"\\u0000". Other non-ASCII characters in the input are preserved. - -Returns -------- - -A newly allocated string that should be freed with :symbol:`bson_free()`. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_from_unichar.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_from_unichar.rst deleted file mode 100644 index a748f40..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_from_unichar.rst +++ /dev/null @@ -1,25 +0,0 @@ -:man_page: bson_utf8_from_unichar - -bson_utf8_from_unichar() -======================== - -Synopsis --------- - -.. code-block:: c - - void - bson_utf8_from_unichar (bson_unichar_t unichar, char utf8[6], uint32_t *len); - -Parameters ----------- - -* ``unichar``: A :symbol:`bson_unichar_t`. -* ``utf8``: A location for the utf8 sequence. -* ``len``: A location for the number of bytes in the resulting utf8 sequence. - -Description ------------ - -Converts a single unicode character to a multi-byte UTF-8 sequence. The result is stored in ``utf8`` and the number of bytes used in ``len``. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_get_char.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_get_char.rst deleted file mode 100644 index d11d878..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_get_char.rst +++ /dev/null @@ -1,28 +0,0 @@ -:man_page: bson_utf8_get_char - -bson_utf8_get_char() -==================== - -Synopsis --------- - -.. code-block:: c - - bson_unichar_t - bson_utf8_get_char (const char *utf8); - -Parameters ----------- - -* ``utf8``: A UTF-8 encoded string. - -Description ------------ - -Converts the current character in a UTF-8 sequence to a bson_unichar_t, the 32-bit representation of the multi-byte character. - -Returns -------- - -A bson_unichar_t. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_next_char.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_next_char.rst deleted file mode 100644 index 5c17abb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_next_char.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_utf8_next_char - -bson_utf8_next_char() -===================== - -Synopsis --------- - -.. code-block:: c - - const char * - bson_utf8_next_char (const char *utf8); - -Parameters ----------- - -* ``utf8``: A UTF-8 encoded string. - -Description ------------ - -Advances within ``utf8`` to the next UTF-8 character, which may be multiple bytes offset from ``utf8``. A pointer to the next character is returned. - -It is invalid to call this function on a string whose current character is ``\0``. - -Returns -------- - -A pointer to the beginning of the next character in the UTF-8 encoded string. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_validate.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_validate.rst deleted file mode 100644 index 8f8d066..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_utf8_validate.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_utf8_validate - -bson_utf8_validate() -==================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_utf8_validate (const char *utf8, size_t utf8_len, bool allow_null); - -Parameters ----------- - -* ``utf8``: A string to verify. -* ``utf8_len``: The length of ``utf8`` in bytes. -* ``allow_null``: A bool indicating that embedded ``\0`` bytes are allowed. - -Description ------------ - -Validates that the content within ``utf8`` is valid UTF-8 (by the RFC 3629 standard). If ``allow_null`` is ``true``, then embedded NULL bytes are allowed (``\0``). - -Returns -------- - -true if ``utf8`` contains valid UTF-8. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate.rst deleted file mode 100644 index 56cd7a2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_validate - -bson_validate() -=============== - -Synopsis --------- - -.. code-block:: c - - bool - bson_validate (const bson_t *bson, bson_validate_flags_t flags, size_t *offset); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``flags``: A bitwise-or of all desired :symbol:`bson_validate_flags_t `. -* ``offset``: A location for the offset within ``bson`` where the error occurred. - -Description ------------ - -Validates a BSON document by walking through the document and inspecting the keys and values for valid content. - -You can modify how the validation occurs through the use of the ``flags`` parameter, see :symbol:`bson_validate_with_error()` for details. - -Returns -------- - -Returns true if ``bson`` is valid; otherwise false and ``offset`` is set to the byte offset where the error was detected. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate_with_error.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate_with_error.rst deleted file mode 100644 index f05b379..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_validate_with_error.rst +++ /dev/null @@ -1,53 +0,0 @@ -:man_page: bson_validate_with_error - -bson_validate_with_error() -========================== - -Synopsis --------- - -.. code-block:: c - - typedef enum { - BSON_VALIDATE_NONE = 0, - BSON_VALIDATE_UTF8 = (1 << 0), - BSON_VALIDATE_DOLLAR_KEYS = (1 << 1), - BSON_VALIDATE_DOT_KEYS = (1 << 2), - BSON_VALIDATE_UTF8_ALLOW_NULL = (1 << 3), - BSON_VALIDATE_EMPTY_KEYS = (1 << 4), - } bson_validate_flags_t; - - bool - bson_validate_with_error (const bson_t *bson, - bson_validate_flags_t flags, - bson_error_t *error); - -Parameters ----------- - -* ``bson``: A :symbol:`bson_t`. -* ``flags``: A bitwise-or of all desired validation flags. -* ``error``: Optional :symbol:`bson_error_t`. - -Description ------------ - -Validates a BSON document by walking through the document and inspecting the keys and values for valid content. - -You can modify how the validation occurs through the use of the ``flags`` parameter. A description of their effect is below. - -* ``BSON_VALIDATE_NONE`` Basic validation of BSON length and structure. -* ``BSON_VALIDATE_UTF8`` All keys and string values are checked for invalid UTF-8. -* ``BSON_VALIDATE_UTF8_ALLOW_NULL`` String values are allowed to have embedded NULL bytes. -* ``BSON_VALIDATE_DOLLAR_KEYS`` Prohibit keys that start with ``$`` outside of a "DBRef" subdocument. -* ``BSON_VALIDATE_DOT_KEYS`` Prohibit keys that contain ``.`` anywhere in the string. -* ``BSON_VALIDATE_EMPTY_KEYS`` Prohibit zero-length keys. - -See also :symbol:`bson_validate()`. - -Returns -------- - -Returns true if ``bson`` is valid; otherwise false and ``error`` is filled out. - -The :symbol:`bson_error_t` domain is set to ``BSON_ERROR_INVALID``. Its code is set to one of the ``bson_validate_flags_t`` flags indicating which validation failed; for example, if a key contains invalid UTF-8, then the code is set to ``BSON_VALIDATE_UTF8``, but if the basic structure of the BSON document is corrupt, the code is set to ``BSON_VALIDATE_NONE``. The error message is filled out, and gives more detail if possible. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_copy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_copy.rst deleted file mode 100644 index 6eb519b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_copy.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_value_copy - -bson_value_copy() -================= - -Synopsis --------- - -.. code-block:: c - - void - bson_value_copy (const bson_value_t *src, bson_value_t *dst); - -Parameters ----------- - -* ``src``: A :symbol:`bson_value_t` to copy from. -* ``dst``: A :symbol:`bson_value_t` to copy into. - -Description ------------ - -This function will copy the boxed content in ``src`` into ``dst``. ``dst`` must be freed with :symbol:`bson_value_destroy()` when no longer in use. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_destroy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_destroy.rst deleted file mode 100644 index 1f1b52a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_destroy.rst +++ /dev/null @@ -1,22 +0,0 @@ -:man_page: bson_value_destroy - -bson_value_destroy() -==================== - -Synopsis --------- - -.. code-block:: c - - void - bson_value_destroy (bson_value_t *value); - -Parameters ----------- - -* ``value``: A :symbol:`bson_value_t`. - -Description ------------ - -Releases any resources associated with ``value``. Does nothing if ``value`` is NULL. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_t.rst deleted file mode 100644 index 8f6d033..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_value_t.rst +++ /dev/null @@ -1,97 +0,0 @@ -:man_page: bson_value_t - -bson_value_t -============ - -BSON Boxed Container Type - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct _bson_value_t { - bson_type_t value_type; - union { - bson_oid_t v_oid; - int64_t v_int64; - int32_t v_int32; - int8_t v_int8; - double v_double; - bool v_bool; - int64_t v_datetime; - struct { - uint32_t timestamp; - uint32_t increment; - } v_timestamp; - struct { - uint32_t len; - char *str; - } v_utf8; - struct { - uint32_t data_len; - uint8_t *data; - } v_doc; - struct { - uint32_t data_len; - uint8_t *data; - bson_subtype_t subtype; - } v_binary; - struct { - char *regex; - char *options; - } v_regex; - struct { - char *collection; - uint32_t collection_len; - bson_oid_t oid; - } v_dbpointer; - struct { - uint32_t code_len; - char *code; - } v_code; - struct { - uint32_t code_len; - char *code; - uint32_t scope_len; - uint8_t *scope_data; - } v_codewscope; - struct { - uint32_t len; - char *symbol; - } v_symbol; - } value; - } bson_value_t; - -Description ------------ - -The :symbol:`bson_value_t` structure is a boxed type for encapsulating a runtime determined type. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_value_copy - bson_value_destroy - -Example -------- - -.. code-block:: c - - const bson_value_t *value; - - value = bson_iter_value (&iter); - - if (value->value_type == BSON_TYPE_INT32) { - printf ("%d\n", value->value.v_int32); - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_visitor_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_visitor_t.rst deleted file mode 100644 index 81bdcd1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_visitor_t.rst +++ /dev/null @@ -1,221 +0,0 @@ -:man_page: bson_visitor_t - -bson_visitor_t -============== - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct { - /* run before / after descending into a document */ - bool (*visit_before) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_after) (const bson_iter_t *iter, const char *key, void *data); - /* corrupt BSON, or unsupported type and visit_unsupported_type not set */ - void (*visit_corrupt) (const bson_iter_t *iter, void *data); - /* normal bson field callbacks */ - bool (*visit_double) (const bson_iter_t *iter, - const char *key, - double v_double, - void *data); - bool (*visit_utf8) (const bson_iter_t *iter, - const char *key, - size_t v_utf8_len, - const char *v_utf8, - void *data); - bool (*visit_document) (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data); - bool (*visit_array) (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data); - bool (*visit_binary) (const bson_iter_t *iter, - const char *key, - bson_subtype_t v_subtype, - size_t v_binary_len, - const uint8_t *v_binary, - void *data); - /* normal field with deprecated "Undefined" BSON type */ - bool (*visit_undefined) (const bson_iter_t *iter, - const char *key, - void *data); - bool (*visit_oid) (const bson_iter_t *iter, - const char *key, - const bson_oid_t *v_oid, - void *data); - bool (*visit_bool) (const bson_iter_t *iter, - const char *key, - bool v_bool, - void *data); - bool (*visit_date_time) (const bson_iter_t *iter, - const char *key, - int64_t msec_since_epoch, - void *data); - bool (*visit_null) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_regex) (const bson_iter_t *iter, - const char *key, - const char *v_regex, - const char *v_options, - void *data); - bool (*visit_dbpointer) (const bson_iter_t *iter, - const char *key, - size_t v_collection_len, - const char *v_collection, - const bson_oid_t *v_oid, - void *data); - bool (*visit_code) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - void *data); - bool (*visit_symbol) (const bson_iter_t *iter, - const char *key, - size_t v_symbol_len, - const char *v_symbol, - void *data); - bool (*visit_codewscope) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - const bson_t *v_scope, - void *data); - bool (*visit_int32) (const bson_iter_t *iter, - const char *key, - int32_t v_int32, - void *data); - bool (*visit_timestamp) (const bson_iter_t *iter, - const char *key, - uint32_t v_timestamp, - uint32_t v_increment, - void *data); - bool (*visit_int64) (const bson_iter_t *iter, - const char *key, - int64_t v_int64, - void *data); - bool (*visit_maxkey) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_minkey) (const bson_iter_t *iter, const char *key, void *data); - /* if set, called instead of visit_corrupt when an apparently valid BSON - * includes an unrecognized field type (reading future version of BSON) */ - void (*visit_unsupported_type) (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data); - bool (*visit_decimal128) (const bson_iter_t *iter, - const char *key, - const bson_decimal128_t *v_decimal128, - void *data); - - void *padding[7]; - } bson_visitor_t bson_visitor_t; - -Description ------------ - -The :symbol:`bson_visitor_t` structure provides a series of callbacks that can be called while iterating a BSON document. This may simplify the conversion of a :symbol:`bson_t` to a higher level language structure. - -If the optional callback ``visit_unsupported_type`` is set, it is called instead of ``visit_corrupt`` in the specific case of an unrecognized field type. (Parsing is aborted in either case.) Use this callback to report an error like "unrecognized type" instead of simply "corrupt BSON". This future-proofs code that may use an older version of libbson to parse future BSON formats. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - -Example -------- - -.. code-block:: c - - #include - #include - - static bool - my_visit_before (const bson_iter_t *iter, const char *key, void *data) - { - int *count = (int *) data; - - (*count)++; - - /* returning true stops further iteration of the document */ - - return false; - } - - static void - count_fields (bson_t *doc) - { - bson_visitor_t visitor = {0}; - bson_iter_t iter; - int count = 0; - - visitor.visit_before = my_visit_before; - - if (bson_iter_init (&iter, doc)) { - bson_iter_visit_all (&iter, &visitor, &count); - } - - printf ("Found %d fields.\n", count); - } - -The example below demonstrates how to set your own callbacks to provide information about the location of corrupt or unsupported BSON document entries. - -Example -------- - -.. code-block:: c - - #include - #include - - typedef struct { - ssize_t *err_offset; - } my_state_t; - - static void - my_visit_corrupt (const bson_iter_t *iter, void *data) - { - *(((my_state_t *) data)->err_offset) = iter->off; - } - - static void - my_visit_unsupported_type (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data) - { - *(((my_state_t *) data)->err_offset) = iter->off; - } - - static void - find_error_location (bson_t *doc) - { - bson_visitor_t visitors = {0}; - bson_iter_t iter; - my_state_t state; - ssize_t err_offset = -1; - - visitors.visit_corrupt = my_visit_corrupt; - visitors.visit_unsupported_type = my_visit_unsupported_type; - /* provide additional visitors as needed based on your requirements */ - state.err_offset = &err_offset; - - if (!bson_iter_init (&iter, doc)) { - printf ("Could not initialize iterator!"); - exit (1); - } - - if (bson_iter_visit_all (&iter, &visitors, &state) || - err_offset != -1) { - printf ("Found error at offset %d.\n", err_offset); - } else { - printf ("BSON document had no errors.\n"); - } - } diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_vsnprintf.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_vsnprintf.rst deleted file mode 100644 index d585ff3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_vsnprintf.rst +++ /dev/null @@ -1,32 +0,0 @@ -:man_page: bson_vsnprintf - -bson_vsnprintf() -================ - -Synopsis --------- - -.. code-block:: c - - int - bson_vsnprintf (char *str, size_t size, const char *format, va_list ap) - BSON_GNUC_PRINTF (3, 0); - -Parameters ----------- - -* ``str``: A location for the resulting string. -* ``size``: The size of str in bytes. -* ``format``: A printf style format string. -* ``ap``: A va_list of parameters for the format. - -Description ------------ - -Like bson_snprintf() but allows for variadic parameters. - -Returns -------- - -The number of bytes written to ``str`` excluding the ``\0`` byte. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_begin.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_begin.rst deleted file mode 100644 index f613af7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_begin.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: bson_writer_begin - -bson_writer_begin() -=================== - -Synopsis --------- - -.. code-block:: c - - bool - bson_writer_begin (bson_writer_t *writer, bson_t **bson); - -Parameters ----------- - -* ``writer``: A :symbol:`bson_writer_t`. -* ``bson``: A :symbol:`bson_t`. - -Description ------------ - -Begins writing a new document. The caller may use the bson structure to write out a new BSON document. When completed, the caller must call either :symbol:`bson_writer_end()` or :symbol:`bson_writer_rollback()`. - -Returns -------- - -true if there was space in the underlying buffers to begin the document. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_destroy.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_destroy.rst deleted file mode 100644 index ffc16b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_destroy.rst +++ /dev/null @@ -1,22 +0,0 @@ -:man_page: bson_writer_destroy - -bson_writer_destroy() -===================== - -Synopsis --------- - -.. code-block:: c - - void - bson_writer_destroy (bson_writer_t *writer); - -Parameters ----------- - -* ``writer``: A :symbol:`bson_writer_t`. - -Description ------------ - -Cleanup after ``writer`` and release any allocated memory. Does nothing if ``writer`` is NULL. Note that the buffer supplied to :symbol:`bson_writer_new()` is *NOT* freed from this method. The caller is responsible for that. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_end.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_end.rst deleted file mode 100644 index 45652d8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_end.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_writer_end - -bson_writer_end() -================= - -Synopsis --------- - -.. code-block:: c - - void - bson_writer_end (bson_writer_t *writer); - -Parameters ----------- - -* ``writer``: A :symbol:`bson_writer_t`. - -Description ------------ - -Complete writing of a :symbol:`bson_writer_t` to the buffer supplied. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_get_length.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_get_length.rst deleted file mode 100644 index da4c540..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_get_length.rst +++ /dev/null @@ -1,30 +0,0 @@ -:man_page: bson_writer_get_length - -bson_writer_get_length() -======================== - -Synopsis --------- - -.. code-block:: c - - size_t - bson_writer_get_length (bson_writer_t *writer); - -Parameters ----------- - -* ``writer``: A :symbol:`bson_writer_t`. - -Description ------------ - -Fetches the current length of the content written by the buffer (including the initial offset). This includes a partly written document currently being written. - -This is useful if you want to check to see if you've passed a given memory boundary that cannot be sent in a packet. See :symbol:`bson_writer_rollback()` to abort the current document being written. - -Returns -------- - -The length of the underlying buffer. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_new.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_new.rst deleted file mode 100644 index a265bd2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_new.rst +++ /dev/null @@ -1,38 +0,0 @@ -:man_page: bson_writer_new - -bson_writer_new() -================= - -Synopsis --------- - -.. code-block:: c - - bson_writer_t * - bson_writer_new (uint8_t **buf, - size_t *buflen, - size_t offset, - bson_realloc_func realloc_func, - void *realloc_func_ctx); - -Parameters ----------- - -* ``buf``: A uint8_t. -* ``buflen``: A size_t. -* ``offset``: A size_t. -* ``realloc_func``: A bson_realloc_func. -* ``realloc_func_ctx``: A bson_realloc_func. - -Description ------------ - -Creates a new instance of :symbol:`bson_writer_t` using the ``buffer``, ``length``, ``offset``, and _realloc()_ function supplied. - -The caller is expected to clean up the structure when finished using :symbol:`bson_writer_destroy()`. - -Returns -------- - -A newly allocated bson_writer_t. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_rollback.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_rollback.rst deleted file mode 100644 index dafbd9d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_rollback.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_writer_rollback - -bson_writer_rollback() -====================== - -Synopsis --------- - -.. code-block:: c - - void - bson_writer_rollback (bson_writer_t *writer); - -Parameters ----------- - -* ``writer``: A :symbol:`bson_writer_t`. - -Description ------------ - -Abort the appending of the current bson_t to the memory region managed by ``writer``. This is useful if you detected that you went past a particular memory limit. For example, MongoDB has 48MB message limits. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_t.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_t.rst deleted file mode 100644 index c72c19a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_writer_t.rst +++ /dev/null @@ -1,76 +0,0 @@ -:man_page: bson_writer_t - -bson_writer_t -============= - -Bulk BSON serialization Abstraction - -Synopsis --------- - -.. code-block:: c - - #include - - typedef struct _bson_writer_t bson_writer_t; - - bson_writer_t * - bson_writer_new (uint8_t **buf, - size_t *buflen, - size_t offset, - bson_realloc_func realloc_func, - void *realloc_func_ctx); - void - bson_writer_destroy (bson_writer_t *writer); - -Description ------------ - -The :symbol:`bson_writer_t` API provides an abstraction for serializing many BSON documents to a single memory region. The memory region may be dynamically allocated and re-allocated as more memory is demanded. This can be useful when building network packets from a high-level language. For example, you can serialize a Python Dictionary directly to a single buffer destined for a TCP packet. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_writer_begin - bson_writer_destroy - bson_writer_end - bson_writer_get_length - bson_writer_new - bson_writer_rollback - -Example -------- - -.. code-block:: c - - #include - - int - main (int argc, char *argv[]) - { - bson_writer_t *writer; - uint8_t *buf = NULL; - size_t buflen = 0; - bson_t *doc; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < 1000; i++) { - bson_writer_begin (writer, &doc); - BSON_APPEND_INT32 (&doc, "i", i); - bson_writer_end (writer); - } - - bson_writer_destroy (writer); - - bson_free (buf); - - return 0; - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_zero_free.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_zero_free.rst deleted file mode 100644 index 1c7d5e8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/bson_zero_free.rst +++ /dev/null @@ -1,24 +0,0 @@ -:man_page: bson_zero_free - -bson_zero_free() -================ - -Synopsis --------- - -.. code-block:: c - - void - bson_zero_free (void *mem, size_t size); - -Parameters ----------- - -* ``mem``: A memory region. -* ``size``: The size of ``mem``. - -Description ------------ - -This function behaves like :symbol:`bson_free()` except that it zeroes the memory first. This can be useful if you are storing passwords or other similarly important data. Note that if it truly is important, you probably want a page protected with ``mlock()`` as well to prevent it swapping to disk. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/character_and_string_routines.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/character_and_string_routines.rst deleted file mode 100644 index 5f9b37b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/character_and_string_routines.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_character_and_string_routines - -Character and String Routines -============================= - -We provide a small number of character and string routines to substitute for those that are not available on all platforms, and routines to make UTF-8 character manipulation convenient. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_ascii_strtoll - bson_snprintf - bson_strcasecmp - bson_strdup - bson_strdup_printf - bson_strdupv_printf - bson_strfreev - bson_strncpy - bson_strndup - bson_strnlen - bson_uint32_to_string - bson_utf8_escape_for_json - bson_utf8_from_unichar - bson_utf8_get_char - bson_utf8_next_char - bson_utf8_validate - bson_vsnprintf diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/conf.py b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/conf.py deleted file mode 100644 index 2f63a78..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/conf.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -import os.path -import sys - -# Ensure we can import "taglist" extension module. -this_path = os.path.dirname(__file__) -sys.path.append(os.path.normpath(os.path.join(this_path, '../../../build/sphinx'))) - -from mongoc_common import * - -extensions = [ - 'mongoc', - 'taglist', - 'sphinx.ext.extlinks', -] - -# General information about the project. -project = 'Libbson' -copyright = '2017-present, MongoDB, Inc' - -version_path = os.path.join( - os.path.dirname(__file__), '../../..', 'VERSION_CURRENT') -version = open(version_path).read().strip() -release_path = os.path.join( - os.path.dirname(__file__), '../../..', 'VERSION_RELEASED') -release = open(release_path).read().strip() -release_major, release_minor, release_patch = release.split('.') -release_download = 'https://github.com/mongodb/libbson/releases/download/{0}/libbson-{0}.tar.gz'.format(release) -rst_prolog = """ -.. |release_major| replace:: %(release_major)s - -.. |release_minor| replace:: %(release_minor)s - -.. |release_patch| replace:: %(release_patch)s - -.. |release_download| replace:: https://github.com/mongodb/libbson/releases/download/%(release)s/libbson-%(release)s.tar.gz -""" % locals() - -# The extension requires the "base" to contain '%s' exactly once, but we never intend to use it though -extlinks = {'release': (release_download+'%s', '')} - -language = 'en' -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] -master_doc = 'index' - -# -- Options for HTML output ---------------------------------------------- - -html_theme_path = ['../../../build/sphinx'] -html_theme = 'mongoc-theme' -html_title = html_shorttitle = 'libbson %s' % version -# html_favicon = None - -html_sidebars = { - '**': ['globaltoc.html'], - 'errors': [], # Make more room for the big table. -} - - -def add_canonical_link(app, pagename, templatename, context, doctree): - link = ('' % pagename) - - context['metatags'] = context.get('metatags', '') + link - - -def setup(app): - mongoc_common_setup(app) - app.connect('html-page-context', add_canonical_link) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/creating.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/creating.rst deleted file mode 100644 index d67f463..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/creating.rst +++ /dev/null @@ -1,108 +0,0 @@ -:man_page: bson_creating - -Creating a BSON Document -======================== - -The bson_t structure --------------------- - -BSON documents are created using the :symbol:`bson_t` structure. This structure encapsulates the necessary logic for encoding using the `BSON Specification `_. At the core, :symbol:`bson_t` is a buffer manager and set of encoding routines. - -.. tip:: - - BSON documents can live on the stack or the heap based on the performance needs or preference of the consumer. - -Let's start by creating a new BSON document on the stack. Whenever using libbson, make sure you ``#include ``. - -.. code-block:: c - - bson_t b; - - bson_init (&b); - -This creates an empty document. In JSON, this would be the same as ``{}``. - -We can now proceed to adding items to the BSON document. A variety of functions prefixed with ``bson_append_`` can be used based on the type of field you want to append. Let's append a UTF-8 encoded string. - -.. code-block:: c - - bson_append_utf8 (&b, "key", -1, "value", -1); - -Notice the two ``-1`` parameters. The first indicates that the length of ``key`` in bytes should be determined with ``strlen()``. Alternatively, we could have passed the number ``3``. The same goes for the second ``-1``, but for ``value``. - -Libbson provides macros to make this less tedious when using string literals. The following two appends are identical. - -.. code-block:: c - - bson_append_utf8 (&b, "key", -1, "value", -1); - BSON_APPEND_UTF8 (&b, "key", "value"); - -Now let's take a look at an example that adds a few different field types to a BSON document. - -.. code-block:: c - - bson_t b = BSON_INITIALIZER; - - BSON_APPEND_INT32 (&b, "a", 1); - BSON_APPEND_UTF8 (&b, "hello", "world"); - BSON_APPEND_BOOL (&b, "bool", true); - -Notice that we omitted the call to :symbol:`bson_init()`. By specifying ``BSON_INITIALIZER`` we can remove the need to initialize the structure to a base state. - -Sub-Documents and Sub-Arrays ----------------------------- - -To simplify the creation of sub-documents and arrays, :symbol:`bson_append_document_begin()` and :symbol:`bson_append_array_begin()` exist. These can be used to build a sub-document using the parent documents memory region as the destination buffer. - -.. code-block:: c - - bson_t parent; - bson_t child; - char *str; - - bson_init (&parent); - bson_append_document_begin (&parent, "foo", 3, &child); - bson_append_int32 (&child, "baz", 3, 1); - bson_append_document_end (&parent, &child); - - str = bson_as_canonical_extended_json (&parent, NULL); - printf ("%s\n", str); - bson_free (str); - - bson_destroy (&parent); - -.. code-block:: none - - { "foo" : { "baz" : 1 } } - -Simplified BSON C Object Notation ---------------------------------- - -Creating BSON documents by hand can be tedious and time consuming. BCON, or BSON C Object Notation, was added to allow for the creation of BSON documents in a format that looks closer to the destination format. - -The following example shows the use of BCON. Notice that values for fields are wrapped in the ``BCON_*`` macros. These are required for the variadic processor to determine the parameter type. - -.. code-block:: c - - bson_t *doc; - - doc = BCON_NEW ("foo", - "{", - "int", - BCON_INT32 (1), - "array", - "[", - BCON_INT32 (100), - "{", - "sub", - BCON_UTF8 ("value"), - "}", - "]", - "}"); - -Creates the following document - -.. code-block:: none - - { "foo" : { "int" : 1, "array" : [ 100, { "sub" : "value" } ] } } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/cross-platform-notes.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/cross-platform-notes.rst deleted file mode 100644 index 8dfbe93..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/cross-platform-notes.rst +++ /dev/null @@ -1,10 +0,0 @@ -:man_page: bson_cross_platform_notes - -Cross Platform Notes -==================== - -.. toctree:: - :titlesonly: - - endianness - threading diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/endianness.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/endianness.rst deleted file mode 100644 index 7f13b0c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/endianness.rst +++ /dev/null @@ -1,7 +0,0 @@ -:man_page: bson_endianness - -Endianness -========== - -The BSON specification dictates that the encoding format is in little-endian. Many implementations simply ignore endianness altogether and expect that they are to be run on little-endian. Libbson supports both Big and Little Endian systems. This means we use ``memcpy()`` when appropriate instead of dereferencing and properly convert to and from the host endian format. We expect the compiler intrinsics to optimize it to a dereference when possible. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/errors.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/errors.rst deleted file mode 100644 index e2255e1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/errors.rst +++ /dev/null @@ -1,23 +0,0 @@ -:man_page: bson_errors - -Handling Errors -=============== - -Description ------------ - -Many libbson functions report errors by returning ``NULL`` or -1 and filling out a :symbol:`bson_error_t` structure with an error domain, error code, and message. - -* ``error.domain`` names the subsystem that generated the error. -* ``error.code`` is a domain-specific error type. -* ``error.message`` describes the error. - -Some error codes overlap with others; always check both the domain and code to determine the type of error. - -===================== ====================================== ================================================================================================== -``BSON_ERROR_JSON`` ``BSON_JSON_ERROR_READ_CORRUPT_JS`` :symbol:`bson_json_reader_t` tried to parse invalid MongoDB Extended JSON. - ``BSON_JSON_ERROR_READ_INVALID_PARAM`` Tried to parse a valid JSON document that is invalid as MongoDBExtended JSON. - ``BSON_JSON_ERROR_READ_CB_FAILURE`` An internal callback failure during JSON parsing. -``BSON_ERROR_READER`` ``BSON_ERROR_READER_BADFD`` :symbol:`bson_json_reader_new_from_file` could not open the file. -===================== ====================================== ================================================================================================== - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/full_index.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/full_index.rst deleted file mode 100644 index 4574cf0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/full_index.rst +++ /dev/null @@ -1,15 +0,0 @@ -:man_page: bson_reference -:orphan: - -.. Yes it's confusing: the home page is called "index" so this is "full_index", - and it works by including the complete Table of Contents from the homepage, - i.e., "index". - -Index -===== - -.. toctree:: - :maxdepth: 6 - :titlesonly: - - index diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/guides.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/guides.rst deleted file mode 100644 index 0d4b568..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/guides.rst +++ /dev/null @@ -1,11 +0,0 @@ -:man_page: bson_guides - -Guides -====== - -.. toctree:: - :titlesonly: - - streaming-bson - json - valgrind diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/.nojekyll b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/.nojekyll deleted file mode 100644 index 1910281..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/.nojekyll +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/CMakeLists.txt deleted file mode 100644 index b5800a4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -# Additional generated static files -extra_dist_generated ( - .nojekyll - objects.inv - _static/ajax-loader.gif - _static/basic.css - _static/comment-bright.png - _static/comment-close.png - _static/comment.png - _static/doctools.js - _static/down-pressed.png - _static/down.png - _static/file.png - _static/jquery.js - _static/minus.png - _static/mongoc.css - _static/plus.png - _static/pygments.css - _static/searchtools.js - _static/underscore.js - _static/up-pressed.png - _static/up.png - _static/websupport.js - genindex.html - search.html - searchindex.js -) - -set_dist_list (src_libbson_doc_html_DIST - CMakeLists.txt -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/ajax-loader.gif b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/ajax-loader.gif deleted file mode 100644 index 61faf8cab23993bd3e1560bff0668bd628642330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/basic.css b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/basic.css deleted file mode 100644 index 104f076..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/basic.css +++ /dev/null @@ -1,676 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 450px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist td { - vertical-align: top; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -div.code-block-caption { - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: relative; - left: 0px; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/comment-bright.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/comment-bright.png deleted file mode 100644 index 15e27edb12ac25701ac0ac21b97b52bb4e45415e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmVgfIX78 z$8Pzv({A~p%??+>KickCb#0FM1rYN=mBmQ&Nwp<#JXUhU;{|)}%&s>suq6lXw*~s{ zvHx}3C%<;wE5CH!BR{p5@ml9ws}y)=QN-kL2?#`S5d*6j zk`h<}j1>tD$b?4D^N9w}-k)bxXxFg>+#kme^xx#qg6FI-%iv2U{0h(Y)cs%5a|m%Pn_K3X_bDJ>EH#(Fb73Z zfUt2Q3B>N+ot3qb*DqbTZpFIn4a!#_R-}{?-~Hs=xSS6p&$sZ-k1zDdtqU`Y@`#qL z&zv-~)Q#JCU(dI)Hf;$CEnK=6CK50}q7~wdbI->?E07bJ0R;!GSQTs5Am`#;*WHjvHRvY?&$Lm-vq1a_BzocI^ULXV!lbMd%|^B#fY;XX)n<&R^L z=84u1e_3ziq;Hz-*k5~zwY3*oDKt0;bM@M@@89;@m*4RFgvvM_4;5LB!@OB@^WbVT zjl{t;a8_>od-~P4 m{5|DvB&z#xT;*OnJqG}gk~_7HcNkCr0000W zanA~u9RIXo;n7c96&U)YLgs-FGlx~*_c{Jgvesu1E5(8YEf&5wF=YFPcRe@1=MJmi zag(L*xc2r0(slpcN!vC5CUju;vHJkHc*&70_n2OZsK%O~A=!+YIw z7zLLl7~Z+~RgWOQ=MI6$#0pvpu$Q43 zP@36QAmu6!_9NPM?o<1_!+stoVRRZbW9#SPe!n;#A_6m8f}|xN1;H{`0RoXQ2LM47 zt(g;iZ6|pCb@h2xk&(}S3=EVBUO0e90m2Lp5CB<(SPIaB;n4))3JB87Or#XPOPcum z?<^(g+m9}VNn4Y&B`g8h{t_$+RB1%HKRY6fjtd-<7&EsU;vs0GM(Lmbhi%Gwcfs0FTF}T zL{_M6Go&E0Eg8FuB*(Yn+Z*RVTBE@10eIOb3El^MhO`GabDll(V0&FlJi2k^;q8af zkENdk2}x2)_KVp`5OAwXZM;dG0?M-S)xE1IKDi6BY@5%Or?#aZ9$gcX)dPZ&wA1a< z$rFXHPn|TBf`e?>Are8sKtKrKcjF$i^lp!zkL?C|y^vlHr1HXeVJd;1I~g&Ob-q)& z(fn7s-KI}G{wnKzg_U5G(V%bX6uk zIa+<@>rdmZYd!9Y=C0cuchrbIjuRB_Wq{-RXlic?flu1*_ux}x%(HDH&nT`k^xCeC ziHi1!ChH*sQ6|UqJpTTzX$aw8e(UfcS^f;6yBWd+(1-70zU(rtxtqR%j z-lsH|CKQJXqD{+F7V0OTv8@{~(wp(`oIP^ZykMWgR>&|RsklFMCnOo&Bd{le} zV5F6424Qzl;o2G%oVvmHgRDP9!=rK8fy^!yV8y*4p=??uIRrrr0?>O!(z*g5AvL2!4z0{sq%vhG*Po}`a<6%kTK5TNhtC8}rXNu&h^QH4A&Sk~Autm*s~45(H7+0bi^MraaRVzr05hQ3iK?j` zR#U@^i0WhkIHTg29u~|ypU?sXCQEQgXfObPW;+0YAF;|5XyaMAEM0sQ@4-xCZe=0e z7r$ofiAxn@O5#RodD8rh5D@nKQ;?lcf@tg4o+Wp44aMl~c47azN_(im0N)7OqdPBC zGw;353_o$DqGRDhuhU$Eaj!@m000000NkvXXu0mjfjZ7Z_ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/doctools.js b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/doctools.js deleted file mode 100644 index ffadbec..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/doctools.js +++ /dev/null @@ -1,315 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/down-pressed.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/down-pressed.png deleted file mode 100644 index 5756c8cad8854722893dc70b9eb4bb0400343a39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`OFdm2Ln;`PZ^+1>KjR?B@S0W7 z%OS_REiHONoJ6{+Ks@6k3590|7k9F+ddB6!zw3#&!aw#S`x}3V3&=A(a#84O-&F7T z^k3tZB;&iR9siw0|F|E|DAL<8r-F4!1H-;1{e*~yAKZN5f0|Ei6yUmR#Is)EM(Po_ zi`qJR6|P<~+)N+kSDgL7AjdIC_!O7Q?eGb+L+qOjm{~LLinM4NHn7U%HcK%uoMYO5 VJ~8zD2B3o(JYD@<);T3K0RV0%P>BEl diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/down.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/down.png deleted file mode 100644 index 1b3bdad2ceffae91cee61b32f3295f9bbe646e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6CVIL!hEy=F?b*7pIY7kW{q%Rg zx!yQ<9v8bmJwa`TQk7YSw}WVQ()mRdQ;TC;* diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/file.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/file.png deleted file mode 100644 index a858a410e4faa62ce324d814e4b816fff83a6fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/jquery.js b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/jquery.js deleted file mode 100644 index 644d35e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/_static/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), -a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), -null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" - - - - - - - - - - - - - -
-
-
-
- - - - -
-

API Reference

-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array.html deleted file mode 100644 index 92a961e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_array() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_array()

-
-

Synopsis

-
#define BSON_APPEND_ARRAY(b, key, val) \
-   bson_append_array (b, key, (int) strlen (key), val)
-
-bool
-bson_append_array (bson_t *bson,
-                   const char *key,
-                   int key_length,
-                   const bson_t *array);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • array: A bson_t.
  • -
-
-
-

Description

-

The bson_append_array() function shall append array to bson using the specified key. The type of the field will be an array, but it is the responsibility of the caller to ensure that the keys of array are properly formatted with string keys such as “0”, “1”, “2” and so forth.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function fails if appending the array grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_begin.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_begin.html deleted file mode 100644 index b855443..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_begin.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - bson_append_array_begin() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_array_begin()

-
-

Synopsis

-
#define BSON_APPEND_ARRAY_BEGIN(b, key, child) \
-   bson_append_array_begin (b, key, (int) strlen (key), child)
-
-bool
-bson_append_array_begin (bson_t *bson,
-                         const char *key,
-                         int key_length,
-                         bson_t *child);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: A string containing the name for the key.
  • -
  • key_length: The length of key or -1 to call strlen().
  • -
  • child: A bson_t.
  • -
-
-
-

Description

-

The bson_append_array_begin() function shall begin appending an array field to bson. This allows for incrementally building a sub-array. Doing so will generally yield better performance as you will serialize to a single buffer. When done building the sub-array, the caller MUST call bson_append_array_end().

-

For generating array element keys, see bson_uint32_to_string().

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the array grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_end.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_end.html deleted file mode 100644 index 4148994..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_array_end.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_append_array_end() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_array_end()

-
-

Synopsis

-
bool
-bson_append_array_end (bson_t *bson, bson_t *child);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_append_array_end() function shall complete the appending of an array field started with bson_append_array_begin(). child is invalid after calling this function.

-
-
-

Returns

-

Returns true if successful.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_binary.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_binary.html deleted file mode 100644 index 9f7aa8b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_binary.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - bson_append_binary() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_binary()

-
-

Synopsis

-
#define BSON_APPEND_BINARY(b, key, subtype, val, len) \
-   bson_append_binary (b, key, (int) strlen (key), subtype, val, len)
-
-bool
-bson_append_binary (bson_t *bson,
-                    const char *key,
-                    int key_length,
-                    bson_subtype_t subtype,
-                    const uint8_t *binary,
-                    uint32_t length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: The key name.
  • -
  • key_length: The length of key in bytes or -1 to use strlen().
  • -
  • subtype: A bson_subtype_t indicating the binary subtype.
  • -
  • binary: A buffer to embed as binary data. Must not be NULL.
  • -
  • length: The length of buffer in bytes.
  • -
-
-
-

Description

-

The bson_append_binary() function shall append a new element to bson containing the binary data provided.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending binary grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_bool.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_bool.html deleted file mode 100644 index 2a1a37e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_bool.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_append_bool() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_bool()

-
-

Synopsis

-
#define BSON_APPEND_BOOL(b, key, val) \
-   bson_append_bool (b, key, (int) strlen (key), val)
-
-bool
-bson_append_bool (bson_t *bson, const char *key, int key_length, bool value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: The name of the field.
  • -
  • key_length: The length of key or -1 to use strlen().
  • -
  • value: true or false.
  • -
-
-
-

Description

-

The bson_append_bool() function shall append a new element to bson containing the boolean provided.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code.html deleted file mode 100644 index b3fca6e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_code() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_code()

-
-

Synopsis

-
#define BSON_APPEND_CODE(b, key, val) \
-   bson_append_code (b, key, (int) strlen (key), val)
-
-bool
-bson_append_code (bson_t *bson,
-                  const char *key,
-                  int key_length,
-                  const char *javascript);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: The key name.
  • -
  • key_length: The length of key or -1 to use strlen().
  • -
  • javascript: A UTF-8 encoded string containing the javascript.
  • -
-
-
-

Description

-

The bson_append_code() function shall append a new element to bson using the UTF-8 encoded javascript provided. javascript must be a NULL terminated C string.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending javascript grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code_with_scope.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code_with_scope.html deleted file mode 100644 index 3cd4b19..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_code_with_scope.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - bson_append_code_with_scope() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_code_with_scope()

-
-

Synopsis

-
#define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \
-   bson_append_code_with_scope (b, key, (int) strlen (key), val, scope)
-
-bool
-bson_append_code_with_scope (bson_t *bson,
-                             const char *key,
-                             int key_length,
-                             const char *javascript,
-                             const bson_t *scope);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • javascript: A NULL-terminated UTF-8 encoded string containing the javascript fragment.
  • -
  • scope: Optional bson_t containing the scope for javascript.
  • -
-
-
-

Description

-

The bson_append_code_with_scope() function shall perform like bson_append_code() except it allows providing a scope to the javascript function in the form of a bson document.

-

If scope is NULL, this function appends an element with BSON type “code”, otherwise with BSON type “code with scope”.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending javascript and scope grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_date_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_date_time.html deleted file mode 100644 index 64308e0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_date_time.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_date_time() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_date_time()

-
-

Synopsis

-
#define BSON_APPEND_DATE_TIME(b, key, val) \
-   bson_append_date_time (b, key, (int) strlen (key), val)
-
-bool
-bson_append_date_time (bson_t *bson,
-                       const char *key,
-                       int key_length,
-                       int64_t value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: The date and time as specified in milliseconds since the UNIX epoch.
  • -
-
-
-

Description

-

The bson_append_date_time() function shall append a new element to a bson document containing a date and time with no timezone information. value is assumed to be in UTC format of milliseconds since the UNIX epoch. value MAY be negative.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_dbpointer.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_dbpointer.html deleted file mode 100644 index 51c75ee..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_dbpointer.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - bson_append_dbpointer() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_dbpointer()

-
-

Synopsis

-
#define BSON_APPEND_DBPOINTER(b, key, coll, oid) \
-   bson_append_dbpointer (b, key, (int) strlen (key), coll, oid)
-
-bool
-bson_append_dbpointer (bson_t *bson,
-                       const char *key,
-                       int key_length,
-                       const char *collection,
-                       const bson_oid_t *oid);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • collection: The target collection name.
  • -
  • oid: The target document identifier.
  • -
-
-
-

Description

-
-

Warning

-

The dbpointer field type is DEPRECATED and should only be used when interacting with legacy systems.

-
-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the array grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_decimal128.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_decimal128.html deleted file mode 100644 index a63e5b2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_decimal128.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_decimal128() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_decimal128()

-
-

Synopsis

-
#define BSON_APPEND_DECIMAL128(b, key, val) \
-   bson_append_decimal128 (b, key, (int) strlen (key), val)
-
-bool
-bson_append_decimal128 (bson_t *bson,
-                        const char *key,
-                        int key_length,
-                        const bson_decimal128_t *value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: A bson_decimal128_t.
  • -
-
-
-

Description

-

The bson_append_decimal128() function shall append a new element to bson containing a Decimal 128.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document.html deleted file mode 100644 index 9ae86a4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_document() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_document()

-
-

Synopsis

-
#define BSON_APPEND_DOCUMENT(b, key, val) \
-   bson_append_document (b, key, (int) strlen (key), val)
-
-bool
-bson_append_document (bson_t *bson,
-                      const char *key,
-                      int key_length,
-                      const bson_t *value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: A bson_t containing the sub-document to append.
  • -
-
-
-

Description

-

The bson_append_document() function shall append child to bson using the specified key. The type of the field will be a document.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_begin.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_begin.html deleted file mode 100644 index 8c62b1a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_begin.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - bson_append_document_begin() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_document_begin()

-
-

Synopsis

-
#define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \
-   bson_append_document_begin (b, key, (int) strlen (key), child)
-
-bool
-bson_append_document_begin (bson_t *bson,
-                            const char *key,
-                            int key_length,
-                            bson_t *child);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • child: An uninitialized bson_t to be initialized as the sub-document.
  • -
-
-
-

Description

-

The bson_append_document_begin() function shall begin appending a sub-document to bson. Use child to add fields to the sub-document. When completed, call bson_append_document_end() to complete the element.

-

child MUST be an uninitialized bson_t to avoid leaking memory.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if bson must grow larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_end.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_end.html deleted file mode 100644 index 7d07bbf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_document_end.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_append_document_end() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_document_end()

-
-

Synopsis

-
bool
-bson_append_document_end (bson_t *bson, bson_t *child);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_append_document_end() function shall complete the appending of a document with bson_append_document_begin(). child is invalid after calling this function.

-
-
-

Returns

-

Returns true if successful.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_double.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_double.html deleted file mode 100644 index f74aa25..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_double.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_double() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_double()

-
-

Synopsis

-
#define BSON_APPEND_DOUBLE(b, key, val) \
-   bson_append_double (b, key, (int) strlen (key), val)
-
-bool
-bson_append_double (bson_t *bson,
-                    const char *key,
-                    int key_length,
-                    double value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: A double value to append.
  • -
-
-
-

Description

-

The bson_append_double() function shall append a new element to a bson document of type double.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int32.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int32.html deleted file mode 100644 index 21a0d89..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int32.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_int32() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_int32()

-
-

Synopsis

-
#define BSON_APPEND_INT32(b, key, val) \
-   bson_append_int32 (b, key, (int) strlen (key), val)
-
-bool
-bson_append_int32 (bson_t *bson,
-                   const char *key,
-                   int key_length,
-                   int32_t value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: An int32_t.
  • -
-
-
-

Description

-

The bson_append_int32() function shall append a new element to bson containing a 32-bit signed integer.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int64.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int64.html deleted file mode 100644 index 8b1b74b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_int64.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_int64() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_int64()

-
-

Synopsis

-
#define BSON_APPEND_INT64(b, key, val) \
-   bson_append_int64 (b, key, (int) strlen (key), val)
-
-bool
-bson_append_int64 (bson_t *bson,
-                   const char *key,
-                   int key_length,
-                   int64_t value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: An int64_t.
  • -
-
-
-

Description

-

The bson_append_int64() function shall append a new element to bson containing a 64-bit signed integer.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_iter.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_iter.html deleted file mode 100644 index 9d982bb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_iter.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_append_iter() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_iter()

-
-

Synopsis

-
bool
-bson_append_iter (bson_t *bson,
-                  const char *key,
-                  int key_length,
-                  const bson_iter_t *iter);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: Optional field name. If NULL, uses bson_iter_key(iter).
  • -
  • key_length: The length of key or -1 to use strlen().
  • -
  • iter: A bson_iter_t located on the position of the element to append.
  • -
-
-
-

Description

-

Appends the value at the current position of iter to the document.

-
-
-

Returns

-

Returns true if successful; false if the operation would overflow the maximum document size or another invalid state is detected.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_maxkey.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_maxkey.html deleted file mode 100644 index 56f9e7a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_maxkey.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_append_maxkey() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_maxkey()

-
-

Synopsis

-
#define BSON_APPEND_MAXKEY(b, key) \
-   bson_append_maxkey (b, key, (int) strlen (key))
-
-bool
-bson_append_maxkey (bson_t *bson, const char *key, int key_length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
-
-
-

Description

-

The bson_append_maxkey() function shall append an element of type BSON_TYPE_MAXKEY to a bson document. This is primarily used in queries and unlikely to be used when storing a document to MongoDB.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_minkey.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_minkey.html deleted file mode 100644 index 13b7f9d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_minkey.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_append_minkey() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_minkey()

-
-

Synopsis

-
#define BSON_APPEND_MINKEY(b, key) \
-   bson_append_minkey (b, key, (int) strlen (key))
-
-bool
-bson_append_minkey (bson_t *bson, const char *key, int key_length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
-
-
-

Description

-

The bson_append_minkey() function shall append an element of type BSON_TYPE_MINKEY to a bson document. This is primarily used in queries and unlikely to be used when storing a document to MongoDB.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_now_utc.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_now_utc.html deleted file mode 100644 index e6cdd3b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_now_utc.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_append_now_utc() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_now_utc()

-
-

Synopsis

-
bool
-bson_append_now_utc (bson_t *bson, const char *key, int key_length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
-
-
-

Description

-

The bson_append_now_utc() function is a helper to get the current date and time in UTC and append it to bson as a BSON_TYPE_DATE_TIME element.

-

This function calls bson_append_date_time() internally.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_null.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_null.html deleted file mode 100644 index 61f3357..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_null.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_append_null() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_null()

-
-

Synopsis

-
#define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key))
-
-bool
-bson_append_null (bson_t *bson, const char *key, int key_length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
-
-
-

Description

-

The bson_append_null() function shall append a new element to bson of type BSON_TYPE_NULL.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_oid.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_oid.html deleted file mode 100644 index a790fee..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_oid.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_oid() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_oid()

-
-

Synopsis

-
#define BSON_APPEND_OID(b, key, val) \
-   bson_append_oid (b, key, (int) strlen (key), val)
-
-bool
-bson_append_oid (bson_t *bson,
-                 const char *key,
-                 int key_length,
-                 const bson_oid_t *oid);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • oid: A bson_oid_t.
  • -
-
-
-

Description

-

The bson_append_oid() function shall append a new element to bson of type BSON_TYPE_OID. oid MUST be a pointer to a bson_oid_t.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending oid grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex.html deleted file mode 100644 index 0ee3889..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - bson_append_regex() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_regex()

-
-

Synopsis

-
#define BSON_APPEND_REGEX(b, key, val, opt) \
-   bson_append_regex (b, key, (int) strlen (key), val, opt)
-
-bool
-bson_append_regex (bson_t *bson,
-                   const char *key,
-                   int key_length,
-                   const char *regex,
-                   const char *options);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • regex: An ASCII string containing the regex.
  • -
  • options: An optional string containing the regex options as a string.
  • -
-
-
-

Description

-

Appends a new field to bson of type BSON_TYPE_REGEX. regex should be the regex string. options should contain the options for the regex.

-

Valid characters for options include:

-
    -
  • 'i' for case-insensitive.
  • -
  • 'm' for multiple matching.
  • -
  • 'x' for verbose mode.
  • -
  • 'l' to make w and W locale dependent.
  • -
  • 's' for dotall mode (‘.’ matches everything)
  • -
  • 'u' to make w and W match unicode.
  • -
-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the regex grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex_w_len.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex_w_len.html deleted file mode 100644 index df143ad..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_regex_w_len.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - bson_append_regex_w_len() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_regex_w_len()

-
-

Synopsis

-
bool
-bson_append_regex_w_len (bson_t *bson,
-                          const char *key,
-                          int key_length,
-                          const char *regex,
-                          int regex_length,
-                          const char *options);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • regex: An ASCII string containing the regex.
  • -
  • regex_length: The length of regex in bytes, or -1 to determine the length with strlen().
  • -
  • options: An optional string containing the regex options as a string.
  • -
-
-
-

Description

-

Appends a new field to bson of type BSON_TYPE_REGEX. regex should be the regex string. options should contain the options for the regex.

-

Valid characters for options include:

-
    -
  • 'i' for case-insensitive.
  • -
  • 'm' for multiple matching.
  • -
  • 'x' for verbose mode.
  • -
  • 'l' to make w and W locale dependent.
  • -
  • 's' for dotall mode (‘.’ matches everything)
  • -
  • 'u' to make w and W match unicode.
  • -
-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the regex grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_symbol.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_symbol.html deleted file mode 100644 index 03b7ba5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_symbol.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - bson_append_symbol() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_symbol()

-
-

Synopsis

-
#define BSON_APPEND_SYMBOL(b, key, val) \
-   bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val))
-
-bool
-bson_append_symbol (bson_t *bson,
-                    const char *key,
-                    int key_length,
-                    const char *value,
-                    int length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: The symbol.
  • -
  • length: A length of symbol in bytes, or -1 to determine the length with strlen().
  • -
-
-
-

Description

-

Appends a new field to bson of type BSON_TYPE_SYMBOL. This BSON type is deprecated and should not be used in new code.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_time_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_time_t.html deleted file mode 100644 index d42ae71..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_time_t.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_time_t() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_time_t()

-
-

Synopsis

-
#define BSON_APPEND_TIME_T(b, key, val) \
-   bson_append_time_t (b, key, (int) strlen (key), val)
-
-bool
-bson_append_time_t (bson_t *bson,
-                    const char *key,
-                    int key_length,
-                    time_t value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: A time_t.
  • -
-
-
-

Description

-

The bson_append_time_t() function is a helper that takes a time_t instead of milliseconds since the UNIX epoch.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timestamp.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timestamp.html deleted file mode 100644 index 06171dd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timestamp.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - bson_append_timestamp() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_timestamp()

-
-

Synopsis

-
#define BSON_APPEND_TIMESTAMP(b, key, val, inc) \
-   bson_append_timestamp (b, key, (int) strlen (key), val, inc)
-
-bool
-bson_append_timestamp (bson_t *bson,
-                       const char *key,
-                       int key_length,
-                       uint32_t timestamp,
-                       uint32_t increment);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • timestamp: A uint32_t.
  • -
  • increment: A uint32_t.
  • -
-
-
-

Description

-

This function is not similar in functionality to bson_append_date_time(). Timestamp elements are different in that they include only second precision and an increment field.

-

They are primarily used for intra-MongoDB server communication.

-

The bson_append_timestamp() function shall append a new element of type BSON_TYPE_TIMESTAMP.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timeval.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timeval.html deleted file mode 100644 index 66afad0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_timeval.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_timeval() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_timeval()

-
-

Synopsis

-
#define BSON_APPEND_TIMEVAL(b, key, val) \
-   bson_append_timeval (b, key, (int) strlen (key), val)
-
-bool
-bson_append_timeval (bson_t *bson,
-                     const char *key,
-                     int key_length,
-                     struct timeval *value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: A struct timeval.
  • -
-
-
-

Description

-

The bson_append_timeval() function is a helper that takes a struct timeval instead of milliseconds since the UNIX epoch.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_undefined.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_undefined.html deleted file mode 100644 index 1978cf1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_undefined.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_append_undefined() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_undefined()

-
-

Synopsis

-
#define BSON_APPEND_UNDEFINED(b, key) \
-   bson_append_undefined (b, key, (int) strlen (key))
-
-bool
-bson_append_undefined (bson_t *bson, const char *key, int key_length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
-
-
-

Description

-

The bson_append_undefined() function shall append a new element to bson of type BSON_TYPE_UNDEFINED. Undefined is common in Javascript. However, this element type is deprecated and should not be used in new code.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_utf8.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_utf8.html deleted file mode 100644 index a4bd1f3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_utf8.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - bson_append_utf8() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_utf8()

-
-

Synopsis

-
#define BSON_APPEND_UTF8(b, key, val) \
-   bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val))
-
-bool
-bson_append_utf8 (bson_t *bson,
-                  const char *key,
-                  int key_length,
-                  const char *value,
-                  int length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: A UTF-8 encoded string.
  • -
  • length: The number of bytes in value excluding the trailing \0, or -1 to determine the length with strlen().
  • -
-
-
-

Description

-

The bson_append_utf8() function shall append a UTF-8 encoded string to bson.

-

value MUST be valid UTF-8.

-

Some UTF-8 implementations allow for \0 to be contained within the string (excluding the termination \0. This is allowed, but remember that it could cause issues with communicating with external systems that do not support it.

-

It is suggested to use modified UTF-8 which uses a 2 byte representation for embedded \0 within the string. This will allow these UTF-8 encoded strings to used with many libc functions.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_value.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_value.html deleted file mode 100644 index 94d83b8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_append_value.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_append_value() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_append_value()

-
-

Synopsis

-
#define BSON_APPEND_VALUE(b, key, val) \
-   bson_append_value (b, key, (int) strlen (key), (val))
-
-bool
-bson_append_value (bson_t *bson,
-                   const char *key,
-                   int key_length,
-                   const bson_value_t *value);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: An ASCII C string containing the name of the field.
  • -
  • key_length: The length of key in bytes, or -1 to determine the length with strlen().
  • -
  • value: A bson_value_t.
  • -
-
-
-

Description

-

Appends a new field to bson by determining the boxed type in value. This is useful if you want to copy fields between documents but do not know the field type until runtime.

-
-
-

Returns

-

Returns true if the operation was applied successfully. The function will fail if appending the value grows bson larger than INT32_MAX.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_array_as_json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_array_as_json.html deleted file mode 100644 index 0daa4bf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_array_as_json.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - bson_array_as_json() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_array_as_json()

-
-

Synopsis

-
char *
-bson_array_as_json (const bson_t *bson, size_t *length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • length: An optional location for the length of the resulting string.
  • -
-
-
-

Description

-

The bson_array_as_json() function shall encode bson as a UTF-8 -string using libbson’s legacy JSON format, except the outermost element is -encoded as a JSON array, rather than a JSON document. -The caller is responsible for freeing the resulting UTF-8 encoded string by -calling bson_free() with the result.

-

If non-NULL, length will be set to the length of the result in bytes.

-
-
-

Returns

-

If successful, a newly allocated UTF-8 encoded string and length is set.

-

Upon failure, NULL is returned.

-
-
-

Example

-
#include <bson/bson.h>
-
-int main ()
-{
-   bson_t bson;
-   char *str;
-
-   bson_init (&bson);
-   /* BSON array is a normal BSON document with integer values for the keys,
-    * starting with 0 and continuing sequentially
-    */
-   BSON_APPEND_UTF8 (&bson, "0", "foo");
-   BSON_APPEND_UTF8 (&bson, "1", "bar");
-
-   str = bson_array_as_json (&bson, NULL);
-   /* Prints
-    * [ "foo", "bar" ]
-    */
-   printf ("%s\n", str);
-   bson_free (str);
-
-   bson_destroy (&bson);
-}
-
-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_canonical_extended_json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_canonical_extended_json.html deleted file mode 100644 index dc12721..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_canonical_extended_json.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - bson_as_canonical_extended_json() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_as_canonical_extended_json()

-
-

Synopsis

-
char *
-bson_as_canonical_extended_json (const bson_t *bson, size_t *length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • length: An optional location for the length of the resulting string.
  • -
-
-
-

Description

-

The bson_as_canonical_extended_json() encodes bson as a UTF-8 string in the canonical MongoDB Extended JSON format.

-

The caller is responsible for freeing the resulting UTF-8 encoded string by calling bson_free() with the result.

-

If non-NULL, length will be set to the length of the result in bytes.

-
-
-

Returns

-

If successful, a newly allocated UTF-8 encoded string and length is set.

-

Upon failure, NULL is returned.

-
-
-

Example

-
char *str = bson_as_canonical_extended_json (doc, NULL);
-printf ("%s\n", str);
-bson_free (str);
-
-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_json.html deleted file mode 100644 index 22ac620..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_json.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - bson_as_json() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_as_json()

-
-

Synopsis

-
char *
-bson_as_json (const bson_t *bson, size_t *length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • length: An optional location for the length of the resulting string.
  • -
-
-
-

Description

-

The bson_as_json() function shall encode bson as a UTF-8 string using libbson’s legacy JSON format. This function is superseded by bson_as_canonical_extended_json() and bson_as_relaxed_extended_json(), which use the same MongoDB Extended JSON format as all other MongoDB drivers.

-

The caller is responsible for freeing the resulting UTF-8 encoded string by calling bson_free() with the result.

-

If non-NULL, length will be set to the length of the result in bytes.

-
-
-

Returns

-

If successful, a newly allocated UTF-8 encoded string and length is set.

-

Upon failure, NULL is returned.

-
-
-

Example

-
#include <bson/bson.h>
-
-int main ()
-{
-   bson_t bson;
-   char *str;
-
-   bson_init (&bson);
-   BSON_APPEND_UTF8 (&bson, "0", "foo");
-   BSON_APPEND_UTF8 (&bson, "1", "bar");
-
-   str = bson_as_json (&bson, NULL);
-   /* Prints
-    * { "0" : "foo", "1" : "bar" }
-    */
-   printf ("%s\n", str);
-   bson_free (str);
-
-   bson_destroy (&bson);
-}
-
-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_relaxed_extended_json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_relaxed_extended_json.html deleted file mode 100644 index b92c076..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_as_relaxed_extended_json.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - bson_as_relaxed_extended_json() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_as_relaxed_extended_json()

-
-

Synopsis

-
char *
-bson_as_relaxed_extended_json (const bson_t *bson, size_t *length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • length: An optional location for the length of the resulting string.
  • -
-
-
-

Description

-

The bson_as_relaxed_extended_json() encodes bson as a UTF-8 string in the relaxed MongoDB Extended JSON format.

-

The caller is responsible for freeing the resulting UTF-8 encoded string by calling bson_free() with the result.

-

If non-NULL, length will be set to the length of the result in bytes.

-
-
-

Returns

-

If successful, a newly allocated UTF-8 encoded string and length is set.

-

Upon failure, NULL is returned.

-
-
-

Example

-
char *str = bson_as_relaxed_extended_json (doc, NULL);
-printf ("%s\n", str);
-bson_free (str);
-
-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_ascii_strtoll.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_ascii_strtoll.html deleted file mode 100644 index 0ad0806..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_ascii_strtoll.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - bson_ascii_strtoll() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_ascii_strtoll()

-
-

Synopsis

-
int64_t
-bson_ascii_strtoll (const char *str, char **endptr, int base);
-
-
-
-
-

Parameters

-
    -
  • str: The string to convert.
  • -
  • endptr: Address of the first invalid character of str, or null.
  • -
  • base: The base to use for the conversion.
  • -
-
-
-

Description

-

A portable version of strtoll().

-

Converts a string to a 64-bit signed integer according to the given base, -which must be 16, 10, or 8. Leading whitespace will be ignored.

-

If base is 0 is passed in, the base is inferred from the string’s leading -characters. Base-16 numbers start with “0x” or “0X”, base-8 numbers start with -“0”, base-10 numbers start with a digit from 1 to 9.

-

If endptr is not NULL, it will be assigned the address of the first invalid -character of str, or its null terminating byte if the entire string was valid.

-

If an invalid value is encountered, errno will be set to EINVAL and zero will -be returned. If the number is out of range, errno is set to ERANGE and -LLONG_MAX or LLONG_MIN is returned.

-
-
-

Returns

-

The result of the conversion.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_check_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_check_version.html deleted file mode 100644 index 010eb02..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_check_version.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_check_version() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_check_version()

-
-

Synopsis

-
bool
-bson_check_version (int required_major, int required_minor, int required_micro);
-
-
-
-
-

Parameters

-
    -
  • required_major: The minimum major version required.
  • -
  • required_minor: The minimum minor version required.
  • -
  • required_micro: The minimum micro version required.
  • -
-
-
-

Description

-

Check at runtime if this release of libbson meets a required version.

-
-
-

Returns

-

True if libbson’s version is greater than or equal to the required version.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_compare.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_compare.html deleted file mode 100644 index f736a56..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_compare.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - bson_compare() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_compare()

-
-

Synopsis

-
int
-bson_compare (const bson_t *bson, const bson_t *other);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_compare() function shall compare two bson documents for equality.

-

This can be useful in conjunction with _qsort()_.

-

If equal, 0 is returned.

-
-

Tip

-

This function uses _memcmp()_ internally, so the semantics are the same.

-
-
-
-

Returns

-

less than zero, zero, or greater than zero in qsort() style.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_concat.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_concat.html deleted file mode 100644 index e5f7d9a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_concat.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - bson_concat() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_concat()

-
-

Synopsis

-
bool
-bson_concat (bson_t *dst, const bson_t *src);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_concat() function shall append the contents of src to dst.

-
-
-

Returns

-

Returns true if successful; false if the operation would overflow the maximum document size or another invalid state is detected.

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_destroy.html deleted file mode 100644 index 00601e6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_destroy.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_context_destroy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_context_destroy()

-
-

Synopsis

-
void
-bson_context_destroy (bson_context_t *context);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_context_destroy() function shall release all resources associated with context. Does nothing if context is NULL.

-

This should be called when you are no longer using a bson_context_t that you have allocated with bson_context_new().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_get_default.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_get_default.html deleted file mode 100644 index c9416b5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_get_default.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - bson_context_get_default() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_context_get_default()

-
-

Synopsis

-
bson_context_t *
-bson_context_get_default (void);
-
-
-
-
-

Returns

-

The bson_context_get_default() function shall return the default, thread-safe, bson_context_t for the process.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_new.html deleted file mode 100644 index 853b0b4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_new.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_context_new() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_context_new()

-
-

Synopsis

-
bson_context_t *
-bson_context_new (bson_context_flags_t flags);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Creates a new bson_context_t. This is rarely needed as bson_context_get_default() serves most use-cases.

-
-
-

Returns

-

A newly allocated bson_context_t that should be freed with bson_context_destroy().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_t.html deleted file mode 100644 index a45904c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_context_t.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - bson_context_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_context_t

-

BSON OID Generation Context

-
-

Synopsis

-
#include <bson.h>
-
-typedef enum {
-   BSON_CONTEXT_NONE = 0,
-   BSON_CONTEXT_THREAD_SAFE = (1 << 0),
-   BSON_CONTEXT_DISABLE_HOST_CACHE = (1 << 1),
-   BSON_CONTEXT_DISABLE_PID_CACHE = (1 << 2),
-#ifdef BSON_HAVE_SYSCALL_TID
-   BSON_CONTEXT_USE_TASK_ID = (1 << 3),
-#endif
-} bson_context_flags_t;
-
-typedef struct _bson_context_t bson_context_t;
-
-bson_context_t *
-bson_context_get_default (void) BSON_GNUC_CONST;
-bson_context_t *
-bson_context_new (bson_context_flags_t flags);
-void
-bson_context_destroy (bson_context_t *context);
-
-
-
-
-

Description

-

The bson_context_t structure is context for generation of BSON Object IDs. This context allows for specialized overriding of how ObjectIDs are generated based on the applications requirements. For example, disabling of PID caching can be configured if the application cannot detect when a call to fork() has occurred.

-
- -
-

Example

-
#include <bson/bson.h>
-
-int
-main (int argc, char *argv[])
-{
-   bson_context_t *ctx = NULL;
-   bson_oid_t oid;
-
-   /* use default context, via bson_context_get_default() */
-   bson_oid_init (&oid, NULL);
-
-   /* specify a local context for additional control */
-   ctx = bson_context_new (BSON_CONTEXT_DISABLE_PID_CACHE |
-                           BSON_CONTEXT_THREAD_SAFE);
-   bson_oid_init (&oid, ctx);
-
-   bson_context_destroy (ctx);
-
-   return 0;
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy.html deleted file mode 100644 index c57e78a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_copy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_copy()

-
-

Synopsis

-
bson_t *
-bson_copy (const bson_t *bson);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_copy() function shall copy the contents of a bson document into a new bson_t.

-

The resulting bson_t should be freed with bson_destroy().

-
-
-

Returns

-

A newly allocated bson_t that should be freed with bson_destroy().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to.html deleted file mode 100644 index 535b4bd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - bson_copy_to() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_copy_to()

-
-

Synopsis

-
void
-bson_copy_to (const bson_t *src, bson_t *dst);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_copy_to() function shall initialize dst with a copy of the contents of src.

-

dst MUST be an uninitialized bson_t to avoid leaking memory.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding.html deleted file mode 100644 index df1263c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - bson_copy_to_excluding() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_copy_to_excluding()

-
-

Synopsis

-
void
-bson_copy_to_excluding (const bson_t *src,
-                        bson_t *dst,
-                        const char *first_exclude,
-                        ...) BSON_GNUC_NULL_TERMINATED
-   BSON_GNUC_DEPRECATED_FOR (bson_copy_to_excluding_noinit);
-
-
-
-
-

Parameters

-
    -
  • src: A bson_t.
  • -
  • dst: A bson_t.
  • -
  • first_exclude: The first field name to exclude.
  • -
-
-
-

Description

-

The bson_copy_to_excluding() function shall copy all fields from -src to dst except those specified by the variadic, NULL terminated list -of keys starting from first_exclude.

-
-
-

Deprecated

-
-
This function is deprecated. Please use -bson_copy_to_excluding_noinit() in new code.
-
-

Warning

-

bson_init() is called on dst.

-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding_noinit.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding_noinit.html deleted file mode 100644 index 49a9cbd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_copy_to_excluding_noinit.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - bson_copy_to_excluding_noinit() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_copy_to_excluding_noinit()

-
-

Synopsis

-
void
-bson_copy_to_excluding_noinit (const bson_t *src,
-                               bson_t *dst,
-                               const char *first_exclude,
-                               ...) BSON_GNUC_NULL_TERMINATED;
-
-
-
-
-

Parameters

-
    -
  • src: A bson_t.
  • -
  • dst: A bson_t.
  • -
  • first_exclude: The first field name to exclude.
  • -
-
-
-

Description

-

The bson_copy_to_excluding_noinit() function shall copy all fields -from src to dst except those specified by the variadic, NULL terminated -list of keys starting from first_exclude. -Works the same way as bson_copy_to_excluding(), except does not call -bson_init() on dst. -This function should be preferred in new code over bson_copy_to_excluding().

-
-

Warning

-

This is generally not needed except in very special situations.

-
-
-
-

Example

-
#include <bson/bson.h>
-
-int main ()
-{
-   bson_t bson;
-   bson_t bson2;
-   char *str;
-
-   bson_init (&bson);
-   bson_append_int32 (&bson, "a", 1, 1);
-   bson_append_int32 (&bson, "b", 1, 2);
-   bson_append_int32 (&bson, "c", 1, 2);
-
-   bson_init (&bson2);
-   bson_copy_to_excluding_noinit (&bson, &bson2, "b", NULL);
-
-   str = bson_as_json (&bson2, NULL);
-   /* Prints
-    * { "a" : 1, "c" : 2 }
-    */
-   printf ("%s\n", str);
-   bson_free (str);
-
-   bson_destroy (&bson);
-   bson_destroy (&bson2);
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_count_keys.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_count_keys.html deleted file mode 100644 index d191712..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_count_keys.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_count_keys() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_count_keys()

-
-

Synopsis

-
uint32_t
-bson_count_keys (const bson_t *bson);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_count_keys() function shall count the number of elements within bson.

-
-
-

Returns

-

A positive integer or zero.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string.html deleted file mode 100644 index c062b46..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - bson_decimal128_from_string() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_decimal128_from_string()

-
-

Synopsis

-
bool
-bson_decimal128_from_string (const char *string, bson_decimal128_t *dec);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Parses the string containing ascii encoded Decimal128 and initialize the bytes -in dec. See the Decimal128 specification -for the exact string format.

-
-
-

Returns

-

Returns true if valid Decimal128 string was provided, otherwise false -and dec will be set to NaN.

-
-
-

Example

-
bson_decimal128_t dec;
-bson_decimal128_from_string ("1.00", &dec);
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string_w_len.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string_w_len.html deleted file mode 100644 index a093a0d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_from_string_w_len.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - bson_decimal128_from_string_w_len() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_decimal128_from_string_w_len()

-
-

Synopsis

-
bool
-bson_decimal128_from_string_w_len (const char *string,
-                                   int len,
-                                   bson_decimal128_t *dec);
-
-
-
-
-

Parameters

-
    -
  • string: A string containing ASCII encoded Decimal128.
  • -
  • len: The length of string in bytes, or -1 meaning the string is null-terminated.
  • -
  • dec: A bson_decimal128_t.
  • -
-
-
-

Description

-

Parses the string containing ascii encoded Decimal128 and initialize the bytes -in dec. See the Decimal128 specification -for the exact string format.

-
-
-

Returns

-

Returns true if valid Decimal128 string was provided, otherwise false -and dec will be set to NaN.

-
-
-

Example

-
bson_decimal128_t dec;
-bson_decimal128_from_string_w_len ("1.00", 4, &dec);
-bson_decimal128_from_string_w_len ("1.00", -1, &dec);
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_t.html deleted file mode 100644 index ace2f40..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_t.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - bson_decimal128_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_decimal128_t

-

BSON Decimal128 Abstraction

-
-

Synopsis

-
#include <bson/bson.h>
-
-#define BSON_DECIMAL128_STRING 43
-#define BSON_DECIMAL128_INF "Infinity"
-#define BSON_DECIMAL128_NAN "NaN"
-
-typedef struct {
-#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN
-   uint64_t low;
-   uint64_t high;
-#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN
-   uint64_t high;
-   uint64_t low;
-#endif
-} bson_decimal128_t;
-
-
-
-
-

Description

-

The bson_decimal128_t structure -represents the IEEE-754 Decimal128 data type.

-
- -
-

Example

-
#include <bson/bson.h>
-#include <stdio.h>
-
-int
-main (int argc, char *argv[])
-{
-   char string[BSON_DECIMAL128_STRING];
-   bson_decimal128_t decimal128;
-
-   bson_decimal128_from_string ("100.00", &decimal128);
-   bson_decimal128_to_string (&decimal128, string);
-   printf ("Decimal128 value: %s\n", string);
-
-   return 0;
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_to_string.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_to_string.html deleted file mode 100644 index 371dd7e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_decimal128_to_string.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_decimal128_to_string() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_decimal128_to_string()

-
-

Synopsis

-
void
-bson_decimal128_to_string (const bson_decimal128_t *dec, char *str);
-
-
-
-
-

Parameters

-
    -
  • dec: A bson_decimal128_t.
  • -
  • str: A location of length BSON_DECIMAL128_STRING for the resulting string.
  • -
-
-
-

Description

-

Converts dec into a printable string.

-
-
-

Example

-
char decimal128_string[BSON_DECIMAL128_STRING];
-bson_decimal128_to_string (&decimal128t, decimal128_string);
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy.html deleted file mode 100644 index b469fc4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_destroy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_destroy()

-
-

Synopsis

-
void
-bson_destroy (bson_t *bson);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_destroy() function shall free an allocated bson_t structure. Does nothing if bson is NULL.

-

This function should always be called when you are done with a bson_t unless otherwise specified.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy_with_steal.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy_with_steal.html deleted file mode 100644 index 40f6863..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_destroy_with_steal.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_destroy_with_steal() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_destroy_with_steal()

-
-

Synopsis

-
uint8_t *
-bson_destroy_with_steal (bson_t *bson, bool steal, uint32_t *length);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • steal: A bool indicating if the underlying buffer should be stolen.
  • -
  • length: A location for storing the resulting buffer length.
  • -
-
-
-

Description

-

The bson_destroy_with_steal() function shall destroy a bson_t structure but return the underlying buffer instead of freeing it. If steal is false, this is equivalent to calling bson_destroy(). It is a programming error to call this function on a bson_t that is not a top-level bson_t, such as those initialized with bson_append_document_begin(), bson_append_array_begin(), and bson_writer_begin().

-

See also bson_steal(), a higher-level function that efficiently transfers the contents of one bson_t to another.

-
-
-

Returns

-

bson_destroy_with_steal() shall return a buffer containing the contents of the bson_t if steal is non-zero. This should be freed with bson_free() when no longer in use. length will be set to the length of the bson document if non-NULL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_equal.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_equal.html deleted file mode 100644 index 1022f5e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_equal.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_equal() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_equal()

-
-

Synopsis

-
bool
-bson_equal (const bson_t *bson, const bson_t *other);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_equal() function shall return true if both documents are equal.

-
-
-

Returns

-

true if both documents are equal.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_error_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_error_t.html deleted file mode 100644 index 2c28700..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_error_t.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - bson_error_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_error_t

-

BSON Error Encapsulation

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct {
-   uint32_t domain;
-   uint32_t code;
-   char message[504];
-} bson_error_t;
-
-
-
-
-

Description

-

The bson_error_t structure is used as an out-parameter to pass error information to the caller. It should be stack-allocated and does not requiring freeing.

-

See Handling Errors.

-
-
-

Functions

- -
-
-

Example

-
bson_reader_t *reader;
-bson_error_t error;
-
-reader = bson_reader_new_from_file ("dump.bson", &error);
-if (!reader) {
-   fprintf (
-      stderr, "ERROR: %d.%d: %s\n", error.domain, error.code, error.message);
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_free.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_free.html deleted file mode 100644 index ea4f57e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_free.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_free() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_free()

-
-

Synopsis

-
void
-bson_free (void *mem);
-
-
-
-
-

Parameters

-
    -
  • mem: A memory region.
  • -
-
-
-

Description

-

This function shall free the memory supplied by mem. This should be used by functions that require you free the result with bson_free().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_data.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_data.html deleted file mode 100644 index 4e5a95e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_data.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_get_data() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_get_data()

-
-

Synopsis

-
const uint8_t *
-bson_get_data (const bson_t *bson);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_get_data() function shall return the raw buffer of a bson document. This can be used in conjunction with the len property of a bson_t if you want to copy the raw buffer around.

-
-
-

Returns

-

A buffer which should not be modified or freed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_major_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_major_version.html deleted file mode 100644 index c288ed8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_major_version.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - bson_get_major_version() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_get_major_version()

-
-

Synopsis

-
int
-bson_get_major_version (void);
-
-
-
-
-

Description

-

Get the first number in libbson’s MAJOR.MINOR.MICRO release version.

-
-
-

Returns

-

The value of BSON_MAJOR_VERSION when Libbson was compiled.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_micro_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_micro_version.html deleted file mode 100644 index 33bf3dc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_micro_version.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - bson_get_micro_version() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_get_micro_version()

-
-

Synopsis

-
int
-bson_get_micro_version (void);
-
-
-
-
-

Description

-

Get the third number in libbson’s MAJOR.MINOR.MICRO release version.

-
-
-

Returns

-

The value of BSON_MICRO_VERSION when Libbson was compiled.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_minor_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_minor_version.html deleted file mode 100644 index f06278a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_minor_version.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - bson_get_minor_version() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_get_minor_version()

-
-

Synopsis

-
int
-bson_get_minor_version (void);
-
-
-
-
-

Description

-

Get the middle number in libbson’s MAJOR.MINOR.MICRO release version.

-
-
-

Returns

-

The value of BSON_MINOR_VERSION when Libbson was compiled.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_monotonic_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_monotonic_time.html deleted file mode 100644 index ebab267..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_monotonic_time.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - System Clock — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

System Clock

-

BSON Clock Abstraction

-
-

Synopsis

-
int64_t
-bson_get_monotonic_time (void);
-int
-bson_gettimeofday (struct timeval *tv,
-                   struct timezone *tz);
-
-
-
-
-

Description

-

The clock abstraction in Libbson provides a cross-platform way to handle timeouts within the BSON library. It abstracts the differences in implementations of gettimeofday() as well as providing a monotonic (incrementing only) clock in microseconds.

-
-
-

Functions

-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_version.html deleted file mode 100644 index 4aa7a3d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_get_version.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - bson_get_version() — libbson 1.13.1 - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_get_version()

-
-

Synopsis

-
const char *
-bson_get_version (void);
-
-
-
-
-

Description

-

A string representation of Libbson’s version, formatted something like “1.2.3” or “1.2.3-dev”.

-
-
-

Returns

-

A string you must not modify or free.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_has_field.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_has_field.html deleted file mode 100644 index 6674b21..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_has_field.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_has_field() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_has_field()

-
-

Synopsis

-
bool
-bson_has_field (const bson_t *bson, const char *key);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • key: A string containing the name of the field to check for.
  • -
-
-
-

Description

-

Checks to see if key contains an element named key. This also accepts “dotkey” notation such as “a.b.c.d”.

-
-
-

Returns

-

true if key was found within bson; otherwise false.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init.html deleted file mode 100644 index a11353a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - bson_init() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_init()

-
-

Synopsis

-
void
-bson_init (bson_t *b);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_init() function shall initialize a bson_t that is placed on the stack. This is equivalent to initializing a bson_t to BSON_INITIALIZER.

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_from_json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_from_json.html deleted file mode 100644 index 5315731..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_from_json.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - bson_init_from_json() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_init_from_json()

-
-

Synopsis

-
bool
-bson_init_from_json (bson_t *bson,
-                     const char *data,
-                     ssize_t len,
-                     bson_error_t *error);
-
-
-
-
-

Parameters

-
    -
  • bson: Pointer to an uninitialized bson_t.
  • -
  • data: A UTF-8 encoded string containing valid JSON.
  • -
  • len: The length of data in bytes excluding a trailing \0 or -1 to determine the length with strlen().
  • -
  • error: An optional location for a bson_error_t.
  • -
-
-
-

Description

-

The bson_init_from_json() function will initialize a new bson_t by parsing the JSON found in data. Only a single JSON object may exist in data or an error will be set and false returned.

-

data should be in MongoDB Extended JSON format.

-
-
-

Errors

-

Errors are propagated via the error parameter.

-
-
-

Returns

-

Returns true if valid JSON was parsed, otherwise false and error is set. On success, bson is initialized and must be freed with bson_destroy(), otherwise bson is invalid.

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_static.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_static.html deleted file mode 100644 index fd159f3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_init_static.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - bson_init_static() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_init_static()

-
-

Synopsis

-
bool
-bson_init_static (bson_t *b, const uint8_t *data, size_t length);
-
-
-
-
-

Parameters

-
    -
  • b: A bson_t.
  • -
  • data: A buffer to initialize with.
  • -
  • length: The length of data in bytes.
  • -
-
-
-

Description

-

The bson_init_static() function shall shall initialize a read-only bson_t on the stack using the data provided. No copies of the data will be made and therefore must remain valid for the lifetime of the bson_t.

-

The resulting bson_t has internal references and therefore must not be copied to avoid dangling pointers in the copy.

-
-
-

Returns

-

Returns true if bson_t was successfully initialized, otherwise false. The function can fail if data or length are invalid.

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_array.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_array.html deleted file mode 100644 index c036273..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_array.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_array() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_array()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_ARRAY(iter) (bson_iter_type ((iter)) == BSON_TYPE_ARRAY)
-
-void
-bson_iter_array (const bson_iter_t *iter,
-                 uint32_t *array_len,
-                 const uint8_t **array);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • array_len: A location for the buffer length.
  • -
  • array: A location for the immutable buffer.
  • -
-
-
-

Description

-

The bson_iter_array() function shall retrieve the raw buffer of a sub-array from iter. iter MUST be on an element that is of type BSON_TYPE_ARRAY. This can be verified with bson_iter_type() or the BSON_ITER_HOLDS_ARRAY() macro.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_bool.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_bool.html deleted file mode 100644 index 99f97db..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_bool.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - bson_iter_as_bool() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_as_bool()

-
-

Synopsis

-
bool
-bson_iter_as_bool (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the current field as if it were a boolean.

-

bson_iter_as_bool() currently knows how to determine a boolean value from the following types:

-
    -
  • BSON_TYPE_BOOL
  • -
  • BSON_TYPE_DOUBLE
  • -
  • BSON_TYPE_INT32
  • -
  • BSON_TYPE_INT64
  • -
  • BSON_TYPE_NULL
  • -
  • BSON_TYPE_UNDEFINED
  • -
  • BSON_TYPE_UTF8
  • -
-

BSON_TYPE_UTF8 will always equate to true.

-
-
-

Returns

-

true if the field equates to non-zero.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_double.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_double.html deleted file mode 100644 index 805a2c9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_double.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - bson_iter_as_double() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_as_double()

-
-

Synopsis

-
bool
-bson_iter_as_double (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the current field as if it were a double.

-

bson_iter_as_double() will cast the following types to double

-
    -
  • BSON_TYPE_BOOL
  • -
  • BSON_TYPE_DOUBLE
  • -
  • BSON_TYPE_INT32
  • -
  • BSON_TYPE_INT64
  • -
-

Any other value will return 0.

-
-
-

Returns

-

The value type casted to double.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_int64.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_int64.html deleted file mode 100644 index 972f95b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_as_int64.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_iter_as_int64() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_as_int64()

-
-

Synopsis

-
int64_t
-bson_iter_as_int64 (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_as_int64() function shall return the contents of the current element as if it were a BSON_TYPE_INT64 element. The currently supported casts include:

-
    -
  • BSON_TYPE_BOOL
  • -
  • BSON_TYPE_DOUBLE
  • -
  • BSON_TYPE_INT32
  • -
  • BSON_TYPE_INT64
  • -
-
-
-

Returns

-

A 64-bit signed integer.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_binary.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_binary.html deleted file mode 100644 index 05e93af..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_binary.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_iter_binary() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_binary()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_BINARY(iter) \
-   (bson_iter_type ((iter)) == BSON_TYPE_BINARY)
-
-void
-bson_iter_binary (const bson_iter_t *iter,
-                  bson_subtype_t *subtype,
-                  uint32_t *binary_len,
-                  const uint8_t **binary);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • subtype: A location for a bson_subtype_t or NULL.
  • -
  • binary_len: A location for the length of binary.
  • -
  • binary: A location for a pointer to the immutable buffer.
  • -
-
-
-

Description

-

This function shall return the binary data of a BSON_TYPE_BINARY element. It is a programming error to call this function on a field that is not of type BSON_TYPE_BINARY. You can check this with the BSON_ITER_HOLDS_BINARY() macro or bson_iter_type().

-

The buffer that binary points to is only valid until the iterator’s bson_t is modified or freed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_bool.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_bool.html deleted file mode 100644 index e2f95cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_bool.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_bool() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_bool()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_BOOL(iter) (bson_iter_type ((iter)) == BSON_TYPE_BOOL)
-
-bool
-bson_iter_bool (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_bool() function shall return the boolean value of a BSON_TYPE_BOOL element. It is a programming error to call this function on an element other than BSON_TYPE_BOOL. You can check this with bson_iter_type() or BSON_ITER_HOLDS_BOOL().

-
-
-

Returns

-

Either true or false.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_code.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_code.html deleted file mode 100644 index 7ac03af..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_code.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_iter_code() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_code()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_CODE(iter) (bson_iter_type ((iter)) == BSON_TYPE_CODE)
-
-const char *
-bson_iter_code (const bson_iter_t *iter, uint32_t *length);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • length: A location for the length of the UTF-8 encoded string or NULL.
  • -
-
-
-

Description

-

This function returns the contents of a BSON_TYPE_CODE field. The length of the string is stored in length if non-NULL.

-

It is invalid to call this function on a field that is not of type BSON_TYPE_CODE.

-
-
-

Returns

-

A UTF-8 encoded string which should not be modified or freed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_codewscope.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_codewscope.html deleted file mode 100644 index f197a02..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_codewscope.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_iter_codewscope() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_codewscope()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_CODEWSCOPE(iter) \
-   (bson_iter_type ((iter)) == BSON_TYPE_CODEWSCOPE)
-
-const char *
-bson_iter_codewscope (const bson_iter_t *iter,
-                      uint32_t *length,
-                      uint32_t *scope_len,
-                      const uint8_t **scope);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • length: An optional location for the length of the resulting UTF-8 encoded string.
  • -
  • scope_len: A optional location for the length of scope.
  • -
  • scope: An optional location to store the immutable raw scope BSON document.
  • -
-
-
-

Description

-

The bson_iter_codewscope() function acts similar to bson_iter_code() except for BSON_TYPE_CODEWSCOPE elements. It also will provide a pointer to the buffer for scope, which can be loaded into a bson_t using bson_init_static().

-
-
-

Returns

-

An UTF-8 encoded string containing the JavaScript code which should not be modified or freed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_date_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_date_time.html deleted file mode 100644 index 886d11c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_date_time.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_iter_date_time() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_date_time()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_DATE_TIME(iter) \
-   (bson_iter_type ((iter)) == BSON_TYPE_DATE_TIME)
-
-int64_t
-bson_iter_date_time (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_date_time() function shall return the number of milliseconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element.

-
-
-

Returns

-

A 64-bit integer containing the number of milliseconds since the UNIX epoch.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dbpointer.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dbpointer.html deleted file mode 100644 index f88be2f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dbpointer.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_iter_dbpointer() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_dbpointer()

-
-

Synopsis

-
void
-bson_iter_dbpointer (const bson_iter_t *iter,
-                     uint32_t *collection_len,
-                     const char **collection,
-                     const bson_oid_t **oid);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • collection_len: A location for the length of the collection name.
  • -
  • collection: A location for the collection name..
  • -
  • oid: A location for a bson_oid_t.
  • -
-
-
-

Description

-

Fetches the contents of a BSON_TYPE_DBPOINTER element.

-
-

Warning

-

The BSON_TYPE_DBPOINTER field type is deprecated by the BSON spec and should not be used in new code.

-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_decimal128.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_decimal128.html deleted file mode 100644 index a92b0aa..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_decimal128.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_iter_decimal128() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_decimal128()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_DECIMAL128(iter) \
-   (bson_iter_type ((iter)) == BSON_TYPE_DECIMAL128)
-
-bool
-bson_iter_decimal128 (const bson_iter_t *iter, /* IN */
-                      bson_decimal128_t *dec); /* OUT */
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the value from a BSON_TYPE_DECIMAL128 field. You should verify that this is a BSON_TYPE_DECIMAL128 field before calling this function.

-
-
-

Returns

-

true if type was BSON_TYPE_DECIMAL128, otherwise false.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_document.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_document.html deleted file mode 100644 index d03b9db..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_document.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_iter_document() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_document()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_DOCUMENT(iter) \
-   (bson_iter_type ((iter)) == BSON_TYPE_DOCUMENT)
-
-void
-bson_iter_document (const bson_iter_t *iter,
-                    uint32_t *document_len,
-                    const uint8_t **document);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • document_len: A location for the length of the document in bytes.
  • -
  • document: A location for the document buffer.
  • -
-
-
-

Description

-

The bson_iter_document() function shall retrieve the raw buffer of a sub-document from iter. iter MUST be on an element that is of type BSON_TYPE_DOCUMENT. This can be verified with bson_iter_type() or the BSON_ITER_HOLDS_DOCUMENT() macro.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_double.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_double.html deleted file mode 100644 index 7dc3b21..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_double.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_iter_double() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_double()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_DOUBLE(iter) \
-   (bson_iter_type ((iter)) == BSON_TYPE_DOUBLE)
-
-double
-bson_iter_double (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the contents of a BSON_TYPE_DOUBLE field.

-
-
-

Returns

-

A double.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dup_utf8.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dup_utf8.html deleted file mode 100644 index e8b5dcc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_dup_utf8.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_iter_dup_utf8() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_dup_utf8()

-
-

Synopsis

-
char *
-bson_iter_dup_utf8 (const bson_iter_t *iter, uint32_t *length);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • length: An optional location for the length of the UTF-8 encoded string.
  • -
-
-
-

Description

-

This function is similar to bson_iter_utf8() except that it calls bson_strndup() on the result.

-
-
-

Returns

-

A newly allocated string that should be freed with bson_free().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find.html deleted file mode 100644 index 166891d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_find() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_find()

-
-

Synopsis

-
bool
-bson_iter_find (bson_iter_t *iter, const char *key);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • key: A string containing the requested key.
  • -
-
-
-

Description

-

The bson_iter_find() function shall advance iter to the element named key or exhaust all elements of iter. If iter is exhausted, false is returned and iter should be considered invalid.

-

key is case-sensitive. For a case-folded version, see bson_iter_find_case().

-
-
-

Returns

-

true is returned if the requested key was found. If not, iter was exhausted and should now be considered invalid.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_case.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_case.html deleted file mode 100644 index ac320a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_case.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_find_case() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_find_case()

-
-

Synopsis

-
bool
-bson_iter_find_case (bson_iter_t *iter, const char *key);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • key: An ASCII string containing the field to locate.
  • -
-
-
-

Description

-

Advances iter until it is observing an element matching the name of key or exhausting all elements.

-

key is not case-sensitive. The keys will be case-folded to determine a match using the current locale.

-
-
-

Returns

-

true if key was found.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_descendant.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_descendant.html deleted file mode 100644 index fbf258f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_descendant.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_iter_find_descendant() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_find_descendant()

-
-

Synopsis

-
bool
-bson_iter_find_descendant (bson_iter_t *iter,
-                           const char *dotkey,
-                           bson_iter_t *descendant);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_find_descendant() function shall follow standard MongoDB dot notation to recurse into subdocuments. descendant will be initialized and advanced to the descendant. If false is returned, both iter and descendant should be considered invalid.

-
-
-

Returns

-

true is returned if the requested key was found. If not, false is returned and iter was exhausted and should now be considered invalid.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_w_len.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_w_len.html deleted file mode 100644 index 4a706ac..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_find_w_len.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_iter_find_w_len() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_find_w_len()

-
-

Synopsis

-
bool
-bson_iter_find_w_len (bson_iter_t *iter, const char *key, int keylen);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • key: A string containing the requested key.
  • -
  • keylen: An integer indicating the length of the key string.
  • -
-
-
-

Description

-

The bson_iter_find_w_len() function shall advance iter to the element named key or exhaust all elements of iter. If iter is exhausted, false is returned and iter should be considered invalid.

-

key is case-sensitive. For a case-folded version, see bson_iter_find_case().

-
-
-

Returns

-

true is returned if the requested key was found. If not, iter was exhausted and should now be considered invalid.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init.html deleted file mode 100644 index 7bab096..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - bson_iter_init() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_init()

-
-

Synopsis

-
bool
-bson_iter_init (bson_iter_t *iter, const bson_t *bson);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_init() function shall initialize iter to iterate upon the BSON document bson. Upon initialization, iter is placed before the first element. Callers must call bson_iter_next(), bson_iter_find(), or bson_iter_find_case() to advance to an element.

-
-
-

Returns

-

Returns true if the iter was successfully initialized.

-
-
-

Example

-
static void
-print_doc_id (const bson_t *doc)
-{
-   bson_iter_t iter;
-   bson_oid_t oid;
-   char oidstr[25];
-
-   if (bson_iter_init (&iter, doc) && bson_iter_find (&iter, "_id") &&
-       BSON_ITER_HOLDS_OID (&iter)) {
-      bson_iter_oid (&iter, &oid);
-      bson_oid_to_string (&oid, oidstr);
-      printf ("%s\n", oidstr);
-   } else {
-      printf ("Document is missing _id.\n");
-   }
-}
-
-/* alternatively */
-
-static void
-print_doc_id (const bson_t *doc)
-{
-   bson_iter_t iter;
-   bson_oid_t oid;
-   char oidstr[25];
-
-   if (bson_iter_init_find (&iter, doc, "_id") && BSON_ITER_HOLDS_OID (&iter)) {
-      bson_iter_oid (&iter, &oid);
-      bson_oid_to_string (&oid, oidstr);
-      printf ("%s\n", oidstr);
-   } else {
-      printf ("Document is missing _id.\n");
-   }
-}
-
-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find.html deleted file mode 100644 index ac4818d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_iter_init_find() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_init_find()

-
-

Synopsis

-
bool
-bson_iter_init_find (bson_iter_t *iter, const bson_t *bson, const char *key);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • bson: A bson_t.
  • -
  • key: A key to locate after initializing the iter.
  • -
-
-
-

Description

-

This function is identical to (bson_iter_init() && bson_iter_find()).

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_case.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_case.html deleted file mode 100644 index 889aca4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_case.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - bson_iter_init_find_case() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_init_find_case()

-
-

Synopsis

-
bool
-bson_iter_init_find_case (bson_iter_t *iter,
-                          const bson_t *bson,
-                          const char *key);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • bson: A bson_t.
  • -
  • key: A key to locate after initializing the iter.
  • -
-
-
-

Description

-

This function is identical to bson_iter_init() && bson_iter_find_case().

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_w_len.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_w_len.html deleted file mode 100644 index 9a7b802..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_find_w_len.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - bson_iter_init_find_w_len() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_init_find_w_len()

-
-

Synopsis

-
bool
-bson_iter_init_find_w_len (bson_iter_t *iter,
-                           const bson_t *bson,
-                           const char *key,
-                           int keylen);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • bson: A bson_t.
  • -
  • key: A key to locate after initializing the iter.
  • -
  • keylen: An integer indicating the length of the key string.
  • -
-
-
-

Description

-

This function is identical to (bson_iter_init() && bson_iter_find_w_len()).

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data.html deleted file mode 100644 index bb7b855..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - bson_iter_init_from_data() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_init_from_data()

-
-

Synopsis

-
bool
-bson_iter_init_from_data (bson_iter_t *iter, const uint8_t *data, size_t length);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • data: A buffer to initialize with.
  • -
  • length: The length of data in bytes.
  • -
-
-
-

Description

-

The bson_iter_init_from_data() function shall initialize iter to iterate upon the buffer data, which must contain a BSON document. Upon initialization, iter is placed before the first element. Callers must call bson_iter_next(), bson_iter_find(), or bson_iter_find_case() to advance to an element.

-
-
-

Returns

-

Returns true if the iter was successfully initialized.

-
-
-

Example

-
static void
-print_doc_id (const uint8_t *data, size_t length)
-{
-   bson_iter_t iter;
-   bson_oid_t oid;
-   char oidstr[25];
-
-   if (bson_iter_init_from_data (&iter, data, length) && bson_iter_find (&iter, "_id") &&
-       BSON_ITER_HOLDS_OID (&iter)) {
-      bson_iter_oid (&iter, &oid);
-      bson_oid_to_string (&oid, oidstr);
-      printf ("%s\n", oidstr);
-   } else {
-      printf ("Document is missing _id.\n");
-   }
-}
-
-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data_at_offset.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data_at_offset.html deleted file mode 100644 index 7ed6d4c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_init_from_data_at_offset.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - bson_iter_init_from_data_at_offset() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_init_from_data_at_offset()

-
-

Synopsis

-
bool
-bson_iter_init_from_data_at_offset (bson_iter_t *iter,
-                                    const uint8_t *data,
-                                    size_t length,
-                                    uint32_t offset,
-                                    uint32_t keylen);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • data: A buffer to initialize with. This is not validated.
  • -
  • length: The length of data in bytes. This is not validated.
  • -
  • offset: The offset of the field to start iterating. This is not validated. This should be an offset previously obtained from bson_iter_offset().
  • -
  • keylen: The string length of the key of the field to start iterating. This is not validated. This should be a length previously obtained from bson_iter_key_len().
  • -
-
-
-

Description

-

Creates a bson_iter_t and starts iteration on a field at the offset.

-

bson_iter_init_from_data_at_offset() is useful for situations where the -progress of a bson_iter_t must be saved and restored without relying -on the bson_iter_t data layout. Saving the progress could be -accomplished by:

- -

Then later, these saved values can be passed to -bson_iter_init_from_data_at_offset() to reconstruct the -bson_iter_t in constant time.

-
- -
-

Returns

-

Returns true if the iter was successfully initialized.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int32.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int32.html deleted file mode 100644 index 20176ba..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int32.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_int32() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_int32()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_INT32(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT32)
-
-int32_t
-bson_iter_int32 (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the value from a BSON_TYPE_INT32 element. You should verify that the field is a BSON_TYPE_INT32 field before calling this function.

-
-
-

Returns

-

A 32-bit integer.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int64.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int64.html deleted file mode 100644 index 24698f6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_int64.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_int64() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_int64()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_INT64(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT64)
-
-int64_t
-bson_iter_int64 (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the value from a BSON_TYPE_INT64 field. You should verify that this is a BSON_TYPE_INT64 field before calling this function.

-
-
-

Returns

-

A 64-bit integer.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key.html deleted file mode 100644 index 44a4f7d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_iter_key() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_key()

-
-

Synopsis

-
const char *
-bson_iter_key (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the key for the current element observed by iter.

-
-
-

See Also

-

bson_iter_key_len() to retrieve the length of the key in constant time.

-
-
-

Returns

-

A string which should not be modified or freed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key_len.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key_len.html deleted file mode 100644 index 16ef454..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_key_len.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_iter_key_len() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_key_len()

-
-

Synopsis

-
uint32_t
-bson_iter_key_len (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the length of the key for the current element observed by iter. This is a constant time computation, and therefore faster than calling strlen() on a key returned by bson_iter_key().

-
-
-

See Also

-

bson_iter_key() to retrieve current key.

-
-
-

Returns

-

An integer representing the key length.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_next.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_next.html deleted file mode 100644 index 070d5d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_next.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_iter_next() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_next()

-
-

Synopsis

-
bool
-bson_iter_next (bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Advances iter to the next element in the document.

-
-
-

Returns

-

true if iter was advanced. Returns false if iter has passed the last element in the document or encountered invalid BSON.

-

It is a programming error to use iter after this function has returned false.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_offset.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_offset.html deleted file mode 100644 index 50bea05..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_offset.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_iter_offset() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_offset()

-
-

Synopsis

-
uint32_t
-bson_iter_offset (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the offset for the current element observed by iter.

-
-
-

See Also

-

bson_iter_init_from_data_at_offset() to use this offset to reconstruct a bson_iter_t in constant time.

-
-
-

Returns

-

An unsigned integer representing the offset in the BSON data of the current element.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_oid.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_oid.html deleted file mode 100644 index 9e619e4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_oid.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_oid() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_oid()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_OID(iter) (bson_iter_type ((iter)) == BSON_TYPE_OID)
-
-const bson_oid_t *
-bson_iter_oid (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the bson_oid_t for a BSON_TYPE_OID element. You should verify it is an element of type BSON_TYPE_OID before calling this function.

-
-
-

Returns

-

A bson_oid_t that should not be modified or freed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_bool.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_bool.html deleted file mode 100644 index da2a6cd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_bool.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - bson_iter_overwrite_bool() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_bool()

-
-

Synopsis

-
void
-bson_iter_overwrite_bool (bson_iter_t *iter, bool value);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • value: A bool containing the new value.
  • -
-
-
-

Description

-

The bson_iter_overwrite_bool() function shall overwrite the contents of a BSON_TYPE_BOOL element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_BOOL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_date_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_date_time.html deleted file mode 100644 index efdf339..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_date_time.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - bson_iter_overwrite_date_time() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_date_time()

-
-

Synopsis

-
void
-bson_iter_overwrite_date_time (bson_iter_t *iter, int64_t value);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • value: The date and time as specified in milliseconds since the UNIX epoch.
  • -
-
-
-

Description

-

The bson_iter_overwrite_date_time() function shall overwrite the contents of a BSON_TYPE_DATE_TIME element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_DATE_TIME.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_decimal128.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_decimal128.html deleted file mode 100644 index afb9609..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_decimal128.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - bson_iter_overwrite_decimal128() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_decimal128()

-
-

Synopsis

-
bool
-bson_iter_overwrite_decimal128 (bson_iter_t *iter, bson_decimal128_t *value);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • value: The new Decimal128 value.
  • -
-
-
-

Description

-

The bson_iter_overwrite_decimal128() function shall overwrite the contents of a BSON_TYPE_DECIMAL128 element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_DECIMAL128.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_double.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_double.html deleted file mode 100644 index 47cadce..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_double.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - bson_iter_overwrite_double() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_double()

-
-

Synopsis

-
void
-bson_iter_overwrite_double (bson_iter_t *iter, double value);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_overwrite_double() function shall overwrite the contents of a BSON_TYPE_DOUBLE element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_DOUBLE.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int32.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int32.html deleted file mode 100644 index c5d876a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int32.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - bson_iter_overwrite_int32() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_int32()

-
-

Synopsis

-
void
-bson_iter_overwrite_int32 (bson_iter_t *iter, int32_t value);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_overwrite_int32() function shall overwrite the contents of a BSON_TYPE_INT32 element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_BOOL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int64.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int64.html deleted file mode 100644 index 46b4764..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_int64.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - bson_iter_overwrite_int64() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_int64()

-
-

Synopsis

-
void
-bson_iter_overwrite_int64 (bson_iter_t *iter, int64_t value);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_overwrite_int64() function shall overwrite the contents of a BSON_TYPE_INT64 element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_INT64.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_oid.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_oid.html deleted file mode 100644 index 0ee2989..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_oid.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - bson_iter_overwrite_oid() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_oid()

-
-

Synopsis

-
void
-bson_iter_overwrite_oid (bson_iter_t *iter, const bson_oid_t *value);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_overwrite_oid() function shall overwrite the contents of a BSON_TYPE_OID element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_OID.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_timestamp.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_timestamp.html deleted file mode 100644 index 031d686..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_overwrite_timestamp.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_overwrite_timestamp() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_overwrite_timestamp()

-
-

Synopsis

-
void
-bson_iter_overwrite_timestamp (bson_iter_t *iter,
-                               uint32_t timestamp,
-                               uint32_t increment);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • timestamp: A uint32_t.
  • -
  • increment: A uint32_t.
  • -
-
-
-

Description

-

The bson_iter_overwrite_timestamp() function shall overwrite the contents of a BSON_TYPE_TIMESTAMP element in place.

-

This may only be done when the underlying bson document allows mutation.

-

It is a programming error to call this function when iter is not observing an element of type BSON_TYPE_TIMESTAMP.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_recurse.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_recurse.html deleted file mode 100644 index 7da9cc9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_recurse.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_iter_recurse() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_recurse()

-
-

Synopsis

-
bool
-bson_iter_recurse (const bson_iter_t *iter, bson_iter_t *child);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_recurse() function shall initialize child using the embedded document or array currently observed by iter.

-

If there was a failure to initialize the iter, false is returned and both iter and child should be considered invalid.

-

This should only be called when observing an element of type BSON_TYPE_ARRAY or BSON_TYPE_DOCUMENT.

-
-
-

Returns

-

If iter observes an element of type BSON_TYPE_ARRAY or BSON_TYPE_DOCUMENT, then child is initialized and the function returns true. Otherwise, the function returns false and child is invalid.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_regex.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_regex.html deleted file mode 100644 index fc7df5a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_regex.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_iter_regex() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_regex()

-
-

Synopsis

-
const char *
-bson_iter_regex (const bson_iter_t *iter, const char **options);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_regex() function shall retrieve the contents of a BSON_TYPE_REGEX element currently observed by iter.

-

It is invalid to call this function when not observing an element of type BSON_TYPE_REGEX.

-
-
-

Returns

-

A string containing the regex which should not be modified or freed. options is set to the options provided for the regex.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_symbol.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_symbol.html deleted file mode 100644 index db229a4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_symbol.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_iter_symbol() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_symbol()

-
-

Synopsis

-
const char *
-bson_iter_symbol (const bson_iter_t *iter, uint32_t *length);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The symbol element type is DEPRECATED in the bson specification at http://bsonspec.org.

-

The bson_iter_symbol() function shall return the contents of a BSON_TYPE_SYMBOL element.

-

If non-NULL, length will be set to the length of the resulting string.

-
-
-

Returns

-

The symbol and length is set.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_t.html deleted file mode 100644 index 543aba3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_t.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - bson_iter_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_t

-

BSON Document Iterator

-
-

Synopsis

-
#include <bson/bson.h>
-
-#define BSON_ITER_HOLDS_DOUBLE(iter) /* ... */
-
-#define BSON_ITER_HOLDS_UTF8(iter) /* ... */
-
-#define BSON_ITER_HOLDS_DOCUMENT(iter) /* ... */
-
-#define BSON_ITER_HOLDS_ARRAY(iter) /* ... */
-
-#define BSON_ITER_HOLDS_BINARY(iter) /* ... */
-
-#define BSON_ITER_HOLDS_UNDEFINED(iter) /* ... */
-
-#define BSON_ITER_HOLDS_OID(iter) /* ... */
-
-#define BSON_ITER_HOLDS_BOOL(iter) /* ... */
-
-#define BSON_ITER_HOLDS_DATE_TIME(iter) /* ... */
-
-#define BSON_ITER_HOLDS_NULL(iter) /* ... */
-
-#define BSON_ITER_HOLDS_REGEX(iter) /* ... */
-
-#define BSON_ITER_HOLDS_DBPOINTER(iter) /* ... */
-
-#define BSON_ITER_HOLDS_CODE(iter) /* ... */
-
-#define BSON_ITER_HOLDS_SYMBOL(iter) /* ... */
-
-#define BSON_ITER_HOLDS_CODEWSCOPE(iter) /* ... */
-
-#define BSON_ITER_HOLDS_INT32(iter) /* ... */
-
-#define BSON_ITER_HOLDS_TIMESTAMP(iter) /* ... */
-
-#define BSON_ITER_HOLDS_INT64(iter) /* ... */
-
-#define BSON_ITER_HOLDS_DECIMAL128(iter) /* ... */
-
-#define BSON_ITER_HOLDS_MAXKEY(iter) /* ... */
-
-#define BSON_ITER_HOLDS_MINKEY(iter) /* ... */
-
-#define BSON_ITER_HOLDS_INT(iter) \
-   (BSON_ITER_HOLDS_INT32 (iter) || BSON_ITER_HOLDS_INT64 (iter))
-
-#define BSON_ITER_HOLDS_NUMBER(iter) \
-   (BSON_ITER_HOLDS_INT (iter) || BSON_ITER_HOLDS_DOUBLE (iter))
-
-#define BSON_ITER_IS_KEY(iter, key) \
-   (0 == strcmp ((key), bson_iter_key ((iter))))
-
-typedef struct {
-   /*< private >*/
-} bson_iter_t;
-
-
-
-
-

Description

-

bson_iter_t is a structure used to iterate through the elements of a bson_t. It is meant to be used on the stack and can be discarded at any time as it contains no external allocation. The contents of the structure should be considered private and may change between releases, however the structure size will not change.

-

The bson_t MUST be valid for the lifetime of the iter and it is an error to modify the bson_t while using the iter.

-
- -
-

Examples

-
bson_iter_t iter;
-
-if (bson_iter_init (&iter, my_bson_doc)) {
-   while (bson_iter_next (&iter)) {
-      printf ("Found a field named: %s\n", bson_iter_key (&iter));
-   }
-}
-
-
-
bson_iter_t iter;
-
-if (bson_iter_init (&iter, my_bson_doc) && bson_iter_find (&iter, "my_field")) {
-   printf ("Found the field named: %s\n", bson_iter_key (&iter));
-}
-
-
-
bson_iter_t iter;
-bson_iter_t sub_iter;
-
-if (bson_iter_init_find (&iter, my_bson_doc, "mysubdoc") &&
-    (BSON_ITER_HOLDS_DOCUMENT (&iter) || BSON_ITER_HOLDS_ARRAY (&iter)) &&
-    bson_iter_recurse (&iter, &sub_iter)) {
-   while (bson_iter_next (&sub_iter)) {
-      printf ("Found key \"%s\" in sub document.\n", bson_iter_key (&sub_iter));
-   }
-}
-
-
-
bson_iter_t iter;
-
-if (bson_iter_init (&iter, my_doc) &&
-    bson_iter_find_descendant (&iter, "a.b.c.d", &sub_iter)) {
-   printf ("The type of a.b.c.d is: %d\n", (int) bson_iter_type (&sub_iter));
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_time_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_time_t.html deleted file mode 100644 index 27907da..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_time_t.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_iter_time_t() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_time_t()

-
-

Synopsis

-
time_t
-bson_iter_time_t (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_time_t() function shall return the number of seconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element.

-
-
-

Returns

-

A time_t containing the number of seconds since the UNIX epoch.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timestamp.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timestamp.html deleted file mode 100644 index fdd447c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timestamp.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_iter_timestamp() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_timestamp()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_TIMESTAMP(iter) \
-   (bson_iter_type ((iter)) == BSON_TYPE_TIMESTAMP)
-
-void
-bson_iter_timestamp (const bson_iter_t *iter,
-                     uint32_t *timestamp,
-                     uint32_t *increment);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • timestamp: A uint32_t.
  • -
  • increment: A uint32_t.
  • -
-
-
-

Description

-

The BSON_TYPE_TIMESTAMP type is not a date/time and is typically used for intra-server communication.

-

You probably want bson_iter_date_time().

-

The bson_iter_timestamp() function shall return the contents of a BSON_TYPE_TIMESTAMP element. It is invalid to call this function while observing an element that is not of type BSON_TYPE_TIMESTAMP.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timeval.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timeval.html deleted file mode 100644 index 5fc15cd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_timeval.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_iter_timeval() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_timeval()

-
-

Synopsis

-
void
-bson_iter_timeval (const bson_iter_t *iter, struct timeval *tv);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_timeval() function shall return the number of seconds and microseconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element into tv.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_type.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_type.html deleted file mode 100644 index aae24c2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_type.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - bson_iter_type() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_type()

-
-

Synopsis

-
typedef enum {
-   BSON_TYPE_EOD = 0x00,
-   BSON_TYPE_DOUBLE = 0x01,
-   BSON_TYPE_UTF8 = 0x02,
-   BSON_TYPE_DOCUMENT = 0x03,
-   BSON_TYPE_ARRAY = 0x04,
-   BSON_TYPE_BINARY = 0x05,
-   BSON_TYPE_UNDEFINED = 0x06,
-   BSON_TYPE_OID = 0x07,
-   BSON_TYPE_BOOL = 0x08,
-   BSON_TYPE_DATE_TIME = 0x09,
-   BSON_TYPE_NULL = 0x0A,
-   BSON_TYPE_REGEX = 0x0B,
-   BSON_TYPE_DBPOINTER = 0x0C,
-   BSON_TYPE_CODE = 0x0D,
-   BSON_TYPE_SYMBOL = 0x0E,
-   BSON_TYPE_CODEWSCOPE = 0x0F,
-   BSON_TYPE_INT32 = 0x10,
-   BSON_TYPE_TIMESTAMP = 0x11,
-   BSON_TYPE_INT64 = 0x12,
-   BSON_TYPE_MAXKEY = 0x7F,
-   BSON_TYPE_MINKEY = 0xFF,
-} bson_type_t;
-
-bson_type_t
-bson_iter_type (const bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_iter_type() function shall return the type of the observed element in a bson document.

-
-
-

Returns

-

A bson_type_t.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_utf8.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_utf8.html deleted file mode 100644 index 6d81987..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_utf8.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_iter_utf8() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_utf8()

-
-

Synopsis

-
#define BSON_ITER_HOLDS_UTF8(iter) (bson_iter_type ((iter)) == BSON_TYPE_UTF8)
-
-const char *
-bson_iter_utf8 (const bson_iter_t *iter, uint32_t *length);
-
-
-
-
-

Parameters

-
    -
  • iter: A bson_iter_t.
  • -
  • length: An optional location for the length of the resulting UTF-8 encoded string.
  • -
-
-
-

Description

-

The bson_iter_utf8() function shall retrieve the contents of a BSON_TYPE_UTF8 element currently observed by iter.

-

It is invalid to call this function while observing an element other than BSON_TYPE_UTF8.

-
-
-

Returns

-

A UTF-8 encoded string that has not been modified or freed.

-

It is suggested that the caller validate the content is valid UTF-8 before using this in other places. That can be done by calling bson_utf8_validate() or validating the underlying bson_t before iterating it.

-

Note that not all drivers use multi-byte representation for \0 in UTF-8 encodings (commonly referred to as modified-UTF8). You probably want to take a look at the length field when marshaling to other runtimes.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_value.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_value.html deleted file mode 100644 index e20654b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_value.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_iter_value() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_value()

-
-

Synopsis

-
const bson_value_t *
-bson_iter_value (bson_iter_t *iter);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the value for the currently observed type as a boxed type. This allows passing around the value without knowing the type at runtime.

-
-
-

Returns

-

A bson_value_t that should not be modified or freed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_visit_all.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_visit_all.html deleted file mode 100644 index c2377ca..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_iter_visit_all.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_iter_visit_all() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_iter_visit_all()

-
-

Synopsis

-
bool
-bson_iter_visit_all (bson_iter_t *iter,
-                     const bson_visitor_t *visitor,
-                     void *data);
-
-
-
-
-

Parameters

- -
-
-

Description

-

A convenience function to iterate all remaining fields of iter using the callback vtable provided by visitor.

-
-
-

Returns

-

Returns true if visitation was prematurely stopped by a callback function. Returns false either because all elements were visited or due to corrupt BSON.

-

See bson_visitor_t for examples of how to set your own callbacks to provide information about the location of corrupt or unsupported BSON document entries.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_ingest.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_ingest.html deleted file mode 100644 index ec78c96..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_ingest.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_json_data_reader_ingest() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_data_reader_ingest()

-
-

Synopsis

-
void
-bson_json_data_reader_ingest (bson_json_reader_t *reader,
-                              const uint8_t *data,
-                              size_t len);
-
-
-
-
-

Parameters

-
    -
  • reader: A bson_json_reader_t.
  • -
  • data: A uint8_t containing data to feed.
  • -
  • len: A size_t containing the length of data.
  • -
-
-
-

Description

-

Feed data to a memory based json reader.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_new.html deleted file mode 100644 index eef6208..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_data_reader_new.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_json_data_reader_new() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_data_reader_new()

-
-

Synopsis

-
bson_json_reader_t *
-bson_json_data_reader_new (bool allow_multiple, size_t size);
-
-
-
-
-

Parameters

-
    -
  • allow_multiple: Unused.
  • -
  • size: A requested buffer size.
  • -
-
-
-

Description

-

Creates a new streaming JSON reader that will convert JSON documents to BSON.

-

The allow_multiple parameter is unused.

-
-
-

Returns

-

A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_destroy.html deleted file mode 100644 index 426662f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_destroy.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_json_reader_destroy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_reader_destroy()

-
-

Synopsis

-
void
-bson_json_reader_destroy (bson_json_reader_t *reader);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Frees a bson_json_reader_t. Does nothing if reader is NULL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new.html deleted file mode 100644 index 802fb5d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_json_reader_new() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_reader_new()

-
-

Synopsis

-
bson_json_reader_t *
-bson_json_reader_new (void *data,
-                      bson_json_reader_cb cb,
-                      bson_json_destroy_cb dcb,
-                      bool allow_multiple,
-                      size_t buf_size);
-
-
-
-
-

Parameters

-
    -
  • data: A user-defined pointer.
  • -
  • cb: A bson_json_reader_cb.
  • -
  • dcb: A bson_json_destroy_cb.
  • -
  • allow_multiple: Unused.
  • -
  • buf_size: A size_t containing the requested internal buffer size.
  • -
-
-
-

Description

-

Creates a new bson_json_reader_t that can read from an arbitrary data source in a streaming fashion.

-

The allow_multiple parameter is unused.

-
-
-

Returns

-

A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_fd.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_fd.html deleted file mode 100644 index b83d6c4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_fd.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_json_reader_new_from_fd() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_reader_new_from_fd()

-
-

Synopsis

-
bson_json_reader_t *
-bson_json_reader_new_from_fd (int fd, bool close_on_destroy);
-
-
-
-
-

Parameters

-
    -
  • fd: An open file-descriptor.
  • -
  • close_on_destroy: Whether close() should be called on fd when the reader is destroyed.
  • -
-
-
-

Description

-

Creates a new JSON to BSON converter that will be reading from the file-descriptor fd.

-
-
-

Returns

-

A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_file.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_file.html deleted file mode 100644 index 2db884e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_new_from_file.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_json_reader_new_from_file() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_reader_new_from_file()

-
-

Synopsis

-
bson_json_reader_t *
-bson_json_reader_new_from_file (const char *filename, bson_error_t *error);
-
-
-
-
-

Parameters

-
    -
  • filename: A file-name in the system file-name encoding.
  • -
  • error: A bson_error_t.
  • -
-
-
-

Description

-

Creates a new bson_json_reader_t using the underlying file found at filename.

-
-
-

Errors

-

Errors are propagated via error.

-
-
-

Returns

-

A newly allocated bson_json_reader_t if successful, otherwise NULL and error is set.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_read.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_read.html deleted file mode 100644 index 4097e51..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_read.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - bson_json_reader_read() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_reader_read()

-
-

Synopsis

-
int
-bson_json_reader_read (bson_json_reader_t *reader,
-                       bson_t *bson,
-                       bson_error_t *error);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Reads the next BSON document from the underlying JSON source.

-
-
-

Errors

-

Errors are propagated via the error parameter.

-
-
-

Returns

-

1 if successful and data was read. 0 if successful and no data was read. -1 if there was an error.

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_t.html deleted file mode 100644 index 034effb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_json_reader_t.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - bson_json_reader_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_json_reader_t

-

Bulk JSON to BSON conversion

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct _bson_json_reader_t bson_json_reader_t;
-
-typedef enum {
-   BSON_JSON_ERROR_READ_CORRUPT_JS = 1,
-   BSON_JSON_ERROR_READ_INVALID_PARAM,
-   BSON_JSON_ERROR_READ_CB_FAILURE,
-} bson_json_error_code_t;
-
-
-
-
-

Description

-

The bson_json_reader_t structure is used for reading a sequence of JSON documents and transforming them to bson_t documents.

-

This can often be useful if you want to perform bulk operations that are defined in a file containing JSON documents.

-
-

Tip

-

bson_json_reader_t works upon JSON documents formatted in MongoDB extended JSON format.

-
-
- -
-

Example

-
/*
- * Copyright 2013 MongoDB, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/*
- * This program will print each JSON document contained in the provided files
- * as a BSON string to STDOUT.
- */
-
-
-#include <bson/bson.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-
-int
-main (int argc, char *argv[])
-{
-   bson_json_reader_t *reader;
-   bson_error_t error;
-   const char *filename;
-   bson_t doc = BSON_INITIALIZER;
-   int i;
-   int b;
-
-   /*
-    * Print program usage if no arguments are provided.
-    */
-   if (argc == 1) {
-      fprintf (stderr, "usage: %s FILE...\n", argv[0]);
-      return 1;
-   }
-
-   /*
-    * Process command line arguments expecting each to be a filename.
-    */
-   for (i = 1; i < argc; i++) {
-      filename = argv[i];
-
-      /*
-       * Open the filename provided in command line arguments.
-       */
-      if (0 == strcmp (filename, "-")) {
-         reader = bson_json_reader_new_from_fd (STDIN_FILENO, false);
-      } else {
-         if (!(reader = bson_json_reader_new_from_file (filename, &error))) {
-            fprintf (
-               stderr, "Failed to open \"%s\": %s\n", filename, error.message);
-            continue;
-         }
-      }
-
-      /*
-       * Convert each incoming document to BSON and print to stdout.
-       */
-      while ((b = bson_json_reader_read (reader, &doc, &error))) {
-         if (b < 0) {
-            fprintf (stderr, "Error in json parsing:\n%s\n", error.message);
-            abort ();
-         }
-
-         if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) {
-            fprintf (stderr, "Failed to write to stdout, exiting.\n");
-            exit (1);
-         }
-         bson_reinit (&doc);
-      }
-
-      bson_json_reader_destroy (reader);
-      bson_destroy (&doc);
-   }
-
-   return 0;
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc.html deleted file mode 100644 index 748e3a1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_malloc() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_malloc()

-
-

Synopsis

-
void *
-bson_malloc (size_t num_bytes);
-
-
-
-
-

Parameters

-
    -
  • num_bytes: A size_t containing the number of bytes to allocate.
  • -
-
-
-

Description

-

This is a portable malloc() wrapper.

-

In general, this function will return an allocation at least sizeof(void*) bytes or bigger.

-

If there was a failure to allocate num_bytes bytes, the process will be aborted.

-
-

Warning

-

This function will abort on failure to allocate memory.

-
-
-
-

Returns

-

A pointer to a memory region which HAS NOT been zeroed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc0.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc0.html deleted file mode 100644 index a06e3af..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_malloc0.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_malloc0() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_malloc0()

-
-

Synopsis

-
void *
-bson_malloc0 (size_t num_bytes);
-
-
-
-
-

Parameters

-
    -
  • num_bytes: A size_t.
  • -
-
-
-

Description

-

This is a portable malloc() wrapper that also sets the memory to zero. Similar to calloc().

-

In general, this function will return an allocation at least sizeof(void*) bytes or bigger.

-

If there was a failure to allocate num_bytes bytes, the process will be aborted.

-
-

Warning

-

This function will abort on failure to allocate memory.

-
-
-
-

Returns

-

A pointer to a memory region which HAS been zeroed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_append.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_append.html deleted file mode 100644 index ea3777c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_append.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_md5_append() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_md5_append()

-
-

Deprecated

-

All MD5 APIs are deprecated in libbson.

-
-
-

Synopsis

-
void
-bson_md5_append (bson_md5_t *pms,
-                 const uint8_t *data,
-                 uint32_t nbytes) BSON_GNUC_DEPRECATED;
-
-
-
-
-

Parameters

-
    -
  • pms: A bson_md5_t.
  • -
  • data: A memory region to feed to the md5 algorithm.
  • -
  • nbytes: The length of data in bytes.
  • -
-
-
-

Description

-

Feeds more data into the MD5 algorithm.

-

This function is deprecated and should not be used in new code.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_finish.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_finish.html deleted file mode 100644 index 0757f84..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_finish.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_md5_finish() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_md5_finish()

-
-

Deprecated

-

All MD5 APIs are deprecated in libbson.

-
-
-

Synopsis

-
void
-bson_md5_finish (bson_md5_t *pms, uint8_t digest[16]) BSON_GNUC_DEPRECATED;
-
-
-
-
-

Parameters

-
    -
  • pms: A bson_md5_t.
  • -
  • digest: A location for the digest.
  • -
-
-
-

Description

-

Completes the MD5 algorithm and stores the digest in digest.

-

This function is deprecated and should not be used in new code.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_init.html deleted file mode 100644 index afce341..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_init.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_md5_init() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_md5_init()

-
-

Deprecated

-

All MD5 APIs are deprecated in libbson.

-
-
-

Synopsis

-
void
-bson_md5_init (bson_md5_t *pms) BSON_GNUC_DEPRECATED;
-
-
-
-
-

Parameters

- -
-
-

Description

-

Initialize a new instance of the MD5 algorithm.

-

This function is deprecated and should not be used in new code.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_t.html deleted file mode 100644 index 20141c3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_md5_t.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_md5_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_md5_t

-

BSON MD5 Abstraction

-
-

Deprecated

-

All MD5 APIs are deprecated in libbson.

-
-
-

Synopsis

-
typedef struct {
-   uint32_t count[2]; /* message length in bits, lsw first */
-   uint32_t abcd[4];  /* digest buffer */
-   uint8_t buf[64];   /* accumulate block */
-} bson_md5_t;
-
-
-
-
-

Description

-

bson_md5_t encapsulates an implementation of the MD5 algorithm.

-
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_restore_vtable.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_restore_vtable.html deleted file mode 100644 index 22cba5f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_restore_vtable.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - bson_mem_restore_vtable() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_mem_restore_vtable()

-
-

Synopsis

-
void
-bson_mem_restore_vtable (void);
-
-
-
-
-

Description

-

This function shall restore the default memory allocator to be used by Libbson.

-
-

Warning

-

This function MUST be called at the end of the process. Failure to do so will result in memory being freed by the wrong allocator.

-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_set_vtable.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_set_vtable.html deleted file mode 100644 index 4389e0e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_mem_set_vtable.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - bson_mem_set_vtable() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_mem_set_vtable()

-
-

Synopsis

-
typedef struct _bson_mem_vtable_t {
-   void *(*malloc) (size_t num_bytes);
-   void *(*calloc) (size_t n_members, size_t num_bytes);
-   void *(*realloc) (void *mem, size_t num_bytes);
-   void (*free) (void *mem);
-   void *padding[4];
-} bson_mem_vtable_t;
-
-void
-bson_mem_set_vtable (const bson_mem_vtable_t *vtable);
-
-
-
-
-

Parameters

-
    -
  • vtable: A bson_mem_vtable_t with every non-padding field set.
  • -
-
-
-

Description

-

This function shall install a new memory allocator to be used by Libbson.

-
-

Warning

-

This function MUST be called at the beginning of the process. Failure to do so will result in memory being freed by the wrong allocator.

-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_memory.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_memory.html deleted file mode 100644 index 3342b5e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_memory.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - Memory Management — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Memory Management

-

BSON Memory Abstraction.

-
-

Description

-

Libbson contains a lightweight memory abstraction to make portability to new platforms easier. Additionally, it helps us integrate with interesting higher-level languages. One caveat, however, is that Libbson is not designed to deal with Out of Memory (OOM) situations. Doing so requires extreme diligence throughout the application stack that has rarely been implemented correctly. This may change in the future. As it stands now, Libbson will abort() under OOM situations.

-

To aid in language binding integration, Libbson allows for setting a custom memory allocator via bson_mem_set_vtable(). This allocation may be reversed via bson_mem_restore_vtable().

-
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new.html deleted file mode 100644 index 48aa783..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - bson_new() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_new()

-
-

Synopsis

-
bson_t *
-bson_new (void);
-
-
-
-
-

Description

-

The bson_new() function shall create a new bson_t structure on the heap. It should be freed with bson_destroy() when it is no longer in use.

-
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_buffer.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_buffer.html deleted file mode 100644 index 055814f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_buffer.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bson_new_from_buffer() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_new_from_buffer()

-
-

Synopsis

-
bson_t *
-bson_new_from_buffer (uint8_t **buf,
-                      size_t *buf_len,
-                      bson_realloc_func realloc_func,
-                      void *realloc_func_ctx);
-
-
-
-
-

Parameters

-
    -
  • buf: An out-pointer to a buffer containing a serialized BSON document, or to NULL.
  • -
  • buf_len: An out-pointer to the length of the buffer in bytes.
  • -
  • realloc_func: Optional bson_realloc_func for reallocating the buffer.
  • -
  • realloc_func_ctx: Optional pointer that will be passed as ctx to realloc_func.
  • -
-
-
-

Description

-

Creates a new bson_t using the data provided.

-

The realloc_func, if provided, is called to resize buf if the document is later expanded, for example by a call to one of the bson_append functions.

-

If *buf is initially NULL then it is allocated, using realloc_func or the default allocator, and initialized with an empty BSON document, and *buf_len is set to 5, the size of an empty document.

-
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_data.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_data.html deleted file mode 100644 index bbb79d0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_data.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - bson_new_from_data() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_new_from_data()

-
-

Synopsis

-
bson_t *
-bson_new_from_data (const uint8_t *data, size_t length);
-
-
-
-
-

Parameters

-
    -
  • data: A BSON encoded document buffer.
  • -
  • length: The length of data in bytes.
  • -
-
-
-

Description

-

The bson_new_from_data() function shall create a new bson_t on the heap and copy the contents of data. This may be helpful when working with language bindings but is generally expected to be slower.

-
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_json.html deleted file mode 100644 index e83a548..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_new_from_json.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bson_new_from_json() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_new_from_json()

-
-

Synopsis

-
bson_t *
-bson_new_from_json (const uint8_t *data, ssize_t len, bson_error_t *error);
-
-
-
-
-

Parameters

-
    -
  • data: A UTF-8 encoded string containing valid JSON.
  • -
  • len: The length of data in bytes excluding a trailing \0 or -1 to determine the length with strlen().
  • -
  • error: An optional location for a bson_error_t.
  • -
-
-
-

Description

-

The bson_new_from_json() function allocates and initialize a new bson_t by parsing the JSON found in data. Only a single JSON object may exist in data or an error will be set and NULL returned.

-
-
-

Errors

-

Errors are propagated via the error parameter.

-
-
-

Returns

-

A newly allocated bson_t if successful, otherwise NULL and error is set.

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_compare.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_compare.html deleted file mode 100644 index 36a92ed..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_compare.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_oid_compare() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_compare()

-
-

Synopsis

-
int
-bson_oid_compare (const bson_oid_t *oid1, const bson_oid_t *oid2);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_oid_compare() function shall return a qsort() style value of a lexicographical sort of _oid1_ and _oid2_.

-
-
-

Returns

-

less than 0, 0, or greater than 0 based on the comparison.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_copy.html deleted file mode 100644 index 131d647..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_copy.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_oid_copy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_copy()

-
-

Synopsis

-
void
-bson_oid_copy (const bson_oid_t *src, bson_oid_t *dst);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Copies the contents of src into dst.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_equal.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_equal.html deleted file mode 100644 index 33cb58b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_equal.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_oid_equal() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_equal()

-
-

Synopsis

-
bool
-bson_oid_equal (const bson_oid_t *oid1, const bson_oid_t *oid2);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Checks if two bson_oid_t contain the same bytes.

-
-
-

Returns

-

true if they are equal, otherwise false.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_get_time_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_get_time_t.html deleted file mode 100644 index 320fde5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_get_time_t.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_oid_get_time_t() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_get_time_t()

-
-

Synopsis

-
time_t
-bson_oid_get_time_t (const bson_oid_t *oid);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the generation time in seconds since the UNIX Epoch of oid.

-
-
-

Returns

-

A time_t containing the seconds since the UNIX epoch of oid.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_hash.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_hash.html deleted file mode 100644 index d155376..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_hash.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_oid_hash() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_hash()

-
-

Synopsis

-
uint32_t
-bson_oid_hash (const bson_oid_t *oid);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Generates a hash code for oid suitable for a hashtable.

-
-
-

Returns

-

A 32-bit hash code.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init.html deleted file mode 100644 index 66e0494..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_oid_init() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_init()

-
-

Synopsis

-
void
-bson_oid_init (bson_oid_t *oid, bson_context_t *context);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Generates a new bson_oid_t using either context or the default bson_context_t.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_data.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_data.html deleted file mode 100644 index fa49fbd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_data.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_oid_init_from_data() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_init_from_data()

-
-

Synopsis

-
void
-bson_oid_init_from_data (bson_oid_t *oid, const uint8_t *data);
-
-
-
-
-

Parameters

-
    -
  • oid: A bson_oid_t.
  • -
  • data: A buffer containing 12 bytes for the oid.
  • -
-
-
-

Description

-

Initializes a bson_oid_t using the raw buffer provided.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_string.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_string.html deleted file mode 100644 index daa3b47..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_from_string.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_oid_init_from_string() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_init_from_string()

-
-

Synopsis

-
void
-bson_oid_init_from_string (bson_oid_t *oid, const char *str);
-
-
-
-
-

Parameters

-
    -
  • oid: A bson_oid_t.
  • -
  • str: A string containing a hex encoded version of the oid.
  • -
-
-
-

Description

-

Parses the string containing hex encoded oid and initialize the bytes in oid.

-
-
-

Example

-
bson_oid_init_from_string (&oid, "012345678901234567890123");
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_sequence.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_sequence.html deleted file mode 100644 index a1207a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_init_sequence.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_oid_init_sequence() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_init_sequence()

-
-

Synopsis

-
void
-bson_oid_init_sequence (bson_oid_t *oid, bson_context_t *context);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Generates a new ObjectID using the 64-bit sequence.

-
-

Warning

-

This form of ObjectID is generally used by MongoDB replica peers only.

-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_is_valid.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_is_valid.html deleted file mode 100644 index c35cc77..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_is_valid.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_oid_is_valid() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_is_valid()

-
-

Synopsis

-
bool
-bson_oid_is_valid (const char *str, size_t length);
-
-
-
-
-

Parameters

-
    -
  • str: A string.
  • -
  • length: The length of str.
  • -
-
-
-

Description

-

Checks if a string containing a hex encoded string is a valid BSON ObjectID.

-
-
-

Returns

-

true if str could be parsed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_t.html deleted file mode 100644 index 411601d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_t.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - bson_oid_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_t

-

BSON ObjectID Abstraction

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct {
-   uint8_t bytes[12];
-} bson_oid_t;
-
-
-
-
-

Description

-

The bson_oid_t structure contains the 12-byte ObjectId notation defined by the BSON ObjectID specification.

-

ObjectId is a 12-byte BSON type, constructed using:

-
    -
  • a 4-byte value representing the seconds since the Unix epoch (in Big Endian)
  • -
  • a 3-byte machine identifier
  • -
  • a 2-byte process id (Big Endian), and
  • -
  • a 3-byte counter (Big Endian), starting with a random value.
  • -
-
-
-

String Conversion

-

You can convert an Object ID to a string using bson_oid_to_string() and back with bson_oid_init_from_string().

-
-
-

Hashing

-

A bson_oid_t can be used in hashtables using the function bson_oid_hash() and bson_oid_equal().

-
-
-

Comparing

-

A bson_oid_t can be compared to another using bson_oid_compare() for qsort() style comparing and bson_oid_equal() for direct equality.

-
-
-

Validating

-

You can validate that a string containing a hex-encoded ObjectID is valid using the function bson_oid_is_valid().

-
- -
-

Example

-
#include <bson.h>
-#include <stdio.h>
-
-int
-main (int argc, char *argv[])
-{
-   bson_oid_t oid;
-   char str[25];
-
-   bson_oid_init (&oid, NULL);
-   bson_oid_to_string (&oid, str);
-   printf ("%s\n", str);
-
-   if (bson_oid_is_valid (str, sizeof str)) {
-      bson_oid_init_from_string (&oid, str);
-   }
-
-   printf ("The UNIX time was: %u\n", (unsigned) bson_oid_get_time_t (&oid));
-
-   return 0;
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_to_string.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_to_string.html deleted file mode 100644 index 793cc9b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_oid_to_string.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_oid_to_string() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_oid_to_string()

-
-

Synopsis

-
void
-bson_oid_to_string (const bson_oid_t *oid, char str[25]);
-
-
-
-
-

Parameters

-
    -
  • oid: A bson_oid_t.
  • -
  • str: A location for the resulting string.
  • -
-
-
-

Description

-

Converts oid into a hex encoded string.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy.html deleted file mode 100644 index 1ca8c0d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_reader_destroy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_destroy()

-
-

Synopsis

-
void
-bson_reader_destroy (bson_reader_t *reader);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Destroys and releases all resources associated with reader. Does nothing if reader is NULL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy_func_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy_func_t.html deleted file mode 100644 index 2065bfb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_destroy_func_t.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_reader_destroy_func_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_destroy_func_t

-
-

Synopsis

-
typedef void (*bson_reader_destroy_func_t) (void *handle);
-
-
-
-
-

Parameters

- -
-
-

Description

-

An optional callback function that will be called when a bson_reader_t created with bson_reader_new_from_handle() is destroyed with bson_reader_destroy().

-

The handle used when creating the reader is passed to this callback.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_data.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_data.html deleted file mode 100644 index 8211986..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_data.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_reader_new_from_data() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_new_from_data()

-
-

Synopsis

-
bson_reader_t *
-bson_reader_new_from_data (const uint8_t *data, size_t length);
-
-
-
-
-

Parameters

-
    -
  • data: A uint8_t.
  • -
  • length: A size_t.
  • -
-
-
-

Description

-

The bson_reader_new_from_data() function shall create a new bson_reader_t using the buffer supplied. data is not copied and MUST be valid for the lifetime of the resulting bson_reader_t.

-
-
-

Returns

-

A newly allocated bson_reader_t.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_fd.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_fd.html deleted file mode 100644 index 93ad276..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_fd.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_reader_new_from_fd() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_new_from_fd()

-
-

Synopsis

-
bson_reader_t *
-bson_reader_new_from_fd (int fd, bool close_on_destroy);
-
-
-
-
-

Parameters

-
    -
  • fd: A valid file-descriptor.
  • -
  • close_on_destroy: Whether close() should be called on fd when the reader is destroyed.
  • -
-
-
-

Description

-

The bson_reader_new_from_fd() function shall create a new bson_reader_t that will read from the provided file-descriptor.

-

fd MUST be in blocking mode.

-

If close_fd is true, then fd will be closed when the bson_reader_t is destroyed with bson_reader_destroy().

-
-
-

Returns

-

A newly allocated bson_reader_t that should be freed with bson_reader_destroy().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_file.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_file.html deleted file mode 100644 index 0c27264..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_file.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - bson_reader_new_from_file() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_new_from_file()

-
-

Synopsis

-
bson_reader_t *
-bson_reader_new_from_file (const char *path, bson_error_t *error);
-
-
-
-
-

Parameters

-
    -
  • path: A filename in the host filename encoding.
  • -
  • error: A bson_error_t.
  • -
-
-
-

Description

-

Creates a new bson_reader_t using the file denoted by filename.

-
-
-

Errors

-

Errors are propagated via the error parameter.

-
-
-

Returns

-

A newly allocated bson_reader_t on success, otherwise NULL and error is set.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_handle.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_handle.html deleted file mode 100644 index c257350..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_new_from_handle.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_reader_new_from_handle() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_new_from_handle()

-
-

Synopsis

-
bson_reader_t *
-bson_reader_new_from_handle (void *handle,
-                             bson_reader_read_func_t rf,
-                             bson_reader_destroy_func_t df);
-
-
-
-
-

Parameters

- -
-
-

Description

-

This function allows for a pluggable data stream for the reader. This can be used to read from sockets, files, memory, or other arbitrary sources.

-
-
-

Returns

-

A newly allocated bson_reader_t if successful; otherwise NULL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read.html deleted file mode 100644 index efbd31c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - bson_reader_read() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_read()

-
-

Synopsis

-
const bson_t *
-bson_reader_read (bson_reader_t *reader, bool *reached_eof);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_reader_read() function shall read the next document from the underlying file-descriptor or buffer.

-

If there are no further documents or a failure was detected, then NULL is returned.

-

If we reached the end of the sequence, reached_eof is set to true.

-

To detect an error, check for NULL and reached_of is false.

-
-
-

Returns

-

A bson_t that should not be modified or freed.

-
-
-

Example

-
const bson_t *doc;
-bool reached_eof = false;
-
-while ((doc = bson_reader_read (reader, &reached_eof))) {
-   /* do something */
-}
-
-if (!reached_eof) {
-   fprintf (stderr, "Failed to read all documents.\n");
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read_func_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read_func_t.html deleted file mode 100644 index fb36bec..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_read_func_t.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_reader_read_func_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_read_func_t

-
-

Synopsis

-
typedef ssize_t (*bson_reader_read_func_t) (void *handle,
-                                            void *buf,
-                                            size_t count);
-
-
-
-
-

Parameters

-
    -
  • handle: The handle to read from.
  • -
  • buf: The buffer to read into.
  • -
  • count: The number of bytes to read.
  • -
-
-
-

Description

-

A callback function that will be called by bson_reader_t to read the next chunk of data from the underlying opaque file descriptor.

-

This function is meant to operate similar to the read(2) function as part of libc on UNIX-like systems.

-
-
-

Returns

-

0 for end of stream.

-

-1 for a failure on read.

-

A value greater than zero for the number of bytes read into buf.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_reset.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_reset.html deleted file mode 100644 index c7b183f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_reset.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_reader_reset() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_reset()

-
-

Synopsis

-
void
-bson_reader_reset (bson_reader_t *reader);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Seeks to the beginning of the underlying buffer. Valid only for a reader created from a buffer with bson_reader_new_from_data(), not one created from a file, file descriptor, or handle.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_destroy_func.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_destroy_func.html deleted file mode 100644 index 810e2e2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_destroy_func.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - bson_reader_set_destroy_func() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_set_destroy_func()

-
-

Synopsis

-
void
-bson_reader_set_destroy_func (bson_reader_t *reader,
-                              bson_reader_destroy_func_t func);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Allows for setting a callback to be executed when a reader is destroyed. This should only be used by implementations implementing their own read callbacks.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_read_func.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_read_func.html deleted file mode 100644 index be0bf5e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_set_read_func.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_reader_set_read_func() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_set_read_func()

-
-

Synopsis

-
void
-bson_reader_set_read_func (bson_reader_t *reader, bson_reader_read_func_t func);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Sets the function to read more data from the underlying stream in a custom bson_reader_t.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_t.html deleted file mode 100644 index 2dc10a3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_t.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - - bson_reader_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_t

-

Streaming BSON Document Reader

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct _bson_reader_t bson_reader_t;
-
-bson_reader_t *
-bson_reader_new_from_handle (void *handle,
-                             bson_reader_read_func_t rf,
-                             bson_reader_destroy_func_t df);
-bson_reader_t *
-bson_reader_new_from_fd (int fd, bool close_on_destroy);
-bson_reader_t *
-bson_reader_new_from_file (const char *path, bson_error_t *error);
-bson_reader_t *
-bson_reader_new_from_data (const uint8_t *data, size_t length);
-
-void
-bson_reader_destroy (bson_reader_t *reader);
-
-
-
-
-

Description

-

bson_reader_t is a structure used for reading a sequence of BSON documents. The sequence can come from a file-descriptor, memory region, or custom callbacks.

-
- -
-

Example

-
/*
- * Copyright 2013 MongoDB, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/*
- * This program will print each BSON document contained in the provided files
- * as a JSON string to STDOUT.
- */
-
-
-#include <bson/bson.h>
-#include <stdio.h>
-
-
-int
-main (int argc, char *argv[])
-{
-   bson_reader_t *reader;
-   const bson_t *b;
-   bson_error_t error;
-   const char *filename;
-   char *str;
-   int i;
-
-   /*
-    * Print program usage if no arguments are provided.
-    */
-   if (argc == 1) {
-      fprintf (stderr, "usage: %s [FILE | -]...\nUse - for STDIN.\n", argv[0]);
-      return 1;
-   }
-
-   /*
-    * Process command line arguments expecting each to be a filename.
-    */
-   for (i = 1; i < argc; i++) {
-      filename = argv[i];
-
-      if (strcmp (filename, "-") == 0) {
-         reader = bson_reader_new_from_fd (STDIN_FILENO, false);
-      } else {
-         if (!(reader = bson_reader_new_from_file (filename, &error))) {
-            fprintf (
-               stderr, "Failed to open \"%s\": %s\n", filename, error.message);
-            continue;
-         }
-      }
-
-      /*
-       * Convert each incoming document to JSON and print to stdout.
-       */
-      while ((b = bson_reader_read (reader, NULL))) {
-         str = bson_as_canonical_extended_json (b, NULL);
-         fprintf (stdout, "%s\n", str);
-         bson_free (str);
-      }
-
-      /*
-       * Cleanup after our reader, which closes the file descriptor.
-       */
-      bson_reader_destroy (reader);
-   }
-
-   return 0;
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_tell.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_tell.html deleted file mode 100644 index dd7dc12..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reader_tell.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_reader_tell() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reader_tell()

-
-

Synopsis

-
off_t
-bson_reader_tell (bson_reader_t *reader);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Tells the current position within the underlying stream.

-
-
-

Returns

-

-1 on failure, otherwise the offset within the underlying stream.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc.html deleted file mode 100644 index 0047909..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - bson_realloc() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_realloc()

-
-

Synopsis

-
void *
-bson_realloc (void *mem, size_t num_bytes);
-
-
-
-
-

Parameters

-
    -
  • mem: A memory region.
  • -
  • num_bytes: A size_t containing the new requested size.
  • -
-
-
-

Description

-

This is a portable realloc() wrapper.

-

In general, this function will return an allocation at least sizeof(void*) bytes or bigger. If num_bytes is 0, then the allocation will be freed.

-

If there was a failure to allocate num_bytes bytes, the process will be aborted.

-
-

Warning

-

This function will abort on failure to allocate memory.

-
-
-
-

Returns

-

A pointer to a memory region which HAS NOT been zeroed.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_ctx.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_ctx.html deleted file mode 100644 index 4e52723..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_ctx.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - bson_realloc_ctx() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_realloc_ctx()

-
-

Synopsis

-
void *
-bson_realloc_ctx (void *mem, size_t num_bytes, void *ctx);
-
-
-
-
-

Parameters

-
    -
  • mem: A memory region.
  • -
  • num_bytes: A size_t containing the requested size.
  • -
  • ctx: A consumer-specific pointer or NULL.
  • -
-
-
-

Description

-

This function is identical to bson_realloc() except it takes a context parameter. This is useful when working with pooled or specific memory allocators.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_func.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_func.html deleted file mode 100644 index d5be572..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_realloc_func.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_realloc_func — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_realloc_func

-
-

Synopsis

-
typedef void *(*bson_realloc_func) (void *mem, size_t num_bytes, void *ctx);
-
-
-
-
-

Parameters

-
    -
  • mem: A memory region.
  • -
  • num_bytes: A size_t containing the requested size.
  • -
  • ctx: A consumer-specific pointer or NULL.
  • -
-
-
-

Description

-

This is a prototype for pluggable realloc functions used through the Libbson library. If you wish to use a custom allocator this is one way to do it. Additionally, bson_realloc_ctx() is a default implementation of this prototype.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reinit.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reinit.html deleted file mode 100644 index cab0b65..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reinit.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - bson_reinit() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reinit()

-
-

Synopsis

-
void
-bson_reinit (bson_t *b);
-
-
-
-
-

Parameters

- -
-
-

Description

-

The bson_reinit() function shall be equivalent to calling bson_destroy() and bson_init().

-

However, if the bson_t structure contains a malloc()’d buffer, it may be reused. To be certain that any buffer is freed, always call bson_destroy() on any bson_t structure, whether initialized or reinitialized, after its final use.

- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reserve_buffer.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reserve_buffer.html deleted file mode 100644 index 97f69f4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_reserve_buffer.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - bson_reserve_buffer() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_reserve_buffer()

-
-

Synopsis

-
uint8_t *
-bson_reserve_buffer (bson_t *bson, uint32_t size);
-
-
-
-
-

Parameters

-
    -
  • bson: An initialized bson_t.
  • -
  • size: The length in bytes of the new buffer.
  • -
-
-
-

Description

-

Grow the internal buffer of bson to size and set the document length to size. Useful for eliminating copies when reading BSON bytes from a stream.

-

First, initialize bson with bson_init() or bson_new(), then call this function. After it returns, the length of bson is set to size but its contents are uninitialized memory: you must fill the contents with a BSON document of the correct length before any other operations.

-

The document must be freed with bson_destroy().

-
-
-

Returns

-

A pointer to the internal buffer, which is at least size bytes, or NULL if the space could not be allocated.

-
-
-

Example

-

Use bson_reserve_buffer to write a function that takes a bson_t pointer and reads a file into it directly:

-
#include <stdio.h>
-#include <bson/bson.h>
-
-bool
-read_into (bson_t *bson, FILE *fp)
-{
-   uint8_t *buffer;
-   long size;
-
-   if (fseek (fp, 0L, SEEK_END) < 0) {
-      perror ("Couldn't get file size");
-      return 1;
-   }
-
-   size = ftell (fp);
-   if (size == EOF) {
-      perror ("Couldn't get file size");
-      return 1;
-   }
-
-   if (size > INT32_MAX) {
-      fprintf (stderr, "File too large\n");
-      return 1;
-   }
-
-   /* reserve buffer space - bson is temporarily invalid */
-   buffer = bson_reserve_buffer (bson, (uint32_t) size);
-   if (!buffer) {
-      fprintf (stderr, "Couldn't reserve %ld bytes", size);
-      return false;
-   }
-
-   /* read file directly into the buffer */
-   rewind (fp);
-   if (fread ((void *) buffer, 1, (size_t) size, fp) < (size_t) size) {
-      perror ("Couldn't read file");
-      return false;
-   }
-
-   return true;
-}
-
-int
-main ()
-{
-   FILE *fp;
-   char *json;
-
-   /* stack-allocated, initialized bson_t */
-   bson_t bson = BSON_INITIALIZER;
-
-   if (!(fp = fopen ("document.bson", "rb"))) {
-      perror ("Couldn't read file");
-      return 1;
-   }
-
-   read_into (&bson, fp);
-   fclose (fp);
-
-   json = bson_as_canonical_extended_json (&bson, NULL);
-   printf ("%s\n", json);
-
-   bson_free (json);
-   bson_destroy (&bson);
-
-   return 0;
-}
-
-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_set_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_set_error.html deleted file mode 100644 index ab8882c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_set_error.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_set_error() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_set_error()

-
-

Synopsis

-
void
-bson_set_error (
-   bson_error_t *error, uint32_t domain, uint32_t code, const char *format, ...)
-   BSON_GNUC_PRINTF (4, 5);
-
-
-
-
-

Parameters

-
    -
  • error: A bson_error_t.
  • -
  • domain: A uint32_t.
  • -
  • code: A uint32_t.
  • -
  • format: A printf() style format string.
  • -
-
-
-

Description

-

This is a helper function to set the parameters of a bson_error_t. It handles the case where error is NULL by doing nothing.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_sized_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_sized_new.html deleted file mode 100644 index d1a911b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_sized_new.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - bson_sized_new() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_sized_new()

-
-

Synopsis

-
bson_t *
-bson_sized_new (size_t size);
-
-
-
-
-

Parameters

-
    -
  • size: The size to pre-allocate for the underlying buffer.
  • -
-
-
-

Description

-

The bson_sized_new() function shall create a new bson_t on the heap with a preallocated buffer. This is useful if you have a good idea of the size of the resulting document.

-
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_snprintf.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_snprintf.html deleted file mode 100644 index 4c1967d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_snprintf.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_snprintf() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_snprintf()

-
-

Synopsis

-
int
-bson_snprintf (char *str, size_t size, const char *format, ...)
-   BSON_GNUC_PRINTF (3, 4);
-
-
-
-
-

Parameters

-
    -
  • str: The destination buffer.
  • -
  • size: The size of str.
  • -
  • format: A printf style format string.
  • -
-
-
-

Description

-

This is a portable wrapper around snprintf(). It also enforces a trailing \0 in the resulting string.

-
-
-

Returns

-

The number of bytes written to str.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_steal.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_steal.html deleted file mode 100644 index e44bc91..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_steal.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - bson_steal() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_steal()

-
-

Synopsis

-
bool
-bson_steal (bson_t *dst, bson_t *src);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Efficiently transfer the contents of src to dst and destroy src.

-

Before calling this function, src must be initialized and dst must be uninitialized. After this function returns successfully, src is destroyed, and dst is initialized and must be freed with bson_destroy().

-

For example, if you have a higher-level structure that wraps a bson_t, use bson_steal to transfer BSON data into it:

-
typedef struct {
-   bson_t bson;
-} bson_wrapper_t;
-
-
-bson_wrapper_t *
-wrap_bson (bson_t *b)
-{
-   bson_wrapper_t *wrapper = bson_malloc (sizeof (bson_wrapper_t));
-
-   if (bson_steal (&wrapper->bson, b)) {
-      return wrapper;
-   }
-
-   bson_free (wrapper);
-   return NULL;
-}
-
-
-void
-bson_wrapper_destroy (bson_wrapper_t *wrapper)
-{
-   bson_destroy (&wrapper->bson);
-   bson_free (wrapper);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-   bson_t bson = BSON_INITIALIZER;
-   bson_wrapper_t *wrapper;
-
-   BSON_APPEND_UTF8 (&bson, "key", "value");
-
-   /* now "bson" is destroyed */
-   wrapper = wrap_bson (&bson);
-
-   /* clean up */
-   bson_wrapper_destroy (wrapper);
-}
-
-
-

See also bson_destroy_with_steal(), a lower-level function that returns the raw contents of a bson_t.

-
-
-

Returns

-

Returns true if src was successfully moved to dst, false if src is invalid, or was statically initialized, or another error occurred.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strcasecmp.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strcasecmp.html deleted file mode 100644 index f3d3307..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strcasecmp.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_strcasecmp() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strcasecmp()

-
-

Synopsis

-
int
-bson_strcasecmp (const char *s1, const char *s2);
-
-
-
-
-

Parameters

-
    -
  • s1: A string.
  • -
  • s2: A string.
  • -
-
-
-

Description

-

A portable version of strcasecmp().

-
-
-

Returns

-

Returns a negative integer if s1 sorts lexicographically before s2, a positive -integer if it sorts after, or 0 if they are equivalent, after translating both -strings to lower case.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup.html deleted file mode 100644 index 6045318..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_strdup() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strdup()

-
-

Synopsis

-
char *
-bson_strdup (const char *str);
-
-
-
-
-

Parameters

-
    -
  • str: A string.
  • -
-
-
-

Description

-

Copies str into a new string. If str is NULL, then NULL is returned.

-
-
-

Returns

-

A newly allocated string that should be freed with bson_free().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup_printf.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup_printf.html deleted file mode 100644 index 5cb6205..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdup_printf.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_strdup_printf() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strdup_printf()

-
-

Synopsis

-
char *
-bson_strdup_printf (const char *format, ...) BSON_GNUC_PRINTF (1, 2);
-
-
-
-
-

Parameters

-
    -
  • format: A printf style format string.
  • -
-
-
-

Description

-

This function performs a printf style format but into a newly allocated string.

-
-
-

Returns

-

A newly allocated string that should be freed with bson_free().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdupv_printf.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdupv_printf.html deleted file mode 100644 index a2a5fc9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strdupv_printf.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_strdupv_printf() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strdupv_printf()

-
-

Synopsis

-
char *
-bson_strdupv_printf (const char *format, va_list args) BSON_GNUC_PRINTF (1, 0);
-
-
-
-
-

Parameters

-
    -
  • format: A printf style format string.
  • -
  • args: A va_list.
  • -
-
-
-

Description

-

This function is like bson_strdup_printf() except takes a va_list of parameters.

-
-
-

Returns

-

A newly allocated string that should be freed with bson_free().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strerror_r.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strerror_r.html deleted file mode 100644 index 80ee3d5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strerror_r.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_strerror_r() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strerror_r()

-
-

Synopsis

-
char *
-bson_strerror_r (int err_code, char *buf, size_t buflen);
-
-
-
-
-

Parameters

-
    -
  • err_code: An errno.
  • -
  • buf: A location to store the string.
  • -
  • buflen: The size of buf.
  • -
-
-
-

Description

-

This is a portability wrapper around strerror().

-
-
-

Returns

-

The passed in buf parameter or an internal string.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strfreev.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strfreev.html deleted file mode 100644 index 2a014b1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strfreev.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_strfreev() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strfreev()

-
-

Synopsis

-
void
-bson_strfreev (char **strv);
-
-
-
-
-

Parameters

-
    -
  • strv: A NULL-terminated array of strings to free, including the array.
  • -
-
-
-

Description

-

This will free each string in a NULL-terminated array of strings and then the array itself.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append.html deleted file mode 100644 index 77b18d0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_string_append() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_append()

-
-

Synopsis

-
void
-bson_string_append (bson_string_t *string, const char *str);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Appends the ASCII or UTF-8 encoded string str to string. This is not suitable for embedding NULLs in strings.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_c.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_c.html deleted file mode 100644 index d16f286..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_c.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_string_append_c() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_append_c()

-
-

Synopsis

-
void
-bson_string_append_c (bson_string_t *string, char str);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Appends c to the string builder string.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_printf.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_printf.html deleted file mode 100644 index 4d96d31..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_printf.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - bson_string_append_printf() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_append_printf()

-
-

Synopsis

-
void
-bson_string_append_printf (bson_string_t *string, const char *format, ...)
-   BSON_GNUC_PRINTF (2, 3);
-
-
-
-
-

Parameters

-
    -
  • string: A bson_string_t.
  • -
  • format: A printf style format string.
  • -
-
-
-

Description

-

Like bson_string_append() but formats a printf style string and then appends that to string.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_unichar.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_unichar.html deleted file mode 100644 index e2c9315..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_append_unichar.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_string_append_unichar() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_append_unichar()

-
-

Synopsis

-
void
-bson_string_append_unichar (bson_string_t *string, bson_unichar_t unichar);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Appends a unicode character to string. The character will be encoded into its multi-byte UTF-8 representation.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_free.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_free.html deleted file mode 100644 index 836cc4e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_free.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_string_free() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_free()

-
-

Synopsis

-
char *
-bson_string_free (bson_string_t *string, bool free_segment);
-
-
-
-
-

Parameters

-
    -
  • string: A bson_string_t.
  • -
  • free_segment: A bool indicating if str->str should be returned.
  • -
-
-
-

Description

-

Frees the bson_string_t structure and optionally the string itself.

-
-
-

Returns

-

str->str if free_segment is true, otherwise NULL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_new.html deleted file mode 100644 index ed64083..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_new.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_string_new() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_new()

-
-

Synopsis

-
bson_string_t *
-bson_string_new (const char *str);
-
-
-
-
-

Parameters

-
    -
  • str: A string to be copied or NULL.
  • -
-
-
-

Description

-

Creates a new string builder, which uses power-of-two growth of buffers. Use the various bson_string_append*() functions to append to the string.

-
-
-

Returns

-

A newly allocated bson_string_t that should be freed with bson_string_free() when no longer in use.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_t.html deleted file mode 100644 index dc03cda..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_t.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - bson_string_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_t

-

String Building Abstraction

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct {
-   char *str;
-   uint32_t len;
-   uint32_t alloc;
-} bson_string_t;
-
-
-
-
-

Description

-

bson_string_t is an abstraction for building strings. As chunks are added to the string, allocations are performed in powers of two.

-

This API is useful if you need to build UTF-8 encoded strings.

-
- -
-

Example

-
bson_string_t *str;
-
-str = bson_string_new (NULL);
-bson_string_append_printf (str, "%d %s %f\n", 0, "some string", 0.123);
-printf ("%s\n", str->str);
-
-bson_string_free (str, true);
-
-
-
-

Tip

-

You can call bson_string_free() with false if you would like to take ownership of str->str. Some APIs that do this might call return bson_string_free (str, false); after building the string.

-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_truncate.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_truncate.html deleted file mode 100644 index e04aedf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_string_truncate.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - bson_string_truncate() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_string_truncate()

-
-

Synopsis

-
void
-bson_string_truncate (bson_string_t *string, uint32_t len);
-
-
-
-
-

Parameters

-
    -
  • string: A bson_string_t.
  • -
  • len: The new length of the string, excluding the trailing \0.
  • -
-
-
-

Description

-

Truncates the string so that it is len bytes in length. This must be smaller or equal to the current length of the string.

-

A \0 byte will be placed where the end of the string occurs.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strncpy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strncpy.html deleted file mode 100644 index 929af95..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strncpy.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_strncpy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strncpy()

-
-

Synopsis

-
void
-bson_strncpy (char *dst, const char *src, size_t size);
-
-
-
-
-

Parameters

-
    -
  • dst: The destination buffer.
  • -
  • src: The src buffer.
  • -
  • size: The number of bytes to copy into dst, which must be at least that size.
  • -
-
-
-

Description

-

Copies up to size bytes from src into dst. dst must be at least size bytes in size. A trailing \0 is always set.

-

Does nothing if size is zero.

-

bson_strncpy matches the behavior of the C11 standard strncpy_s, rather than strncpy. This means that bson_strncpy always writes a null terminator to dst, even if dst is too short to fit the entire string from src. If there is additional space left in dst after copying src, bson_strncpy does not fill the remaining space with null characters.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strndup.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strndup.html deleted file mode 100644 index b5800e5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strndup.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_strndup() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strndup()

-
-

Synopsis

-
char *
-bson_strndup (const char *str, size_t n_bytes);
-
-
-
-
-

Parameters

-
    -
  • str: A string to copy.
  • -
  • n_bytes: A size_t.
  • -
-
-
-

Description

-

Allocates a new string and copies up to n_bytes from str into it. A trailing \0 is always set.

-
-
-

Returns

-

A newly allocated string that should be freed with bson_free().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strnlen.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strnlen.html deleted file mode 100644 index f508eda..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_strnlen.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_strnlen() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_strnlen()

-
-

Synopsis

-
size_t
-bson_strnlen (const char *s, size_t maxlen);
-
-
-
-
-

Parameters

-
    -
  • s: A string.
  • -
  • maxlen: The maximum size of string to check.
  • -
-
-
-

Description

-

A portable version of strnlen().

-
-
-

Returns

-

The length of s in bytes or maxlen if no \0 was found.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_subtype_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_subtype_t.html deleted file mode 100644 index ffea748..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_subtype_t.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - bson_subtype_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_subtype_t

-

Binary Field Subtype

-
-

Synopsis

-
#include <bson/bson.h>
-
-
-typedef enum {
-   BSON_SUBTYPE_BINARY = 0x00,
-   BSON_SUBTYPE_FUNCTION = 0x01,
-   BSON_SUBTYPE_BINARY_DEPRECATED = 0x02,
-   BSON_SUBTYPE_UUID_DEPRECATED = 0x03,
-   BSON_SUBTYPE_UUID = 0x04,
-   BSON_SUBTYPE_MD5 = 0x05,
-   BSON_SUBTYPE_USER = 0x80,
-} bson_subtype_t;
-
-
-
-
-

Description

-

This enumeration contains the various subtypes that may be used in a binary field. See http://bsonspec.org for more information.

-
-
-

Functions

-
-
-
-
-

Example

-
bson_t doc = BSON_INITIALIZER;
-
-BSON_APPEND_BINARY (&doc, "binary", BSON_SUBTYPE_BINARY, data, data_len);
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_t.html deleted file mode 100644 index 611f884..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_t.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - - bson_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_t

-

BSON Document Abstraction

-
-

Synopsis

-
#include <bson/bson.h>
-
-/**
- * bson_empty:
- * @b: a bson_t.
- *
- * Checks to see if @b is an empty BSON document. An empty BSON document is
- * a 5 byte document which contains the length (4 bytes) and a single NUL
- * byte indicating end of fields.
- */
-#define bson_empty(b) /* ... */
-
-/**
- * bson_empty0:
- *
- * Like bson_empty() but treats NULL the same as an empty bson_t document.
- */
-#define bson_empty0(b) /* ... */
-
-/**
- * bson_clear:
- *
- * Easily free a bson document and set it to NULL. Use like:
- *
- * bson_t *doc = bson_new();
- * bson_clear (&doc);
- * BSON_ASSERT (doc == NULL);
- */
-#define bson_clear(bptr) /* ... */
-
-/**
- * BSON_MAX_SIZE:
- *
- * The maximum size in bytes of a BSON document.
- */
-#define BSON_MAX_SIZE /* ... */
-
-#define BSON_APPEND_ARRAY(b, key, val) \
-   bson_append_array (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_ARRAY_BEGIN(b, key, child) \
-   bson_append_array_begin (b, key, (int) strlen (key), child)
-
-#define BSON_APPEND_BINARY(b, key, subtype, val, len) \
-   bson_append_binary (b, key, (int) strlen (key), subtype, val, len)
-
-#define BSON_APPEND_BOOL(b, key, val) \
-   bson_append_bool (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_CODE(b, key, val) \
-   bson_append_code (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \
-   bson_append_code_with_scope (b, key, (int) strlen (key), val, scope)
-
-#define BSON_APPEND_DBPOINTER(b, key, coll, oid) \
-   bson_append_dbpointer (b, key, (int) strlen (key), coll, oid)
-
-#define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \
-   bson_append_document_begin (b, key, (int) strlen (key), child)
-
-#define BSON_APPEND_DOUBLE(b, key, val) \
-   bson_append_double (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_DOCUMENT(b, key, val) \
-   bson_append_document (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_INT32(b, key, val) \
-   bson_append_int32 (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_INT64(b, key, val) \
-   bson_append_int64 (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_MINKEY(b, key) \
-   bson_append_minkey (b, key, (int) strlen (key))
-
-#define BSON_APPEND_DECIMAL128(b, key, val) \
-   bson_append_decimal128 (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_MAXKEY(b, key) \
-   bson_append_maxkey (b, key, (int) strlen (key))
-
-#define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key))
-
-#define BSON_APPEND_OID(b, key, val) \
-   bson_append_oid (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_REGEX(b, key, val, opt) \
-   bson_append_regex (b, key, (int) strlen (key), val, opt)
-
-#define BSON_APPEND_UTF8(b, key, val) \
-   bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val))
-
-#define BSON_APPEND_SYMBOL(b, key, val) \
-   bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val))
-
-#define BSON_APPEND_TIME_T(b, key, val) \
-   bson_append_time_t (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_TIMEVAL(b, key, val) \
-   bson_append_timeval (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_DATE_TIME(b, key, val) \
-   bson_append_date_time (b, key, (int) strlen (key), val)
-
-#define BSON_APPEND_TIMESTAMP(b, key, val, inc) \
-   bson_append_timestamp (b, key, (int) strlen (key), val, inc)
-
-#define BSON_APPEND_UNDEFINED(b, key) \
-   bson_append_undefined (b, key, (int) strlen (key))
-
-#define BSON_APPEND_VALUE(b, key, val) \
-   bson_append_value (b, key, (int) strlen (key), (val))
-
-BSON_ALIGNED_BEGIN (128)
-typedef struct {
-   uint32_t flags;       /* Internal flags for the bson_t. */
-   uint32_t len;         /* Length of BSON data. */
-   uint8_t padding[120]; /* Padding for stack allocation. */
-} bson_t BSON_ALIGNED_END (128);
-
-
-
-
-

Description

-

The bson_t structure represents a BSON document. This structure manages the underlying BSON encoded buffer. For mutable documents, it can append new data to the document.

-
-
-

Performance Notes

-

The bson_t structure attempts to use an inline allocation within the structure to speed up performance of small documents. When this internal buffer has been exhausted, a heap allocated buffer will be dynamically allocated. Therefore, it is essential to call bson_destroy() on allocated documents.

-
- -
-

Example

-
static void
-create_on_heap (void)
-{
-   bson_t *b = bson_new ();
-
-   BSON_APPEND_INT32 (b, "foo", 123);
-   BSON_APPEND_UTF8 (b, "bar", "foo");
-   BSON_APPEND_DOUBLE (b, "baz", 1.23f);
-
-   bson_destroy (b);
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_type_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_type_t.html deleted file mode 100644 index 58f90e4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_type_t.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - bson_type_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_type_t

-

BSON Type Enumeration

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef enum {
-   BSON_TYPE_EOD = 0x00,
-   BSON_TYPE_DOUBLE = 0x01,
-   BSON_TYPE_UTF8 = 0x02,
-   BSON_TYPE_DOCUMENT = 0x03,
-   BSON_TYPE_ARRAY = 0x04,
-   BSON_TYPE_BINARY = 0x05,
-   BSON_TYPE_UNDEFINED = 0x06,
-   BSON_TYPE_OID = 0x07,
-   BSON_TYPE_BOOL = 0x08,
-   BSON_TYPE_DATE_TIME = 0x09,
-   BSON_TYPE_NULL = 0x0A,
-   BSON_TYPE_REGEX = 0x0B,
-   BSON_TYPE_DBPOINTER = 0x0C,
-   BSON_TYPE_CODE = 0x0D,
-   BSON_TYPE_SYMBOL = 0x0E,
-   BSON_TYPE_CODEWSCOPE = 0x0F,
-   BSON_TYPE_INT32 = 0x10,
-   BSON_TYPE_TIMESTAMP = 0x11,
-   BSON_TYPE_INT64 = 0x12,
-   BSON_TYPE_DECIMAL128 = 0x13,
-   BSON_TYPE_MAXKEY = 0x7F,
-   BSON_TYPE_MINKEY = 0xFF,
-} bson_type_t;
-
-
-
-
-

Description

-

The bson_type_t enumeration contains all of the types from the BSON Specification. It can be used to determine the type of a field at runtime.

-
-
-

Functions

-
-
-
-
-

Example

-
bson_iter_t iter;
-
-if (bson_iter_init_find (&iter, doc, "foo") &&
-    (BSON_TYPE_INT32 == bson_iter_type (&iter))) {
-   printf ("'foo' is an int32.\n");
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_uint32_to_string.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_uint32_to_string.html deleted file mode 100644 index 32f2869..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_uint32_to_string.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - bson_uint32_to_string() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_uint32_to_string()

-
-

Synopsis

-
size_t
-bson_uint32_to_string (uint32_t value,
-                       const char **strptr,
-                       char *str,
-                       size_t size);
-
-
-
-
-

Parameters

-
    -
  • value: A uint32_t.
  • -
  • strptr: A location for the resulting string pointer.
  • -
  • str: A location to buffer the string.
  • -
  • size: A size_t containing the size of str.
  • -
-
-
-

Description

-

Converts value to a string.

-

If value is from 0 to 999, it will use a constant string in the data section of the library.

-

If not, a string will be formatted using str and snprintf().

-

strptr will always be set. It will either point to str or a constant string. Use this as your key.

-
-
-

Array Element Key Building

-

Each element in a BSON array has a monotonic string key like "0", "1", etc. This function is optimized for generating such string keys.

-
char str[16];
-const char *key;
-uint32_t i;
-
-for (i = 0; i < 10; i++) {
-   bson_uint32_to_string (i, &key, str, sizeof str);
-   printf ("Key: %s\n", key);
-}
-
-
-
-
-

Returns

-

The number of bytes in the resulting string.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_unichar_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_unichar_t.html deleted file mode 100644 index 83b56d0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_unichar_t.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - bson_unichar_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_unichar_t

-

Unicode Character Abstraction

-
-

Synopsis

-
typedef uint32_t bson_unichar_t;
-
-
-
-
-

Description

-

bson_unichar_t provides an abstraction on a single unicode character. It is the 32-bit representation of a character. As UTF-8 can contain multi-byte characters, this should be used when iterating through UTF-8 text.

-
-
-

Functions

-
-
-
-
-

Example

-
static void
-print_each_char (const char *str)
-{
-   bson_unichar_t c;
-
-   for (; *str; str = bson_utf8_next_char (str)) {
-      c = bson_utf8_get_char (str);
-      printf ("The numberic value is %u.\n", (unsigned) c);
-   }
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_escape_for_json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_escape_for_json.html deleted file mode 100644 index a93c90b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_escape_for_json.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - bson_utf8_escape_for_json() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_utf8_escape_for_json()

-
-

Synopsis

-
char *
-bson_utf8_escape_for_json (const char *utf8, ssize_t utf8_len);
-
-
-
-
-

Parameters

-
    -
  • utf8: A UTF-8 encoded string.
  • -
  • utf8_len: The length of utf8 in bytes or -1 if it is NULL terminated.
  • -
-
-
-

Description

-

Allocates a new string matching utf8 except that special -characters in JSON are escaped. The resulting string is also -UTF-8 encoded.

-

Both ” and \ characters will be backslash-escaped. If a NUL -byte is found before utf8_len bytes, it is converted to -“\u0000”. Other non-ASCII characters in the input are preserved.

-
-
-

Returns

-

A newly allocated string that should be freed with bson_free().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_from_unichar.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_from_unichar.html deleted file mode 100644 index 6bd0fe6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_from_unichar.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - bson_utf8_from_unichar() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_utf8_from_unichar()

-
-

Synopsis

-
void
-bson_utf8_from_unichar (bson_unichar_t unichar, char utf8[6], uint32_t *len);
-
-
-
-
-

Parameters

-
    -
  • unichar: A bson_unichar_t.
  • -
  • utf8: A location for the utf8 sequence.
  • -
  • len: A location for the number of bytes in the resulting utf8 sequence.
  • -
-
-
-

Description

-

Converts a single unicode character to a multi-byte UTF-8 sequence. The result is stored in utf8 and the number of bytes used in len.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_get_char.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_get_char.html deleted file mode 100644 index 2484209..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_get_char.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - bson_utf8_get_char() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_utf8_get_char()

-
-

Synopsis

-
bson_unichar_t
-bson_utf8_get_char (const char *utf8);
-
-
-
-
-

Parameters

-
    -
  • utf8: A UTF-8 encoded string.
  • -
-
-
-

Description

-

Converts the current character in a UTF-8 sequence to a bson_unichar_t, the 32-bit representation of the multi-byte character.

-
-
-

Returns

-

A bson_unichar_t.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_next_char.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_next_char.html deleted file mode 100644 index 3afb633..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_next_char.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_utf8_next_char() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_utf8_next_char()

-
-

Synopsis

-
const char *
-bson_utf8_next_char (const char *utf8);
-
-
-
-
-

Parameters

-
    -
  • utf8: A UTF-8 encoded string.
  • -
-
-
-

Description

-

Advances within utf8 to the next UTF-8 character, which may be multiple bytes offset from utf8. A pointer to the next character is returned.

-

It is invalid to call this function on a string whose current character is \0.

-
-
-

Returns

-

A pointer to the beginning of the next character in the UTF-8 encoded string.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_validate.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_validate.html deleted file mode 100644 index 776cbac..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_utf8_validate.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - bson_utf8_validate() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_utf8_validate()

-
-

Synopsis

-
bool
-bson_utf8_validate (const char *utf8, size_t utf8_len, bool allow_null);
-
-
-
-
-

Parameters

-
    -
  • utf8: A string to verify.
  • -
  • utf8_len: The length of utf8 in bytes.
  • -
  • allow_null: A bool indicating that embedded \0 bytes are allowed.
  • -
-
-
-

Description

-

Validates that the content within utf8 is valid UTF-8 (by the RFC 3629 standard). If allow_null is true, then embedded NULL bytes are allowed (\0).

-
-
-

Returns

-

true if utf8 contains valid UTF-8.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate.html deleted file mode 100644 index 9fbbe2f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - bson_validate() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_validate()

-
-

Synopsis

-
bool
-bson_validate (const bson_t *bson, bson_validate_flags_t flags, size_t *offset);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • flags: A bitwise-or of all desired bson_validate_flags_t.
  • -
  • offset: A location for the offset within bson where the error occurred.
  • -
-
-
-

Description

-

Validates a BSON document by walking through the document and inspecting the keys and values for valid content.

-

You can modify how the validation occurs through the use of the flags parameter, see bson_validate_with_error() for details.

-
-
-

Returns

-

Returns true if bson is valid; otherwise false and offset is set to the byte offset where the error was detected.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate_with_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate_with_error.html deleted file mode 100644 index 4cfedbd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_validate_with_error.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - bson_validate_with_error() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_validate_with_error()

-
-

Synopsis

-
typedef enum {
-   BSON_VALIDATE_NONE = 0,
-   BSON_VALIDATE_UTF8 = (1 << 0),
-   BSON_VALIDATE_DOLLAR_KEYS = (1 << 1),
-   BSON_VALIDATE_DOT_KEYS = (1 << 2),
-   BSON_VALIDATE_UTF8_ALLOW_NULL = (1 << 3),
-   BSON_VALIDATE_EMPTY_KEYS = (1 << 4),
-} bson_validate_flags_t;
-
-bool
-bson_validate_with_error (const bson_t *bson,
-                          bson_validate_flags_t flags,
-                          bson_error_t *error);
-
-
-
-
-

Parameters

-
    -
  • bson: A bson_t.
  • -
  • flags: A bitwise-or of all desired validation flags.
  • -
  • error: Optional bson_error_t.
  • -
-
-
-

Description

-

Validates a BSON document by walking through the document and inspecting the keys and values for valid content.

-

You can modify how the validation occurs through the use of the flags parameter. A description of their effect is below.

-
    -
  • BSON_VALIDATE_NONE Basic validation of BSON length and structure.
  • -
  • BSON_VALIDATE_UTF8 All keys and string values are checked for invalid UTF-8.
  • -
  • BSON_VALIDATE_UTF8_ALLOW_NULL String values are allowed to have embedded NULL bytes.
  • -
  • BSON_VALIDATE_DOLLAR_KEYS Prohibit keys that start with $ outside of a “DBRef” subdocument.
  • -
  • BSON_VALIDATE_DOT_KEYS Prohibit keys that contain . anywhere in the string.
  • -
  • BSON_VALIDATE_EMPTY_KEYS Prohibit zero-length keys.
  • -
-

See also bson_validate().

-
-
-

Returns

-

Returns true if bson is valid; otherwise false and error is filled out.

-

The bson_error_t domain is set to BSON_ERROR_INVALID. Its code is set to one of the bson_validate_flags_t flags indicating which validation failed; for example, if a key contains invalid UTF-8, then the code is set to BSON_VALIDATE_UTF8, but if the basic structure of the BSON document is corrupt, the code is set to BSON_VALIDATE_NONE. The error message is filled out, and gives more detail if possible.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_copy.html deleted file mode 100644 index 9a5bf47..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_copy.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_value_copy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_value_copy()

-
-

Synopsis

-
void
-bson_value_copy (const bson_value_t *src, bson_value_t *dst);
-
-
-
-
-

Parameters

- -
-
-

Description

-

This function will copy the boxed content in src into dst. dst must be freed with bson_value_destroy() when no longer in use.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_destroy.html deleted file mode 100644 index 8df9c23..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_destroy.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_value_destroy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_value_destroy()

-
-

Synopsis

-
void
-bson_value_destroy (bson_value_t *value);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Releases any resources associated with value. Does nothing if value is NULL.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_t.html deleted file mode 100644 index 585d94d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_value_t.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - bson_value_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_value_t

-

BSON Boxed Container Type

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct _bson_value_t {
-   bson_type_t value_type;
-   union {
-      bson_oid_t v_oid;
-      int64_t v_int64;
-      int32_t v_int32;
-      int8_t v_int8;
-      double v_double;
-      bool v_bool;
-      int64_t v_datetime;
-      struct {
-         uint32_t timestamp;
-         uint32_t increment;
-      } v_timestamp;
-      struct {
-         uint32_t len;
-         char *str;
-      } v_utf8;
-      struct {
-         uint32_t data_len;
-         uint8_t *data;
-      } v_doc;
-      struct {
-         uint32_t data_len;
-         uint8_t *data;
-         bson_subtype_t subtype;
-      } v_binary;
-      struct {
-         char *regex;
-         char *options;
-      } v_regex;
-      struct {
-         char *collection;
-         uint32_t collection_len;
-         bson_oid_t oid;
-      } v_dbpointer;
-      struct {
-         uint32_t code_len;
-         char *code;
-      } v_code;
-      struct {
-         uint32_t code_len;
-         char *code;
-         uint32_t scope_len;
-         uint8_t *scope_data;
-      } v_codewscope;
-      struct {
-         uint32_t len;
-         char *symbol;
-      } v_symbol;
-   } value;
-} bson_value_t;
-
-
-
-
-

Description

-

The bson_value_t structure is a boxed type for encapsulating a runtime determined type.

-
- -
-

Example

-
const bson_value_t *value;
-
-value = bson_iter_value (&iter);
-
-if (value->value_type == BSON_TYPE_INT32) {
-   printf ("%d\n", value->value.v_int32);
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_visitor_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_visitor_t.html deleted file mode 100644 index 22c5844..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_visitor_t.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - bson_visitor_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_visitor_t

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct {
-   /* run before / after descending into a document */
-   bool (*visit_before) (const bson_iter_t *iter, const char *key, void *data);
-   bool (*visit_after) (const bson_iter_t *iter, const char *key, void *data);
-   /* corrupt BSON, or unsupported type and visit_unsupported_type not set */
-   void (*visit_corrupt) (const bson_iter_t *iter, void *data);
-   /* normal bson field callbacks */
-   bool (*visit_double) (const bson_iter_t *iter,
-                         const char *key,
-                         double v_double,
-                         void *data);
-   bool (*visit_utf8) (const bson_iter_t *iter,
-                       const char *key,
-                       size_t v_utf8_len,
-                       const char *v_utf8,
-                       void *data);
-   bool (*visit_document) (const bson_iter_t *iter,
-                           const char *key,
-                           const bson_t *v_document,
-                           void *data);
-   bool (*visit_array) (const bson_iter_t *iter,
-                        const char *key,
-                        const bson_t *v_array,
-                        void *data);
-   bool (*visit_binary) (const bson_iter_t *iter,
-                         const char *key,
-                         bson_subtype_t v_subtype,
-                         size_t v_binary_len,
-                         const uint8_t *v_binary,
-                         void *data);
-   /* normal field with deprecated "Undefined" BSON type */
-   bool (*visit_undefined) (const bson_iter_t *iter,
-                            const char *key,
-                            void *data);
-   bool (*visit_oid) (const bson_iter_t *iter,
-                      const char *key,
-                      const bson_oid_t *v_oid,
-                      void *data);
-   bool (*visit_bool) (const bson_iter_t *iter,
-                       const char *key,
-                       bool v_bool,
-                       void *data);
-   bool (*visit_date_time) (const bson_iter_t *iter,
-                            const char *key,
-                            int64_t msec_since_epoch,
-                            void *data);
-   bool (*visit_null) (const bson_iter_t *iter, const char *key, void *data);
-   bool (*visit_regex) (const bson_iter_t *iter,
-                        const char *key,
-                        const char *v_regex,
-                        const char *v_options,
-                        void *data);
-   bool (*visit_dbpointer) (const bson_iter_t *iter,
-                            const char *key,
-                            size_t v_collection_len,
-                            const char *v_collection,
-                            const bson_oid_t *v_oid,
-                            void *data);
-   bool (*visit_code) (const bson_iter_t *iter,
-                       const char *key,
-                       size_t v_code_len,
-                       const char *v_code,
-                       void *data);
-   bool (*visit_symbol) (const bson_iter_t *iter,
-                         const char *key,
-                         size_t v_symbol_len,
-                         const char *v_symbol,
-                         void *data);
-   bool (*visit_codewscope) (const bson_iter_t *iter,
-                             const char *key,
-                             size_t v_code_len,
-                             const char *v_code,
-                             const bson_t *v_scope,
-                             void *data);
-   bool (*visit_int32) (const bson_iter_t *iter,
-                        const char *key,
-                        int32_t v_int32,
-                        void *data);
-   bool (*visit_timestamp) (const bson_iter_t *iter,
-                            const char *key,
-                            uint32_t v_timestamp,
-                            uint32_t v_increment,
-                            void *data);
-   bool (*visit_int64) (const bson_iter_t *iter,
-                        const char *key,
-                        int64_t v_int64,
-                        void *data);
-   bool (*visit_maxkey) (const bson_iter_t *iter, const char *key, void *data);
-   bool (*visit_minkey) (const bson_iter_t *iter, const char *key, void *data);
-   /* if set, called instead of visit_corrupt when an apparently valid BSON
-    * includes an unrecognized field type (reading future version of BSON) */
-   void (*visit_unsupported_type) (const bson_iter_t *iter,
-                                   const char *key,
-                                   uint32_t type_code,
-                                   void *data);
-   bool (*visit_decimal128) (const bson_iter_t *iter,
-                             const char *key,
-                             const bson_decimal128_t *v_decimal128,
-                             void *data);
-
-   void *padding[7];
-} bson_visitor_t bson_visitor_t;
-
-
-
-
-

Description

-

The bson_visitor_t structure provides a series of callbacks that can be called while iterating a BSON document. This may simplify the conversion of a bson_t to a higher level language structure.

-

If the optional callback visit_unsupported_type is set, it is called instead of visit_corrupt in the specific case of an unrecognized field type. (Parsing is aborted in either case.) Use this callback to report an error like “unrecognized type” instead of simply “corrupt BSON”. This future-proofs code that may use an older version of libbson to parse future BSON formats.

-
-
-

Functions

-
-
-
-
-

Example

-
#include <bson.h>
-#include <stdio.h>
-
-static bool
-my_visit_before (const bson_iter_t *iter, const char *key, void *data)
-{
-   int *count = (int *) data;
-
-   (*count)++;
-
-   /* returning true stops further iteration of the document */
-
-   return false;
-}
-
-static void
-count_fields (bson_t *doc)
-{
-   bson_visitor_t visitor = {0};
-   bson_iter_t iter;
-   int count = 0;
-
-   visitor.visit_before = my_visit_before;
-
-   if (bson_iter_init (&iter, doc)) {
-      bson_iter_visit_all (&iter, &visitor, &count);
-   }
-
-   printf ("Found %d fields.\n", count);
-}
-
-
-

The example below demonstrates how to set your own callbacks to provide information about the location of corrupt or unsupported BSON document entries.

-
-
-

Example

-
#include <bson.h>
-#include <stdio.h>
-
-typedef struct {
-   ssize_t *err_offset;
-} my_state_t;
-
-static void
-my_visit_corrupt (const bson_iter_t *iter, void *data)
-{
-   *(((my_state_t *) data)->err_offset) = iter->off;
-}
-
-static void
-my_visit_unsupported_type (const bson_iter_t *iter,
-                           const char *key,
-                           uint32_t type_code,
-                           void *data)
-{
-   *(((my_state_t *) data)->err_offset) = iter->off;
-}
-
-static void
-find_error_location (bson_t *doc)
-{
-   bson_visitor_t visitors = {0};
-   bson_iter_t iter;
-   my_state_t state;
-   ssize_t err_offset = -1;
-
-   visitors.visit_corrupt = my_visit_corrupt;
-   visitors.visit_unsupported_type = my_visit_unsupported_type;
-   /* provide additional visitors as needed based on your requirements */
-   state.err_offset = &err_offset;
-
-   if (!bson_iter_init (&iter, doc)) {
-      printf ("Could not initialize iterator!");
-      exit (1);
-   }
-
-   if (bson_iter_visit_all (&iter, &visitors, &state) ||
-       err_offset != -1) {
-      printf ("Found error at offset %d.\n", err_offset);
-   } else {
-      printf ("BSON document had no errors.\n");
-   }
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_vsnprintf.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_vsnprintf.html deleted file mode 100644 index bd63285..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_vsnprintf.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - bson_vsnprintf() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_vsnprintf()

-
-

Synopsis

-
int
-bson_vsnprintf (char *str, size_t size, const char *format, va_list ap)
-   BSON_GNUC_PRINTF (3, 0);
-
-
-
-
-

Parameters

-
    -
  • str: A location for the resulting string.
  • -
  • size: The size of str in bytes.
  • -
  • format: A printf style format string.
  • -
  • ap: A va_list of parameters for the format.
  • -
-
-
-

Description

-

Like bson_snprintf() but allows for variadic parameters.

-
-
-

Returns

-

The number of bytes written to str excluding the \0 byte.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_begin.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_begin.html deleted file mode 100644 index 02998fd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_begin.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_writer_begin() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_writer_begin()

-
-

Synopsis

-
bool
-bson_writer_begin (bson_writer_t *writer, bson_t **bson);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Begins writing a new document. The caller may use the bson structure to write out a new BSON document. When completed, the caller must call either bson_writer_end() or bson_writer_rollback().

-
-
-

Returns

-

true if there was space in the underlying buffers to begin the document.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_destroy.html deleted file mode 100644 index 35d81e0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_destroy.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_writer_destroy() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_writer_destroy()

-
-

Synopsis

-
void
-bson_writer_destroy (bson_writer_t *writer);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Cleanup after writer and release any allocated memory. Does nothing if writer is NULL. Note that the buffer supplied to bson_writer_new() is NOT freed from this method. The caller is responsible for that.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_end.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_end.html deleted file mode 100644 index 6295d6e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_end.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_writer_end() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_writer_end()

-
-

Synopsis

-
void
-bson_writer_end (bson_writer_t *writer);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Complete writing of a bson_writer_t to the buffer supplied.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_get_length.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_get_length.html deleted file mode 100644 index e56ceb7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_get_length.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - bson_writer_get_length() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_writer_get_length()

-
-

Synopsis

-
size_t
-bson_writer_get_length (bson_writer_t *writer);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Fetches the current length of the content written by the buffer (including the initial offset). This includes a partly written document currently being written.

-

This is useful if you want to check to see if you’ve passed a given memory boundary that cannot be sent in a packet. See bson_writer_rollback() to abort the current document being written.

-
-
-

Returns

-

The length of the underlying buffer.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_new.html deleted file mode 100644 index 5981162..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_new.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - bson_writer_new() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_writer_new()

-
-

Synopsis

-
bson_writer_t *
-bson_writer_new (uint8_t **buf,
-                 size_t *buflen,
-                 size_t offset,
-                 bson_realloc_func realloc_func,
-                 void *realloc_func_ctx);
-
-
-
-
-

Parameters

-
    -
  • buf: A uint8_t.
  • -
  • buflen: A size_t.
  • -
  • offset: A size_t.
  • -
  • realloc_func: A bson_realloc_func.
  • -
  • realloc_func_ctx: A bson_realloc_func.
  • -
-
-
-

Description

-

Creates a new instance of bson_writer_t using the buffer, length, offset, and _realloc()_ function supplied.

-

The caller is expected to clean up the structure when finished using bson_writer_destroy().

-
-
-

Returns

-

A newly allocated bson_writer_t.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_rollback.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_rollback.html deleted file mode 100644 index af55203..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_rollback.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - bson_writer_rollback() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_writer_rollback()

-
-

Synopsis

-
void
-bson_writer_rollback (bson_writer_t *writer);
-
-
-
-
-

Parameters

- -
-
-

Description

-

Abort the appending of the current bson_t to the memory region managed by writer. This is useful if you detected that you went past a particular memory limit. For example, MongoDB has 48MB message limits.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_t.html deleted file mode 100644 index 350f6a4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_writer_t.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - bson_writer_t — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_writer_t

-

Bulk BSON serialization Abstraction

-
-

Synopsis

-
#include <bson/bson.h>
-
-typedef struct _bson_writer_t bson_writer_t;
-
-bson_writer_t *
-bson_writer_new (uint8_t **buf,
-                 size_t *buflen,
-                 size_t offset,
-                 bson_realloc_func realloc_func,
-                 void *realloc_func_ctx);
-void
-bson_writer_destroy (bson_writer_t *writer);
-
-
-
-
-

Description

-

The bson_writer_t API provides an abstraction for serializing many BSON documents to a single memory region. The memory region may be dynamically allocated and re-allocated as more memory is demanded. This can be useful when building network packets from a high-level language. For example, you can serialize a Python Dictionary directly to a single buffer destined for a TCP packet.

-
- -
-

Example

-
#include <bson/bson.h>
-
-int
-main (int argc, char *argv[])
-{
-   bson_writer_t *writer;
-   uint8_t *buf = NULL;
-   size_t buflen = 0;
-   bson_t *doc;
-
-   writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL);
-
-   for (i = 0; i < 1000; i++) {
-      bson_writer_begin (writer, &doc);
-      BSON_APPEND_INT32 (&doc, "i", i);
-      bson_writer_end (writer);
-   }
-
-   bson_writer_destroy (writer);
-
-   bson_free (buf);
-
-   return 0;
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_zero_free.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_zero_free.html deleted file mode 100644 index 36addef..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/bson_zero_free.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - bson_zero_free() — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

bson_zero_free()

-
-

Synopsis

-
void
-bson_zero_free (void *mem, size_t size);
-
-
-
-
-

Parameters

-
    -
  • mem: A memory region.
  • -
  • size: The size of mem.
  • -
-
-
-

Description

-

This function behaves like bson_free() except that it zeroes the memory first. This can be useful if you are storing passwords or other similarly important data. Note that if it truly is important, you probably want a page protected with mlock() as well to prevent it swapping to disk.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/character_and_string_routines.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/character_and_string_routines.html deleted file mode 100644 index 4025481..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/character_and_string_routines.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - Character and String Routines — libbson 1.13.1 - - - - - - - - - - - - - - - - - -
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/creating.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/creating.html deleted file mode 100644 index 7eed388..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/creating.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - Creating a BSON Document — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Creating a BSON Document

-
-

The bson_t structure

-

BSON documents are created using the bson_t structure. This structure encapsulates the necessary logic for encoding using the BSON Specification. At the core, bson_t is a buffer manager and set of encoding routines.

-
-

Tip

-

BSON documents can live on the stack or the heap based on the performance needs or preference of the consumer.

-
-

Let’s start by creating a new BSON document on the stack. Whenever using libbson, make sure you #include <bson/bson.h>.

-
bson_t b;
-
-bson_init (&b);
-
-
-

This creates an empty document. In JSON, this would be the same as {}.

-

We can now proceed to adding items to the BSON document. A variety of functions prefixed with bson_append_ can be used based on the type of field you want to append. Let’s append a UTF-8 encoded string.

-
bson_append_utf8 (&b, "key", -1, "value", -1);
-
-
-

Notice the two -1 parameters. The first indicates that the length of key in bytes should be determined with strlen(). Alternatively, we could have passed the number 3. The same goes for the second -1, but for value.

-

Libbson provides macros to make this less tedious when using string literals. The following two appends are identical.

-
bson_append_utf8 (&b, "key", -1, "value", -1);
-BSON_APPEND_UTF8 (&b, "key", "value");
-
-
-

Now let’s take a look at an example that adds a few different field types to a BSON document.

-
bson_t b = BSON_INITIALIZER;
-
-BSON_APPEND_INT32 (&b, "a", 1);
-BSON_APPEND_UTF8 (&b, "hello", "world");
-BSON_APPEND_BOOL (&b, "bool", true);
-
-
-

Notice that we omitted the call to bson_init(). By specifying BSON_INITIALIZER we can remove the need to initialize the structure to a base state.

-
-
-

Sub-Documents and Sub-Arrays

-

To simplify the creation of sub-documents and arrays, bson_append_document_begin() and bson_append_array_begin() exist. These can be used to build a sub-document using the parent documents memory region as the destination buffer.

-
bson_t parent;
-bson_t child;
-char *str;
-
-bson_init (&parent);
-bson_append_document_begin (&parent, "foo", 3, &child);
-bson_append_int32 (&child, "baz", 3, 1);
-bson_append_document_end (&parent, &child);
-
-str = bson_as_canonical_extended_json (&parent, NULL);
-printf ("%s\n", str);
-bson_free (str);
-
-bson_destroy (&parent);
-
-
-
{ "foo" : { "baz" : 1 } }
-
-
-
-
-

Simplified BSON C Object Notation

-

Creating BSON documents by hand can be tedious and time consuming. BCON, or BSON C Object Notation, was added to allow for the creation of BSON documents in a format that looks closer to the destination format.

-

The following example shows the use of BCON. Notice that values for fields are wrapped in the BCON_* macros. These are required for the variadic processor to determine the parameter type.

-
bson_t *doc;
-
-doc = BCON_NEW ("foo",
-                "{",
-                "int",
-                BCON_INT32 (1),
-                "array",
-                "[",
-                BCON_INT32 (100),
-                "{",
-                "sub",
-                BCON_UTF8 ("value"),
-                "}",
-                "]",
-                "}");
-
-
-

Creates the following document

-
{ "foo" : { "int" : 1, "array" : [ 100, { "sub" : "value" } ] } }
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/cross-platform-notes.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/cross-platform-notes.html deleted file mode 100644 index 9c0bcce..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/cross-platform-notes.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - Cross Platform Notes — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Cross Platform Notes

- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/endianness.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/endianness.html deleted file mode 100644 index 9a3dccf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/endianness.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - Endianness — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Endianness

-

The BSON specification dictates that the encoding format is in little-endian. Many implementations simply ignore endianness altogether and expect that they are to be run on little-endian. Libbson supports both Big and Little Endian systems. This means we use memcpy() when appropriate instead of dereferencing and properly convert to and from the host endian format. We expect the compiler intrinsics to optimize it to a dereference when possible.

-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/errors.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/errors.html deleted file mode 100644 index 262d84a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/errors.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - Handling Errors — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Handling Errors

-
-

Description

-

Many libbson functions report errors by returning NULL or -1 and filling out a bson_error_t structure with an error domain, error code, and message.

-
    -
  • error.domain names the subsystem that generated the error.
  • -
  • error.code is a domain-specific error type.
  • -
  • error.message describes the error.
  • -
-

Some error codes overlap with others; always check both the domain and code to determine the type of error.

- ----- - - - - - - - - - - -
BSON_ERROR_JSONBSON_JSON_ERROR_READ_CORRUPT_JS -BSON_JSON_ERROR_READ_INVALID_PARAM -BSON_JSON_ERROR_READ_CB_FAILUREbson_json_reader_t tried to parse invalid MongoDB Extended JSON. -Tried to parse a valid JSON document that is invalid as MongoDBExtended JSON. -An internal callback failure during JSON parsing.
BSON_ERROR_READERBSON_ERROR_READER_BADFDbson_json_reader_new_from_file() could not open the file.
-
-
- - -
- -
-
-
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/full_index.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/full_index.html deleted file mode 100644 index 8c261b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/full_index.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - - Index — libbson 1.13.1 - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Index

-
- -
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/genindex.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/genindex.html deleted file mode 100644 index 845f239..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/genindex.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - Index — libbson 1.13.1 - - - - - - - - - - - - - - -
-
-
-
- - - - - -

Index

- -
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/guides.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/guides.html deleted file mode 100644 index 1fd600e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/guides.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - Guides — libbson 1.13.1 - - - - - - - - - - - - - - - - - -
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/include-and-link.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/include-and-link.html deleted file mode 100644 index 0b77f99..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/include-and-link.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - Using libbson In Your C Program — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
- -
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/index.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/index.html deleted file mode 100644 index ca2c1b8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/index.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - Libbson — libbson 1.13.1 - - - - - - - - - - - - - - - -
-
-
-
- - - - - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/json.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/json.html deleted file mode 100644 index d9bd721..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/json.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - - - JSON — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

JSON

-

Libbson provides routines for converting to and from the JSON format. In particular, it supports the MongoDB extended JSON format.

-
-

Converting BSON to JSON

-

There are often times where you might want to convert a BSON document to JSON. It is convenient for debugging as well as an interchange format. To help with this, Libbson contains the functions bson_as_canonical_extended_json() and bson_as_relaxed_extended_json(). The canonical format preserves BSON type information for values that may have ambiguous representations in JSON (e.g. numeric types).

-
bson_t *b;
-size_t len;
-char *str;
-
-b = BCON_NEW ("a", BCON_INT32 (1));
-
-str = bson_as_canonical_extended_json (b, &len);
-printf ("%s\n", str);
-bson_free (str);
-
-bson_destroy (b);
-
-
-
{ "a" : { "$numberInt": "1" } }
-
-
-

The relaxed format prefers JSON primitives for numeric values and may be used if type fidelity is not required.

-
bson_t *b;
-size_t len;
-char *str;
-
-b = BCON_NEW ("a", BCON_INT32 (1));
-
-str = bson_as_relaxed_extended_json (b, &len);
-printf ("%s\n", str);
-bson_free (str);
-
-bson_destroy (b);
-
-
-
{ "a" : 1 }
-
-
-
-
-

Converting JSON to BSON

-

Converting back from JSON is also useful and common enough that we added bson_init_from_json() and bson_new_from_json().

-

The following example creates a new bson_t from the JSON string {"a":1}.

-
bson_t *b;
-bson_error_t error;
-
-b = bson_new_from_json ("{\"a\":1}", -1, &error);
-
-if (!b) {
-   printf ("Error: %s\n", error.message);
-} else {
-   bson_destroy (b);
-}
-
-
-
-
-

Streaming JSON Parsing

-

Libbson provides bson_json_reader_t to allow for parsing a sequence of JSON documents into BSON. The interface is similar to bson_reader_t but expects the input to be in the MongoDB extended JSON format.

-
/*
- * Copyright 2013 MongoDB, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/*
- * This program will print each JSON document contained in the provided files
- * as a BSON string to STDOUT.
- */
-
-
-#include <bson/bson.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-
-int
-main (int argc, char *argv[])
-{
-   bson_json_reader_t *reader;
-   bson_error_t error;
-   const char *filename;
-   bson_t doc = BSON_INITIALIZER;
-   int i;
-   int b;
-
-   /*
-    * Print program usage if no arguments are provided.
-    */
-   if (argc == 1) {
-      fprintf (stderr, "usage: %s FILE...\n", argv[0]);
-      return 1;
-   }
-
-   /*
-    * Process command line arguments expecting each to be a filename.
-    */
-   for (i = 1; i < argc; i++) {
-      filename = argv[i];
-
-      /*
-       * Open the filename provided in command line arguments.
-       */
-      if (0 == strcmp (filename, "-")) {
-         reader = bson_json_reader_new_from_fd (STDIN_FILENO, false);
-      } else {
-         if (!(reader = bson_json_reader_new_from_file (filename, &error))) {
-            fprintf (
-               stderr, "Failed to open \"%s\": %s\n", filename, error.message);
-            continue;
-         }
-      }
-
-      /*
-       * Convert each incoming document to BSON and print to stdout.
-       */
-      while ((b = bson_json_reader_read (reader, &doc, &error))) {
-         if (b < 0) {
-            fprintf (stderr, "Error in json parsing:\n%s\n", error.message);
-            abort ();
-         }
-
-         if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) {
-            fprintf (stderr, "Failed to write to stdout, exiting.\n");
-            exit (1);
-         }
-         bson_reinit (&doc);
-      }
-
-      bson_json_reader_destroy (reader);
-      bson_destroy (&doc);
-   }
-
-   return 0;
-}
-
-
-
-
-

Examples

-

The following example reads BSON documents from stdin and prints them to stdout as JSON.

-
/*
- * Copyright 2013 MongoDB, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/*
- * This program will print each BSON document contained in the provided files
- * as a JSON string to STDOUT.
- */
-
-
-#include <bson/bson.h>
-#include <stdio.h>
-
-
-int
-main (int argc, char *argv[])
-{
-   bson_reader_t *reader;
-   const bson_t *b;
-   bson_error_t error;
-   const char *filename;
-   char *str;
-   int i;
-
-   /*
-    * Print program usage if no arguments are provided.
-    */
-   if (argc == 1) {
-      fprintf (stderr, "usage: %s [FILE | -]...\nUse - for STDIN.\n", argv[0]);
-      return 1;
-   }
-
-   /*
-    * Process command line arguments expecting each to be a filename.
-    */
-   for (i = 1; i < argc; i++) {
-      filename = argv[i];
-
-      if (strcmp (filename, "-") == 0) {
-         reader = bson_reader_new_from_fd (STDIN_FILENO, false);
-      } else {
-         if (!(reader = bson_reader_new_from_file (filename, &error))) {
-            fprintf (
-               stderr, "Failed to open \"%s\": %s\n", filename, error.message);
-            continue;
-         }
-      }
-
-      /*
-       * Convert each incoming document to JSON and print to stdout.
-       */
-      while ((b = bson_reader_read (reader, NULL))) {
-         str = bson_as_canonical_extended_json (b, NULL);
-         fprintf (stdout, "%s\n", str);
-         bson_free (str);
-      }
-
-      /*
-       * Cleanup after our reader, which closes the file descriptor.
-       */
-      bson_reader_destroy (reader);
-   }
-
-   return 0;
-}
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/objects.inv b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/objects.inv deleted file mode 100644 index 755ef0142a3d020b6cf0d6ad5b1129a60142de0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2948 zcmV-~3w!hNERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkRX<}k? zZ*B@BAXa5^b7^mGIv_DFF*7bP3L_v?Xk{RBWo=<;Ze(S0Aa78b#rNMXCQiPX<{x4c-oDd%aYu-6^8fy6upcWlag&krOGam?L;YG zRF>_ktXOC^x|-NZ(vC-~L4wC2K@}j)Q|B(t+>W;@ z4}{5R5I{;f8fP2VT~&Sw;N)Ua=HWJWgR_&$%mD&3Ta;=dON2lz9>tFB za5Jw)E;VFn9vTs{}H3YUlJ8M|hDCCVRGDG{$Oj$|_5o=BerJP^HBXg&9pko}aG= zeY%J)=S7{M!eg{iA4AdQsHh95*_rFDMq2}9;A#oXN7L7c-j;dZAhcyT+EX`JwTF}d zPAnE>x|2FJ1WzD&l|Xz|7xm${njEvrg|n_u%-nqPzc>iGkOcLDnw!=PtA@ft)F4ozhUYAjIN9EO@w~eg6$3F^4B5(RyRMntml4h5cV zuuf*_oeBjp0vNayKG-J}>OBGGRSMDTm1^^l<8M;C+;C&uKnvWS8#jt6UME>zA&I`X zw*7MKhO>s)A~;)MY^N`(>OLQ~8IA7oMOEM7 zBR=D?-MuJldwa-bFtV?gM7@X0-CO9}$K@u!r6QMsl8#XR1^6gqfS`5wQ@sn zjLPM=X0s~oM}l;`+>&vc6PH;+j7-mN1>P9fjHlCV-AjtuqU!~2ainNz>w2>|6l_~( zMVrOMDU8ow(%x`3Xg1gp&cF5holJqj?(g8=t7S-VC?RMly>`FkyCd8SX(KrsEWN{n zYxJwfr^)|WnaFVrBO+IU-d^X(7%3vcw zdI5X@B2OENB&fqv^ad$Ql!fLQSXX;FSIijXi6k-z7n-(?R_CQ zjPOj}5%eXhv^-@?Q~3yGvnT)^pG2jb{S<9_r6r2ZNZH7=PwQq?nB^yHj_V|Q_U+EF zN*v%T5o$rwPPY_PD+26&uU?Y1T|Xg)(y=SS)q3kyuGiMfaj|te-UH`2y?`81FQ^ly zD>d?NVcj-u!GQ2jwUqFW0uTR4OjiZsXPBR}`;l)VMH!SEg0zzZoY_wXc0mbAwhg|%Ld7Y?``3?oJgA0UVVGdZk%lM=!~@T;UTbG zW|kUwXAaw$I(4%NaWepI6!x~F9J7ClAwQYHoNd_9h?&v|$DRT>mqU`7<@%6qPQ`OTnPoYW&Hw7J-`JXzyK9Pgfqu%u=MThG5nT~PKraa(Gf}z z!dAJmrolD=Z3d)Wj4)2KK?p&Dx#Aej2FZnEH2Tgk6KEMy7@Pw|*JHK*a%!qLuXSPkR*CfW?97Su5$o%|GSciDxGRCMT)nir<;gPfO6( zBz`1>6OC5bU)d~_oJBx5E@HNqai$k=R-;`jbQzmhgG1TJh}jlCuMfA6nrpD(M&y z6qu-t^??oc0gv`UIx9;$NdzZk^KuBAr&3d82elQCBfbn1NXvTMQCY0h0B{l1%2$(m zqfmk3;5xX|+s4kV@wGeoM~wIyE(O852zIGY@YY47HriMOB|{Hk!%MG@%r3=c9ihUR zXN6U43M&Spt?zBpI6^LEWj&)*iU81Z(PSvnQC!xyt-0)6qZVlbgi_W*iFiRA%rG?K$&o~=E62-kp@euH2H59 zr+{fcDPbV_=jhp8G|(2od7DSD(xkUp90Vr4q)cPqA58mM!(^YcvO|DQBjN7yr=3Q5 z;x7&;vS_}r@B}gK`VD0GpJj1QoyNs=gGC?nR|6ybT@Km%kp0Ivv;3MucCCLea%8T_ zTFTE6X8+HRzx=%aE`3SoQ^$FJxb?>Qhy3+n7#*pb;Af8;f+M8+X_7C|u+1`5_zWykR^py-in3K8YxwKm2m|WLx+CyLopr z(@c6(l49hCV$-i3J#62O*nj`+hljU2KN+1T@~L6gau2Zk uKXQ~C{V2Bn0rrERwqs+3J - - - - - - ObjectIDs — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

ObjectIDs

-

Libbson provides a simple way to generate ObjectIDs. It can be used in a single-threaded or multi-threaded manner depending on your requirements.

-

The bson_oid_t structure represents an ObjectID in MongoDB. It is a 96-bit identifier that includes various information about the system generating the OID.

-
-

Composition

-
    -
  • 4 bytes : The UNIX timestamp in big-endian format.
  • -
  • 3 bytes : A hash of the hostname.
  • -
  • 2 bytes : The pid_t of the current process. Alternatively the task-id if configured.
  • -
  • 3 bytes : A 24-bit monotonic counter incrementing from rand() in big-endian.
  • -
-
-
-

Sorting ObjectIDs

-

The typical way to sort in C is using qsort(). Therefore, Libbson provides a qsort() compatible callback function named bson_oid_compare(). It returns less than 1, greater than 1, or 0 depending on the equality of two bson_oid_t structures.

-
-
-

Comparing Object IDs

-

If you simply want to compare two bson_oid_t structures for equality, use bson_oid_equal().

-
-
-

Generating

-

To generate a bson_oid_t, you may use the following.

-
bson_oid_t oid;
-
-bson_oid_init (&oid, NULL);
-
-
-
-
-

Parsing ObjectID Strings

-

You can also parse a string containing a bson_oid_t. The input string MUST be 24 characters or more in length.

-
bson_oid_t oid;
-
-bson_oid_init_from_string (&oid, "123456789012345678901234");
-
-
-

If you need to parse may bson_oid_t in a tight loop and can guarantee the data is safe, you might consider using the inline variant. It will be inlined into your code and reduce the need for a foreign function call.

-
bson_oid_t oid;
-
-bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234");
-
-
-
-
-

Hashing ObjectIDs

-

If you need to store items in a hashtable, you may want to use the bson_oid_t as the key. Libbson provides a hash function for just this purpose. It is based on DJB hash.

-
unsigned hash;
-
-hash = bson_oid_hash (oid);
-
-
-
-
-

Fetching ObjectID Creation Time

-

You can easily fetch the time that a bson_oid_t was generated using bson_oid_get_time_t().

-
time_t t;
-
-t = bson_oid_get_time_t (oid);
-printf ("The OID was generated at %u\n", (unsigned) t);
-
-
-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/parsing.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/parsing.html deleted file mode 100644 index 7dd41ce..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/parsing.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - Parsing and Iterating BSON Documents — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Parsing and Iterating BSON Documents

-
-

Parsing

-

BSON documents are lazily parsed as necessary. To begin parsing a BSON document, use one of the provided Libbson functions to create a new bson_t from existing data such as bson_new_from_data(). This will make a copy of the data so that additional mutations may occur to the BSON document.

-
-

Tip

-

If you only want to parse a BSON document and have no need to mutate it, you may use bson_init_static() to avoid making a copy of the data.

-
-
bson_t *b;
-
-b = bson_new_from_data (my_data, my_data_len);
-if (!b) {
-   fprintf (stderr, "The specified length embedded in <my_data> did not match "
-                    "<my_data_len>\n");
-   return;
-}
-
-bson_destroy (b);
-
-
-

Only two checks are performed when creating a new bson_t from an existing buffer. First, the document must begin with the buffer length, matching what was expected by the caller. Second, the document must end with the expected trailing \0 byte.

-

To parse the document further we use a bson_iter_t to iterate the elements within the document. Let’s print all of the field names in the document.

-
bson_t *b;
-bson_iter_t iter;
-
-if ((b = bson_new_from_data (my_data, my_data_len))) {
-   if (bson_iter_init (&iter, b)) {
-      while (bson_iter_next (&iter)) {
-         printf ("Found element key: \"%s\"\n", bson_iter_key (&iter));
-      }
-   }
-   bson_destroy (b);
-}
-
-
-

Converting a document to JSON uses a bson_iter_t and bson_visitor_t to iterate all fields of a BSON document recursively and generate a UTF-8 encoded JSON string.

-
bson_t *b;
-char *json;
-
-if ((b = bson_new_from_data (my_data, my_data_len))) {
-   if ((json = bson_as_canonical_extended_json (b, NULL))) {
-      printf ("%s\n", json);
-      bson_free (json);
-   }
-   bson_destroy (b);
-}
-
-
-
-
-

Recursing into Sub-Documents

-

Libbson provides convenient sub-iterators to dive down into a sub-document or sub-array. Below is an example that will dive into a sub-document named “foo” and print it’s field names.

-
bson_iter_t iter;
-bson_iter_t child;
-char *json;
-
-if (bson_iter_init_find (&iter, doc, "foo") &&
-    BSON_ITER_HOLDS_DOCUMENT (&iter) && bson_iter_recurse (&iter, &child)) {
-   while (bson_iter_next (&child)) {
-      printf ("Found sub-key of \"foo\" named \"%s\"\n",
-              bson_iter_key (&child));
-   }
-}
-
-
-
-
-

Finding Fields using Dot Notation

-

Using the bson_iter_recurse() function exemplified above, bson_iter_find_descendant() can find a field for you using the MongoDB style path notation such as “foo.bar.0.baz”.

-

Let’s create a document like {"foo": {"bar": [{"baz: 1}]}} and locate the "baz" field.

-
bson_t *b;
-bson_iter_t iter;
-bson_iter_t baz;
-
-b =
-   BCON_NEW ("foo", "{", "bar", "[", "{", "baz", BCON_INT32 (1), "}", "]", "}");
-
-if (bson_iter_init (&iter, b) &&
-    bson_iter_find_descendant (&iter, "foo.bar.0.baz", &baz) &&
-    BSON_ITER_HOLDS_INT32 (&baz)) {
-   printf ("baz = %d\n", bson_iter_int32 (&baz));
-}
-
-bson_destroy (b);
-
-
-
-
-

Validating a BSON Document

-

If all you want to do is validate that a BSON document is valid, you can use bson_validate().

-
size_t err_offset;
-
-if (!bson_validate (doc, BSON_VALIDATE_NONE, &err_offset)) {
-   fprintf (stderr,
-            "The document failed to validate at offset: %u\n",
-            (unsigned) err_offset);
-}
-
-
-

See the bson_validate() documentation for more information and examples.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/search.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/search.html deleted file mode 100644 index c26d673..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/search.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - Search — libbson 1.13.1 - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/searchindex.js b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/searchindex.js deleted file mode 100644 index 815c86a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({docnames:["api","bson_append_array","bson_append_array_begin","bson_append_array_end","bson_append_binary","bson_append_bool","bson_append_code","bson_append_code_with_scope","bson_append_date_time","bson_append_dbpointer","bson_append_decimal128","bson_append_document","bson_append_document_begin","bson_append_document_end","bson_append_double","bson_append_int32","bson_append_int64","bson_append_iter","bson_append_maxkey","bson_append_minkey","bson_append_now_utc","bson_append_null","bson_append_oid","bson_append_regex","bson_append_regex_w_len","bson_append_symbol","bson_append_time_t","bson_append_timestamp","bson_append_timeval","bson_append_undefined","bson_append_utf8","bson_append_value","bson_array_as_json","bson_as_canonical_extended_json","bson_as_json","bson_as_relaxed_extended_json","bson_ascii_strtoll","bson_check_version","bson_compare","bson_concat","bson_context_destroy","bson_context_get_default","bson_context_new","bson_context_t","bson_copy","bson_copy_to","bson_copy_to_excluding","bson_copy_to_excluding_noinit","bson_count_keys","bson_decimal128_from_string","bson_decimal128_from_string_w_len","bson_decimal128_t","bson_decimal128_to_string","bson_destroy","bson_destroy_with_steal","bson_equal","bson_error_t","bson_free","bson_get_data","bson_get_major_version","bson_get_micro_version","bson_get_minor_version","bson_get_monotonic_time","bson_get_version","bson_has_field","bson_init","bson_init_from_json","bson_init_static","bson_iter_array","bson_iter_as_bool","bson_iter_as_double","bson_iter_as_int64","bson_iter_binary","bson_iter_bool","bson_iter_code","bson_iter_codewscope","bson_iter_date_time","bson_iter_dbpointer","bson_iter_decimal128","bson_iter_document","bson_iter_double","bson_iter_dup_utf8","bson_iter_find","bson_iter_find_case","bson_iter_find_descendant","bson_iter_find_w_len","bson_iter_init","bson_iter_init_find","bson_iter_init_find_case","bson_iter_init_find_w_len","bson_iter_init_from_data","bson_iter_init_from_data_at_offset","bson_iter_int32","bson_iter_int64","bson_iter_key","bson_iter_key_len","bson_iter_next","bson_iter_offset","bson_iter_oid","bson_iter_overwrite_bool","bson_iter_overwrite_date_time","bson_iter_overwrite_decimal128","bson_iter_overwrite_double","bson_iter_overwrite_int32","bson_iter_overwrite_int64","bson_iter_overwrite_oid","bson_iter_overwrite_timestamp","bson_iter_recurse","bson_iter_regex","bson_iter_symbol","bson_iter_t","bson_iter_time_t","bson_iter_timestamp","bson_iter_timeval","bson_iter_type","bson_iter_utf8","bson_iter_value","bson_iter_visit_all","bson_json_data_reader_ingest","bson_json_data_reader_new","bson_json_reader_destroy","bson_json_reader_new","bson_json_reader_new_from_fd","bson_json_reader_new_from_file","bson_json_reader_read","bson_json_reader_t","bson_malloc","bson_malloc0","bson_md5_append","bson_md5_finish","bson_md5_init","bson_md5_t","bson_mem_restore_vtable","bson_mem_set_vtable","bson_memory","bson_new","bson_new_from_buffer","bson_new_from_data","bson_new_from_json","bson_oid_compare","bson_oid_copy","bson_oid_equal","bson_oid_get_time_t","bson_oid_hash","bson_oid_init","bson_oid_init_from_data","bson_oid_init_from_string","bson_oid_init_sequence","bson_oid_is_valid","bson_oid_t","bson_oid_to_string","bson_reader_destroy","bson_reader_destroy_func_t","bson_reader_new_from_data","bson_reader_new_from_fd","bson_reader_new_from_file","bson_reader_new_from_handle","bson_reader_read","bson_reader_read_func_t","bson_reader_reset","bson_reader_set_destroy_func","bson_reader_set_read_func","bson_reader_t","bson_reader_tell","bson_realloc","bson_realloc_ctx","bson_realloc_func","bson_reinit","bson_reserve_buffer","bson_set_error","bson_sized_new","bson_snprintf","bson_steal","bson_strcasecmp","bson_strdup","bson_strdup_printf","bson_strdupv_printf","bson_strerror_r","bson_strfreev","bson_string_append","bson_string_append_c","bson_string_append_printf","bson_string_append_unichar","bson_string_free","bson_string_new","bson_string_t","bson_string_truncate","bson_strncpy","bson_strndup","bson_strnlen","bson_subtype_t","bson_t","bson_type_t","bson_uint32_to_string","bson_unichar_t","bson_utf8_escape_for_json","bson_utf8_from_unichar","bson_utf8_get_char","bson_utf8_next_char","bson_utf8_validate","bson_validate","bson_validate_with_error","bson_value_copy","bson_value_destroy","bson_value_t","bson_visitor_t","bson_vsnprintf","bson_writer_begin","bson_writer_destroy","bson_writer_end","bson_writer_get_length","bson_writer_new","bson_writer_rollback","bson_writer_t","bson_zero_free","character_and_string_routines","creating","cross-platform-notes","endianness","errors","full_index","guides","include-and-link","index","json","oid","parsing","streaming-bson","threading","tutorial","utf8","valgrind","version"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["api.rst","bson_append_array.rst","bson_append_array_begin.rst","bson_append_array_end.rst","bson_append_binary.rst","bson_append_bool.rst","bson_append_code.rst","bson_append_code_with_scope.rst","bson_append_date_time.rst","bson_append_dbpointer.rst","bson_append_decimal128.rst","bson_append_document.rst","bson_append_document_begin.rst","bson_append_document_end.rst","bson_append_double.rst","bson_append_int32.rst","bson_append_int64.rst","bson_append_iter.rst","bson_append_maxkey.rst","bson_append_minkey.rst","bson_append_now_utc.rst","bson_append_null.rst","bson_append_oid.rst","bson_append_regex.rst","bson_append_regex_w_len.rst","bson_append_symbol.rst","bson_append_time_t.rst","bson_append_timestamp.rst","bson_append_timeval.rst","bson_append_undefined.rst","bson_append_utf8.rst","bson_append_value.rst","bson_array_as_json.rst","bson_as_canonical_extended_json.rst","bson_as_json.rst","bson_as_relaxed_extended_json.rst","bson_ascii_strtoll.rst","bson_check_version.rst","bson_compare.rst","bson_concat.rst","bson_context_destroy.rst","bson_context_get_default.rst","bson_context_new.rst","bson_context_t.rst","bson_copy.rst","bson_copy_to.rst","bson_copy_to_excluding.rst","bson_copy_to_excluding_noinit.rst","bson_count_keys.rst","bson_decimal128_from_string.rst","bson_decimal128_from_string_w_len.rst","bson_decimal128_t.rst","bson_decimal128_to_string.rst","bson_destroy.rst","bson_destroy_with_steal.rst","bson_equal.rst","bson_error_t.rst","bson_free.rst","bson_get_data.rst","bson_get_major_version.rst","bson_get_micro_version.rst","bson_get_minor_version.rst","bson_get_monotonic_time.rst","bson_get_version.rst","bson_has_field.rst","bson_init.rst","bson_init_from_json.rst","bson_init_static.rst","bson_iter_array.rst","bson_iter_as_bool.rst","bson_iter_as_double.rst","bson_iter_as_int64.rst","bson_iter_binary.rst","bson_iter_bool.rst","bson_iter_code.rst","bson_iter_codewscope.rst","bson_iter_date_time.rst","bson_iter_dbpointer.rst","bson_iter_decimal128.rst","bson_iter_document.rst","bson_iter_double.rst","bson_iter_dup_utf8.rst","bson_iter_find.rst","bson_iter_find_case.rst","bson_iter_find_descendant.rst","bson_iter_find_w_len.rst","bson_iter_init.rst","bson_iter_init_find.rst","bson_iter_init_find_case.rst","bson_iter_init_find_w_len.rst","bson_iter_init_from_data.rst","bson_iter_init_from_data_at_offset.rst","bson_iter_int32.rst","bson_iter_int64.rst","bson_iter_key.rst","bson_iter_key_len.rst","bson_iter_next.rst","bson_iter_offset.rst","bson_iter_oid.rst","bson_iter_overwrite_bool.rst","bson_iter_overwrite_date_time.rst","bson_iter_overwrite_decimal128.rst","bson_iter_overwrite_double.rst","bson_iter_overwrite_int32.rst","bson_iter_overwrite_int64.rst","bson_iter_overwrite_oid.rst","bson_iter_overwrite_timestamp.rst","bson_iter_recurse.rst","bson_iter_regex.rst","bson_iter_symbol.rst","bson_iter_t.rst","bson_iter_time_t.rst","bson_iter_timestamp.rst","bson_iter_timeval.rst","bson_iter_type.rst","bson_iter_utf8.rst","bson_iter_value.rst","bson_iter_visit_all.rst","bson_json_data_reader_ingest.rst","bson_json_data_reader_new.rst","bson_json_reader_destroy.rst","bson_json_reader_new.rst","bson_json_reader_new_from_fd.rst","bson_json_reader_new_from_file.rst","bson_json_reader_read.rst","bson_json_reader_t.rst","bson_malloc.rst","bson_malloc0.rst","bson_md5_append.rst","bson_md5_finish.rst","bson_md5_init.rst","bson_md5_t.rst","bson_mem_restore_vtable.rst","bson_mem_set_vtable.rst","bson_memory.rst","bson_new.rst","bson_new_from_buffer.rst","bson_new_from_data.rst","bson_new_from_json.rst","bson_oid_compare.rst","bson_oid_copy.rst","bson_oid_equal.rst","bson_oid_get_time_t.rst","bson_oid_hash.rst","bson_oid_init.rst","bson_oid_init_from_data.rst","bson_oid_init_from_string.rst","bson_oid_init_sequence.rst","bson_oid_is_valid.rst","bson_oid_t.rst","bson_oid_to_string.rst","bson_reader_destroy.rst","bson_reader_destroy_func_t.rst","bson_reader_new_from_data.rst","bson_reader_new_from_fd.rst","bson_reader_new_from_file.rst","bson_reader_new_from_handle.rst","bson_reader_read.rst","bson_reader_read_func_t.rst","bson_reader_reset.rst","bson_reader_set_destroy_func.rst","bson_reader_set_read_func.rst","bson_reader_t.rst","bson_reader_tell.rst","bson_realloc.rst","bson_realloc_ctx.rst","bson_realloc_func.rst","bson_reinit.rst","bson_reserve_buffer.rst","bson_set_error.rst","bson_sized_new.rst","bson_snprintf.rst","bson_steal.rst","bson_strcasecmp.rst","bson_strdup.rst","bson_strdup_printf.rst","bson_strdupv_printf.rst","bson_strerror_r.rst","bson_strfreev.rst","bson_string_append.rst","bson_string_append_c.rst","bson_string_append_printf.rst","bson_string_append_unichar.rst","bson_string_free.rst","bson_string_new.rst","bson_string_t.rst","bson_string_truncate.rst","bson_strncpy.rst","bson_strndup.rst","bson_strnlen.rst","bson_subtype_t.rst","bson_t.rst","bson_type_t.rst","bson_uint32_to_string.rst","bson_unichar_t.rst","bson_utf8_escape_for_json.rst","bson_utf8_from_unichar.rst","bson_utf8_get_char.rst","bson_utf8_next_char.rst","bson_utf8_validate.rst","bson_validate.rst","bson_validate_with_error.rst","bson_value_copy.rst","bson_value_destroy.rst","bson_value_t.rst","bson_visitor_t.rst","bson_vsnprintf.rst","bson_writer_begin.rst","bson_writer_destroy.rst","bson_writer_end.rst","bson_writer_get_length.rst","bson_writer_new.rst","bson_writer_rollback.rst","bson_writer_t.rst","bson_zero_free.rst","character_and_string_routines.rst","creating.rst","cross-platform-notes.rst","endianness.rst","errors.rst","full_index.rst","guides.rst","include-and-link.rst","index.rst","json.rst","oid.rst","parsing.rst","streaming-bson.rst","threading.rst","tutorial.rst","utf8.rst","valgrind.rst","version.rst"],objects:{},objnames:{},objtypes:{},terms:{"0x00":[114,190,192],"0x01":[114,190,192],"0x02":[114,190,192],"0x03":[114,190,192],"0x04":[114,190,192],"0x05":[114,190,192],"0x06":[114,192],"0x07":[114,192],"0x08":[114,192],"0x09":[114,192],"0x0a":[114,192],"0x0b":[114,192],"0x0c":[114,192],"0x0d":[114,192],"0x0e":[114,192],"0x0f":[114,192],"0x10":[114,192],"0x11":[114,192],"0x12":[114,192],"0x13":192,"0x7f":[114,192],"0x80":190,"0xff":[114,192],"23f":191,"48mb":212,"abstract":[51,62,131,134,149,185,191,194,213],"boolean":[5,69,73],"byte":[1,4,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,49,50,66,67,79,90,91,115,126,127,128,136,137,138,141,145,146,149,158,164,168,171,182,186,187,189,191,193,194,195,196,197,198,199,200,201,206,216,225,226,230,231],"case":[23,24,42,82,83,85,169,173,205],"catch":231,"char":[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,43,46,47,49,50,51,52,56,63,64,66,74,75,77,81,82,83,84,85,86,87,88,89,90,94,108,109,115,123,125,146,148,149,150,155,162,168,169,171,172,173,174,175,176,177,178,179,180,181,183,184,185,187,188,189,193,194,195,196,197,198,199,204,205,206,213,216,222,224,226,227],"const":[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38,39,44,45,46,47,48,49,50,52,55,58,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,97,98,105,107,108,109,111,112,113,114,115,116,117,118,123,125,128,133,137,138,139,140,141,142,143,145,146,148,150,153,155,157,162,169,171,173,174,175,176,179,181,184,187,188,189,193,194,195,197,198,199,200,201,202,204,205,206,222,224,227],"default":[41,43,132,136,144,166,222],"enum":[43,114,125,190,192,201],"final":167,"function":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,38,39,40,41,44,45,46,47,48,53,54,55,57,58,65,66,67,68,71,72,73,74,75,76,78,79,81,82,84,85,86,87,88,89,90,92,93,96,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,117,126,127,128,129,130,132,133,135,136,137,138,139,152,153,154,156,157,158,161,164,165,166,167,168,169,170,172,175,176,184,193,198,202,211,214,216,219,222,224,225,226,227,230],"import":214,"int":[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,37,38,43,47,50,51,59,60,61,62,85,89,110,122,124,125,139,149,154,162,168,171,172,173,177,191,205,206,213,216,222,224,227],"long":168,"new":[4,5,6,8,10,14,15,16,21,22,23,24,25,27,29,31,42,44,46,47,66,77,99,101,102,119,121,122,123,128,129,130,133,134,135,136,137,138,144,147,153,154,155,164,168,170,174,184,186,188,191,195,207,211,216,224,226],"null":[4,6,7,17,32,33,34,35,36,40,43,46,47,50,53,54,72,74,108,109,120,123,136,137,138,144,149,151,155,156,157,162,165,166,168,169,172,174,178,179,183,184,185,187,191,195,199,201,203,208,213,216,219,222,224,225,226,227,230],"return":[43,51,72,112,113,125,149,162,185,205,213,219,222,224,225,226,227],"short":187,"static":[86,90,172,191,194,205,222,232],"true":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,37,39,49,50,55,64,66,67,69,73,78,82,83,84,85,86,90,91,96,107,117,141,148,154,157,168,172,183,185,199,200,201,205,207,216,230],"void":[40,41,43,45,46,47,52,53,57,59,60,61,62,63,65,68,72,77,79,86,90,99,100,102,103,104,105,106,112,113,117,118,120,121,126,127,128,129,130,132,133,135,136,140,144,145,146,147,150,151,152,156,158,159,160,161,162,164,165,166,167,168,169,172,178,179,180,181,182,186,187,191,194,196,202,203,205,208,209,211,212,213,214,232],"while":[110,112,115,125,157,162,205,224,226,227],Doing:[2,134],For:[2,43,82,85,172,191,212,213,220,221,223,230],HAS:[126,127,164],IDs:43,Its:201,NOT:[126,164,208,228],One:134,That:115,The:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,50,51,53,54,55,56,58,59,60,61,62,65,66,67,68,70,71,72,73,74,75,76,77,79,82,83,84,85,86,90,91,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,119,121,125,128,135,136,137,138,139,148,149,152,153,154,157,158,162,167,168,170,171,177,182,186,187,189,191,192,193,194,195,196,199,201,204,205,206,207,208,210,211,213,214,218,222,224,225,226,227,232],Then:91,There:224,These:216,Use:[12,168,184,191,193,205,220,221,222,223,230],Useful:168,Using:[220,223,226,229],With:231,_bson_context_t:43,_bson_json_reader_t:125,_bson_mem_vtable_t:133,_bson_reader_t:162,_bson_value_t:204,_bson_writer_t:213,_id:[86,90],_memcmp:38,_oid1_:139,_oid2_:139,_qsort:38,_realloc:211,abcd:131,abort:[125,126,127,134,164,205,210,212,224],about:[117,205,225],abov:226,accept:64,access:228,accomplish:91,accord:36,accumul:131,act:75,add:[12,216],add_execut:222,added:[185,216,224],adding:216,addit:[43,187,205,226,231],addition:[134,166],address:36,advanc:[82,83,84,85,86,90,96,198],after:[3,13,87,88,89,96,162,167,168,172,173,185,187,205,208,224,227],against:232,agre:[125,162,224],aid:134,algorithm:[128,129,130,131],all:[34,40,46,47,82,83,85,115,117,128,129,130,131,151,157,192,200,201,215,222,226,228,231],alloc:[32,33,34,35,40,42,44,53,56,81,110,119,121,122,123,126,127,132,133,134,135,136,137,138,153,154,155,156,164,165,166,168,170,174,175,176,184,185,188,191,195,208,211,213,231],allow:[2,7,30,43,99,100,101,102,103,104,105,106,116,134,156,160,199,201,206,216,224,230],allow_multipl:[119,121],allow_nul:199,also:[54,64,75,127,171,172,195,201,223,224,225,227],altern:[86,216,225],altogeth:218,alwai:[53,69,167,187,188,193,219,230],ambigu:224,among:222,ani:[70,110,125,162,167,168,203,208,224],anoth:[17,39,54,149,172],anyth:230,anywher:201,apach:[125,162,224],api:[128,129,130,131,185,213,220,223,227,230],appar:205,append:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,39,179,180,181,182,184,191,212,216],appli:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31],applic:[43,125,134,162,224],appropri:218,arbitrari:[121,156],arg:176,argc:[43,51,125,149,162,172,213,222,224,227],argument:[125,162,224],argv:[43,51,125,149,162,172,213,222,224,227],around:[58,116,171,177],arrai:[1,2,3,9,32,68,107,178,226],array_len:68,ascii:[1,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,49,50,83,179,180,195],assert:227,assign:36,associ:[40,151,203],assum:8,atom:228,attempt:191,avail:[215,222],avoid:[12,45,67,226],back:[149,224],backslash:195,bar:[32,34,191,226],base:[36,43,118,139,205,216,225,232],basi:[125,162,224],basic:201,baz:[191,216,226],bcon:216,bcon_:216,bcon_int32:[216,224,226],bcon_new:[216,222,224,226],bcon_utf8:[216,222],becaus:117,been:[115,126,127,134,164,191],befor:[78,86,90,92,93,98,115,168,172,173,195,205],begin:[2,12,133,159,198,207,226],behav:214,behavior:187,being:[132,133,210],below:[201,205,226],better:2,between:[31,110],big:[149,218,225],bigger:[126,127,164],binari:[4,72,190],binary_len:72,bind:[134,137],bit:[15,16,36,71,76,92,93,131,143,147,194,197,225],bitwis:[200,201],block:[131,154,232],bool:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,37,39,49,50,54,55,64,66,67,69,70,73,78,82,83,84,85,86,87,88,89,90,91,96,99,101,107,117,119,121,122,141,148,154,157,162,168,172,183,199,200,201,204,205,207,216,227],both:[55,84,107,173,195,218,219],boundari:210,box:[31,116,202,204],bptr:191,bson2:47,bson:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,43,44,47,48,51,53,54,55,56,58,62,64,66,75,77,86,87,88,89,90,96,97,99,100,101,102,103,104,105,106,109,110,114,117,119,122,124,125,131,134,136,137,148,149,162,168,172,185,190,191,192,193,200,201,204,205,207,213,218,220,221,223,229],bson_aligned_begin:191,bson_aligned_end:191,bson_append:136,bson_append_:216,bson_append_arrai:[0,191,220],bson_append_array_begin:[0,3,54,191,216,220],bson_append_array_end:[0,2,191,220],bson_append_binari:[0,190,191,220],bson_append_bool:[0,191,216,220],bson_append_cod:[0,7,191,220],bson_append_code_with_scop:[0,191,220],bson_append_date_tim:[0,20,27,191,220],bson_append_dbpoint:[0,191,220],bson_append_decimal128:[0,191,220],bson_append_docu:[0,191,220],bson_append_document_begin:[0,13,54,191,216,220],bson_append_document_end:[0,12,191,216,220],bson_append_doubl:[0,191,220],bson_append_int32:[0,47,191,213,216,220,227],bson_append_int64:[0,191,220],bson_append_it:[0,191,220],bson_append_maxkei:[0,191,220],bson_append_minkei:[0,191,220],bson_append_now_utc:[0,191,220],bson_append_nul:[0,191,220],bson_append_oid:[0,191,220],bson_append_regex:[0,191,220],bson_append_regex_w_len:[0,191,220],bson_append_symbol:[0,191,220],bson_append_time_t:[0,191,220],bson_append_timestamp:[0,191,220],bson_append_timev:[0,191,220],bson_append_undefin:[0,191,220],bson_append_utf8:[0,32,34,172,191,216,220],bson_append_valu:[0,191,220],bson_array_as_json:[0,33,34,35,191,220],bson_as_canonical_extended_json:[0,32,34,35,162,168,191,216,220,222,224,226,227],bson_as_json:[0,32,33,35,47,191,220],bson_as_relaxed_extended_json:[0,32,33,34,191,220,224],bson_ascii_strtol:[0,215,220],bson_assert:191,bson_big_endian:51,bson_byte_ord:51,bson_check_vers:[0,220,232],bson_clear:191,bson_compar:[0,191,220],bson_concat:[0,65,66,67,135,136,137,138,167,168,170,191,220],bson_context_destroi:[0,42,43,220],bson_context_disable_host_cach:43,bson_context_disable_pid_cach:43,bson_context_flags_t:[42,43],bson_context_get_default:[0,42,43,220],bson_context_new:[0,40,43,220],bson_context_non:43,bson_context_t:[0,40,41,42,144,147,220,223],bson_context_thread_saf:43,bson_context_use_task_id:43,bson_copi:[0,191,220],bson_copy_to:[0,191,220],bson_copy_to_exclud:[0,47,191,220],bson_copy_to_excluding_noinit:[0,46,191,220],bson_count_kei:[0,191,220],bson_decimal128_from_str:[0,51,220],bson_decimal128_from_string_w_len:[0,51,220],bson_decimal128_inf:51,bson_decimal128_nan:51,bson_decimal128_str:[51,52],bson_decimal128_t:[0,10,49,50,52,78,101,205,220,223],bson_decimal128_to_str:[0,51,220],bson_definit:222,bson_destroi:[0,32,34,44,47,54,66,125,135,167,168,170,172,191,216,220,222,224,226,231],bson_destroy_with_st:[0,172,191,220],bson_empti:191,bson_empty0:191,bson_equ:[0,191,220],bson_error_invalid:201,bson_error_json:219,bson_error_read:219,bson_error_reader_badfd:219,bson_error_t:[0,66,123,124,125,138,155,162,169,201,219,220,223,224,227],bson_fre:[0,32,33,34,35,47,54,81,134,162,168,172,174,175,176,188,195,213,214,216,220,222,224,226,227],bson_get_data:[0,91,125,191,220,224],bson_get_major_vers:[0,220,232],bson_get_micro_vers:[0,220,232],bson_get_minor_vers:[0,220,232],bson_get_monotonic_tim:62,bson_get_vers:[0,220,232],bson_gettimeofdai:62,bson_gnuc_const:43,bson_gnuc_deprec:[128,129,130],bson_gnuc_deprecated_for:46,bson_gnuc_null_termin:[46,47],bson_gnuc_printf:[169,171,175,176,181,206],bson_has_field:[0,191,220],bson_have_syscall_tid:43,bson_include_dir:222,bson_init:[0,32,34,39,46,47,66,67,135,136,137,138,167,168,170,191,216,220],bson_init_from_json:[0,39,65,67,124,135,136,137,138,167,168,170,191,220,224],bson_init_stat:[0,39,65,66,75,135,136,137,138,167,168,170,191,220,226],bson_initi:[65,125,168,172,190,216,224],bson_iter_arrai:[0,110,220],bson_iter_as_bool:[0,110,220],bson_iter_as_doubl:[0,110,220],bson_iter_as_int64:[0,110,220],bson_iter_binari:[0,110,220],bson_iter_bool:[0,110,220],bson_iter_cod:[0,75,110,220],bson_iter_codewscop:[0,110,220],bson_iter_date_tim:[0,110,112,220],bson_iter_dbpoint:[0,110,220],bson_iter_decimal128:[0,110,220],bson_iter_docu:[0,110,220],bson_iter_doubl:[0,110,220],bson_iter_dup_utf8:[0,110,220],bson_iter_find:[0,86,87,90,110,220],bson_iter_find_cas:[0,82,85,86,88,90,110,220],bson_iter_find_descend:[0,110,220,226],bson_iter_find_w_len:[0,89,110,220],bson_iter_holds_arrai:[68,110],bson_iter_holds_binari:[72,110],bson_iter_holds_bool:[73,110],bson_iter_holds_cod:[74,110],bson_iter_holds_codewscop:[75,110],bson_iter_holds_date_tim:[76,110],bson_iter_holds_dbpoint:110,bson_iter_holds_decimal128:[78,110],bson_iter_holds_docu:[79,110,226],bson_iter_holds_doubl:[80,110],bson_iter_holds_int32:[92,110,226],bson_iter_holds_int64:[93,110],bson_iter_holds_int:110,bson_iter_holds_maxkei:110,bson_iter_holds_minkei:110,bson_iter_holds_nul:110,bson_iter_holds_numb:110,bson_iter_holds_oid:[86,90,98,110],bson_iter_holds_regex:110,bson_iter_holds_symbol:110,bson_iter_holds_timestamp:[110,112],bson_iter_holds_undefin:110,bson_iter_holds_utf8:[110,115],bson_iter_init:[0,87,88,89,90,110,205,220,226],bson_iter_init_find:[0,86,88,89,90,110,192,220,226],bson_iter_init_find_cas:[0,86,87,89,90,110,220],bson_iter_init_find_w_len:[0,86,87,88,90,110,220],bson_iter_init_from_data:[0,86,87,88,89,110,220],bson_iter_init_from_data_at_offset:[0,97,110,220],bson_iter_int32:[0,110,220,226],bson_iter_int64:[0,110,220],bson_iter_is_kei:110,bson_iter_kei:[0,17,95,110,220,226],bson_iter_key_len:[0,91,94,110,220],bson_iter_next:[0,86,90,110,220,226],bson_iter_offset:[0,91,110,220],bson_iter_oid:[0,86,90,110,220],bson_iter_overwrite_bool:[0,110,220],bson_iter_overwrite_date_tim:[0,110,220],bson_iter_overwrite_decimal128:[0,110,220],bson_iter_overwrite_doubl:[0,110,220],bson_iter_overwrite_int32:[0,110,220],bson_iter_overwrite_int64:[0,110,220],bson_iter_overwrite_oid:[0,110,220],bson_iter_overwrite_timestamp:[0,110,220],bson_iter_recurs:[0,110,220,226],bson_iter_regex:[0,110,220],bson_iter_symbol:[0,110,220],bson_iter_t:[0,17,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,116,117,192,205,220,223,226],bson_iter_time_t:[0,110,220],bson_iter_timestamp:[0,110,220],bson_iter_timev:[0,110,220],bson_iter_typ:[0,68,72,73,74,75,76,78,79,80,92,93,98,110,112,115,192,220],bson_iter_utf8:[0,81,110,220],bson_iter_valu:[0,110,204,220],bson_iter_visit_al:[0,110,205,220],bson_json_data_reader_ingest:[0,125,220],bson_json_data_reader_new:[0,125,220],bson_json_destroy_cb:121,bson_json_error_code_t:125,bson_json_error_read_cb_failur:[125,219],bson_json_error_read_corrupt_j:[125,219],bson_json_error_read_invalid_param:[125,219],bson_json_reader_cb:121,bson_json_reader_destroi:[0,119,121,122,125,220,224],bson_json_reader_new:[0,125,220],bson_json_reader_new_from_fd:[0,125,220,224],bson_json_reader_new_from_fil:[0,125,219,220,224],bson_json_reader_read:[0,66,125,138,220,224],bson_json_reader_t:[0,118,119,120,121,122,123,124,219,220,223,224],bson_librari:222,bson_little_endian:51,bson_major_vers:[59,232],bson_malloc0:[0,134,220],bson_malloc:[0,134,172,220],bson_max_s:191,bson_md5_append:[0,131,220],bson_md5_finish:[0,131,220],bson_md5_init:[0,131,220],bson_md5_t:[0,128,129,130,220,223],bson_mem_restore_vt:[0,134,220],bson_mem_set_vt:[0,134,220],bson_mem_vtable_t:133,bson_memcheck:231,bson_micro_vers:[60,232],bson_minor_vers:[61,232],bson_new:[0,39,65,66,67,136,137,138,167,168,170,191,220],bson_new_from_buff:[0,39,65,66,67,135,137,138,167,168,170,191,220],bson_new_from_data:[0,39,65,66,67,135,136,138,167,168,170,191,220,226],bson_new_from_json:[0,39,65,66,67,124,135,136,137,167,168,170,191,220,224],bson_oid_compar:[0,149,220,225],bson_oid_copi:[0,149,220],bson_oid_equ:[0,149,220,225],bson_oid_get_time_t:[0,149,220,225],bson_oid_hash:[0,149,220,225],bson_oid_init:[0,43,149,220,225],bson_oid_init_from_data:[0,149,220],bson_oid_init_from_str:[0,149,220,225],bson_oid_init_from_string_unsaf:225,bson_oid_init_sequ:[0,149,220],bson_oid_is_valid:[0,149,220],bson_oid_t:[0,9,22,43,77,86,90,98,105,139,140,141,142,143,144,145,146,147,150,204,205,220,223,225],bson_oid_to_str:[0,86,90,149,220],bson_reader_destroi:[0,152,154,162,220,224,227],bson_reader_destroy_func_t:[0,156,160,162,220],bson_reader_new_from_data:[0,159,162,220,227],bson_reader_new_from_fd:[0,162,220,224,227],bson_reader_new_from_fil:[0,56,162,220,224,227],bson_reader_new_from_handl:[0,152,162,220],bson_reader_read:[0,162,220,224,227],bson_reader_read_func_t:[0,156,161,162,220],bson_reader_reset:[0,162,220],bson_reader_set_destroy_func:[0,162,220],bson_reader_set_read_func:[0,162,220],bson_reader_t:[0,56,151,152,153,154,155,156,157,158,159,160,161,163,220,223,224,227],bson_reader_tel:[0,162,220,227],bson_realloc:[0,134,165,220],bson_realloc_ctx:[0,134,166,213,220,227],bson_realloc_func:[0,134,136,211,213,220],bson_reinit:[0,39,65,66,67,125,135,136,137,138,168,170,191,220,224],bson_reserve_buff:[0,39,65,66,67,135,136,137,138,167,170,191,220],bson_set_error:[0,56,220],bson_sized_new:[0,39,65,66,67,135,136,137,138,167,168,191,220],bson_snprintf:[0,206,215,220],bson_static_definit:222,bson_static_include_dir:222,bson_static_librari:222,bson_static_vers:222,bson_steal:[0,54,191,220],bson_strcasecmp:[0,215,220],bson_strdup:[0,215,220],bson_strdup_printf:[0,176,215,220],bson_strdupv_printf:[0,215,220],bson_strerror_r:[0,56,220],bson_strfreev:[0,215,220],bson_string_append:[0,181,184,185,220],bson_string_append_c:[0,185,220],bson_string_append_printf:[0,185,220],bson_string_append_unichar:[0,185,220],bson_string_fre:[0,184,185,220],bson_string_new:[0,185,220],bson_string_t:[0,179,180,181,182,183,184,186,220,223],bson_string_trunc:[0,185,220],bson_strncpi:[0,215,220],bson_strndup:[0,81,215,220],bson_strnlen:[0,215,220],bson_subtype_binari:190,bson_subtype_binary_deprec:190,bson_subtype_funct:190,bson_subtype_md5:190,bson_subtype_t:[0,4,72,204,205,220,223],bson_subtype_us:190,bson_subtype_uuid:190,bson_subtype_uuid_deprec:190,bson_t:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,39,44,45,46,47,48,53,54,55,58,64,65,66,67,72,75,86,87,88,89,91,110,115,124,125,135,136,137,138,157,162,167,168,170,172,190,200,201,205,207,212,213,220,222,223,224,226,227,231],bson_type_arrai:[68,107,114,192],bson_type_binari:[72,114,192],bson_type_bool:[69,70,71,73,99,103,114,192],bson_type_cod:[74,114,192],bson_type_codewscop:[75,114,192],bson_type_date_tim:[20,76,100,111,113,114,192],bson_type_dbpoint:[77,114,192],bson_type_decimal128:[78,101,192],bson_type_docu:[79,107,114,192],bson_type_doubl:[69,70,71,80,102,114,192],bson_type_eod:[114,192],bson_type_int32:[69,70,71,92,103,114,192,204],bson_type_int64:[69,70,71,93,104,114,192],bson_type_maxkei:[18,114,192],bson_type_minkei:[19,114,192],bson_type_nul:[21,69,114,192],bson_type_oid:[22,98,105,114,192],bson_type_regex:[23,24,108,114,192],bson_type_symbol:[25,109,114,192],bson_type_t:[0,114,204,220,223],bson_type_timestamp:[27,106,112,114,192],bson_type_undefin:[29,69,114,192],bson_type_utf8:[69,114,115,192],bson_uint32_to_str:[0,2,215,220],bson_unichar_t:[0,182,196,197,220,223],bson_utf8_escape_for_json:[0,215,220],bson_utf8_from_unichar:[0,215,220],bson_utf8_get_char:[0,194,215,220],bson_utf8_next_char:[0,194,215,220],bson_utf8_valid:[0,115,215,220,230],bson_valid:[0,191,201,220,226],bson_validate_dollar_kei:201,bson_validate_dot_kei:201,bson_validate_empty_kei:201,bson_validate_flags_t:[200,201],bson_validate_non:[201,226],bson_validate_utf8:201,bson_validate_utf8_allow_nul:201,bson_validate_with_error:[0,191,200,220],bson_value_copi:[0,204,220],bson_value_destroi:[0,202,204,220],bson_value_t:[0,31,116,202,203,220,223],bson_vers:222,bson_version_:232,bson_version_hex:232,bson_visitor_t:[0,117,220,223,226],bson_vsnprintf:[0,215,220],bson_wrapper_destroi:172,bson_wrapper_t:172,bson_writer_begin:[0,54,213,220,227],bson_writer_destroi:[0,211,213,220],bson_writer_end:[0,207,213,220,227],bson_writer_get_length:[0,213,220],bson_writer_new:[0,208,213,220,227],bson_writer_rollback:[0,207,210,213,220],bson_writer_t:[0,207,208,209,210,211,212,220,223,227],bson_zero_fre:[0,134,220],bsonspec:[109,190],buf:[131,136,158,177,211,213,227],buf_len:136,buf_siz:121,buffer:[2,4,54,58,67,68,72,75,79,90,91,119,121,131,136,137,145,153,157,158,159,167,168,170,171,184,187,191,193,207,208,209,210,211,213,216,226,227,231],buflen:[177,211,213,227],build:[2,185,213,216,223,227],builder:[180,184],built:228,bulk:[125,213],c11:187,cach:43,call:[2,3,12,13,20,32,33,34,35,40,43,46,47,53,54,72,73,74,78,81,86,90,92,93,95,98,99,100,101,102,103,104,105,106,107,108,112,115,122,132,133,136,152,154,158,167,168,172,185,191,198,205,207,216,225,231],callback:[117,152,158,160,162,205,219,225],caller:[1,2,32,33,34,35,56,86,90,115,207,208,211,226],calloc:[127,133],can:[38,43,58,67,68,72,73,75,79,91,110,115,121,125,149,156,162,185,191,192,194,200,201,205,213,214,216,222,225,226,227,230,231,232],cannot:[43,210],canon:[33,224],cast:[70,71],caus:[30,231],caveat:134,certain:[167,232],cflag:222,chang:[110,134],charact:[0,23,24,36,182,187,194,195,196,197,198,220,223,225],check:[37,64,72,73,141,148,157,189,191,201,210,219,220,221,223,226,232],child:[2,3,11,12,13,107,191,216,226],chunk:[158,185],clean:[172,211],cleanup:[162,208,224],clock:[0,220,223],close:[122,154,162,224],close_fd:154,close_on_destroi:[122,154,162],closer:216,cmake:231,cmakelist:222,code:[7,25,29,46,47,56,75,77,128,129,130,143,169,201,204,205,219,225,231],code_len:204,coll:[9,191],collect:[9,77,204],collection_len:[77,204],come:162,command:[125,162,222,224],common:[29,224],commonli:115,commun:[27,30,112],compar:38,comparison:139,compat:[223,225],compil:[59,60,61,218,232],complet:[3,12,13,129,207,209],complianc:[125,162,224],comput:95,condit:[125,162,224],configur:[43,225,231],conjunct:[38,58],consid:[82,84,85,107,110,225],constant:[91,94,95,97,193],construct:149,consum:[165,166,216],contain:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,49,50,54,64,66,75,76,82,83,85,90,99,108,110,111,113,118,121,125,126,134,136,138,141,142,145,146,148,149,162,164,165,166,167,190,191,192,193,194,199,201,204,224,225,230,231],content:[39,44,45,54,71,74,77,80,99,100,101,102,103,104,105,106,108,109,110,112,115,137,140,168,172,199,200,201,202,210],context:[40,43,144,147,165],continu:[32,125,162,224],control:43,conveni:[117,215,224,226,227],convers:[36,125,205],convert:[36,52,119,122,125,149,150,162,193,195,196,197,218,223,226],copi:[31,44,45,46,47,58,67,125,137,140,153,162,168,174,184,187,188,202,224,226],copyright:[125,162,224],core:216,correct:168,correctli:134,corrupt:[117,201,205,227],could:[30,91,148,168,205,216,219,227],couldn:168,count:[48,131,158,205],count_field:205,counter:[149,225],creat:[42,91,119,121,122,123,135,136,137,152,153,154,155,159,170,184,211,220,223,224,226,229],create_on_heap:191,creation:216,cross:[62,220,223],ctx:[43,136,165,166],current:[17,20,69,70,71,83,91,94,95,97,107,108,115,116,163,186,197,198,210,212,225],custom:[134,161,162,166],dangl:67,data:[4,51,66,67,72,90,91,97,117,118,121,124,128,136,137,138,145,153,156,158,161,162,172,190,191,193,204,205,214,220,221,223,225,226,228],data_len:[190,204],date:[8,20,100,112],dbpointer:9,dbref:201,dbson_memcheck:231,dcb:121,dcmake_c_flag:231,deal:134,debug:224,dec:[49,50,52,78],decim:10,decimal128:[49,50,51,101],decimal128_str:52,decimal128t:52,defin:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,21,22,23,25,26,27,28,29,30,31,51,68,72,73,74,75,76,78,79,80,92,93,98,110,112,115,121,125,149,191,232],demand:213,demonstr:205,denot:155,depend:[23,24,225,231],deprec:[9,25,29,77,109,205],derefer:218,dereferenc:218,descend:[84,205],describ:219,descriptor:[122,154,157,158,159,162,224,227],design:134,desir:[200,201],destin:[171,187,213,216],destroi:[54,122,151,152,154,160,172,231],detail:[200,201],detect:[17,39,43,157,200,212,231],determin:[1,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,66,69,83,138,192,204,216,219],dev:63,dictat:218,dictionari:213,did:226,differ:[27,62,216],digest:[129,131],digit:36,dilig:134,direct:149,directli:[168,213],disabl:43,discard:110,disk:214,distribut:[125,162,224,230],dive:226,djb:225,do_someth:232,doc:[33,35,86,125,157,190,191,192,205,213,216,224,226,227],document:[7,8,9,11,12,13,14,17,18,19,31,32,38,39,44,54,55,58,75,79,86,90,96,99,100,101,102,103,104,105,106,107,110,114,117,119,124,125,136,137,157,162,168,170,191,200,201,205,207,210,213,219,220,223,224,229],document_len:79,doe:[40,47,53,56,120,151,187,203,208],doing:169,domain:[56,169,201,219],done:[2,53,99,100,101,102,103,104,105,106,115],dot:84,dotal:[23,24],dotkei:[64,84],doubl:[14,70,80,102,204,205],down:226,driver:[34,115,223],dst:[39,45,46,47,140,172,187,202],due:117,dump:56,dure:[219,231],dynam:[191,213,222],each:[125,162,178,193,224],easier:134,easili:[191,225],effect:201,effici:[54,172],einval:36,either:[73,117,125,144,162,193,205,207,224],element:[2,4,5,6,7,8,10,12,14,15,16,17,18,19,20,21,22,27,29,32,48,64,68,71,72,73,75,76,77,79,82,83,85,86,90,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,226],elif:51,elimin:168,els:[86,90,125,162,205,224,230],emb:4,embed:[30,107,179,199,201,226],empti:[136,191,216],enabl:232,encapsul:[56,131,204,216],encod:[6,7,30,32,33,34,35,49,50,66,74,75,81,115,123,137,138,146,148,149,150,155,179,182,185,191,195,197,198,216,218,226],encount:[36,96],end:[132,157,158,186,191,226,230],endian:[149,217,220,223,225],endif:[43,51,232],endptr:36,enforc:171,enough:224,ensur:1,entir:[36,187],entri:[117,205],enumer:[190,192],environ:231,eof:[168,227],epoch:[8,26,28,76,100,111,113,142,149],equal:[37,38,55,141,149,186,225],equat:69,equival:[54,65,167,173],erang:36,err_cod:177,err_offset:[205,226],errno:[36,177],error:[54,56,72,73,96,99,100,101,102,103,104,105,106,110,125,157,162,169,172,200,201,205,220,223,224,227,229],escap:195,essenti:191,etc:193,even:187,everi:[133,231],everyth:[23,24],exact:[49,50],exampl:[117,136,172,201,212,216,226],except:[7,32,46,47,75,81,125,162,165,176,195,214,224],exclud:[30,46,47,66,138,186,206],execut:160,exemplifi:226,exhaust:[82,83,84,85,191],exist:[66,138,216,226],exit:[125,205,224],expand:136,expect:[125,137,162,211,218,224,226,230],express:[125,162,224],extend:[33,34,35,66,125,219,224],extern:[30,110],extrem:134,fail:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,67,125,157,162,201,224,226,227,230,231],failur:[32,33,34,35,107,126,127,132,133,157,158,163,164,219],fallback:228,fals:[5,17,39,49,50,54,64,66,67,73,78,82,84,85,96,107,117,125,141,157,162,168,172,185,200,201,205,224,230],fashion:121,faster:95,fclose:168,featur:232,feed:[118,128],fetch:[69,70,77,78,80,92,93,94,95,97,98,116,142,210],few:216,fidel:224,field:[1,2,3,5,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,46,47,64,69,70,72,74,77,78,80,83,91,92,93,110,115,117,133,190,191,192,205,216],file:[122,123,125,154,155,156,157,158,159,162,168,219,222,224,227],filedescriptor:227,filenam:[123,125,155,162,224],fill:[168,187,201,219],find:222,find_error_loc:205,find_packag:222,finish:211,first:[36,46,47,59,86,90,131,168,214,216,226],first_exclud:[46,47],fit:187,flag:[42,43,191,200,201,231],fold:[82,83,85],follow:[69,70,84,216,224,225,230,232],foo:[32,34,191,192,216,226],fopen:168,foreign:225,forget:231,fork:43,form:[7,147],format:[1,8,32,33,34,35,49,50,63,66,125,169,171,175,176,181,193,205,206,216,218,223,224,225,230],forth:1,forward:227,found:[64,66,82,83,84,85,110,123,138,189,195,205,222,226,227],four:222,fprintf:[56,125,157,162,168,224,226,227],fragment:7,fread:168,free:[32,33,34,35,53,54,56,57,63,120,133,178,183,191],free_seg:183,freed:[42,44,54,58,66,72,74,75,81,94,98,108,115,116,119,121,122,132,133,135,154,157,164,167,168,170,172,174,175,176,184,188,195,202,208],from:[36,46,47,68,69,78,79,91,92,93,121,122,124,154,156,157,158,159,161,162,168,187,188,192,193,198,202,208,213,218,223,224,225,226,228],fseek:168,ftell:168,func:[160,161],further:[157,205,226],futur:[134,205],fwrite:[125,224],gcc:222,gener:[2,43,47,126,127,137,142,143,144,147,164,193,219,226,228],get:[20,59,60,61,168],gettimeofdai:62,give:201,given:[36,210],goe:216,good:170,govern:[125,162,224],greater:[37,38,139,158,225],grow:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,168,227],growth:184,guarante:225,guid:[220,223],had:205,hand:216,handl:[56,62,152,156,158,159,162,169,220,223,229],has:[43,67,96,115,134,191,193,212,230],hash:143,hashtabl:[143,149,225],have:[40,170,172,201,216,224,226],header:[222,227],heap:[135,137,170,191,216,231],hello:[216,222],hello_bson:222,help:[134,137,224],helper:[20,26,28,169,230],hex:[146,148,149,150],high:[51,213],higher:[54,134,172,205,227],host:[155,218],hostnam:225,how:[43,69,117,200,201,205],howev:[29,110,134,167],http:[109,125,162,190,224],idea:170,ident:[87,88,89,165,216],identifi:[9,149,225],ieee:51,ifdef:43,ignor:[36,218],immut:[68,72,75],implement:[30,62,131,134,160,166,218,228],impli:[125,162,224],inc:[27,125,162,191,224],includ:[23,24,27,32,34,43,47,51,56,71,110,125,149,162,168,178,185,190,191,192,204,205,210,213,216,224,225,227],incom:[125,162,224],increment:[2,27,62,106,112,204,225],indic:[4,54,85,89,183,191,199,201,216,230],infer:36,infin:51,inform:[8,56,117,190,205,224,225,226,227,230],initi:[3,12,13,45,49,50,54,65,66,67,84,86,87,88,89,90,91,107,130,136,138,145,146,167,168,172,205,210,216,227],inlin:[191,225],input:[195,224,225],insensit:[23,24],inspect:[200,201,227],instal:[133,222],instanc:[130,211],instead:[26,28,54,205,218,222],int32:192,int32_max:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,168],int32_t:[15,92,103,204,205],int64_t:[8,16,36,62,71,76,93,100,104,204,205],int8_t:204,integ:[15,16,32,36,48,71,76,85,89,92,93,95,97,173],integr:134,interact:9,interchang:224,interest:134,interfac:[224,228],intern:[20,38,67,121,168,177,191,219,231],intra:[27,112],intrins:218,invalid:[3,13,17,36,39,66,67,74,82,84,85,96,107,108,112,115,168,172,198,201,219,230],issu:30,item:[216,225],iter:[17,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,192,194,204,205,220,223,227,229],its:[36,167,168,182,231],itself:[178,183],javascript:[6,7,29,75],json:[32,33,34,35,66,118,119,122,124,125,138,162,168,195,216,219,220,221,223,226],just:[225,227],kei:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,46,47,64,82,83,84,85,87,88,89,91,94,95,110,172,191,200,201,205,216,225,226],key_length:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],keylen:[85,89,91],kind:[125,162,224],know:[31,69,116,230],known:231,languag:[125,134,137,162,205,213,224,227],larg:168,larger:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31],last:96,later:[91,136],law:[125,162,224],layer:223,layout:91,lazili:226,lead:36,leak:[12,45,220,221,223],least:[126,127,164,168,187,231],left:187,legaci:[9,32,34],len:[4,50,58,66,91,118,125,138,185,186,191,196,204,224],length:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,50,52,54,66,67,68,72,74,75,77,79,81,85,89,90,91,94,95,109,115,118,128,131,136,137,138,148,153,162,168,186,189,191,195,199,201,210,211,216,225,226,230],less:[38,139,216,225],let:[216,226],level:[54,134,172,205,213,227],lexicograph:[139,173],lib:222,libbson:[0,32,34,37,59,60,61,62,63,128,129,130,131,132,133,134,166,205,216,218,219,220,224,225,226,228,229,230],libc:[30,158],librari:[62,166,193,222,223,228,232],licens:[125,162,224],lifetim:[67,110,153],lightweight:134,like:[7,63,84,158,176,181,185,191,193,205,206,214,226,228],limit:[125,162,212,224],line:[125,162,222,224],link:222,list:[46,47],liter:216,littl:218,live:216,llong_max:36,llong_min:36,load:75,local:[23,24,43,83],locat:[17,32,33,34,35,52,54,66,68,72,74,75,77,78,79,81,83,87,88,89,115,117,129,138,150,177,193,196,200,205,206,226],logic:216,longer:[40,54,135,184,202],look:[115,216],loop:225,low:51,lower:[172,173],lsw:131,machin:149,macro:[68,72,79,216],made:67,mai:[8,66,99,100,101,102,103,104,105,106,110,125,134,137,138,162,167,190,198,205,207,213,224,225,226,230,232],main:[32,34,43,47,51,125,149,162,168,172,213,222,224,227],major:[37,59,60,61,232],make:[23,24,134,215,216,226],malloc:[126,127,133,167,231],manag:[0,191,212,216,220,223,227],mani:[30,213,218,219],manipul:215,manner:225,marshal:115,match:[23,24,83,187,195,226],maximum:[17,39,189,191],maxlen:189,md5:[128,129,130,131],mean:[50,187,218],meant:[110,158],meet:37,mem:[57,133,164,165,166,214],memcpi:218,memori:[0,12,45,57,118,126,127,128,132,133,156,162,164,165,166,168,208,210,212,213,214,216,220,223,227],messag:[56,125,131,162,201,212,219,222,224],method:208,micro:[37,59,60,61,232],microsecond:[62,113],middl:61,might:[185,224,225,231],millisecond:[8,26,28,76,100],minimum:[37,222],minor:[37,59,60,61,232],miss:[86,90],mlock:214,mode:[23,24,154],modifi:[30,58,63,72,74,75,94,98,108,110,115,116,157,200,201],mongoc_test_valgrind:231,mongodb:[18,19,27,33,34,35,66,84,125,147,162,212,219,223,224,225,226],mongodbextend:219,monoton:[62,193,225],more:[128,161,190,201,213,225,226,227,230],most:42,move:172,msec_since_epoch:205,multi:[115,182,194,196,197,225],multipl:[23,24,198],must:[2,4,6,12,22,30,36,45,63,66,67,68,79,86,90,91,110,132,133,153,154,168,172,186,187,202,207,225,226,230],mutabl:191,mutat:[99,100,101,102,103,104,105,106,226,228],my_bson_doc:110,my_data:226,my_data_len:226,my_doc:110,my_field:110,my_state_t:205,my_str:230,my_string_len:230,my_visit_befor:205,my_visit_corrupt:205,my_visit_unsupported_typ:205,mycollect:227,mysubdoc:110,n_byte:188,n_member:133,name:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,46,47,64,77,82,83,85,110,123,219,225,226],nan:[49,50,51],nativ:[223,228],nbyte:128,necessari:[216,226,231],need:[42,47,185,205,216,225,226,230],neg:[8,173],network:[213,227],newer:232,newli:[32,33,34,35,42,44,81,119,121,122,123,135,136,137,138,153,154,155,156,170,174,175,176,184,188,195,211],next:[96,124,157,158,198],non:[32,33,34,35,54,69,74,109,133,195],normal:[32,205],notat:[64,84,149],note:[115,208,214,220,223],noth:[40,53,120,151,169,187,203,208],notic:[216,230],now:[82,84,85,134,172,216],nul:[191,195],num_byt:[126,127,133,164,165,166],number:[30,36,48,59,60,61,76,111,113,126,158,171,187,193,194,196,206,215,216],numberint:224,numer:224,nuse:[162,224],object:[43,66,138,149],objectid:[43,147,148,149,220,223,228,229],observ:[83,94,95,97,99,100,101,102,103,104,105,106,107,108,112,114,115,116],obtain:[91,125,162,224],occur:[43,172,186,200,201,226],off:205,off_t:163,offset:[91,97,163,198,200,205,210,211,213,226],often:[125,224],oid1:[139,141],oid2:[139,141],oid:[9,22,43,77,86,90,105,142,143,144,145,146,147,149,150,191,204,225],oidstr:[86,90],older:205,omit:216,one:[54,136,159,166,201,222,226,228,231],onli:[9,27,62,66,67,72,99,100,101,102,103,104,105,106,107,138,147,159,160,226,231,232],oom:134,opaqu:[152,158],open:[122,125,162,219,224,227],oper:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,39,125,158,168,228],opt:[23,191],optim:[193,218],option:[7,17,23,24,32,33,34,35,66,75,81,108,115,117,136,138,144,147,152,183,201,204,205],org:[109,125,162,190,224],other:[34,38,55,70,73,115,156,168,195,214,219],otherwis:[7,49,50,53,64,66,67,78,107,123,137,138,141,155,156,163,183,200,201],our:[162,224],out:[36,56,78,134,136,201,207,219],outermost:32,outsid:201,over:47,overflow:[17,39],overlap:219,overrid:43,overwrit:[99,100,101,102,103,104,105,106],own:[117,160,205],ownership:185,packag:222,packet:[210,213,227],pad:[133,191,205],page:214,paramet:[56,216],parent:216,pars:[49,50,66,125,138,146,148,205,219,220,223,229],part:158,particular:[212,224],partli:210,pass:[36,56,91,96,116,136,152,177,210,216,230],password:214,past:212,path:[155,162,222,226],peer:147,perform:[2,7,125,175,185,216,226,232],permiss:[125,162,224],perror:168,pid:43,pid_t:225,place:[65,86,90,99,100,101,102,103,104,105,106,115,186],platform:[62,134,215,220,223,228],pleas:46,pluggabl:[156,166],pms:[128,129,130],point:[72,193],pointer:[22,66,67,72,75,91,121,126,127,136,156,164,165,166,168,193,198],pool:165,portabl:[36,126,127,134,164,171,173,177,189],posit:[17,48,163,173],posix:228,possibl:[201,218],potenti:231,power:[184,185],pre:170,prealloc:170,precis:27,prefer:[47,216,224],prefix:216,prematur:117,preprocessor:232,preserv:[195,224],prevent:214,previous:91,primarili:[18,19,27],primit:224,print:[32,34,47,125,162,224,226],print_doc_id:[86,90],print_each_char:194,printabl:52,printf:[32,33,34,35,47,51,86,90,110,149,168,169,171,175,176,181,185,192,193,194,204,205,206,216,222,224,225,226,227,230],privat:[110,222],probabl:[112,115,214],proce:216,process:[41,125,126,127,132,133,149,162,164,224,225],processor:216,program:[54,72,73,96,99,100,101,102,103,104,105,106,125,162,220,223,224,229,231],progress:91,prohibit:201,proof:205,propag:[66,123,124,138,155],properli:[1,218],properti:58,protect:214,prototyp:166,provid:[4,5,6,7,49,50,62,67,75,108,117,125,136,145,152,154,156,162,194,205,213,215,216,223,224,225,226,227,228,230],pthread:[222,228],purpos:225,python:213,qsort:[38,139,149,225],queri:[18,19],rand:225,random:149,rang:36,rare:[42,134],rather:[32,187],raw:[58,68,75,79,145,172],reach:157,reached_eof:157,reached_of:157,read:[67,121,122,124,125,154,156,157,158,160,161,162,168,205,224],read_into:168,reader:[56,118,119,120,122,124,125,151,152,154,156,157,159,160,161,162,163,224,227],realloc:[133,136,164,166,227],realloc_func:[136,211,213],realloc_func_ctx:[136,211,213],reconstruct:[91,97],recurs:84,reduc:225,refer:[67,115,220,223,230],regex:[23,24,108,204],regex_length:24,region:[57,126,127,128,162,164,165,166,212,213,214,216,227],reiniti:167,relax:[35,224],releas:[37,40,59,60,61,110,151,203,208],reli:91,remain:[67,117,187],rememb:30,remov:216,replica:147,report:[205,219],repres:[51,95,97,149,191,225],represent:[30,63,115,182,194,197,224],request:[82,84,85,119,121,164,165,166],requir:[37,43,56,57,125,134,162,205,216,222,224,225,228],required_major:37,required_micro:37,required_minor:37,reserv:168,resiz:136,resourc:[40,151,203],respons:[1,32,33,34,35,208,228],restor:[91,132],result:[32,33,34,35,36,44,52,54,57,67,75,81,109,115,132,133,150,153,170,171,193,195,196,206],retriev:[68,79,94,95,108,115],reus:167,revers:134,rewind:168,rfc:199,routin:[0,216,220,223,224],run:[205,218,231],runtim:[31,37,115,116,192,204],safe:[41,225,228],same:[34,38,47,141,191,216],sampl:222,save:91,scope:[7,75,191],scope_data:204,scope_len:[75,204],second:[27,111,113,142,149,216,226],section:193,see:[2,49,50,54,56,64,82,85,117,125,162,172,190,191,200,201,210,224,226,227,230],seek:159,seek_end:168,semant:38,sensit:[82,83,85],sent:210,sequenc:[125,147,157,162,196,197,224],sequenti:[32,227],seri:205,serial:[2,136,213,227],serv:42,server:[27,112],set:[32,33,34,35,36,49,50,54,66,108,109,117,123,127,133,134,136,138,155,157,160,161,168,169,187,188,191,193,200,201,205,216,222,231],shall:[1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,18,19,21,22,27,29,30,32,34,38,39,40,41,44,45,46,47,48,53,54,55,57,58,65,67,68,71,72,73,76,79,82,84,85,86,90,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,132,133,135,137,139,153,154,157,167,170],share:222,should:[9,23,24,25,29,40,42,44,47,53,54,56,57,58,66,74,75,77,78,81,82,84,85,91,92,93,94,98,107,108,110,116,119,121,122,128,129,130,135,154,157,160,170,174,175,176,183,184,188,194,195,216,230],show:216,sign:[15,16,36,71],similar:[27,75,81,127,158,224],similarli:214,simpl:225,simpli:[205,218,222,225],simplifi:205,sinc:[8,26,28,76,100,111,113,142,149],singl:[2,66,138,191,194,196,213,225],situat:[47,91,134],size:[17,39,110,119,121,136,164,165,166,168,170,171,177,187,189,191,193,206,214,231],size_t:[32,33,34,35,67,90,91,118,119,121,126,127,133,136,137,148,153,158,162,164,165,166,168,170,171,177,187,188,189,193,199,200,205,206,210,211,213,214,224,226,227],sizeof:[126,127,149,164,172,193],skip:231,slower:137,small:[191,215,231],smaller:186,snprintf:[171,193],socket:156,softwar:[125,162,224],some:[30,185,219],someth:[63,157],sort:[139,173],sourc:[121,124,156],space:[168,187,207],spec:77,special:[43,47,195],specif:[49,50,109,125,149,162,165,166,192,205,216,218,219,224],specifi:[1,8,11,43,46,47,53,100,216,222,226],speed:191,src:[39,45,46,47,140,172,187,202],ssize_t:[66,138,158,195,205],stack:[56,65,67,110,134,168,191,216,231],stand:134,standard:[84,187,199],start:[3,32,36,46,47,91,149,201,216],state:[17,39,205,216],stderr:[56,125,157,162,168,224,226,227],stdin:[162,224],stdin_fileno:[125,162,224],stdio:[51,125,149,162,168,205,222,224,227],stdlib:[125,224],stdout:[125,162,224],steal:54,stolen:54,stop:[117,205],storag:231,store:[18,19,54,74,75,129,177,196,214,225],str:[32,33,34,35,36,47,52,146,148,149,150,162,171,174,179,180,183,184,185,188,193,194,204,206,216,224,227],strcasecmp:173,strcmp:[110,125,162,224],stream:[119,121,156,158,161,162,163,168,220,221,223],strerror:177,string:[0,1,2,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,49,50,51,52,63,64,66,74,75,81,82,83,85,89,91,94,108,109,115,125,138,146,148,150,162,169,171,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,193,195,197,198,199,201,206,216,220,223,224,226,230],strlen:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,66,95,138,191,216],strncpy:187,strncpy_:187,strnlen:189,strptr:193,strtoll:36,struct:[28,43,51,56,62,91,110,113,125,131,133,149,162,172,185,191,204,205,213,231],structur:[43,51,53,54,56,110,125,135,149,162,167,172,183,191,201,204,205,207,211,219,225,228],strv:178,style:[38,139,149,169,171,175,176,181,206,226],sub:[2,11,12,68,79,110],sub_it:110,subdocu:[84,201],substitut:215,subsystem:219,subtyp:[4,72,190,191,204],success:[3,13,17,32,33,34,35,39,66,123,124,136,137,138,155,156],successfulli:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,67,86,90,91,172],suggest:[30,115],suitabl:[143,179],supersed:34,suppli:[57,153,208,209,211],support:[30,71,218,224,227],sure:216,swap:214,symbol:[25,109,204],system:[0,9,30,123,158,218,220,223,225,228],take:[26,28,115,165,168,176,185,216],target:9,target_compile_definit:222,target_include_directori:222,target_link_librari:222,task:225,tcp:213,tediou:216,tell:163,temporarili:168,termin:[6,7,30,36,46,47,50,178,187,195,230],test:[222,231],text:[194,230],than:[1,2,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,37,38,73,95,115,139,158,187,225],thei:[27,141,173,218],them:[125,224],therefor:[67,95,191,225,231],thi:[2,3,7,13,18,19,20,25,27,29,30,31,34,37,38,40,42,43,46,47,53,54,57,58,64,65,68,72,73,74,78,79,81,87,88,89,91,92,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,112,115,116,125,126,127,128,129,130,132,133,134,137,147,152,156,158,160,162,164,165,166,168,169,170,171,172,175,176,177,178,179,185,186,187,190,191,193,194,198,202,205,208,210,212,213,214,216,218,224,225,226,227,231,232],third:60,those:[46,47,54,215],thread:[41,217,220,223,225],through:[110,166,194,200,201,230],throughout:134,tight:225,time:[8,20,91,94,95,97,100,110,112,142,149,216,224,228,231],time_t:[26,111,142,225],timeout:62,timestamp:[27,106,112,204,225],timev:[28,62,113],timezon:[8,62],too:[168,187],top:54,trail:[30,66,138,171,186,187,188,226],transfer:[54,172],transform:125,translat:173,treat:191,tri:219,truli:214,truncat:186,tutori:[220,223],two:[38,141,184,185,216,225,226],txt:222,type:[1,7,9,11,14,18,19,21,22,23,24,25,27,29,31,51,68,69,70,72,74,77,78,79,98,99,100,101,102,103,104,105,106,107,108,109,110,112,114,116,149,192,204,205,216,219,222,224],type_cod:205,typedef:[43,51,56,110,114,125,131,133,149,152,158,162,166,172,185,190,191,192,194,201,204,205,213],typic:[112,225],u0000:195,uint32_t:[4,27,48,54,56,68,72,74,75,77,79,81,91,95,97,106,109,112,115,128,131,143,168,169,185,186,191,193,194,196,204,205],uint64_t:51,uint8_t:[4,54,58,67,68,72,75,79,90,91,118,128,129,131,136,137,138,145,149,153,162,168,191,204,205,211,213,227],undefin:[29,205],under:[125,134,162,224],underli:[54,99,100,101,102,103,104,105,106,115,123,124,157,158,159,161,163,170,191,207,210,227],unichar:[182,196],unicod:[23,24,182,194,196],uniniti:[12,45,66,168,172],union:204,uniqu:228,unittest:231,unix:[8,26,28,76,100,111,113,142,149,158,222,225,228],unknown:157,unless:[53,125,162,224],unlik:[18,19],unrecogn:205,unsign:[97,149,194,225,226,227],unsupport:[117,205],until:[31,72,83],unus:[119,121],upon:[32,33,34,35,86,90,125,227],usag:[125,162,224],use:[4,5,6,17,30,34,36,42,43,46,54,96,97,115,125,135,162,166,167,172,184,191,193,200,201,202,205,207,216,218,222,224,225,226,230],used:[9,18,19,25,27,29,30,56,57,58,77,110,112,125,128,129,130,132,133,147,149,152,156,160,162,166,190,192,194,196,216,224,225,228,232],useful:[31,38,91,125,165,170,185,210,212,213,214,224,227,232],user:[121,156],uses:[17,30,38,184,226,228],using:[1,6,11,32,34,40,67,75,83,107,110,115,117,123,136,144,145,147,149,153,155,193,211,216,222,225],utc:[8,20],utf8:[115,195,196,197,198,199],utf8_len:[195,199],utf:[6,7,30,32,33,34,35,66,74,75,81,115,138,179,182,185,194,195,196,197,198,199,201,215,216,220,223,226,229],v_arrai:205,v_binari:[204,205],v_binary_len:205,v_bool:[204,205],v_code:[204,205],v_code_len:205,v_codewscop:204,v_collect:205,v_collection_len:205,v_datetim:204,v_dbpointer:204,v_decimal128:205,v_doc:204,v_document:205,v_doubl:[204,205],v_increment:205,v_int32:[204,205],v_int64:[204,205],v_int8:204,v_oid:[204,205],v_option:205,v_regex:[204,205],v_scope:205,v_subtyp:205,v_symbol:[204,205],v_symbol_len:205,v_timestamp:[204,205],v_utf8:[204,205],v_utf8_len:205,va_list:[176,206],val:[1,4,5,6,7,8,10,11,14,15,16,22,23,25,26,27,28,30,31,191],valgrind:[220,221,223],valid:[23,24,30,36,49,50,66,67,72,91,110,115,138,148,153,154,159,199,200,201,205,219],valu:[5,8,10,11,14,15,16,17,18,19,20,21,25,26,27,28,29,30,31,32,36,51,59,60,61,69,70,73,78,91,92,93,99,100,101,102,103,104,105,116,139,149,158,172,193,194,200,201,203,204,216,224],value_typ:204,variabl:231,variad:[46,47,206,216],variant:225,varieti:216,variou:[184,190,225,230,232],verbos:[23,24],veri:47,verifi:[68,78,79,92,93,98,199,231],version:[0,36,37,59,60,61,63,82,85,125,146,162,173,189,205,220,222,223,224],via:[43,66,123,124,134,138,155],visit:117,visit_aft:205,visit_arrai:205,visit_befor:205,visit_binari:205,visit_bool:205,visit_cod:205,visit_codewscop:205,visit_corrupt:205,visit_date_tim:205,visit_dbpoint:205,visit_decimal128:205,visit_docu:205,visit_doubl:205,visit_int32:205,visit_int64:205,visit_maxkei:205,visit_minkei:205,visit_nul:205,visit_oid:205,visit_regex:205,visit_symbol:205,visit_timestamp:205,visit_undefin:205,visit_unsupported_typ:205,visit_utf8:205,visitor:[117,205],vtabl:[117,133],wai:[47,62,166,225],walk:[200,201,230],want:[31,58,112,115,125,210,214,216,224,225,226,227,232],warranti:[125,162,224],well:[62,214,224],went:212,were:[69,70,71,117],what:226,when:[2,9,12,18,19,40,43,53,54,59,60,61,99,100,101,102,103,104,105,106,107,108,115,122,135,137,152,154,160,165,168,184,191,194,202,205,207,211,213,216,218,226],whenev:216,where:[91,169,186,200,224],whether:[122,154,167],which:[30,34,36,58,74,75,90,94,108,126,127,162,164,168,184,187,191,198,201,224,227],whitespac:36,whose:198,window:228,wish:166,within:[30,48,62,64,163,191,198,199,200,226,230],without:[91,116,125,162,224,228],work:[47,125,137,165,230],world:216,would:[17,39,185,216],wrap:[172,216],wrap_bson:172,wrapper:[126,127,164,171,172,177],write:[125,162,168,187,207,209,224],writer:[207,208,209,210,212,213,227],written:[171,206,210],wrong:[132,133],www:[125,162,224],yet:227,yield:2,you:[2,31,40,53,57,58,63,72,73,78,92,93,98,112,115,125,149,162,166,168,170,172,185,200,201,210,212,213,214,216,222,224,225,226,227,228,230,231,232],your:[117,193,205,220,223,225,228,229,231],zero:[36,38,48,54,69,126,127,158,164,187,201,214]},titles:["API Reference","bson_append_array()","bson_append_array_begin()","bson_append_array_end()","bson_append_binary()","bson_append_bool()","bson_append_code()","bson_append_code_with_scope()","bson_append_date_time()","bson_append_dbpointer()","bson_append_decimal128()","bson_append_document()","bson_append_document_begin()","bson_append_document_end()","bson_append_double()","bson_append_int32()","bson_append_int64()","bson_append_iter()","bson_append_maxkey()","bson_append_minkey()","bson_append_now_utc()","bson_append_null()","bson_append_oid()","bson_append_regex()","bson_append_regex_w_len()","bson_append_symbol()","bson_append_time_t()","bson_append_timestamp()","bson_append_timeval()","bson_append_undefined()","bson_append_utf8()","bson_append_value()","bson_array_as_json()","bson_as_canonical_extended_json()","bson_as_json()","bson_as_relaxed_extended_json()","bson_ascii_strtoll()","bson_check_version()","bson_compare()","bson_concat()","bson_context_destroy()","bson_context_get_default()","bson_context_new()","bson_context_t","bson_copy()","bson_copy_to()","bson_copy_to_excluding()","bson_copy_to_excluding_noinit()","bson_count_keys()","bson_decimal128_from_string()","bson_decimal128_from_string_w_len()","bson_decimal128_t","bson_decimal128_to_string()","bson_destroy()","bson_destroy_with_steal()","bson_equal()","bson_error_t","bson_free()","bson_get_data()","bson_get_major_version()","bson_get_micro_version()","bson_get_minor_version()","System Clock","bson_get_version()","bson_has_field()","bson_init()","bson_init_from_json()","bson_init_static()","bson_iter_array()","bson_iter_as_bool()","bson_iter_as_double()","bson_iter_as_int64()","bson_iter_binary()","bson_iter_bool()","bson_iter_code()","bson_iter_codewscope()","bson_iter_date_time()","bson_iter_dbpointer()","bson_iter_decimal128()","bson_iter_document()","bson_iter_double()","bson_iter_dup_utf8()","bson_iter_find()","bson_iter_find_case()","bson_iter_find_descendant()","bson_iter_find_w_len()","bson_iter_init()","bson_iter_init_find()","bson_iter_init_find_case()","bson_iter_init_find_w_len()","bson_iter_init_from_data()","bson_iter_init_from_data_at_offset()","bson_iter_int32()","bson_iter_int64()","bson_iter_key()","bson_iter_key_len()","bson_iter_next()","bson_iter_offset()","bson_iter_oid()","bson_iter_overwrite_bool()","bson_iter_overwrite_date_time()","bson_iter_overwrite_decimal128()","bson_iter_overwrite_double()","bson_iter_overwrite_int32()","bson_iter_overwrite_int64()","bson_iter_overwrite_oid()","bson_iter_overwrite_timestamp()","bson_iter_recurse()","bson_iter_regex()","bson_iter_symbol()","bson_iter_t","bson_iter_time_t()","bson_iter_timestamp()","bson_iter_timeval()","bson_iter_type()","bson_iter_utf8()","bson_iter_value()","bson_iter_visit_all()","bson_json_data_reader_ingest()","bson_json_data_reader_new()","bson_json_reader_destroy()","bson_json_reader_new()","bson_json_reader_new_from_fd()","bson_json_reader_new_from_file()","bson_json_reader_read()","bson_json_reader_t","bson_malloc()","bson_malloc0()","bson_md5_append()","bson_md5_finish()","bson_md5_init()","bson_md5_t","bson_mem_restore_vtable()","bson_mem_set_vtable()","Memory Management","bson_new()","bson_new_from_buffer()","bson_new_from_data()","bson_new_from_json()","bson_oid_compare()","bson_oid_copy()","bson_oid_equal()","bson_oid_get_time_t()","bson_oid_hash()","bson_oid_init()","bson_oid_init_from_data()","bson_oid_init_from_string()","bson_oid_init_sequence()","bson_oid_is_valid()","bson_oid_t","bson_oid_to_string()","bson_reader_destroy()","bson_reader_destroy_func_t","bson_reader_new_from_data()","bson_reader_new_from_fd()","bson_reader_new_from_file()","bson_reader_new_from_handle()","bson_reader_read()","bson_reader_read_func_t","bson_reader_reset()","bson_reader_set_destroy_func()","bson_reader_set_read_func()","bson_reader_t","bson_reader_tell()","bson_realloc()","bson_realloc_ctx()","bson_realloc_func","bson_reinit()","bson_reserve_buffer()","bson_set_error()","bson_sized_new()","bson_snprintf()","bson_steal()","bson_strcasecmp()","bson_strdup()","bson_strdup_printf()","bson_strdupv_printf()","bson_strerror_r()","bson_strfreev()","bson_string_append()","bson_string_append_c()","bson_string_append_printf()","bson_string_append_unichar()","bson_string_free()","bson_string_new()","bson_string_t","bson_string_truncate()","bson_strncpy()","bson_strndup()","bson_strnlen()","bson_subtype_t","bson_t","bson_type_t","bson_uint32_to_string()","bson_unichar_t","bson_utf8_escape_for_json()","bson_utf8_from_unichar()","bson_utf8_get_char()","bson_utf8_next_char()","bson_utf8_validate()","bson_validate()","bson_validate_with_error()","bson_value_copy()","bson_value_destroy()","bson_value_t","bson_visitor_t","bson_vsnprintf()","bson_writer_begin()","bson_writer_destroy()","bson_writer_end()","bson_writer_get_length()","bson_writer_new()","bson_writer_rollback()","bson_writer_t","bson_zero_free()","Character and String Routines","Creating a BSON Document","Cross Platform Notes","Endianness","Handling Errors","Index","Guides","Using libbson In Your C Program","Libbson","JSON","ObjectIDs","Parsing and Iterating BSON Documents","Streaming BSON","Threading","Tutorial","UTF-8","Use Valgrind to Check For BSON Data Leaks","Libbson Versioning"],titleterms:{"function":[43,51,56,62,110,125,131,134,149,162,185,190,191,192,194,204,205,213,215,232],"return":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,44,48,49,50,54,55,58,59,60,61,63,64,66,67,69,70,71,73,74,75,76,78,80,81,82,83,84,85,86,90,91,92,93,94,95,96,97,98,107,108,109,111,114,115,116,117,119,121,122,123,124,126,127,135,136,137,138,139,141,142,143,148,153,154,155,156,157,158,163,164,168,170,171,172,173,174,175,176,177,183,184,188,189,193,195,197,198,199,200,201,206,207,210,211],For:231,IDs:225,The:216,Use:231,Using:222,also:[32,33,34,35,39,65,66,67,86,87,88,89,90,91,94,95,97,124,135,136,137,138,167,168,170],api:0,arrai:[193,216],bson:[216,222,224,226,227,231],bson_append_arrai:1,bson_append_array_begin:2,bson_append_array_end:3,bson_append_binari:4,bson_append_bool:5,bson_append_cod:6,bson_append_code_with_scop:7,bson_append_date_tim:8,bson_append_dbpoint:9,bson_append_decimal128:10,bson_append_docu:11,bson_append_document_begin:12,bson_append_document_end:13,bson_append_doubl:14,bson_append_int32:15,bson_append_int64:16,bson_append_it:17,bson_append_maxkei:18,bson_append_minkei:19,bson_append_now_utc:20,bson_append_nul:21,bson_append_oid:22,bson_append_regex:23,bson_append_regex_w_len:24,bson_append_symbol:25,bson_append_time_t:26,bson_append_timestamp:27,bson_append_timev:28,bson_append_undefin:29,bson_append_utf8:30,bson_append_valu:31,bson_array_as_json:32,bson_as_canonical_extended_json:33,bson_as_json:34,bson_as_relaxed_extended_json:35,bson_ascii_strtol:36,bson_check_vers:37,bson_compar:38,bson_concat:39,bson_context_destroi:40,bson_context_get_default:41,bson_context_new:42,bson_context_t:43,bson_copi:44,bson_copy_to:45,bson_copy_to_exclud:46,bson_copy_to_excluding_noinit:47,bson_count_kei:48,bson_decimal128_from_str:49,bson_decimal128_from_string_w_len:50,bson_decimal128_t:51,bson_decimal128_to_str:52,bson_destroi:53,bson_destroy_with_st:54,bson_equ:55,bson_error_t:56,bson_fre:57,bson_get_data:58,bson_get_major_vers:59,bson_get_micro_vers:60,bson_get_minor_vers:61,bson_get_vers:63,bson_has_field:64,bson_init:65,bson_init_from_json:66,bson_init_stat:67,bson_iter_arrai:68,bson_iter_as_bool:69,bson_iter_as_doubl:70,bson_iter_as_int64:71,bson_iter_binari:72,bson_iter_bool:73,bson_iter_cod:74,bson_iter_codewscop:75,bson_iter_date_tim:76,bson_iter_dbpoint:77,bson_iter_decimal128:78,bson_iter_docu:79,bson_iter_doubl:80,bson_iter_dup_utf8:81,bson_iter_find:82,bson_iter_find_cas:83,bson_iter_find_descend:84,bson_iter_find_w_len:85,bson_iter_init:86,bson_iter_init_find:87,bson_iter_init_find_cas:88,bson_iter_init_find_w_len:89,bson_iter_init_from_data:90,bson_iter_init_from_data_at_offset:91,bson_iter_int32:92,bson_iter_int64:93,bson_iter_kei:94,bson_iter_key_len:95,bson_iter_next:96,bson_iter_offset:97,bson_iter_oid:98,bson_iter_overwrite_bool:99,bson_iter_overwrite_date_tim:100,bson_iter_overwrite_decimal128:101,bson_iter_overwrite_doubl:102,bson_iter_overwrite_int32:103,bson_iter_overwrite_int64:104,bson_iter_overwrite_oid:105,bson_iter_overwrite_timestamp:106,bson_iter_recurs:107,bson_iter_regex:108,bson_iter_symbol:109,bson_iter_t:110,bson_iter_time_t:111,bson_iter_timestamp:112,bson_iter_timev:113,bson_iter_typ:114,bson_iter_utf8:115,bson_iter_valu:116,bson_iter_visit_al:117,bson_json_data_reader_ingest:118,bson_json_data_reader_new:119,bson_json_reader_destroi:120,bson_json_reader_new:121,bson_json_reader_new_from_fd:122,bson_json_reader_new_from_fil:123,bson_json_reader_read:124,bson_json_reader_t:125,bson_malloc0:127,bson_malloc:126,bson_md5_append:128,bson_md5_finish:129,bson_md5_init:130,bson_md5_t:131,bson_mem_restore_vt:132,bson_mem_set_vt:133,bson_new:135,bson_new_from_buff:136,bson_new_from_data:137,bson_new_from_json:138,bson_oid_compar:139,bson_oid_copi:140,bson_oid_equ:141,bson_oid_get_time_t:142,bson_oid_hash:143,bson_oid_init:144,bson_oid_init_from_data:145,bson_oid_init_from_str:146,bson_oid_init_sequ:147,bson_oid_is_valid:148,bson_oid_t:149,bson_oid_to_str:150,bson_reader_destroi:151,bson_reader_destroy_func_t:152,bson_reader_new_from_data:153,bson_reader_new_from_fd:154,bson_reader_new_from_fil:155,bson_reader_new_from_handl:156,bson_reader_read:157,bson_reader_read_func_t:158,bson_reader_reset:159,bson_reader_set_destroy_func:160,bson_reader_set_read_func:161,bson_reader_t:162,bson_reader_tel:163,bson_realloc:164,bson_realloc_ctx:165,bson_realloc_func:166,bson_reinit:167,bson_reserve_buff:168,bson_set_error:169,bson_sized_new:170,bson_snprintf:171,bson_steal:172,bson_strcasecmp:173,bson_strdup:174,bson_strdup_printf:175,bson_strdupv_printf:176,bson_strerror_r:177,bson_strfreev:178,bson_string_append:179,bson_string_append_c:180,bson_string_append_printf:181,bson_string_append_unichar:182,bson_string_fre:183,bson_string_new:184,bson_string_t:185,bson_string_trunc:186,bson_strncpi:187,bson_strndup:188,bson_strnlen:189,bson_subtype_t:190,bson_t:[191,216],bson_type_t:192,bson_uint32_to_str:193,bson_unichar_t:194,bson_utf8_escape_for_json:195,bson_utf8_from_unichar:196,bson_utf8_get_char:197,bson_utf8_next_char:198,bson_utf8_valid:199,bson_valid:200,bson_validate_with_error:201,bson_value_copi:202,bson_value_destroi:203,bson_value_t:204,bson_visitor_t:205,bson_vsnprintf:206,bson_writer_begin:207,bson_writer_destroi:208,bson_writer_end:209,bson_writer_get_length:210,bson_writer_new:211,bson_writer_rollback:212,bson_writer_t:213,bson_zero_fre:214,build:193,charact:215,check:231,clock:62,cmake:222,compar:[149,225],composit:225,config:222,convers:149,convert:224,creat:216,creation:225,cross:217,data:231,deprec:[46,128,129,130,131],descript:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,219],document:[216,226,227],dot:226,element:193,encod:230,endian:218,error:[66,123,124,138,155,219],exampl:[32,33,34,35,43,47,49,50,51,52,56,86,90,110,125,146,149,157,162,168,185,190,191,192,194,204,205,213,224],fetch:225,field:226,find:226,from:227,gener:225,guid:221,handl:219,hash:[149,225],includ:222,index:220,introduct:223,iter:226,json:224,kei:193,leak:231,libbson:[222,223,232],macro:232,manag:134,memori:134,notat:[216,226],note:[191,217],object:[216,225],objectid:225,paramet:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,45,46,47,48,49,50,52,53,54,55,57,58,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,126,127,128,129,130,133,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153,154,155,156,157,158,159,160,161,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,186,187,188,189,193,195,196,197,198,199,200,201,202,203,206,207,208,209,210,211,212,214],pars:[224,225,226],perform:191,pkg:222,platform:217,program:222,read:227,recurs:226,refer:0,routin:215,see:[32,33,34,35,39,65,66,67,86,87,88,89,90,91,94,95,97,124,135,136,137,138,167,168,170],sequenc:[227,230],simplifi:216,sort:225,stream:[224,227],string:[149,215,225],structur:216,sub:[216,226],synopsi:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,232],system:62,thread:228,time:225,tutori:229,using:226,utf:230,valgrind:231,valid:[149,226,230],version:232,write:227,your:222}}) \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/streaming-bson.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/streaming-bson.html deleted file mode 100644 index 2cf76bb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/streaming-bson.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - Streaming BSON — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Streaming BSON

-

bson_reader_t provides a streaming reader which can be initialized with a filedescriptor or memory region. bson_writer_t provides a streaming writer which can be initialized with a memory region. (Streaming BSON to a file descriptor is not yet supported.)

-
-

Reading from a BSON Stream

-

bson_reader_t provides a convenient API to read sequential BSON documents from a file-descriptor or memory buffer. The bson_reader_read() function will read forward in the underlying stream and return a bson_t that can be inspected and iterated upon.

-
#include <stdio.h>
-#include <bson/bson.h>
-
-int
-main (int argc, char *argv[])
-{
-   bson_reader_t *reader;
-   const bson_t *doc;
-   bson_error_t error;
-   bool eof;
-
-   reader = bson_reader_new_from_file ("mycollection.bson", &error);
-
-   if (!reader) {
-      fprintf (stderr, "Failed to open file.\n");
-      return 1;
-   }
-
-   while ((doc = bson_reader_read (reader, &eof))) {
-      char *str = bson_as_canonical_extended_json (doc, NULL);
-      printf ("%s\n", str);
-      bson_free (str);
-   }
-
-   if (!eof) {
-      fprintf (stderr,
-               "corrupted bson document found at %u\n",
-               (unsigned) bson_reader_tell (reader));
-   }
-
-   bson_reader_destroy (reader);
-
-   return 0;
-}
-
-
-

See bson_reader_new_from_fd(), bson_reader_new_from_file(), and bson_reader_new_from_data() for more information.

-
-
-

Writing a sequence of BSON Documents

-

bson_writer_t provides a convenient API to write a sequence of BSON documents to a memory buffer that can grow with realloc(). The bson_writer_begin() and bson_writer_end() functions will manage the underlying buffer while building the sequence of documents.

-

This could also be useful if you want to write to a network packet while serializing the documents from a higher level language, (but do so just after the packets header).

-
#include <stdio.h>
-#include <bson/bson.h>
-#include <assert.h>
-
-int
-main (int argc, char *argv[])
-{
-   bson_writer_t *writer;
-   bson_t *doc;
-   uint8_t *buf = NULL;
-   size_t buflen = 0;
-   bool r;
-   int i;
-
-   writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL);
-
-   for (i = 0; i < 10000; i++) {
-      r = bson_writer_begin (writer, &doc);
-      assert (r);
-
-      r = BSON_APPEND_INT32 (doc, "i", i);
-      assert (r);
-
-      bson_writer_end (writer);
-   }
-
-   bson_free (buf);
-
-   return 0;
-}
-
-
-

See bson_writer_new() for more information.

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/threading.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/threading.html deleted file mode 100644 index 8c708f0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/threading.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - Threading — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Threading

-

Libbson’s data structures are NOT thread-safe. You are responsible for accessing and mutating these structures from one thread at a time.

-

Libbson requires POSIX threads (pthreads) on all UNIX-like platforms. On Windows, the native threading interface is used. Libbson uses your system’s threading library to safely generate unique ObjectIds, and to provide a fallback implementation for atomic operations on platforms without built-in atomics.

-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/tutorial.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/tutorial.html deleted file mode 100644 index c18a676..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/tutorial.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - Tutorial — libbson 1.13.1 - - - - - - - - - - - - - - - - - -
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/utf8.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/utf8.html deleted file mode 100644 index 48e647e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/utf8.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - UTF-8 — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

UTF-8

-
-

Encoding

-

Libbson expects that you are always working with UTF-8 encoded text. Anything else is invalid API use.

-

If you should need to walk through UTF-8 sequences, you can use the various UTF-8 helper functions distributed with Libbson.

-
-
-

Validating a UTF-8 Sequence

-

To validate the string contained in my_string, use the following. You may pass -1 for the string length if you know the string is NULL-terminated.

-
if (!bson_utf8_validate (my_string, -1, false)) {
-   printf ("Validation failed.\n");
-}
-
-
-

If my_string has NULL bytes within the string, you must provide the string length. Use the following format. Notice the true at the end indicating \0 is allowed.

-
if (!bson_utf8_validate (my_string, my_string_len, true)) {
-   printf ("Validation failed.\n");
-}
-
-
-

For more information see the API reference for bson_utf8_validate().

-
-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/valgrind.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/valgrind.html deleted file mode 100644 index 87cbc70..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/valgrind.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - Use Valgrind to Check For BSON Data Leaks — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Use Valgrind to Check For BSON Data Leaks

-

A stack-allocated bson_t contains a small internal buffer; it only heap-allocates additional storage if necessary, depending on its data size. Therefore if you forget to call bson_destroy() on a stack-allocated bson_t, it might or might not cause a leak that can be detected by valgrind during testing.

-

To catch all potential BSON data leaks in your code, configure the BSON_MEMCHECK flag:

-
cmake -DCMAKE_C_FLAGS="-DBSON_MEMCHECK -g" .
-
-
-

With this flag set, every bson_t mallocs at least one byte. Run your program’s unittests with valgrind to verify all bson_t structs are destroyed.

-

Set the environment variable MONGOC_TEST_VALGRIND to on to skip timing-dependent tests known to fail with valgrind.

-
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/version.html deleted file mode 100644 index 462b4ed..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/html/version.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - Libbson Versioning — libbson 1.13.1 - - - - - - - - - - - - - - - - -
-
-
-
- - - - -
-

Libbson Versioning

-

Versioning Macros and Functions

-
-

Macros

-

The following preprocessor macros can be used to perform various checks based on the version of the library you are compiling against. This may be useful if you only want to enable a feature on a certain version of the library.

-
-
-

Synopsis

-
#define BSON_CHECK_VERSION(major, minor, micro)
-
-#define BSON_MAJOR_VERSION (1)
-#define BSON_MINOR_VERSION (4)
-#define BSON_MICRO_VERSION (1)
-#define BSON_VERSION_S "1.4.1"
-
-#define BSON_VERSION_HEX                                  \
-   (BSON_MAJOR_VERSION << 24 | BSON_MINOR_VERSION << 16 | \
-    BSON_MICRO_VERSION << 8)
-
-
-

Only compile a block on Libbson 1.1.0 and newer.

-
#if BSON_CHECK_VERSION(1, 1, 0)
-static void
-do_something (void)
-{
-}
-#endif
-
-
-
- -
- - -
- -
-
- -
-
-
- Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
- - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/include-and-link.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/include-and-link.rst deleted file mode 100644 index f8cb746..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/include-and-link.rst +++ /dev/null @@ -1,46 +0,0 @@ -:man_page: bson_include_and_link - -Using libbson In Your C Program -=============================== - -Include bson.h --------------- - -All libbson's functions and types are available in one header file. Simply include ``bson.h``: - -.. literalinclude:: ../examples/hello_bson.c - :caption: hello_bson.c - :start-after: -- sphinx-include-start -- - -CMake ------ - -The libbson installation includes a `CMake config-file package`_, so you can use CMake's `find_package`_ command to find libbson's header and library paths and link to libbson: - -.. literalinclude:: ../examples/cmake/find_package/CMakeLists.txt - :caption: CMakeLists.txt - :start-after: -- sphinx-include-start -- - -By default, libbson is dynamically linked. You can use libbson as a static library instead: Use the included ``libbson-static-1.0`` config-file package and (on Unix) link to ``pthread``: - -.. literalinclude:: ../examples/cmake/find_package_static/CMakeLists.txt - :start-after: -- sphinx-include-start -- - :emphasize-lines: 1, 6 - -.. _CMake config-file package: https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#config-file-packages -.. _find_package: https://cmake.org/cmake/help/latest/command/find_package.html - -pkg-config ----------- - -If you're not using CMake, use `pkg-config`_ on the command line to set header and library paths: - -.. literalinclude:: ../examples/compile-with-pkg-config.sh - :start-after: -- sphinx-include-start -- - -Or to statically link to libbson: - -.. literalinclude:: ../examples/compile-with-pkg-config-static.sh - :start-after: -- sphinx-include-start -- - -.. _pkg-config: https://www.freedesktop.org/wiki/Software/pkg-config/ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/index.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/index.rst deleted file mode 100644 index 3ea12c1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/index.rst +++ /dev/null @@ -1,30 +0,0 @@ -Libbson -======= - -A Cross Platform BSON Library for C - -Introduction ------------- - -libbson builds, parses, and iterates `BSON `_ documents, the native data format of MongoDB. It also converts BSON to and from JSON, and provides a platform compatibility layer for `the MongoDB C Driver `_. - -.. toctree:: - :titlesonly: - - tutorial - -.. toctree:: - :titlesonly: - - guides - -.. toctree:: - :titlesonly: - - cross-platform-notes - -.. toctree:: - :titlesonly: - :maxdepth: 2 - - api diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/json.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/json.rst deleted file mode 100644 index 9a52058..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/json.rst +++ /dev/null @@ -1,251 +0,0 @@ -:man_page: bson_json - -JSON -==== - -Libbson provides routines for converting to and from the JSON format. In particular, it supports the `MongoDB extended JSON `_ format. - -Converting BSON to JSON ------------------------ - -There are often times where you might want to convert a BSON document to JSON. It is convenient for debugging as well as an interchange format. To help with this, Libbson contains the functions :symbol:`bson_as_canonical_extended_json()` and :symbol:`bson_as_relaxed_extended_json()`. The canonical format preserves BSON type information for values that may have ambiguous representations in JSON (e.g. numeric types). - -.. code-block:: c - - bson_t *b; - size_t len; - char *str; - - b = BCON_NEW ("a", BCON_INT32 (1)); - - str = bson_as_canonical_extended_json (b, &len); - printf ("%s\n", str); - bson_free (str); - - bson_destroy (b); - -.. code-block:: none - - { "a" : { "$numberInt": "1" } } - -The relaxed format prefers JSON primitives for numeric values and may be used if type fidelity is not required. - -.. code-block:: c - - bson_t *b; - size_t len; - char *str; - - b = BCON_NEW ("a", BCON_INT32 (1)); - - str = bson_as_relaxed_extended_json (b, &len); - printf ("%s\n", str); - bson_free (str); - - bson_destroy (b); - -.. code-block:: none - - { "a" : 1 } - -Converting JSON to BSON ------------------------ - -Converting back from JSON is also useful and common enough that we added :symbol:`bson_init_from_json()` and :symbol:`bson_new_from_json()`. - -The following example creates a new :symbol:`bson_t` from the JSON string ``{"a":1}``. - -.. code-block:: c - - bson_t *b; - bson_error_t error; - - b = bson_new_from_json ("{\"a\":1}", -1, &error); - - if (!b) { - printf ("Error: %s\n", error.message); - } else { - bson_destroy (b); - } - -Streaming JSON Parsing ----------------------- - -Libbson provides :symbol:`bson_json_reader_t` to allow for parsing a sequence of JSON documents into BSON. The interface is similar to :symbol:`bson_reader_t` but expects the input to be in the `MongoDB extended JSON `_ format. - -.. code-block:: c - - /* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - /* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - - #include - #include - #include - - - int - main (int argc, char *argv[]) - { - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\n%s\n", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\n"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; - } - -Examples --------- - -The following example reads BSON documents from ``stdin`` and prints them to ``stdout`` as JSON. - -.. code-block:: c - - /* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - /* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - - #include - #include - - - int - main (int argc, char *argv[]) - { - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | -]...\nUse - for STDIN.\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\n", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; - } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/CMakeLists.txt deleted file mode 100644 index d193df9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -set_dist_list (src_libbson_doc_man_DIST - CMakeLists.txt -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array.3 deleted file mode 100644 index 4977423..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_ARRAY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_array \- bson_append_array() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_ARRAY(b, key, val) \e - bson_append_array (b, key, (int) strlen (key), val) - -bool -bson_append_array (bson_t *bson, - const char *key, - int key_length, - const bson_t *array); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBarray\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_array()\fP function shall append \fBarray\fP to \fBbson\fP using the specified key. The type of the field will be an array, but it is the responsibility of the caller to ensure that the keys of \fBarray\fP are properly formatted with string keys such as "0", "1", "2" and so forth. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function fails if appending the array grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_begin.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_begin.3 deleted file mode 100644 index 73909b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_begin.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_ARRAY_BEGIN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_array_begin \- bson_append_array_begin() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_ARRAY_BEGIN(b, key, child) \e - bson_append_array_begin (b, key, (int) strlen (key), child) - -bool -bson_append_array_begin (bson_t *bson, - const char *key, - int key_length, - bson_t *child); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: A string containing the name for the key. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP or \-1 to call \fBstrlen()\fP\&. -.IP \(bu 2 -\fBchild\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_array_begin()\fP function shall begin appending an array field to \fBbson\fP\&. This allows for incrementally building a sub\-array. Doing so will generally yield better performance as you will serialize to a single buffer. When done building the sub\-array, the caller \fIMUST\fP call \fBbson_append_array_end()\fP\&. -.sp -For generating array element keys, see \fBbson_uint32_to_string\fP\&. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the array grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_end.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_end.3 deleted file mode 100644 index 355b9b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_array_end.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_ARRAY_END" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_array_end \- bson_append_array_end() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_append_array_end (bson_t *bson, bson_t *child); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBchild\fP: The \fBbson_t\fP initialized in a call to \fBbson_append_array_begin()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_array_end()\fP function shall complete the appending of an array field started with \fBbson_append_array_begin()\fP\&. \fBchild\fP is invalid after calling this function. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_binary.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_binary.3 deleted file mode 100644 index 120b49e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_binary.3 +++ /dev/null @@ -1,79 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_BINARY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_binary \- bson_append_binary() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_BINARY(b, key, subtype, val, len) \e - bson_append_binary (b, key, (int) strlen (key), subtype, val, len) - -bool -bson_append_binary (bson_t *bson, - const char *key, - int key_length, - bson_subtype_t subtype, - const uint8_t *binary, - uint32_t length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: The key name. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes or \-1 to use strlen(). -.IP \(bu 2 -\fBsubtype\fP: A bson_subtype_t indicating the binary subtype. -.IP \(bu 2 -\fBbinary\fP: A buffer to embed as binary data. Must not be \fBNULL\fP\&. -.IP \(bu 2 -\fBlength\fP: The length of \fBbuffer\fP in bytes. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_binary()\fP function shall append a new element to \fBbson\fP containing the binary data provided. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBbinary\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_bool.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_bool.3 deleted file mode 100644 index 65dc1ae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_bool.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_BOOL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_bool \- bson_append_bool() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_BOOL(b, key, val) \e - bson_append_bool (b, key, (int) strlen (key), val) - -bool -bson_append_bool (bson_t *bson, const char *key, int key_length, bool value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: The name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP or \-1 to use strlen(). -.IP \(bu 2 -\fBvalue\fP: true or false. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_bool()\fP function shall append a new element to \fBbson\fP containing the boolean provided. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code.3 deleted file mode 100644 index d5c5bef..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_CODE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_code \- bson_append_code() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_CODE(b, key, val) \e - bson_append_code (b, key, (int) strlen (key), val) - -bool -bson_append_code (bson_t *bson, - const char *key, - int key_length, - const char *javascript); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: The key name. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP or \-1 to use strlen(). -.IP \(bu 2 -\fBjavascript\fP: A UTF\-8 encoded string containing the javascript. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_code()\fP function shall append a new element to \fBbson\fP using the UTF\-8 encoded \fBjavascript\fP provided. \fBjavascript\fP must be a NULL terminated C string. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBjavascript\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code_with_scope.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code_with_scope.3 deleted file mode 100644 index 6738891..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_code_with_scope.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_CODE_WITH_SCOPE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_code_with_scope \- bson_append_code_with_scope() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \e - bson_append_code_with_scope (b, key, (int) strlen (key), val, scope) - -bool -bson_append_code_with_scope (bson_t *bson, - const char *key, - int key_length, - const char *javascript, - const bson_t *scope); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBjavascript\fP: A NULL\-terminated UTF\-8 encoded string containing the javascript fragment. -.IP \(bu 2 -\fBscope\fP: Optional \fBbson_t\fP containing the scope for \fBjavascript\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_code_with_scope()\fP function shall perform like \fBbson_append_code()\fP except it allows providing a scope to the javascript function in the form of a bson document. -.sp -If \fBscope\fP is NULL, this function appends an element with BSON type "code", otherwise with BSON type "code with scope". -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBjavascript\fP and \fBscope\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_date_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_date_time.3 deleted file mode 100644 index 5261a24..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_date_time.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_DATE_TIME" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_date_time \- bson_append_date_time() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_DATE_TIME(b, key, val) \e - bson_append_date_time (b, key, (int) strlen (key), val) - -bool -bson_append_date_time (bson_t *bson, - const char *key, - int key_length, - int64_t value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: The date and time as specified in milliseconds since the UNIX epoch. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_date_time()\fP function shall append a new element to a \fBbson\fP document containing a date and time with no timezone information. \fBvalue\fP is assumed to be in UTC format of milliseconds since the UNIX epoch. \fBvalue\fP \fIMAY\fP be negative. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBvalue\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_dbpointer.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_dbpointer.3 deleted file mode 100644 index a237e6b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_dbpointer.3 +++ /dev/null @@ -1,81 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_DBPOINTER" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_dbpointer \- bson_append_dbpointer() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_DBPOINTER(b, key, coll, oid) \e - bson_append_dbpointer (b, key, (int) strlen (key), coll, oid) - -bool -bson_append_dbpointer (bson_t *bson, - const char *key, - int key_length, - const char *collection, - const bson_oid_t *oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBcollection\fP: The target collection name. -.IP \(bu 2 -\fBoid\fP: The target document identifier. -.UNINDENT -.SH DESCRIPTION -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -The dbpointer field type is \fIDEPRECATED\fP and should only be used when interacting with legacy systems. -.UNINDENT -.UNINDENT -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the array grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_decimal128.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_decimal128.3 deleted file mode 100644 index cb08131..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_decimal128.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_DECIMAL128" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_decimal128 \- bson_append_decimal128() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_DECIMAL128(b, key, val) \e - bson_append_decimal128 (b, key, (int) strlen (key), val) - -bool -bson_append_decimal128 (bson_t *bson, - const char *key, - int key_length, - const bson_decimal128_t *value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: A \fBbson_decimal128_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_decimal128()\fP function shall append a new element to \fBbson\fP containing a Decimal 128. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBvalue\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document.3 deleted file mode 100644 index 61c7843..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_DOCUMENT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_document \- bson_append_document() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_DOCUMENT(b, key, val) \e - bson_append_document (b, key, (int) strlen (key), val) - -bool -bson_append_document (bson_t *bson, - const char *key, - int key_length, - const bson_t *value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: A \fBbson_t\fP containing the sub\-document to append. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_document()\fP function shall append \fBchild\fP to \fBbson\fP using the specified key. The type of the field will be a document. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBvalue\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_begin.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_begin.3 deleted file mode 100644 index 5fbc4db..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_begin.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_DOCUMENT_BEGIN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_document_begin \- bson_append_document_begin() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \e - bson_append_document_begin (b, key, (int) strlen (key), child) - -bool -bson_append_document_begin (bson_t *bson, - const char *key, - int key_length, - bson_t *child); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBchild\fP: An uninitialized \fBbson_t\fP to be initialized as the sub\-document. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_document_begin()\fP function shall begin appending a sub\-document to \fBbson\fP\&. Use \fBchild\fP to add fields to the sub\-document. When completed, call \fBbson_append_document_end()\fP to complete the element. -.sp -\fBchild\fP \fIMUST\fP be an uninitialized \fBbson_t\fP to avoid leaking memory. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if \fBbson\fP must grow larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_end.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_end.3 deleted file mode 100644 index 4f742e0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_document_end.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_DOCUMENT_END" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_document_end \- bson_append_document_end() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_append_document_end (bson_t *bson, bson_t *child); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBchild\fP: The child \fBbson_t\fP initialized in a call to \fBbson_append_document_begin()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_document_end()\fP function shall complete the appending of a document with \fBbson_append_document_begin()\fP\&. \fBchild\fP is invalid after calling this function. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_double.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_double.3 deleted file mode 100644 index bfe124e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_double.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_DOUBLE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_double \- bson_append_double() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_DOUBLE(b, key, val) \e - bson_append_double (b, key, (int) strlen (key), val) - -bool -bson_append_double (bson_t *bson, - const char *key, - int key_length, - double value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: A double value to append. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_double()\fP function shall append a new element to a bson document of type \fBdouble\fP\&. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBvalue\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int32.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int32.3 deleted file mode 100644 index 2b408c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int32.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_INT32" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_int32 \- bson_append_int32() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_INT32(b, key, val) \e - bson_append_int32 (b, key, (int) strlen (key), val) - -bool -bson_append_int32 (bson_t *bson, - const char *key, - int key_length, - int32_t value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: An int32_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_int32()\fP function shall append a new element to \fBbson\fP containing a 32\-bit signed integer. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBvalue\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int64.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int64.3 deleted file mode 100644 index 2541fbd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_int64.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_INT64" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_int64 \- bson_append_int64() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_INT64(b, key, val) \e - bson_append_int64 (b, key, (int) strlen (key), val) - -bool -bson_append_int64 (bson_t *bson, - const char *key, - int key_length, - int64_t value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: An int64_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_int64()\fP function shall append a new element to \fBbson\fP containing a 64\-bit signed integer. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBvalue\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_iter.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_iter.3 deleted file mode 100644 index d2a602c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_iter.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_ITER" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_iter \- bson_append_iter() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_append_iter (bson_t *bson, - const char *key, - int key_length, - const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: Optional field name. If NULL, uses \fBbson_iter_key(iter)\fP\&. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP or \-1 to use strlen(). -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP located on the position of the element to append. -.UNINDENT -.SH DESCRIPTION -.sp -Appends the value at the current position of \fBiter\fP to the document. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful; \fBfalse\fP if the operation would overflow the maximum document size or another invalid state is detected. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_maxkey.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_maxkey.3 deleted file mode 100644 index 6127e17..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_maxkey.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_MAXKEY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_maxkey \- bson_append_maxkey() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_MAXKEY(b, key) \e - bson_append_maxkey (b, key, (int) strlen (key)) - -bool -bson_append_maxkey (bson_t *bson, const char *key, int key_length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_maxkey()\fP function shall append an element of type BSON_TYPE_MAXKEY to a bson document. This is primarily used in queries and unlikely to be used when storing a document to MongoDB. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_minkey.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_minkey.3 deleted file mode 100644 index 39ccebd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_minkey.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_MINKEY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_minkey \- bson_append_minkey() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_MINKEY(b, key) \e - bson_append_minkey (b, key, (int) strlen (key)) - -bool -bson_append_minkey (bson_t *bson, const char *key, int key_length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_minkey()\fP function shall append an element of type BSON_TYPE_MINKEY to a bson document. This is primarily used in queries and unlikely to be used when storing a document to MongoDB. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_now_utc.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_now_utc.3 deleted file mode 100644 index 38d3c56..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_now_utc.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_NOW_UTC" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_now_utc \- bson_append_now_utc() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_append_now_utc (bson_t *bson, const char *key, int key_length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_now_utc()\fP function is a helper to get the current date and time in UTC and append it to \fBbson\fP as a BSON_TYPE_DATE_TIME element. -.sp -This function calls \fBbson_append_date_time()\fP internally. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_null.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_null.3 deleted file mode 100644 index be6cafa..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_null.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_NULL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_null \- bson_append_null() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key)) - -bool -bson_append_null (bson_t *bson, const char *key, int key_length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_null()\fP function shall append a new element to \fBbson\fP of type BSON_TYPE_NULL. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_oid.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_oid.3 deleted file mode 100644 index f882417..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_oid.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_OID" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_oid \- bson_append_oid() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_OID(b, key, val) \e - bson_append_oid (b, key, (int) strlen (key), val) - -bool -bson_append_oid (bson_t *bson, - const char *key, - int key_length, - const bson_oid_t *oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBoid\fP: A bson_oid_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_oid()\fP function shall append a new element to \fBbson\fP of type BSON_TYPE_OID. \fBoid\fP \fIMUST\fP be a pointer to a \fBbson_oid_t\fP\&. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending \fBoid\fP grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex.3 deleted file mode 100644 index bf16da5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex.3 +++ /dev/null @@ -1,92 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_REGEX" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_regex \- bson_append_regex() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_REGEX(b, key, val, opt) \e - bson_append_regex (b, key, (int) strlen (key), val, opt) - -bool -bson_append_regex (bson_t *bson, - const char *key, - int key_length, - const char *regex, - const char *options); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBregex\fP: An ASCII string containing the regex. -.IP \(bu 2 -\fBoptions\fP: An optional string containing the regex options as a string. -.UNINDENT -.SH DESCRIPTION -.sp -Appends a new field to \fBbson\fP of type BSON_TYPE_REGEX. \fBregex\fP should be the regex string. \fBoptions\fP should contain the options for the regex. -.sp -Valid characters for \fBoptions\fP include: -.INDENT 0.0 -.IP \(bu 2 -\fB\(aqi\(aq\fP for case\-insensitive. -.IP \(bu 2 -\fB\(aqm\(aq\fP for multiple matching. -.IP \(bu 2 -\fB\(aqx\(aq\fP for verbose mode. -.IP \(bu 2 -\fB\(aql\(aq\fP to make w and W locale dependent. -.IP \(bu 2 -\fB\(aqs\(aq\fP for dotall mode (\(aq.\(aq matches everything) -.IP \(bu 2 -\fB\(aqu\(aq\fP to make w and W match unicode. -.UNINDENT -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the regex grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex_w_len.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex_w_len.3 deleted file mode 100644 index ae2a70a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_regex_w_len.3 +++ /dev/null @@ -1,92 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_REGEX_W_LEN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_regex_w_len \- bson_append_regex_w_len() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_append_regex_w_len (bson_t *bson, - const char *key, - int key_length, - const char *regex, - int regex_length, - const char *options); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBregex\fP: An ASCII string containing the regex. -.IP \(bu 2 -\fBregex_length\fP: The length of \fBregex\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBoptions\fP: An optional string containing the regex options as a string. -.UNINDENT -.SH DESCRIPTION -.sp -Appends a new field to \fBbson\fP of type BSON_TYPE_REGEX. \fBregex\fP should be the regex string. \fBoptions\fP should contain the options for the regex. -.sp -Valid characters for \fBoptions\fP include: -.INDENT 0.0 -.IP \(bu 2 -\fB\(aqi\(aq\fP for case\-insensitive. -.IP \(bu 2 -\fB\(aqm\(aq\fP for multiple matching. -.IP \(bu 2 -\fB\(aqx\(aq\fP for verbose mode. -.IP \(bu 2 -\fB\(aql\(aq\fP to make w and W locale dependent. -.IP \(bu 2 -\fB\(aqs\(aq\fP for dotall mode (\(aq.\(aq matches everything) -.IP \(bu 2 -\fB\(aqu\(aq\fP to make w and W match unicode. -.UNINDENT -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the regex grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_symbol.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_symbol.3 deleted file mode 100644 index 4b5c076..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_symbol.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_SYMBOL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_symbol \- bson_append_symbol() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_SYMBOL(b, key, val) \e - bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val)) - -bool -bson_append_symbol (bson_t *bson, - const char *key, - int key_length, - const char *value, - int length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: The symbol. -.IP \(bu 2 -\fBlength\fP: A length of \fBsymbol\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Appends a new field to \fBbson\fP of type BSON_TYPE_SYMBOL. This BSON type is deprecated and should not be used in new code. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_time_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_time_t.3 deleted file mode 100644 index 53b755a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_time_t.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_TIME_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_time_t \- bson_append_time_t() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_TIME_T(b, key, val) \e - bson_append_time_t (b, key, (int) strlen (key), val) - -bool -bson_append_time_t (bson_t *bson, - const char *key, - int key_length, - time_t value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: A time_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_time_t()\fP function is a helper that takes a \fBtime_t\fP instead of milliseconds since the UNIX epoch. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timestamp.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timestamp.3 deleted file mode 100644 index 3917a8b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timestamp.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_TIMESTAMP" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_timestamp \- bson_append_timestamp() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_TIMESTAMP(b, key, val, inc) \e - bson_append_timestamp (b, key, (int) strlen (key), val, inc) - -bool -bson_append_timestamp (bson_t *bson, - const char *key, - int key_length, - uint32_t timestamp, - uint32_t increment); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBtimestamp\fP: A uint32_t. -.IP \(bu 2 -\fBincrement\fP: A uint32_t. -.UNINDENT -.SH DESCRIPTION -.sp -This function is not similar in functionality to \fBbson_append_date_time()\fP\&. Timestamp elements are different in that they include only second precision and an increment field. -.sp -They are primarily used for intra\-MongoDB server communication. -.sp -The \fBbson_append_timestamp()\fP function shall append a new element of type BSON_TYPE_TIMESTAMP. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timeval.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timeval.3 deleted file mode 100644 index 7a832eb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_timeval.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_TIMEVAL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_timeval \- bson_append_timeval() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_TIMEVAL(b, key, val) \e - bson_append_timeval (b, key, (int) strlen (key), val) - -bool -bson_append_timeval (bson_t *bson, - const char *key, - int key_length, - struct timeval *value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: A struct timeval. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_timeval()\fP function is a helper that takes a \fBstruct timeval\fP instead of milliseconds since the UNIX epoch. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_undefined.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_undefined.3 deleted file mode 100644 index 208d0a3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_undefined.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_UNDEFINED" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_undefined \- bson_append_undefined() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_UNDEFINED(b, key) \e - bson_append_undefined (b, key, (int) strlen (key)) - -bool -bson_append_undefined (bson_t *bson, const char *key, int key_length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_undefined()\fP function shall append a new element to \fBbson\fP of type BSON_TYPE_UNDEFINED. Undefined is common in Javascript. However, this element type is deprecated and should not be used in new code. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_utf8.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_utf8.3 deleted file mode 100644 index 645f9b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_utf8.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_UTF8" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_utf8 \- bson_append_utf8() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_UTF8(b, key, val) \e - bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val)) - -bool -bson_append_utf8 (bson_t *bson, - const char *key, - int key_length, - const char *value, - int length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: A UTF\-8 encoded string. -.IP \(bu 2 -\fBlength\fP: The number of bytes in \fBvalue\fP excluding the trailing \fB\e0\fP, or \-1 to determine the length with \fBstrlen()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_append_utf8()\fP function shall append a UTF\-8 encoded string to \fBbson\fP\&. -.sp -\fBvalue\fP \fIMUST\fP be valid UTF\-8. -.sp -Some UTF\-8 implementations allow for \fB\e0\fP to be contained within the string (excluding the termination \fB\e0\fP\&. This is allowed, but remember that it could cause issues with communicating with external systems that do not support it. -.sp -It is suggested to use modified UTF\-8 which uses a 2 byte representation for embedded \fB\e0\fP within the string. This will allow these UTF\-8 encoded strings to used with many libc functions. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_value.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_value.3 deleted file mode 100644 index d7e0039..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_append_value.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_APPEND_VALUE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_append_value \- bson_append_value() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_APPEND_VALUE(b, key, val) \e - bson_append_value (b, key, (int) strlen (key), (val)) - -bool -bson_append_value (bson_t *bson, - const char *key, - int key_length, - const bson_value_t *value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII C string containing the name of the field. -.IP \(bu 2 -\fBkey_length\fP: The length of \fBkey\fP in bytes, or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBvalue\fP: A \fBbson_value_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Appends a new field to \fBbson\fP by determining the boxed type in \fBvalue\fP\&. This is useful if you want to copy fields between documents but do not know the field type until runtime. -.SH RETURNS -.sp -Returns \fBtrue\fP if the operation was applied successfully. The function will fail if appending the value grows \fBbson\fP larger than INT32_MAX. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_array_as_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_array_as_json.3 deleted file mode 100644 index 7681070..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_array_as_json.3 +++ /dev/null @@ -1,104 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ARRAY_AS_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_array_as_json \- bson_array_as_json() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_array_as_json (const bson_t *bson, size_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBlength\fP: An optional location for the length of the resulting string. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_array_as_json()\fP function shall encode \fBbson\fP as a UTF\-8 -string using libbson\(aqs legacy JSON format, except the outermost element is -encoded as a JSON array, rather than a JSON document. -The caller is responsible for freeing the resulting UTF\-8 encoded string by -calling \fBbson_free()\fP with the result. -.sp -If non\-NULL, \fBlength\fP will be set to the length of the result in bytes. -.SH RETURNS -.sp -If successful, a newly allocated UTF\-8 encoded string and \fBlength\fP is set. -.sp -Upon failure, NULL is returned. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int main () -{ - bson_t bson; - char *str; - - bson_init (&bson); - /* BSON array is a normal BSON document with integer values for the keys, - * starting with 0 and continuing sequentially - */ - BSON_APPEND_UTF8 (&bson, "0", "foo"); - BSON_APPEND_UTF8 (&bson, "1", "bar"); - - str = bson_array_as_json (&bson, NULL); - /* Prints - * [ "foo", "bar" ] - */ - printf ("%s\en", str); - bson_free (str); - - bson_destroy (&bson); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_canonical_extended_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_canonical_extended_json.3 deleted file mode 100644 index 75a8b50..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_canonical_extended_json.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_AS_CANONICAL_EXTENDED_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_as_canonical_extended_json \- bson_as_canonical_extended_json() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_as_canonical_extended_json (const bson_t *bson, size_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBlength\fP: An optional location for the length of the resulting string. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_as_canonical_extended_json()\fP encodes \fBbson\fP as a UTF\-8 string in the canonical \fI\%MongoDB Extended JSON format\fP\&. -.sp -The caller is responsible for freeing the resulting UTF\-8 encoded string by calling \fBbson_free()\fP with the result. -.sp -If non\-NULL, \fBlength\fP will be set to the length of the result in bytes. -.SH RETURNS -.sp -If successful, a newly allocated UTF\-8 encoded string and \fBlength\fP is set. -.sp -Upon failure, NULL is returned. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char *str = bson_as_canonical_extended_json (doc, NULL); -printf ("%s\en", str); -bson_free (str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_json.3 deleted file mode 100644 index 5e48418..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_json.3 +++ /dev/null @@ -1,99 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_AS_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_as_json \- bson_as_json() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_as_json (const bson_t *bson, size_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBlength\fP: An optional location for the length of the resulting string. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_as_json()\fP function shall encode \fBbson\fP as a UTF\-8 string using libbson\(aqs legacy JSON format. This function is superseded by \fBbson_as_canonical_extended_json()\fP and \fBbson_as_relaxed_extended_json()\fP, which use the same \fI\%MongoDB Extended JSON format\fP as all other MongoDB drivers. -.sp -The caller is responsible for freeing the resulting UTF\-8 encoded string by calling \fBbson_free()\fP with the result. -.sp -If non\-NULL, \fBlength\fP will be set to the length of the result in bytes. -.SH RETURNS -.sp -If successful, a newly allocated UTF\-8 encoded string and \fBlength\fP is set. -.sp -Upon failure, NULL is returned. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int main () -{ - bson_t bson; - char *str; - - bson_init (&bson); - BSON_APPEND_UTF8 (&bson, "0", "foo"); - BSON_APPEND_UTF8 (&bson, "1", "bar"); - - str = bson_as_json (&bson, NULL); - /* Prints - * { "0" : "foo", "1" : "bar" } - */ - printf ("%s\en", str); - bson_free (str); - - bson_destroy (&bson); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_relaxed_extended_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_relaxed_extended_json.3 deleted file mode 100644 index a662b51..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_as_relaxed_extended_json.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_AS_RELAXED_EXTENDED_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_as_relaxed_extended_json \- bson_as_relaxed_extended_json() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_as_relaxed_extended_json (const bson_t *bson, size_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBlength\fP: An optional location for the length of the resulting string. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_as_relaxed_extended_json()\fP encodes \fBbson\fP as a UTF\-8 string in the relaxed \fI\%MongoDB Extended JSON format\fP\&. -.sp -The caller is responsible for freeing the resulting UTF\-8 encoded string by calling \fBbson_free()\fP with the result. -.sp -If non\-NULL, \fBlength\fP will be set to the length of the result in bytes. -.SH RETURNS -.sp -If successful, a newly allocated UTF\-8 encoded string and \fBlength\fP is set. -.sp -Upon failure, NULL is returned. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char *str = bson_as_relaxed_extended_json (doc, NULL); -printf ("%s\en", str); -bson_free (str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_ascii_strtoll.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_ascii_strtoll.3 deleted file mode 100644 index 03c9369..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_ascii_strtoll.3 +++ /dev/null @@ -1,79 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ASCII_STRTOLL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_ascii_strtoll \- bson_ascii_strtoll() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -bson_ascii_strtoll (const char *str, char **endptr, int base); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstr\fP: The string to convert. -.IP \(bu 2 -\fBendptr\fP: Address of the first invalid character of \fBstr\fP, or null. -.IP \(bu 2 -\fBbase\fP: The base to use for the conversion. -.UNINDENT -.SH DESCRIPTION -.sp -A portable version of \fBstrtoll()\fP\&. -.sp -Converts a string to a 64\-bit signed integer according to the given \fBbase\fP, -which must be 16, 10, or 8. Leading whitespace will be ignored. -.sp -If base is 0 is passed in, the base is inferred from the string\(aqs leading -characters. Base\-16 numbers start with "0x" or "0X", base\-8 numbers start with -"0", base\-10 numbers start with a digit from 1 to 9. -.sp -If \fBendptr\fP is not NULL, it will be assigned the address of the first invalid -character of \fBstr\fP, or its null terminating byte if the entire string was valid. -.sp -If an invalid value is encountered, errno will be set to EINVAL and zero will -be returned. If the number is out of range, errno is set to ERANGE and -LLONG_MAX or LLONG_MIN is returned. -.SH RETURNS -.sp -The result of the conversion. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_character_and_string_routines.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_character_and_string_routines.3 deleted file mode 100644 index 0b98a45..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_character_and_string_routines.3 +++ /dev/null @@ -1,40 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CHARACTER_AND_STRING_ROUTINES" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_character_and_string_routines \- Character and String Routines -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -We provide a small number of character and string routines to substitute for those that are not available on all platforms, and routines to make UTF\-8 character manipulation convenient. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_check_version.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_check_version.3 deleted file mode 100644 index 16d0e24..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_check_version.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CHECK_VERSION" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_check_version \- bson_check_version() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_check_version (int required_major, int required_minor, int required_micro); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBrequired_major\fP: The minimum major version required. -.IP \(bu 2 -\fBrequired_minor\fP: The minimum minor version required. -.IP \(bu 2 -\fBrequired_micro\fP: The minimum micro version required. -.UNINDENT -.SH DESCRIPTION -.sp -Check at runtime if this release of libbson meets a required version. -.SH RETURNS -.sp -True if libbson\(aqs version is greater than or equal to the required version. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_compare.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_compare.3 deleted file mode 100644 index 2aac7a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_compare.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_COMPARE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_compare \- bson_compare() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_compare (const bson_t *bson, const bson_t *other); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBother\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_compare()\fP function shall compare two bson documents for equality. -.sp -This can be useful in conjunction with _qsort()_. -.sp -If equal, 0 is returned. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -This function uses _memcmp()_ internally, so the semantics are the same. -.UNINDENT -.UNINDENT -.SH RETURNS -.sp -less than zero, zero, or greater than zero in \fBqsort()\fP style. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_concat.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_concat.3 deleted file mode 100644 index 7ad3092..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_concat.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CONCAT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_concat \- bson_concat() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_concat (bson_t *dst, const bson_t *src); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdst\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBsrc\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_concat()\fP function shall append the contents of \fBsrc\fP to \fBdst\fP\&. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful; \fBfalse\fP if the operation would overflow the maximum document size or another invalid state is detected. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_destroy.3 deleted file mode 100644 index c32766b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_destroy.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CONTEXT_DESTROY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_context_destroy \- bson_context_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_context_destroy (bson_context_t *context); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcontext\fP: A \fBbson_context_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_context_destroy()\fP function shall release all resources associated with \fBcontext\fP\&. Does nothing if \fBcontext\fP is NULL. -.sp -This should be called when you are no longer using a \fBbson_context_t\fP that you have allocated with \fBbson_context_new()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_get_default.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_get_default.3 deleted file mode 100644 index 9a1c34b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_get_default.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CONTEXT_GET_DEFAULT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_context_get_default \- bson_context_get_default() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_context_t * -bson_context_get_default (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH RETURNS -.sp -The \fBbson_context_get_default()\fP function shall return the default, thread\-safe, \fBbson_context_t\fP for the process. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_new.3 deleted file mode 100644 index a495f8b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_new.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CONTEXT_NEW" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_context_new \- bson_context_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_context_t * -bson_context_new (bson_context_flags_t flags); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBflags\fP: A \fBbson_context_flags_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new \fBbson_context_t\fP\&. This is rarely needed as \fBbson_context_get_default()\fP serves most use\-cases. -.SH RETURNS -.sp -A newly allocated \fBbson_context_t\fP that should be freed with \fBbson_context_destroy\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_t.3 deleted file mode 100644 index ad3d729..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_context_t.3 +++ /dev/null @@ -1,103 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CONTEXT_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_context_t \- bson_context_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON OID Generation Context -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef enum { - BSON_CONTEXT_NONE = 0, - BSON_CONTEXT_THREAD_SAFE = (1 << 0), - BSON_CONTEXT_DISABLE_HOST_CACHE = (1 << 1), - BSON_CONTEXT_DISABLE_PID_CACHE = (1 << 2), -#ifdef BSON_HAVE_SYSCALL_TID - BSON_CONTEXT_USE_TASK_ID = (1 << 3), -#endif -} bson_context_flags_t; - -typedef struct _bson_context_t bson_context_t; - -bson_context_t * -bson_context_get_default (void) BSON_GNUC_CONST; -bson_context_t * -bson_context_new (bson_context_flags_t flags); -void -bson_context_destroy (bson_context_t *context); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_context_t\fP structure is context for generation of BSON Object IDs. This context allows for specialized overriding of how ObjectIDs are generated based on the applications requirements. For example, disabling of PID caching can be configured if the application cannot detect when a call to \fBfork()\fP has occurred. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int -main (int argc, char *argv[]) -{ - bson_context_t *ctx = NULL; - bson_oid_t oid; - - /* use default context, via bson_context_get_default() */ - bson_oid_init (&oid, NULL); - - /* specify a local context for additional control */ - ctx = bson_context_new (BSON_CONTEXT_DISABLE_PID_CACHE | - BSON_CONTEXT_THREAD_SAFE); - bson_oid_init (&oid, ctx); - - bson_context_destroy (ctx); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy.3 deleted file mode 100644 index 26e0b9f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_COPY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_copy \- bson_copy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t * -bson_copy (const bson_t *bson); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_copy()\fP function shall copy the contents of a bson document into a new \fBbson_t\fP\&. -.sp -The resulting \fBbson_t\fP should be freed with \fBbson_destroy()\fP\&. -.SH RETURNS -.sp -A newly allocated \fBbson_t\fP that should be freed with \fBbson_destroy()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to.3 deleted file mode 100644 index e37bdbd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_COPY_TO" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_copy_to \- bson_copy_to() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_copy_to (const bson_t *src, bson_t *dst); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsrc\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBdst\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_copy_to()\fP function shall initialize \fBdst\fP with a copy of the contents of \fBsrc\fP\&. -.sp -\fBdst\fP \fIMUST\fP be an uninitialized \fBbson_t\fP to avoid leaking memory. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding.3 deleted file mode 100644 index dd851a1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_COPY_TO_EXCLUDING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_copy_to_excluding \- bson_copy_to_excluding() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_copy_to_excluding (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) BSON_GNUC_NULL_TERMINATED - BSON_GNUC_DEPRECATED_FOR (bson_copy_to_excluding_noinit); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsrc\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBdst\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBfirst_exclude\fP: The first field name to exclude. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_copy_to_excluding()\fP function shall copy all fields from -\fBsrc\fP to \fBdst\fP except those specified by the variadic, NULL terminated list -of keys starting from \fBfirst_exclude\fP\&. -.SH DEPRECATED -.INDENT 0.0 -.INDENT 3.5 -This function is deprecated. Please use -\fBbson_copy_to_excluding_noinit\fP in new code. -.UNINDENT -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBbson_init\fP is called on \fBdst\fP\&. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding_noinit.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding_noinit.3 deleted file mode 100644 index f496040..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_copy_to_excluding_noinit.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_COPY_TO_EXCLUDING_NOINIT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_copy_to_excluding_noinit \- bson_copy_to_excluding_noinit() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_copy_to_excluding_noinit (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) BSON_GNUC_NULL_TERMINATED; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsrc\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBdst\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBfirst_exclude\fP: The first field name to exclude. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_copy_to_excluding_noinit()\fP function shall copy all fields -from \fBsrc\fP to \fBdst\fP except those specified by the variadic, NULL terminated -list of keys starting from \fBfirst_exclude\fP\&. -Works the same way as \fBbson_copy_to_excluding\fP, except does \fBnot\fP call -\fBbson_init\fP on \fBdst\fP\&. -This function should be preferred in new code over \fBbson_copy_to_excluding\fP\&. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This is generally not needed except in very special situations. -.UNINDENT -.UNINDENT -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int main () -{ - bson_t bson; - bson_t bson2; - char *str; - - bson_init (&bson); - bson_append_int32 (&bson, "a", 1, 1); - bson_append_int32 (&bson, "b", 1, 2); - bson_append_int32 (&bson, "c", 1, 2); - - bson_init (&bson2); - bson_copy_to_excluding_noinit (&bson, &bson2, "b", NULL); - - str = bson_as_json (&bson2, NULL); - /* Prints - * { "a" : 1, "c" : 2 } - */ - printf ("%s\en", str); - bson_free (str); - - bson_destroy (&bson); - bson_destroy (&bson2); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_count_keys.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_count_keys.3 deleted file mode 100644 index fea1f5a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_count_keys.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_COUNT_KEYS" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_count_keys \- bson_count_keys() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -bson_count_keys (const bson_t *bson); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_count_keys()\fP function shall count the number of elements within \fBbson\fP\&. -.SH RETURNS -.sp -A positive integer or zero. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_creating.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_creating.3 deleted file mode 100644 index c727aa2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_creating.3 +++ /dev/null @@ -1,186 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CREATING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_creating \- Creating a BSON Document -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH THE BSON_T STRUCTURE -.sp -BSON documents are created using the \fBbson_t\fP structure. This structure encapsulates the necessary logic for encoding using the \fI\%BSON Specification\fP\&. At the core, \fBbson_t\fP is a buffer manager and set of encoding routines. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -BSON documents can live on the stack or the heap based on the performance needs or preference of the consumer. -.UNINDENT -.UNINDENT -.sp -Let\(aqs start by creating a new BSON document on the stack. Whenever using libbson, make sure you \fB#include \fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t b; - -bson_init (&b); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This creates an empty document. In JSON, this would be the same as \fB{}\fP\&. -.sp -We can now proceed to adding items to the BSON document. A variety of functions prefixed with \fBbson_append_\fP can be used based on the type of field you want to append. Let\(aqs append a UTF\-8 encoded string. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_append_utf8 (&b, "key", \-1, "value", \-1); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Notice the two \fB\-1\fP parameters. The first indicates that the length of \fBkey\fP in bytes should be determined with \fBstrlen()\fP\&. Alternatively, we could have passed the number \fB3\fP\&. The same goes for the second \fB\-1\fP, but for \fBvalue\fP\&. -.sp -Libbson provides macros to make this less tedious when using string literals. The following two appends are identical. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_append_utf8 (&b, "key", \-1, "value", \-1); -BSON_APPEND_UTF8 (&b, "key", "value"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now let\(aqs take a look at an example that adds a few different field types to a BSON document. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t b = BSON_INITIALIZER; - -BSON_APPEND_INT32 (&b, "a", 1); -BSON_APPEND_UTF8 (&b, "hello", "world"); -BSON_APPEND_BOOL (&b, "bool", true); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Notice that we omitted the call to \fBbson_init()\fP\&. By specifying \fBBSON_INITIALIZER\fP we can remove the need to initialize the structure to a base state. -.SH SUB-DOCUMENTS AND SUB-ARRAYS -.sp -To simplify the creation of sub\-documents and arrays, \fBbson_append_document_begin()\fP and \fBbson_append_array_begin()\fP exist. These can be used to build a sub\-document using the parent documents memory region as the destination buffer. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t parent; -bson_t child; -char *str; - -bson_init (&parent); -bson_append_document_begin (&parent, "foo", 3, &child); -bson_append_int32 (&child, "baz", 3, 1); -bson_append_document_end (&parent, &child); - -str = bson_as_canonical_extended_json (&parent, NULL); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (&parent); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "foo" : { "baz" : 1 } } -.ft P -.fi -.UNINDENT -.UNINDENT -.SH SIMPLIFIED BSON C OBJECT NOTATION -.sp -Creating BSON documents by hand can be tedious and time consuming. BCON, or BSON C Object Notation, was added to allow for the creation of BSON documents in a format that looks closer to the destination format. -.sp -The following example shows the use of BCON. Notice that values for fields are wrapped in the \fBBCON_*\fP macros. These are required for the variadic processor to determine the parameter type. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *doc; - -doc = BCON_NEW ("foo", - "{", - "int", - BCON_INT32 (1), - "array", - "[", - BCON_INT32 (100), - "{", - "sub", - BCON_UTF8 ("value"), - "}", - "]", - "}"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Creates the following document -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "foo" : { "int" : 1, "array" : [ 100, { "sub" : "value" } ] } } -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_cross_platform_notes.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_cross_platform_notes.3 deleted file mode 100644 index 05f6bba..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_cross_platform_notes.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_CROSS_PLATFORM_NOTES" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_cross_platform_notes \- Cross Platform Notes -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH ENDIANNESS -.sp -The BSON specification dictates that the encoding format is in little\-endian. Many implementations simply ignore endianness altogether and expect that they are to be run on little\-endian. Libbson supports both Big and Little Endian systems. This means we use \fBmemcpy()\fP when appropriate instead of dereferencing and properly convert to and from the host endian format. We expect the compiler intrinsics to optimize it to a dereference when possible. -.SH THREADING -.sp -Libbson\(aqs data structures are \fINOT\fP thread\-safe. You are responsible for accessing and mutating these structures from one thread at a time. -.sp -Libbson requires POSIX threads (pthreads) on all UNIX\-like platforms. On Windows, the native threading interface is used. Libbson uses your system\(aqs threading library to safely generate unique ObjectIds, and to provide a fallback implementation for atomic operations on platforms without built\-in atomics. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string.3 deleted file mode 100644 index 01c73f4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_DECIMAL128_FROM_STRING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_decimal128_from_string \- bson_decimal128_from_string() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_decimal128_from_string (const char *string, bson_decimal128_t *dec); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A string containing ASCII encoded Decimal128. -.IP \(bu 2 -\fBdec\fP: A \fBbson_decimal128_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Parses the string containing ascii encoded Decimal128 and initialize the bytes -in \fBdec\fP\&. See the \fI\%Decimal128 specification\fP -for the exact string format. -.SH RETURNS -.sp -Returns \fBtrue\fP if valid Decimal128 string was provided, otherwise \fBfalse\fP -and \fBdec\fP will be set to \fBNaN\fP\&. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_decimal128_t dec; -bson_decimal128_from_string ("1.00", &dec); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string_w_len.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string_w_len.3 deleted file mode 100644 index b1eaf3f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_from_string_w_len.3 +++ /dev/null @@ -1,83 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_DECIMAL128_FROM_STRING_W_LEN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_decimal128_from_string_w_len \- bson_decimal128_from_string_w_len() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_decimal128_from_string_w_len (const char *string, - int len, - bson_decimal128_t *dec); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A string containing ASCII encoded Decimal128. -.IP \(bu 2 -\fBlen\fP: The length of \fBstring\fP in bytes, or \-1 meaning the string is null\-terminated. -.IP \(bu 2 -\fBdec\fP: A \fBbson_decimal128_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Parses the string containing ascii encoded Decimal128 and initialize the bytes -in \fBdec\fP\&. See the \fI\%Decimal128 specification\fP -for the exact string format. -.SH RETURNS -.sp -Returns \fBtrue\fP if valid Decimal128 string was provided, otherwise \fBfalse\fP -and \fBdec\fP will be set to \fBNaN\fP\&. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_decimal128_t dec; -bson_decimal128_from_string_w_len ("1.00", 4, &dec); -bson_decimal128_from_string_w_len ("1.00", \-1, &dec); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_t.3 deleted file mode 100644 index 16a82cf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_t.3 +++ /dev/null @@ -1,94 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_DECIMAL128_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_decimal128_t \- bson_decimal128_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Decimal128 Abstraction -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -#define BSON_DECIMAL128_STRING 43 -#define BSON_DECIMAL128_INF "Infinity" -#define BSON_DECIMAL128_NAN "NaN" - -typedef struct { -#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN - uint64_t low; - uint64_t high; -#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN - uint64_t high; - uint64_t low; -#endif -} bson_decimal128_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_decimal128_t\fP structure -represents the IEEE\-754 Decimal128 data type. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - char string[BSON_DECIMAL128_STRING]; - bson_decimal128_t decimal128; - - bson_decimal128_from_string ("100.00", &decimal128); - bson_decimal128_to_string (&decimal128, string); - printf ("Decimal128 value: %s\en", string); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_to_string.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_to_string.3 deleted file mode 100644 index c3b7ad3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_decimal128_to_string.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_DECIMAL128_TO_STRING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_decimal128_to_string \- bson_decimal128_to_string() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_decimal128_to_string (const bson_decimal128_t *dec, char *str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdec\fP: A \fBbson_decimal128_t\fP\&. -.IP \(bu 2 -\fBstr\fP: A location of length BSON_DECIMAL128_STRING for the resulting string. -.UNINDENT -.SH DESCRIPTION -.sp -Converts \fBdec\fP into a printable string. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char decimal128_string[BSON_DECIMAL128_STRING]; -bson_decimal128_to_string (&decimal128t, decimal128_string); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy.3 deleted file mode 100644 index a8db464..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_DESTROY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_destroy \- bson_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_destroy (bson_t *bson); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_destroy()\fP function shall free an allocated \fBbson_t\fP structure. Does nothing if \fBbson\fP is NULL. -.sp -This function should always be called when you are done with a \fBbson_t\fP unless otherwise specified. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy_with_steal.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy_with_steal.3 deleted file mode 100644 index 5f95fc0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_destroy_with_steal.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_DESTROY_WITH_STEAL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_destroy_with_steal \- bson_destroy_with_steal() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint8_t * -bson_destroy_with_steal (bson_t *bson, bool steal, uint32_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBsteal\fP: A bool indicating if the underlying buffer should be stolen. -.IP \(bu 2 -\fBlength\fP: A location for storing the resulting buffer length. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_destroy_with_steal()\fP function shall destroy a \fBbson_t\fP structure but return the underlying buffer instead of freeing it. If steal is false, this is equivalent to calling bson_destroy(). It is a programming error to call this function on a \fBbson_t\fP that is not a top\-level \fBbson_t\fP, such as those initialized with \fBbson_append_document_begin()\fP, \fBbson_append_array_begin()\fP, and \fBbson_writer_begin()\fP\&. -.sp -See also \fBbson_steal\fP, a higher\-level function that efficiently transfers the contents of one \fBbson_t\fP to another. -.SH RETURNS -.sp -\fBbson_destroy_with_steal()\fP shall return a buffer containing the contents of the \fBbson_t\fP if \fBsteal\fP is non\-zero. This should be freed with \fBbson_free()\fP when no longer in use. \fBlength\fP will be set to the length of the bson document if non\-NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_endianness.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_endianness.3 deleted file mode 100644 index 2dd297b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_endianness.3 +++ /dev/null @@ -1,40 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ENDIANNESS" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_endianness \- Endianness -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -The BSON specification dictates that the encoding format is in little\-endian. Many implementations simply ignore endianness altogether and expect that they are to be run on little\-endian. Libbson supports both Big and Little Endian systems. This means we use \fBmemcpy()\fP when appropriate instead of dereferencing and properly convert to and from the host endian format. We expect the compiler intrinsics to optimize it to a dereference when possible. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_equal.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_equal.3 deleted file mode 100644 index cd1ce5b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_equal.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_EQUAL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_equal \- bson_equal() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_equal (const bson_t *bson, const bson_t *other); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBother\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_equal()\fP function shall return true if both documents are equal. -.SH RETURNS -.sp -true if both documents are equal. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_error_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_error_t.3 deleted file mode 100644 index c7e7435..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_error_t.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ERROR_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_error_t \- bson_error_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Error Encapsulation -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - uint32_t domain; - uint32_t code; - char message[504]; -} bson_error_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_error_t\fP structure is used as an out\-parameter to pass error information to the caller. It should be stack\-allocated and does not requiring freeing. -.sp -See Handling Errors\&. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_reader_t *reader; -bson_error_t error; - -reader = bson_reader_new_from_file ("dump.bson", &error); -if (!reader) { - fprintf ( - stderr, "ERROR: %d.%d: %s\en", error.domain, error.code, error.message); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_errors.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_errors.3 deleted file mode 100644 index 435479e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_errors.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ERRORS" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_errors \- Handling Errors -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH DESCRIPTION -.sp -Many libbson functions report errors by returning \fBNULL\fP or \-1 and filling out a \fBbson_error_t\fP structure with an error domain, error code, and message. -.INDENT 0.0 -.IP \(bu 2 -\fBerror.domain\fP names the subsystem that generated the error. -.IP \(bu 2 -\fBerror.code\fP is a domain\-specific error type. -.IP \(bu 2 -\fBerror.message\fP describes the error. -.UNINDENT -.sp -Some error codes overlap with others; always check both the domain and code to determine the type of error. -.TS -center; -|l|l|l|. -_ -T{ -\fBBSON_ERROR_JSON\fP -T} T{ -\fBBSON_JSON_ERROR_READ_CORRUPT_JS\fP -\fBBSON_JSON_ERROR_READ_INVALID_PARAM\fP -\fBBSON_JSON_ERROR_READ_CB_FAILURE\fP -T} T{ -\fBbson_json_reader_t\fP tried to parse invalid MongoDB Extended JSON. -Tried to parse a valid JSON document that is invalid as MongoDBExtended JSON. -An internal callback failure during JSON parsing. -T} -_ -T{ -\fBBSON_ERROR_READER\fP -T} T{ -\fBBSON_ERROR_READER_BADFD\fP -T} T{ -\fBbson_json_reader_new_from_file\fP could not open the file. -T} -_ -.TE -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_free.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_free.3 deleted file mode 100644 index 14bcb23..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_free.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_FREE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_free \- bson_free() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_free (void *mem); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBmem\fP: A memory region. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall free the memory supplied by \fBmem\fP\&. This should be used by functions that require you free the result with \fBbson_free()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_data.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_data.3 deleted file mode 100644 index 528a0c3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_data.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_GET_DATA" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_get_data \- bson_get_data() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const uint8_t * -bson_get_data (const bson_t *bson); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_get_data()\fP function shall return the raw buffer of a bson document. This can be used in conjunction with the \fBlen\fP property of a \fBbson_t\fP if you want to copy the raw buffer around. -.SH RETURNS -.sp -A buffer which should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_major_version.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_major_version.3 deleted file mode 100644 index 5c60ca8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_major_version.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_GET_MAJOR_VERSION" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_get_major_version \- bson_get_major_version() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_get_major_version (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -Get the first number in libbson\(aqs MAJOR.MINOR.MICRO release version. -.SH RETURNS -.sp -The value of \fBBSON_MAJOR_VERSION\fP when Libbson was compiled. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_micro_version.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_micro_version.3 deleted file mode 100644 index 9884643..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_micro_version.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_GET_MICRO_VERSION" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_get_micro_version \- bson_get_micro_version() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_get_micro_version (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -Get the third number in libbson\(aqs MAJOR.MINOR.MICRO release version. -.SH RETURNS -.sp -The value of \fBBSON_MICRO_VERSION\fP when Libbson was compiled. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_minor_version.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_minor_version.3 deleted file mode 100644 index 42e687b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_minor_version.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_GET_MINOR_VERSION" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_get_minor_version \- bson_get_minor_version() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_get_minor_version (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -Get the middle number in libbson\(aqs MAJOR.MINOR.MICRO release version. -.SH RETURNS -.sp -The value of \fBBSON_MINOR_VERSION\fP when Libbson was compiled. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_monotonic_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_monotonic_time.3 deleted file mode 100644 index ae0b72f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_monotonic_time.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_GET_MONOTONIC_TIME" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_get_monotonic_time \- System Clock -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Clock Abstraction -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -bson_get_monotonic_time (void); -int -bson_gettimeofday (struct timeval *tv, - struct timezone *tz); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The clock abstraction in Libbson provides a cross\-platform way to handle timeouts within the BSON library. It abstracts the differences in implementations of \fBgettimeofday()\fP as well as providing a monotonic (incrementing only) clock in microseconds. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_version.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_version.3 deleted file mode 100644 index 1ef6a70..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_get_version.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_GET_VERSION" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_get_version \- bson_get_version() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -bson_get_version (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -A string representation of Libbson\(aqs version, formatted something like "1.2.3" or "1.2.3\-dev". -.SH RETURNS -.sp -A string you must not modify or free. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_guides.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_guides.3 deleted file mode 100644 index fb0e9a3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_guides.3 +++ /dev/null @@ -1,435 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_GUIDES" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_guides \- Guides -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH STREAMING BSON -.sp -\fBbson_reader_t\fP provides a streaming reader which can be initialized with a filedescriptor or memory region. \fBbson_writer_t\fP provides a streaming writer which can be initialized with a memory region. (Streaming BSON to a file descriptor is not yet supported.) -.SS Reading from a BSON Stream -.sp -\fBbson_reader_t\fP provides a convenient API to read sequential BSON documents from a file\-descriptor or memory buffer. The \fBbson_reader_read()\fP function will read forward in the underlying stream and return a \fBbson_t\fP that can be inspected and iterated upon. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *doc; - bson_error_t error; - bool eof; - - reader = bson_reader_new_from_file ("mycollection.bson", &error); - - if (!reader) { - fprintf (stderr, "Failed to open file.\en"); - return 1; - } - - while ((doc = bson_reader_read (reader, &eof))) { - char *str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\en", str); - bson_free (str); - } - - if (!eof) { - fprintf (stderr, - "corrupted bson document found at %u\en", - (unsigned) bson_reader_tell (reader)); - } - - bson_reader_destroy (reader); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See \fBbson_reader_new_from_fd()\fP, \fBbson_reader_new_from_file()\fP, and \fBbson_reader_new_from_data()\fP for more information. -.SS Writing a sequence of BSON Documents -.sp -\fBbson_writer_t\fP provides a convenient API to write a sequence of BSON documents to a memory buffer that can grow with \fBrealloc()\fP\&. The \fBbson_writer_begin()\fP and \fBbson_writer_end()\fP functions will manage the underlying buffer while building the sequence of documents. -.sp -This could also be useful if you want to write to a network packet while serializing the documents from a higher level language, (but do so just after the packets header). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_writer_t *writer; - bson_t *doc; - uint8_t *buf = NULL; - size_t buflen = 0; - bool r; - int i; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < 10000; i++) { - r = bson_writer_begin (writer, &doc); - assert (r); - - r = BSON_APPEND_INT32 (doc, "i", i); - assert (r); - - bson_writer_end (writer); - } - - bson_free (buf); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See \fBbson_writer_new()\fP for more information. -.SH JSON -.sp -Libbson provides routines for converting to and from the JSON format. In particular, it supports the \fI\%MongoDB extended JSON\fP format. -.SS Converting BSON to JSON -.sp -There are often times where you might want to convert a BSON document to JSON. It is convenient for debugging as well as an interchange format. To help with this, Libbson contains the functions \fBbson_as_canonical_extended_json()\fP and \fBbson_as_relaxed_extended_json()\fP\&. The canonical format preserves BSON type information for values that may have ambiguous representations in JSON (e.g. numeric types). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -size_t len; -char *str; - -b = BCON_NEW ("a", BCON_INT32 (1)); - -str = bson_as_canonical_extended_json (b, &len); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "a" : { "$numberInt": "1" } } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The relaxed format prefers JSON primitives for numeric values and may be used if type fidelity is not required. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -size_t len; -char *str; - -b = BCON_NEW ("a", BCON_INT32 (1)); - -str = bson_as_relaxed_extended_json (b, &len); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "a" : 1 } -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Converting JSON to BSON -.sp -Converting back from JSON is also useful and common enough that we added \fBbson_init_from_json()\fP and \fBbson_new_from_json()\fP\&. -.sp -The following example creates a new \fBbson_t\fP from the JSON string \fB{"a":1}\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_error_t error; - -b = bson_new_from_json ("{\e"a\e":1}", \-1, &error); - -if (!b) { - printf ("Error: %s\en", error.message); -} else { - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Streaming JSON Parsing -.sp -Libbson provides \fBbson_json_reader_t\fP to allow for parsing a sequence of JSON documents into BSON. The interface is similar to \fBbson_reader_t\fP but expects the input to be in the \fI\%MongoDB extended JSON\fP format. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - -#include -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "\-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\en%s\en", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\en"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Examples -.sp -The following example reads BSON documents from \fBstdin\fP and prints them to \fBstdout\fP as JSON. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | \-]...\enUse \- for STDIN.\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "\-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\en", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH USE VALGRIND TO CHECK FOR BSON DATA LEAKS -.sp -A stack\-allocated \fBbson_t\fP contains a small internal buffer; it only heap\-allocates additional storage if necessary, depending on its data size. Therefore if you forget to call \fBbson_destroy\fP on a stack\-allocated \fBbson_t\fP, it might or might not cause a leak that can be detected by valgrind during testing. -.sp -To catch all potential BSON data leaks in your code, configure the BSON_MEMCHECK flag: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cmake \-DCMAKE_C_FLAGS="\-DBSON_MEMCHECK \-g" . -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -With this flag set, every \fBbson_t\fP mallocs at least one byte. Run your program\(aqs unittests with valgrind to verify all \fBbson_t\fP structs are destroyed. -.sp -Set the environment variable \fBMONGOC_TEST_VALGRIND\fP to \fBon\fP to skip timing\-dependent tests known to fail with valgrind. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_has_field.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_has_field.3 deleted file mode 100644 index 3c38189..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_has_field.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_HAS_FIELD" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_has_field \- bson_has_field() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_has_field (const bson_t *bson, const char *key); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: A string containing the name of the field to check for. -.UNINDENT -.SH DESCRIPTION -.sp -Checks to see if key contains an element named \fBkey\fP\&. This also accepts "dotkey" notation such as "a.b.c.d". -.SH RETURNS -.sp -true if \fBkey\fP was found within \fBbson\fP; otherwise false. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_include_and_link.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_include_and_link.3 deleted file mode 100644 index de22c44..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_include_and_link.3 +++ /dev/null @@ -1,145 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_INCLUDE_AND_LINK" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_include_and_link \- Using libbson In Your C Program -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH INCLUDE BSON.H -.sp -All libbson\(aqs functions and types are available in one header file. Simply include \fBbson.h\fP: -hello_bson.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, const char **argv) -{ - bson_t *b; - char *j; - - b = BCON_NEW ("hello", BCON_UTF8 ("bson!")); - j = bson_as_canonical_extended_json (b, NULL); - printf ("%s\en", j); - - bson_free (j); - bson_destroy (b); - - return 0; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH CMAKE -.sp -The libbson installation includes a \fI\%CMake config\-file package\fP, so you can use CMake\(aqs \fI\%find_package\fP command to find libbson\(aqs header and library paths and link to libbson: -CMakeLists.txt.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Specify the minimum version you require. -find_package (libbson\-1.0 1.7 REQUIRED) - -message ("\-\- libbson found version \e"${BSON_VERSION}\e"") -message ("\-\- libbson include path \e"${BSON_INCLUDE_DIRS}\e"") -message ("\-\- libbson libraries \e"${BSON_LIBRARIES}\e"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_DEFINITIONS}) - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -By default, libbson is dynamically linked. You can use libbson as a static library instead: Use the included \fBlibbson\-static\-1.0\fP config\-file package and (on Unix) link to \fBpthread\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Specify the minimum version you require. -find_package (libbson\-static\-1.0 1.7 REQUIRED) - -message ("\-\- libbson\-static found version \e"${BSON_STATIC_VERSION}\e"") -message ("\-\- libbson\-static include path \e"${BSON_STATIC_INCLUDE_DIRS}\e"") -message ("\-\- libbson\-static libraries \e"${BSON_STATIC_LIBRARIES}\e"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_STATIC_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_STATIC_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_STATIC_DEFINITIONS}) - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PKG-CONFIG -.sp -If you\(aqre not using CMake, use \fI\%pkg\-config\fP on the command line to set header and library paths: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -gcc \-o hello_bson hello_bson.c $(pkg\-config \-\-libs \-\-cflags libbson\-1.0) - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Or to statically link to libbson: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -gcc \-o hello_bson hello_bson.c $(pkg\-config \-\-libs \-\-cflags libbson\-static\-1.0) - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init.3 deleted file mode 100644 index 3f82a25..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_INIT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_init \- bson_init() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_init (bson_t *b); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBb\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_init()\fP function shall initialize a \fBbson_t\fP that is placed on the stack. This is equivalent to initializing a \fBbson_t\fP to \fBBSON_INITIALIZER\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_from_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_from_json.3 deleted file mode 100644 index b44bb94..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_from_json.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_INIT_FROM_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_init_from_json \- bson_init_from_json() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_init_from_json (bson_t *bson, - const char *data, - ssize_t len, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: Pointer to an uninitialized \fBbson_t\fP\&. -.IP \(bu 2 -\fBdata\fP: A UTF\-8 encoded string containing valid JSON. -.IP \(bu 2 -\fBlen\fP: The length of \fBdata\fP in bytes excluding a trailing \fB\e0\fP or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_init_from_json()\fP function will initialize a new \fBbson_t\fP by parsing the JSON found in \fBdata\fP\&. Only a single JSON object may exist in \fBdata\fP or an error will be set and false returned. -.sp -\fBdata\fP should be in \fI\%MongoDB Extended JSON\fP format. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if valid JSON was parsed, otherwise \fBfalse\fP and \fBerror\fP is set. On success, \fBbson\fP is initialized and must be freed with \fBbson_destroy\fP, otherwise \fBbson\fP is invalid. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_static.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_static.3 deleted file mode 100644 index 7a431c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_init_static.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_INIT_STATIC" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_init_static \- bson_init_static() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_init_static (bson_t *b, const uint8_t *data, size_t length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBb\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBdata\fP: A buffer to initialize with. -.IP \(bu 2 -\fBlength\fP: The length of \fBdata\fP in bytes. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_init_static()\fP function shall shall initialize a read\-only \fBbson_t\fP on the stack using the data provided. No copies of the data will be made and therefore must remain valid for the lifetime of the \fBbson_t\fP\&. -.sp -The resulting \fIbson_t\fP has internal references and therefore must not be copied to avoid dangling pointers in the copy. -.SH RETURNS -.sp -Returns \fBtrue\fP if \fBbson_t\fP was successfully initialized, otherwise \fBfalse\fP\&. The function can fail if \fBdata\fP or \fBlength\fP are invalid. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_array.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_array.3 deleted file mode 100644 index c4e5be6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_array.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_ARRAY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_array \- bson_iter_array() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_ARRAY(iter) (bson_iter_type ((iter)) == BSON_TYPE_ARRAY) - -void -bson_iter_array (const bson_iter_t *iter, - uint32_t *array_len, - const uint8_t **array); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBarray_len\fP: A location for the buffer length. -.IP \(bu 2 -\fBarray\fP: A location for the immutable buffer. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_array()\fP function shall retrieve the raw buffer of a sub\-array from \fBiter\fP\&. \fBiter\fP \fIMUST\fP be on an element that is of type BSON_TYPE_ARRAY. This can be verified with \fBbson_iter_type()\fP or the \fBBSON_ITER_HOLDS_ARRAY()\fP macro. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_bool.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_bool.3 deleted file mode 100644 index d2d82d3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_bool.3 +++ /dev/null @@ -1,81 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_AS_BOOL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_as_bool \- bson_iter_as_bool() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_as_bool (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the current field as if it were a boolean. -.sp -\fBbson_iter_as_bool()\fP currently knows how to determine a boolean value from the following types: -.INDENT 0.0 -.IP \(bu 2 -BSON_TYPE_BOOL -.IP \(bu 2 -BSON_TYPE_DOUBLE -.IP \(bu 2 -BSON_TYPE_INT32 -.IP \(bu 2 -BSON_TYPE_INT64 -.IP \(bu 2 -BSON_TYPE_NULL -.IP \(bu 2 -BSON_TYPE_UNDEFINED -.IP \(bu 2 -BSON_TYPE_UTF8 -.UNINDENT -.sp -BSON_TYPE_UTF8 will always equate to \fBtrue\fP\&. -.SH RETURNS -.sp -true if the field equates to non\-zero. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_double.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_double.3 deleted file mode 100644 index 659f9d5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_double.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_AS_DOUBLE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_as_double \- bson_iter_as_double() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_as_double (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the current field as if it were a double. -.sp -\fBbson_iter_as_double()\fP will cast the following types to double -.INDENT 0.0 -.IP \(bu 2 -BSON_TYPE_BOOL -.IP \(bu 2 -BSON_TYPE_DOUBLE -.IP \(bu 2 -BSON_TYPE_INT32 -.IP \(bu 2 -BSON_TYPE_INT64 -.UNINDENT -.sp -Any other value will return 0. -.SH RETURNS -.sp -The value type casted to double. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_int64.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_int64.3 deleted file mode 100644 index ae6245a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_as_int64.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_AS_INT64" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_as_int64 \- bson_iter_as_int64() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -bson_iter_as_int64 (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_as_int64()\fP function shall return the contents of the current element as if it were a BSON_TYPE_INT64 element. The currently supported casts include: -.INDENT 0.0 -.IP \(bu 2 -BSON_TYPE_BOOL -.IP \(bu 2 -BSON_TYPE_DOUBLE -.IP \(bu 2 -BSON_TYPE_INT32 -.IP \(bu 2 -BSON_TYPE_INT64 -.UNINDENT -.SH RETURNS -.sp -A 64\-bit signed integer. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_binary.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_binary.3 deleted file mode 100644 index 0642f91..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_binary.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_BINARY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_binary \- bson_iter_binary() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_BINARY(iter) \e - (bson_iter_type ((iter)) == BSON_TYPE_BINARY) - -void -bson_iter_binary (const bson_iter_t *iter, - bson_subtype_t *subtype, - uint32_t *binary_len, - const uint8_t **binary); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBsubtype\fP: A location for a \fBbson_subtype_t\fP or NULL. -.IP \(bu 2 -\fBbinary_len\fP: A location for the length of \fBbinary\fP\&. -.IP \(bu 2 -\fBbinary\fP: A location for a pointer to the immutable buffer. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall return the binary data of a BSON_TYPE_BINARY element. It is a programming error to call this function on a field that is not of type BSON_TYPE_BINARY. You can check this with the BSON_ITER_HOLDS_BINARY() macro or \fBbson_iter_type()\fP\&. -.sp -The buffer that \fBbinary\fP points to is only valid until the iterator\(aqs \fBbson_t\fP is modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_bool.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_bool.3 deleted file mode 100644 index 1962312..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_bool.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_BOOL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_bool \- bson_iter_bool() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_BOOL(iter) (bson_iter_type ((iter)) == BSON_TYPE_BOOL) - -bool -bson_iter_bool (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_bool()\fP function shall return the boolean value of a BSON_TYPE_BOOL element. It is a programming error to call this function on an element other than BSON_TYPE_BOOL. You can check this with \fBbson_iter_type()\fP or \fBBSON_ITER_HOLDS_BOOL()\fP\&. -.SH RETURNS -.sp -Either \fBtrue\fP or \fBfalse\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_code.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_code.3 deleted file mode 100644 index 7d64d87..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_code.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_CODE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_code \- bson_iter_code() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_CODE(iter) (bson_iter_type ((iter)) == BSON_TYPE_CODE) - -const char * -bson_iter_code (const bson_iter_t *iter, uint32_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBlength\fP: A location for the length of the UTF\-8 encoded string or NULL. -.UNINDENT -.SH DESCRIPTION -.sp -This function returns the contents of a BSON_TYPE_CODE field. The length of the string is stored in \fBlength\fP if non\-NULL. -.sp -It is invalid to call this function on a field that is not of type BSON_TYPE_CODE. -.SH RETURNS -.sp -A UTF\-8 encoded string which should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_codewscope.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_codewscope.3 deleted file mode 100644 index b8ccf95..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_codewscope.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_CODEWSCOPE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_codewscope \- bson_iter_codewscope() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_CODEWSCOPE(iter) \e - (bson_iter_type ((iter)) == BSON_TYPE_CODEWSCOPE) - -const char * -bson_iter_codewscope (const bson_iter_t *iter, - uint32_t *length, - uint32_t *scope_len, - const uint8_t **scope); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBlength\fP: An optional location for the length of the resulting UTF\-8 encoded string. -.IP \(bu 2 -\fBscope_len\fP: A optional location for the length of \fBscope\fP\&. -.IP \(bu 2 -\fBscope\fP: An optional location to store the immutable raw scope BSON document. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_codewscope()\fP function acts similar to \fBbson_iter_code()\fP except for BSON_TYPE_CODEWSCOPE elements. It also will provide a pointer to the buffer for scope, which can be loaded into a \fBbson_t\fP using \fBbson_init_static()\fP\&. -.SH RETURNS -.sp -An UTF\-8 encoded string containing the JavaScript code which should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_date_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_date_time.3 deleted file mode 100644 index 58c7c5b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_date_time.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_DATE_TIME" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_date_time \- bson_iter_date_time() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_DATE_TIME(iter) \e - (bson_iter_type ((iter)) == BSON_TYPE_DATE_TIME) - -int64_t -bson_iter_date_time (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The bson_iter_date_time() function shall return the number of milliseconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element. -.SH RETURNS -.sp -A 64\-bit integer containing the number of milliseconds since the UNIX epoch. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dbpointer.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dbpointer.3 deleted file mode 100644 index 0e474ca..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dbpointer.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_DBPOINTER" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_dbpointer \- bson_iter_dbpointer() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_dbpointer (const bson_iter_t *iter, - uint32_t *collection_len, - const char **collection, - const bson_oid_t **oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBcollection_len\fP: A location for the length of the collection name. -.IP \(bu 2 -\fBcollection\fP: A location for the collection name.. -.IP \(bu 2 -\fBoid\fP: A location for a \fBbson_oid_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the contents of a BSON_TYPE_DBPOINTER element. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -The BSON_TYPE_DBPOINTER field type is deprecated by the BSON spec and should not be used in new code. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_decimal128.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_decimal128.3 deleted file mode 100644 index a9e965c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_decimal128.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_DECIMAL128" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_decimal128 \- bson_iter_decimal128() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_DECIMAL128(iter) \e - (bson_iter_type ((iter)) == BSON_TYPE_DECIMAL128) - -bool -bson_iter_decimal128 (const bson_iter_t *iter, /* IN */ - bson_decimal128_t *dec); /* OUT */ -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBdec\fP: A location for a \fBbson_decimal128_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the value from a BSON_TYPE_DECIMAL128 field. You should verify that this is a BSON_TYPE_DECIMAL128 field before calling this function. -.SH RETURNS -.sp -true if type was BSON_TYPE_DECIMAL128, otherwise false. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_document.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_document.3 deleted file mode 100644 index ece3c92..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_document.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_DOCUMENT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_document \- bson_iter_document() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_DOCUMENT(iter) \e - (bson_iter_type ((iter)) == BSON_TYPE_DOCUMENT) - -void -bson_iter_document (const bson_iter_t *iter, - uint32_t *document_len, - const uint8_t **document); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBdocument_len\fP: A location for the length of the document in bytes. -.IP \(bu 2 -\fBdocument\fP: A location for the document buffer. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_document()\fP function shall retrieve the raw buffer of a sub\-document from \fBiter\fP\&. \fBiter\fP \fIMUST\fP be on an element that is of type BSON_TYPE_DOCUMENT. This can be verified with \fBbson_iter_type()\fP or the \fBBSON_ITER_HOLDS_DOCUMENT()\fP macro. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_double.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_double.3 deleted file mode 100644 index 9835a68..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_double.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_DOUBLE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_double \- bson_iter_double() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_DOUBLE(iter) \e - (bson_iter_type ((iter)) == BSON_TYPE_DOUBLE) - -double -bson_iter_double (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the contents of a BSON_TYPE_DOUBLE field. -.SH RETURNS -.sp -A double. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dup_utf8.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dup_utf8.3 deleted file mode 100644 index 4963a1d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_dup_utf8.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_DUP_UTF8" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_dup_utf8 \- bson_iter_dup_utf8() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_iter_dup_utf8 (const bson_iter_t *iter, uint32_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBlength\fP: An optional location for the length of the UTF\-8 encoded string. -.UNINDENT -.SH DESCRIPTION -.sp -This function is similar to \fBbson_iter_utf8()\fP except that it calls \fBbson_strndup()\fP on the result. -.SH RETURNS -.sp -A newly allocated string that should be freed with \fBbson_free()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find.3 deleted file mode 100644 index d734470..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_FIND" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_find \- bson_iter_find() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_find (bson_iter_t *iter, const char *key); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBkey\fP: A string containing the requested key. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_find()\fP function shall advance \fBiter\fP to the element named \fBkey\fP or exhaust all elements of \fBiter\fP\&. If \fBiter\fP is exhausted, false is returned and \fBiter\fP should be considered invalid. -.sp -\fBkey\fP is case\-sensitive. For a case\-folded version, see \fBbson_iter_find_case()\fP\&. -.SH RETURNS -.sp -true is returned if the requested key was found. If not, \fBiter\fP was exhausted and should now be considered invalid. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_case.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_case.3 deleted file mode 100644 index 514a8c2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_case.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_FIND_CASE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_find_case \- bson_iter_find_case() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_find_case (bson_iter_t *iter, const char *key); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBkey\fP: An ASCII string containing the field to locate. -.UNINDENT -.SH DESCRIPTION -.sp -Advances \fBiter\fP until it is observing an element matching the name of \fBkey\fP or exhausting all elements. -.sp -\fBkey\fP is not case\-sensitive. The keys will be case\-folded to determine a match using the current locale. -.SH RETURNS -.sp -true if \fBkey\fP was found. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_descendant.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_descendant.3 deleted file mode 100644 index c756482..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_descendant.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_FIND_DESCENDANT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_find_descendant \- bson_iter_find_descendant() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_find_descendant (bson_iter_t *iter, - const char *dotkey, - bson_iter_t *descendant); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBdotkey\fP: A dot\-notation key like \fB"a.b.c.d"\fP\&. -.IP \(bu 2 -\fBdescendant\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_find_descendant()\fP function shall follow standard MongoDB dot notation to recurse into subdocuments. \fBdescendant\fP will be initialized and advanced to the descendant. If false is returned, both \fBiter\fP and \fBdescendant\fP should be considered invalid. -.SH RETURNS -.sp -true is returned if the requested key was found. If not, false is returned and \fBiter\fP was exhausted and should now be considered invalid. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_w_len.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_w_len.3 deleted file mode 100644 index 835999a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_find_w_len.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_FIND_W_LEN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_find_w_len \- bson_iter_find_w_len() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_find_w_len (bson_iter_t *iter, const char *key, int keylen); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBkey\fP: A string containing the requested key. -.IP \(bu 2 -\fBkeylen\fP: An integer indicating the length of the key string. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_find_w_len()\fP function shall advance \fBiter\fP to the element named \fBkey\fP or exhaust all elements of \fBiter\fP\&. If \fBiter\fP is exhausted, false is returned and \fBiter\fP should be considered invalid. -.sp -\fBkey\fP is case\-sensitive. For a case\-folded version, see \fBbson_iter_find_case()\fP\&. -.SH RETURNS -.sp -true is returned if the requested key was found. If not, \fBiter\fP was exhausted and should now be considered invalid. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init.3 deleted file mode 100644 index d39889c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init.3 +++ /dev/null @@ -1,107 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INIT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_init \- bson_iter_init() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_init (bson_iter_t *iter, const bson_t *bson); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_init()\fP function shall initialize \fBiter\fP to iterate upon the BSON document \fBbson\fP\&. Upon initialization, \fBiter\fP is placed before the first element. Callers must call \fBbson_iter_next()\fP, \fBbson_iter_find()\fP, or \fBbson_iter_find_case()\fP to advance to an element. -.SH RETURNS -.sp -Returns true if the iter was successfully initialized. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -static void -print_doc_id (const bson_t *doc) -{ - bson_iter_t iter; - bson_oid_t oid; - char oidstr[25]; - - if (bson_iter_init (&iter, doc) && bson_iter_find (&iter, "_id") && - BSON_ITER_HOLDS_OID (&iter)) { - bson_iter_oid (&iter, &oid); - bson_oid_to_string (&oid, oidstr); - printf ("%s\en", oidstr); - } else { - printf ("Document is missing _id.\en"); - } -} - -/* alternatively */ - -static void -print_doc_id (const bson_t *doc) -{ - bson_iter_t iter; - bson_oid_t oid; - char oidstr[25]; - - if (bson_iter_init_find (&iter, doc, "_id") && BSON_ITER_HOLDS_OID (&iter)) { - bson_iter_oid (&iter, &oid); - bson_oid_to_string (&oid, oidstr); - printf ("%s\en", oidstr); - } else { - printf ("Document is missing _id.\en"); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find.3 deleted file mode 100644 index 003954a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INIT_FIND" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_init_find \- bson_iter_init_find() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_init_find (bson_iter_t *iter, const bson_t *bson, const char *key); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: A key to locate after initializing the iter. -.UNINDENT -.SH DESCRIPTION -.sp -This function is identical to \fB(bson_iter_init() && bson_iter_find())\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_case.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_case.3 deleted file mode 100644 index ef4c006..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_case.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INIT_FIND_CASE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_init_find_case \- bson_iter_init_find_case() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_init_find_case (bson_iter_t *iter, - const bson_t *bson, - const char *key); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: A key to locate after initializing the iter. -.UNINDENT -.SH DESCRIPTION -.sp -This function is identical to \fBbson_iter_init() && bson_iter_find_case()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_w_len.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_w_len.3 deleted file mode 100644 index 8315597..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_find_w_len.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INIT_FIND_W_LEN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_init_find_w_len \- bson_iter_init_find_w_len() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_init_find_w_len (bson_iter_t *iter, - const bson_t *bson, - const char *key, - int keylen); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBkey\fP: A key to locate after initializing the iter. -.IP \(bu 2 -\fBkeylen\fP: An integer indicating the length of the key string. -.UNINDENT -.SH DESCRIPTION -.sp -This function is identical to \fB(bson_iter_init() && bson_iter_find_w_len())\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data.3 deleted file mode 100644 index 11de833..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data.3 +++ /dev/null @@ -1,91 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INIT_FROM_DATA" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_init_from_data \- bson_iter_init_from_data() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_init_from_data (bson_iter_t *iter, const uint8_t *data, size_t length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBdata\fP: A buffer to initialize with. -.IP \(bu 2 -\fBlength\fP: The length of \fBdata\fP in bytes. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_init_from_data()\fP function shall initialize \fBiter\fP to iterate upon the buffer \fBdata\fP, which must contain a BSON document. Upon initialization, \fBiter\fP is placed before the first element. Callers must call \fBbson_iter_next()\fP, \fBbson_iter_find()\fP, or \fBbson_iter_find_case()\fP to advance to an element. -.SH RETURNS -.sp -Returns true if the iter was successfully initialized. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -static void -print_doc_id (const uint8_t *data, size_t length) -{ - bson_iter_t iter; - bson_oid_t oid; - char oidstr[25]; - - if (bson_iter_init_from_data (&iter, data, length) && bson_iter_find (&iter, "_id") && - BSON_ITER_HOLDS_OID (&iter)) { - bson_iter_oid (&iter, &oid); - bson_oid_to_string (&oid, oidstr); - printf ("%s\en", oidstr); - } else { - printf ("Document is missing _id.\en"); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data_at_offset.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data_at_offset.3 deleted file mode 100644 index 3c547c3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_init_from_data_at_offset.3 +++ /dev/null @@ -1,101 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INIT_FROM_DATA_AT_OFFSET" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_init_from_data_at_offset \- bson_iter_init_from_data_at_offset() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_init_from_data_at_offset (bson_iter_t *iter, - const uint8_t *data, - size_t length, - uint32_t offset, - uint32_t keylen); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBdata\fP: A buffer to initialize with. This is not validated. -.IP \(bu 2 -\fBlength\fP: The length of \fBdata\fP in bytes. This is not validated. -.IP \(bu 2 -\fBoffset\fP: The offset of the field to start iterating. This is not validated. This should be an offset previously obtained from \fBbson_iter_offset()\fP\&. -.IP \(bu 2 -\fBkeylen\fP: The string length of the key of the field to start iterating. This is not validated. This should be a length previously obtained from \fBbson_iter_key_len()\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a \fBbson_iter_t\fP and starts iteration on a field at the offset. -.sp -\fBbson_iter_init_from_data_at_offset\fP is useful for situations where the -progress of a \fBbson_iter_t\fP must be saved and restored without relying -on the \fBbson_iter_t\fP data layout. Saving the progress could be -accomplished by: -.INDENT 0.0 -.IP \(bu 2 -Saving the current field\(aqs key length with \fBbson_iter_key_len()\fP -.IP \(bu 2 -Saving the current offset with \fBbson_iter_offset()\fP -.IP \(bu 2 -Saving the data pointer of the iterated \fBbson_t\fP with \fBbson_get_data()\fP -.IP \(bu 2 -Saving the data length of the iterated \fBbson_t\fP with the \fBlen\fP struct field -.UNINDENT -.sp -Then later, these saved values can be passed to -\fBbson_iter_init_from_data_at_offset()\fP to reconstruct the -\fBbson_iter_t\fP in constant time. -.SH SEE ALSO -.INDENT 0.0 -.IP \(bu 2 -\fBbson_iter_key_len()\fP -.IP \(bu 2 -\fBbson_iter_offset()\fP -.IP \(bu 2 -\fBbson_get_data()\fP -.UNINDENT -.SH RETURNS -.sp -Returns true if the iter was successfully initialized. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int32.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int32.3 deleted file mode 100644 index 77f0200..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int32.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INT32" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_int32 \- bson_iter_int32() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_INT32(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT32) - -int32_t -bson_iter_int32 (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the value from a BSON_TYPE_INT32 element. You should verify that the field is a BSON_TYPE_INT32 field before calling this function. -.SH RETURNS -.sp -A 32\-bit integer. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int64.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int64.3 deleted file mode 100644 index d3526eb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_int64.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_INT64" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_int64 \- bson_iter_int64() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_INT64(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT64) - -int64_t -bson_iter_int64 (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the value from a BSON_TYPE_INT64 field. You should verify that this is a BSON_TYPE_INT64 field before calling this function. -.SH RETURNS -.sp -A 64\-bit integer. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key.3 deleted file mode 100644 index 9ebd270..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_KEY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_key \- bson_iter_key() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -bson_iter_key (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the key for the current element observed by \fBiter\fP\&. -.SH SEE ALSO -.sp -\fBbson_iter_key_len()\fP to retrieve the length of the key in constant time. -.SH RETURNS -.sp -A string which should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key_len.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key_len.3 deleted file mode 100644 index e52fa19..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_key_len.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_KEY_LEN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_key_len \- bson_iter_key_len() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -bson_iter_key_len (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the length of the key for the current element observed by \fBiter\fP\&. This is a constant time computation, and therefore faster than calling \fBstrlen()\fP on a key returned by \fBbson_iter_key()\fP\&. -.SH SEE ALSO -.sp -\fBbson_iter_key()\fP to retrieve current key. -.SH RETURNS -.sp -An integer representing the key length. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_next.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_next.3 deleted file mode 100644 index 57c267e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_next.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_NEXT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_next \- bson_iter_next() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_next (bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Advances \fBiter\fP to the next element in the document. -.SH RETURNS -.sp -true if \fBiter\fP was advanced. Returns false if \fBiter\fP has passed the last element in the document or encountered invalid BSON. -.sp -It is a programming error to use \fBiter\fP after this function has returned false. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_offset.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_offset.3 deleted file mode 100644 index 3cd293a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_offset.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OFFSET" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_offset \- bson_iter_offset() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -bson_iter_offset (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the offset for the current element observed by \fBiter\fP\&. -.SH SEE ALSO -.sp -\fBbson_iter_init_from_data_at_offset()\fP to use this offset to reconstruct a \fBbson_iter_t\fP in constant time. -.SH RETURNS -.sp -An unsigned integer representing the offset in the BSON data of the current element. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_oid.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_oid.3 deleted file mode 100644 index 21a4f0c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_oid.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OID" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_oid \- bson_iter_oid() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_OID(iter) (bson_iter_type ((iter)) == BSON_TYPE_OID) - -const bson_oid_t * -bson_iter_oid (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the \fBbson_oid_t\fP for a BSON_TYPE_OID element. You should verify it is an element of type BSON_TYPE_OID before calling this function. -.SH RETURNS -.sp -A \fBbson_oid_t\fP that should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_bool.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_bool.3 deleted file mode 100644 index 2d49240..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_bool.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_BOOL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_bool \- bson_iter_overwrite_bool() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_overwrite_bool (bson_iter_t *iter, bool value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBvalue\fP: A bool containing the new value. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_bool()\fP function shall overwrite the contents of a BSON_TYPE_BOOL element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_BOOL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_date_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_date_time.3 deleted file mode 100644 index e9801c9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_date_time.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_DATE_TIME" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_date_time \- bson_iter_overwrite_date_time() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_overwrite_date_time (bson_iter_t *iter, int64_t value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBvalue\fP: The date and time as specified in milliseconds since the UNIX epoch. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_date_time()\fP function shall overwrite the contents of a BSON_TYPE_DATE_TIME element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_DATE_TIME. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_decimal128.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_decimal128.3 deleted file mode 100644 index cd20ee8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_decimal128.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_DECIMAL128" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_decimal128 \- bson_iter_overwrite_decimal128() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_overwrite_decimal128 (bson_iter_t *iter, bson_decimal128_t *value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBvalue\fP: The new Decimal128 value. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_decimal128()\fP function shall overwrite the contents of a BSON_TYPE_DECIMAL128 element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_DECIMAL128. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_double.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_double.3 deleted file mode 100644 index 48e174e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_double.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_DOUBLE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_double \- bson_iter_overwrite_double() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_overwrite_double (bson_iter_t *iter, double value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBvalue\fP: The new double value. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_double()\fP function shall overwrite the contents of a BSON_TYPE_DOUBLE element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_DOUBLE. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int32.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int32.3 deleted file mode 100644 index eef17d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int32.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_INT32" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_int32 \- bson_iter_overwrite_int32() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_overwrite_int32 (bson_iter_t *iter, int32_t value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBvalue\fP: A int32_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_int32()\fP function shall overwrite the contents of a BSON_TYPE_INT32 element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_BOOL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int64.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int64.3 deleted file mode 100644 index a8dc2c2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_int64.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_INT64" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_int64 \- bson_iter_overwrite_int64() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_overwrite_int64 (bson_iter_t *iter, int64_t value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBvalue\fP: A int64_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_int64()\fP function shall overwrite the contents of a BSON_TYPE_INT64 element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_INT64. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_oid.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_oid.3 deleted file mode 100644 index 2f9b5d6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_oid.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_OID" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_oid \- bson_iter_overwrite_oid() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_overwrite_oid (bson_iter_t *iter, const bson_oid_t *value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_oid()\fP function shall overwrite the contents of a BSON_TYPE_OID element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_OID. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_timestamp.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_timestamp.3 deleted file mode 100644 index 3ef362a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_overwrite_timestamp.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_OVERWRITE_TIMESTAMP" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_overwrite_timestamp \- bson_iter_overwrite_timestamp() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_overwrite_timestamp (bson_iter_t *iter, - uint32_t timestamp, - uint32_t increment); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBtimestamp\fP: A uint32_t. -.IP \(bu 2 -\fBincrement\fP: A uint32_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_overwrite_timestamp()\fP function shall overwrite the contents of a BSON_TYPE_TIMESTAMP element in place. -.sp -This may only be done when the underlying bson document allows mutation. -.sp -It is a programming error to call this function when \fBiter\fP is not observing an element of type BSON_TYPE_TIMESTAMP. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_recurse.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_recurse.3 deleted file mode 100644 index 10c6c7d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_recurse.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_RECURSE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_recurse \- bson_iter_recurse() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_recurse (const bson_iter_t *iter, bson_iter_t *child); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBchild\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_recurse()\fP function shall initialize \fBchild\fP using the embedded document or array currently observed by \fBiter\fP\&. -.sp -If there was a failure to initialize the \fBiter\fP, false is returned and both \fBiter\fP and \fBchild\fP should be considered invalid. -.sp -This should only be called when observing an element of type BSON_TYPE_ARRAY or BSON_TYPE_DOCUMENT. -.SH RETURNS -.sp -If \fBiter\fP observes an element of type BSON_TYPE_ARRAY or BSON_TYPE_DOCUMENT, then \fBchild\fP is initialized and the function returns \fBtrue\fP\&. Otherwise, the function returns \fBfalse\fP and \fBchild\fP is invalid. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_regex.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_regex.3 deleted file mode 100644 index c78b828..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_regex.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_REGEX" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_regex \- bson_iter_regex() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -bson_iter_regex (const bson_iter_t *iter, const char **options); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBoptions\fP: A (null). -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_regex()\fP function shall retrieve the contents of a BSON_TYPE_REGEX element currently observed by \fBiter\fP\&. -.sp -It is invalid to call this function when not observing an element of type BSON_TYPE_REGEX. -.SH RETURNS -.sp -A string containing the regex which should not be modified or freed. \fBoptions\fP is set to the options provided for the regex. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_symbol.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_symbol.3 deleted file mode 100644 index 3a637c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_symbol.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_SYMBOL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_symbol \- bson_iter_symbol() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -bson_iter_symbol (const bson_iter_t *iter, uint32_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBlength\fP: A uint32_t. -.UNINDENT -.SH DESCRIPTION -.sp -The symbol element type is \fIDEPRECATED\fP in the bson specification at \fI\%http://bsonspec.org\fP\&. -.sp -The \fBbson_iter_symbol()\fP function shall return the contents of a BSON_TYPE_SYMBOL element. -.sp -If non\-NULL, \fBlength\fP will be set to the length of the resulting string. -.SH RETURNS -.sp -The symbol and \fBlength\fP is set. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_t.3 deleted file mode 100644 index 45cd9fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_t.3 +++ /dev/null @@ -1,176 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_t \- bson_iter_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Document Iterator -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -#define BSON_ITER_HOLDS_DOUBLE(iter) /* ... */ - -#define BSON_ITER_HOLDS_UTF8(iter) /* ... */ - -#define BSON_ITER_HOLDS_DOCUMENT(iter) /* ... */ - -#define BSON_ITER_HOLDS_ARRAY(iter) /* ... */ - -#define BSON_ITER_HOLDS_BINARY(iter) /* ... */ - -#define BSON_ITER_HOLDS_UNDEFINED(iter) /* ... */ - -#define BSON_ITER_HOLDS_OID(iter) /* ... */ - -#define BSON_ITER_HOLDS_BOOL(iter) /* ... */ - -#define BSON_ITER_HOLDS_DATE_TIME(iter) /* ... */ - -#define BSON_ITER_HOLDS_NULL(iter) /* ... */ - -#define BSON_ITER_HOLDS_REGEX(iter) /* ... */ - -#define BSON_ITER_HOLDS_DBPOINTER(iter) /* ... */ - -#define BSON_ITER_HOLDS_CODE(iter) /* ... */ - -#define BSON_ITER_HOLDS_SYMBOL(iter) /* ... */ - -#define BSON_ITER_HOLDS_CODEWSCOPE(iter) /* ... */ - -#define BSON_ITER_HOLDS_INT32(iter) /* ... */ - -#define BSON_ITER_HOLDS_TIMESTAMP(iter) /* ... */ - -#define BSON_ITER_HOLDS_INT64(iter) /* ... */ - -#define BSON_ITER_HOLDS_DECIMAL128(iter) /* ... */ - -#define BSON_ITER_HOLDS_MAXKEY(iter) /* ... */ - -#define BSON_ITER_HOLDS_MINKEY(iter) /* ... */ - -#define BSON_ITER_HOLDS_INT(iter) \e - (BSON_ITER_HOLDS_INT32 (iter) || BSON_ITER_HOLDS_INT64 (iter)) - -#define BSON_ITER_HOLDS_NUMBER(iter) \e - (BSON_ITER_HOLDS_INT (iter) || BSON_ITER_HOLDS_DOUBLE (iter)) - -#define BSON_ITER_IS_KEY(iter, key) \e - (0 == strcmp ((key), bson_iter_key ((iter)))) - -typedef struct { - /*< private >*/ -} bson_iter_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -\fBbson_iter_t\fP is a structure used to iterate through the elements of a \fBbson_t\fP\&. It is meant to be used on the stack and can be discarded at any time as it contains no external allocation. The contents of the structure should be considered private and may change between releases, however the structure size will not change. -.sp -The \fBbson_t\fP \fIMUST\fP be valid for the lifetime of the iter and it is an error to modify the \fBbson_t\fP while using the iter. -.SH EXAMPLES -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init (&iter, my_bson_doc)) { - while (bson_iter_next (&iter)) { - printf ("Found a field named: %s\en", bson_iter_key (&iter)); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init (&iter, my_bson_doc) && bson_iter_find (&iter, "my_field")) { - printf ("Found the field named: %s\en", bson_iter_key (&iter)); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; -bson_iter_t sub_iter; - -if (bson_iter_init_find (&iter, my_bson_doc, "mysubdoc") && - (BSON_ITER_HOLDS_DOCUMENT (&iter) || BSON_ITER_HOLDS_ARRAY (&iter)) && - bson_iter_recurse (&iter, &sub_iter)) { - while (bson_iter_next (&sub_iter)) { - printf ("Found key \e"%s\e" in sub document.\en", bson_iter_key (&sub_iter)); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init (&iter, my_doc) && - bson_iter_find_descendant (&iter, "a.b.c.d", &sub_iter)) { - printf ("The type of a.b.c.d is: %d\en", (int) bson_iter_type (&sub_iter)); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_time_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_time_t.3 deleted file mode 100644 index 09d640f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_time_t.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_TIME_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_time_t \- bson_iter_time_t() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -time_t -bson_iter_time_t (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_time_t()\fP function shall return the number of seconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element. -.SH RETURNS -.sp -A \fBtime_t\fP containing the number of seconds since the UNIX epoch. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timestamp.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timestamp.3 deleted file mode 100644 index e96da10..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timestamp.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_TIMESTAMP" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_timestamp \- bson_iter_timestamp() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_TIMESTAMP(iter) \e - (bson_iter_type ((iter)) == BSON_TYPE_TIMESTAMP) - -void -bson_iter_timestamp (const bson_iter_t *iter, - uint32_t *timestamp, - uint32_t *increment); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBtimestamp\fP: A uint32_t. -.IP \(bu 2 -\fBincrement\fP: A uint32_t. -.UNINDENT -.SH DESCRIPTION -.sp -The BSON_TYPE_TIMESTAMP type is not a date/time and is typically used for intra\-server communication. -.sp -You probably want \fBbson_iter_date_time()\fP\&. -.sp -The \fBbson_iter_timestamp()\fP function shall return the contents of a BSON_TYPE_TIMESTAMP element. It is invalid to call this function while observing an element that is not of type BSON_TYPE_TIMESTAMP. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timeval.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timeval.3 deleted file mode 100644 index 5801a62..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_timeval.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_TIMEVAL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_timeval \- bson_iter_timeval() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_iter_timeval (const bson_iter_t *iter, struct timeval *tv); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBtv\fP: A struct timeval. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_timeval()\fP function shall return the number of seconds and microseconds since the UNIX epoch, as contained in the BSON_TYPE_DATE_TIME element into \fBtv\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_type.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_type.3 deleted file mode 100644 index 93002a6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_type.3 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_TYPE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_type \- bson_iter_type() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef enum { - BSON_TYPE_EOD = 0x00, - BSON_TYPE_DOUBLE = 0x01, - BSON_TYPE_UTF8 = 0x02, - BSON_TYPE_DOCUMENT = 0x03, - BSON_TYPE_ARRAY = 0x04, - BSON_TYPE_BINARY = 0x05, - BSON_TYPE_UNDEFINED = 0x06, - BSON_TYPE_OID = 0x07, - BSON_TYPE_BOOL = 0x08, - BSON_TYPE_DATE_TIME = 0x09, - BSON_TYPE_NULL = 0x0A, - BSON_TYPE_REGEX = 0x0B, - BSON_TYPE_DBPOINTER = 0x0C, - BSON_TYPE_CODE = 0x0D, - BSON_TYPE_SYMBOL = 0x0E, - BSON_TYPE_CODEWSCOPE = 0x0F, - BSON_TYPE_INT32 = 0x10, - BSON_TYPE_TIMESTAMP = 0x11, - BSON_TYPE_INT64 = 0x12, - BSON_TYPE_MAXKEY = 0x7F, - BSON_TYPE_MINKEY = 0xFF, -} bson_type_t; - -bson_type_t -bson_iter_type (const bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_type()\fP function shall return the type of the observed element in a bson document. -.SH RETURNS -.sp -A \fBbson_type_t\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_utf8.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_utf8.3 deleted file mode 100644 index e22a397..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_utf8.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_UTF8" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_utf8 \- bson_iter_utf8() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_ITER_HOLDS_UTF8(iter) (bson_iter_type ((iter)) == BSON_TYPE_UTF8) - -const char * -bson_iter_utf8 (const bson_iter_t *iter, uint32_t *length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBlength\fP: An optional location for the length of the resulting UTF\-8 encoded string. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_iter_utf8()\fP function shall retrieve the contents of a BSON_TYPE_UTF8 element currently observed by \fBiter\fP\&. -.sp -It is invalid to call this function while observing an element other than BSON_TYPE_UTF8. -.SH RETURNS -.sp -A UTF\-8 encoded string that has not been modified or freed. -.sp -It is suggested that the caller validate the content is valid UTF\-8 before using this in other places. That can be done by calling \fBbson_utf8_validate()\fP or validating the underlying \fBbson_t\fP before iterating it. -.sp -Note that not all drivers use multi\-byte representation for \fB\e0\fP in UTF\-8 encodings (commonly referred to as modified\-UTF8). You probably want to take a look at the length field when marshaling to other runtimes. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_value.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_value.3 deleted file mode 100644 index 9b463c8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_value.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_VALUE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_value \- bson_iter_value() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_value_t * -bson_iter_value (bson_iter_t *iter); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the value for the currently observed type as a boxed type. This allows passing around the value without knowing the type at runtime. -.SH RETURNS -.sp -A \fBbson_value_t\fP that should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_visit_all.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_visit_all.3 deleted file mode 100644 index 533ca65..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_iter_visit_all.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ITER_VISIT_ALL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_iter_visit_all \- bson_iter_visit_all() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_iter_visit_all (bson_iter_t *iter, - const bson_visitor_t *visitor, - void *data); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBiter\fP: A \fBbson_iter_t\fP\&. -.IP \(bu 2 -\fBvisitor\fP: A \fBbson_visitor_t\fP\&. -.IP \(bu 2 -\fBdata\fP: Optional data for \fBvisitor\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -A convenience function to iterate all remaining fields of \fBiter\fP using the callback vtable provided by \fBvisitor\fP\&. -.SH RETURNS -.sp -Returns true if visitation was prematurely stopped by a callback function. Returns false either because all elements were visited \fIor\fP due to corrupt BSON. -.sp -See \fBbson_visitor_t\fP for examples of how to set your own callbacks to provide information about the location of corrupt or unsupported BSON document entries. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json.3 deleted file mode 100644 index 5910d0e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json.3 +++ /dev/null @@ -1,318 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json \- JSON -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Libbson provides routines for converting to and from the JSON format. In particular, it supports the \fI\%MongoDB extended JSON\fP format. -.SH CONVERTING BSON TO JSON -.sp -There are often times where you might want to convert a BSON document to JSON. It is convenient for debugging as well as an interchange format. To help with this, Libbson contains the functions \fBbson_as_canonical_extended_json()\fP and \fBbson_as_relaxed_extended_json()\fP\&. The canonical format preserves BSON type information for values that may have ambiguous representations in JSON (e.g. numeric types). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -size_t len; -char *str; - -b = BCON_NEW ("a", BCON_INT32 (1)); - -str = bson_as_canonical_extended_json (b, &len); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "a" : { "$numberInt": "1" } } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The relaxed format prefers JSON primitives for numeric values and may be used if type fidelity is not required. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -size_t len; -char *str; - -b = BCON_NEW ("a", BCON_INT32 (1)); - -str = bson_as_relaxed_extended_json (b, &len); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "a" : 1 } -.ft P -.fi -.UNINDENT -.UNINDENT -.SH CONVERTING JSON TO BSON -.sp -Converting back from JSON is also useful and common enough that we added \fBbson_init_from_json()\fP and \fBbson_new_from_json()\fP\&. -.sp -The following example creates a new \fBbson_t\fP from the JSON string \fB{"a":1}\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_error_t error; - -b = bson_new_from_json ("{\e"a\e":1}", \-1, &error); - -if (!b) { - printf ("Error: %s\en", error.message); -} else { - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH STREAMING JSON PARSING -.sp -Libbson provides \fBbson_json_reader_t\fP to allow for parsing a sequence of JSON documents into BSON. The interface is similar to \fBbson_reader_t\fP but expects the input to be in the \fI\%MongoDB extended JSON\fP format. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - -#include -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "\-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\en%s\en", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\en"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH EXAMPLES -.sp -The following example reads BSON documents from \fBstdin\fP and prints them to \fBstdout\fP as JSON. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | \-]...\enUse \- for STDIN.\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "\-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\en", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_ingest.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_ingest.3 deleted file mode 100644 index 34e7863..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_ingest.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_DATA_READER_INGEST" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_data_reader_ingest \- bson_json_data_reader_ingest() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_json_data_reader_ingest (bson_json_reader_t *reader, - const uint8_t *data, - size_t len); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_json_reader_t\fP\&. -.IP \(bu 2 -\fBdata\fP: A uint8_t containing data to feed. -.IP \(bu 2 -\fBlen\fP: A size_t containing the length of \fBdata\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Feed data to a memory based json reader. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_new.3 deleted file mode 100644 index c15bc2b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_data_reader_new.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_DATA_READER_NEW" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_data_reader_new \- bson_json_data_reader_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_json_reader_t * -bson_json_data_reader_new (bool allow_multiple, size_t size); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBallow_multiple\fP: Unused. -.IP \(bu 2 -\fBsize\fP: A requested buffer size. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new streaming JSON reader that will convert JSON documents to BSON. -.sp -The \fBallow_multiple\fP parameter is unused. -.SH RETURNS -.sp -A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy(). -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_destroy.3 deleted file mode 100644 index 573489f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_destroy.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_READER_DESTROY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_reader_destroy \- bson_json_reader_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_json_reader_destroy (bson_json_reader_t *reader); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_json_reader_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Frees a bson_json_reader_t. Does nothing if \fBreader\fP is NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new.3 deleted file mode 100644 index da68111..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_READER_NEW" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_reader_new \- bson_json_reader_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_json_reader_t * -bson_json_reader_new (void *data, - bson_json_reader_cb cb, - bson_json_destroy_cb dcb, - bool allow_multiple, - size_t buf_size); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdata\fP: A user\-defined pointer. -.IP \(bu 2 -\fBcb\fP: A bson_json_reader_cb. -.IP \(bu 2 -\fBdcb\fP: A bson_json_destroy_cb. -.IP \(bu 2 -\fBallow_multiple\fP: Unused. -.IP \(bu 2 -\fBbuf_size\fP: A size_t containing the requested internal buffer size. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new bson_json_reader_t that can read from an arbitrary data source in a streaming fashion. -.sp -The \fBallow_multiple\fP parameter is unused. -.SH RETURNS -.sp -A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy(). -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_fd.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_fd.3 deleted file mode 100644 index 923eecb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_fd.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_READER_NEW_FROM_FD" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_reader_new_from_fd \- bson_json_reader_new_from_fd() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_json_reader_t * -bson_json_reader_new_from_fd (int fd, bool close_on_destroy); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBfd\fP: An open file\-descriptor. -.IP \(bu 2 -\fBclose_on_destroy\fP: Whether \fBclose()\fP should be called on \fBfd\fP when the reader is destroyed. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new JSON to BSON converter that will be reading from the file\-descriptor \fBfd\fP\&. -.SH RETURNS -.sp -A newly allocated bson_json_reader_t that should be freed with bson_json_reader_destroy(). -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_file.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_file.3 deleted file mode 100644 index 7342dd9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_new_from_file.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_READER_NEW_FROM_FILE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_reader_new_from_file \- bson_json_reader_new_from_file() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_json_reader_t * -bson_json_reader_new_from_file (const char *filename, bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBfilename\fP: A file\-name in the system file\-name encoding. -.IP \(bu 2 -\fBerror\fP: A \fBbson_error_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new bson_json_reader_t using the underlying file found at \fBfilename\fP\&. -.SH ERRORS -.sp -Errors are propagated via \fBerror\fP\&. -.SH RETURNS -.sp -A newly allocated bson_json_reader_t if successful, otherwise NULL and error is set. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_read.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_read.3 deleted file mode 100644 index 6fa34dc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_read.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_READER_READ" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_reader_read \- bson_json_reader_read() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_json_reader_read (bson_json_reader_t *reader, - bson_t *bson, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_json_reader_t\fP\&. -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBerror\fP: A \fBbson_error_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Reads the next BSON document from the underlying JSON source. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -1 if successful and data was read. 0 if successful and no data was read. \-1 if there was an error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_t.3 deleted file mode 100644 index 07868bb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_json_reader_t.3 +++ /dev/null @@ -1,168 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_JSON_READER_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_json_reader_t \- bson_json_reader_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Bulk JSON to BSON conversion -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_json_reader_t bson_json_reader_t; - -typedef enum { - BSON_JSON_ERROR_READ_CORRUPT_JS = 1, - BSON_JSON_ERROR_READ_INVALID_PARAM, - BSON_JSON_ERROR_READ_CB_FAILURE, -} bson_json_error_code_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_json_reader_t\fP structure is used for reading a sequence of JSON documents and transforming them to \fBbson_t\fP documents. -.sp -This can often be useful if you want to perform bulk operations that are defined in a file containing JSON documents. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBbson_json_reader_t\fP works upon JSON documents formatted in \fI\%MongoDB extended JSON\fP format. -.UNINDENT -.UNINDENT -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - -#include -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "\-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\en%s\en", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\en"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc.3 deleted file mode 100644 index 96fef49..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MALLOC" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_malloc \- bson_malloc() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -bson_malloc (size_t num_bytes); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBnum_bytes\fP: A size_t containing the number of bytes to allocate. -.UNINDENT -.SH DESCRIPTION -.sp -This is a portable \fBmalloc()\fP wrapper. -.sp -In general, this function will return an allocation at least \fBsizeof(void*)\fP bytes or bigger. -.sp -If there was a failure to allocate \fBnum_bytes\fP bytes, the process will be aborted. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function will abort on failure to allocate memory. -.UNINDENT -.UNINDENT -.SH RETURNS -.sp -A pointer to a memory region which \fIHAS NOT\fP been zeroed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc0.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc0.3 deleted file mode 100644 index 6614634..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_malloc0.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MALLOC0" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_malloc0 \- bson_malloc0() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -bson_malloc0 (size_t num_bytes); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBnum_bytes\fP: A size_t. -.UNINDENT -.SH DESCRIPTION -.sp -This is a portable \fBmalloc()\fP wrapper that also sets the memory to zero. Similar to \fBcalloc()\fP\&. -.sp -In general, this function will return an allocation at least \fBsizeof(void*)\fP bytes or bigger. -.sp -If there was a failure to allocate \fBnum_bytes\fP bytes, the process will be aborted. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function will abort on failure to allocate memory. -.UNINDENT -.UNINDENT -.SH RETURNS -.sp -A pointer to a memory region which \fIHAS\fP been zeroed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_append.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_append.3 deleted file mode 100644 index 5cd6385..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_append.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MD5_APPEND" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_md5_append \- bson_md5_append() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH DEPRECATED -.sp -All MD5 APIs are deprecated in libbson. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_md5_append (bson_md5_t *pms, - const uint8_t *data, - uint32_t nbytes) BSON_GNUC_DEPRECATED; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpms\fP: A \fBbson_md5_t\fP\&. -.IP \(bu 2 -\fBdata\fP: A memory region to feed to the md5 algorithm. -.IP \(bu 2 -\fBnbytes\fP: The length of \fBdata\fP in bytes. -.UNINDENT -.SH DESCRIPTION -.sp -Feeds more data into the MD5 algorithm. -.sp -This function is deprecated and should not be used in new code. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_finish.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_finish.3 deleted file mode 100644 index 403f4a2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_finish.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MD5_FINISH" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_md5_finish \- bson_md5_finish() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH DEPRECATED -.sp -All MD5 APIs are deprecated in libbson. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_md5_finish (bson_md5_t *pms, uint8_t digest[16]) BSON_GNUC_DEPRECATED; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpms\fP: A \fBbson_md5_t\fP\&. -.IP \(bu 2 -\fBdigest\fP: A location for the digest. -.UNINDENT -.SH DESCRIPTION -.sp -Completes the MD5 algorithm and stores the digest in \fBdigest\fP\&. -.sp -This function is deprecated and should not be used in new code. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_init.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_init.3 deleted file mode 100644 index 0c395da..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_init.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MD5_INIT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_md5_init \- bson_md5_init() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH DEPRECATED -.sp -All MD5 APIs are deprecated in libbson. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_md5_init (bson_md5_t *pms) BSON_GNUC_DEPRECATED; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpms\fP: A \fBbson_md5_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Initialize a new instance of the MD5 algorithm. -.sp -This function is deprecated and should not be used in new code. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_t.3 deleted file mode 100644 index ba1e7e5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_md5_t.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MD5_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_md5_t \- bson_md5_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON MD5 Abstraction -.SH DEPRECATED -.sp -All MD5 APIs are deprecated in libbson. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef struct { - uint32_t count[2]; /* message length in bits, lsw first */ - uint32_t abcd[4]; /* digest buffer */ - uint8_t buf[64]; /* accumulate block */ -} bson_md5_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -bson_md5_t encapsulates an implementation of the MD5 algorithm. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_restore_vtable.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_restore_vtable.3 deleted file mode 100644 index 4999df2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_restore_vtable.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MEM_RESTORE_VTABLE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_mem_restore_vtable \- bson_mem_restore_vtable() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_mem_restore_vtable (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -This function shall restore the default memory allocator to be used by Libbson. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function \fIMUST\fP be called at the end of the process. Failure to do so will result in memory being freed by the wrong allocator. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_set_vtable.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_set_vtable.3 deleted file mode 100644 index 12cb3c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_mem_set_vtable.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MEM_SET_VTABLE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_mem_set_vtable \- bson_mem_set_vtable() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef struct _bson_mem_vtable_t { - void *(*malloc) (size_t num_bytes); - void *(*calloc) (size_t n_members, size_t num_bytes); - void *(*realloc) (void *mem, size_t num_bytes); - void (*free) (void *mem); - void *padding[4]; -} bson_mem_vtable_t; - -void -bson_mem_set_vtable (const bson_mem_vtable_t *vtable); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBvtable\fP: A bson_mem_vtable_t with every non\-padding field set. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall install a new memory allocator to be used by Libbson. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function \fIMUST\fP be called at the beginning of the process. Failure to do so will result in memory being freed by the wrong allocator. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_memory.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_memory.3 deleted file mode 100644 index 11c0baf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_memory.3 +++ /dev/null @@ -1,45 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_MEMORY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_memory \- Memory Management -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Memory Abstraction. -.SH DESCRIPTION -.sp -Libbson contains a lightweight memory abstraction to make portability to new platforms easier. Additionally, it helps us integrate with interesting higher\-level languages. One caveat, however, is that Libbson is not designed to deal with Out of Memory (OOM) situations. Doing so requires extreme diligence throughout the application stack that has rarely been implemented correctly. This may change in the future. As it stands now, Libbson will \fBabort()\fP under OOM situations. -.sp -To aid in language binding integration, Libbson allows for setting a custom memory allocator via \fBbson_mem_set_vtable()\fP\&. This allocation may be reversed via \fBbson_mem_restore_vtable()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new.3 deleted file mode 100644 index 33d858e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_NEW" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_new \- bson_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t * -bson_new (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_new()\fP function shall create a new \fBbson_t\fP structure on the heap. It should be freed with \fBbson_destroy()\fP when it is no longer in use. -.SH RETURNS -.sp -A newly allocated \fBbson_t\fP that should be freed with \fBbson_destroy()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_buffer.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_buffer.3 deleted file mode 100644 index 63b5928..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_buffer.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_NEW_FROM_BUFFER" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_new_from_buffer \- bson_new_from_buffer() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t * -bson_new_from_buffer (uint8_t **buf, - size_t *buf_len, - bson_realloc_func realloc_func, - void *realloc_func_ctx); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbuf\fP: An out\-pointer to a buffer containing a serialized BSON document, or to NULL. -.IP \(bu 2 -\fBbuf_len\fP: An out\-pointer to the length of the buffer in bytes. -.IP \(bu 2 -\fBrealloc_func\fP: Optional \fBbson_realloc_func\fP for reallocating the buffer. -.IP \(bu 2 -\fBrealloc_func_ctx\fP: Optional pointer that will be passed as \fBctx\fP to \fBrealloc_func\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new \fBbson_t\fP using the data provided. -.sp -The \fBrealloc_func\fP, if provided, is called to resize \fBbuf\fP if the document is later expanded, for example by a call to one of the \fBbson_append\fP functions. -.sp -If \fB*buf\fP is initially NULL then it is allocated, using \fBrealloc_func\fP or the default allocator, and initialized with an empty BSON document, and \fB*buf_len\fP is set to 5, the size of an empty document. -.SH RETURNS -.sp -A newly\-allocated \fBbson_t\fP on success, or NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_data.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_data.3 deleted file mode 100644 index 64311d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_data.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_NEW_FROM_DATA" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_new_from_data \- bson_new_from_data() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t * -bson_new_from_data (const uint8_t *data, size_t length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdata\fP: A BSON encoded document buffer. -.IP \(bu 2 -\fBlength\fP: The length of \fBdata\fP in bytes. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_new_from_data()\fP function shall create a new \fBbson_t\fP on the heap and copy the contents of \fBdata\fP\&. This may be helpful when working with language bindings but is generally expected to be slower. -.SH RETURNS -.sp -A newly allocated \fBbson_t\fP if successful, otherwise NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_json.3 deleted file mode 100644 index 59ef7b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_new_from_json.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_NEW_FROM_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_new_from_json \- bson_new_from_json() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t * -bson_new_from_json (const uint8_t *data, ssize_t len, bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdata\fP: A UTF\-8 encoded string containing valid JSON. -.IP \(bu 2 -\fBlen\fP: The length of \fBdata\fP in bytes excluding a trailing \fB\e0\fP or \-1 to determine the length with \fBstrlen()\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_new_from_json()\fP function allocates and initialize a new \fBbson_t\fP by parsing the JSON found in \fBdata\fP\&. Only a single JSON object may exist in \fBdata\fP or an error will be set and NULL returned. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -A newly allocated \fBbson_t\fP if successful, otherwise NULL and \fBerror\fP is set. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid.3 deleted file mode 100644 index e527301..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid.3 +++ /dev/null @@ -1,134 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid \- ObjectIDs -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Libbson provides a simple way to generate ObjectIDs. It can be used in a single\-threaded or multi\-threaded manner depending on your requirements. -.sp -The \fBbson_oid_t\fP structure represents an \fBObjectID\fP in MongoDB. It is a 96\-bit identifier that includes various information about the system generating the OID. -.SH COMPOSITION -.INDENT 0.0 -.IP \(bu 2 -4 bytes : The UNIX timestamp in big\-endian format. -.IP \(bu 2 -3 bytes : A hash of the hostname. -.IP \(bu 2 -2 bytes : The \fBpid_t\fP of the current process. Alternatively the task\-id if configured. -.IP \(bu 2 -3 bytes : A 24\-bit monotonic counter incrementing from \fBrand()\fP in big\-endian. -.UNINDENT -.SH SORTING OBJECTIDS -.sp -The typical way to sort in C is using \fBqsort()\fP\&. Therefore, Libbson provides a \fBqsort()\fP compatible callback function named \fBbson_oid_compare()\fP\&. It returns \fBless than 1\fP, \fBgreater than 1\fP, or \fB0\fP depending on the equality of two \fBbson_oid_t\fP structures. -.SH COMPARING OBJECT IDS -.sp -If you simply want to compare two \fBbson_oid_t\fP structures for equality, use \fBbson_oid_equal()\fP\&. -.SH GENERATING -.sp -To generate a \fBbson_oid_t\fP, you may use the following. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init (&oid, NULL); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARSING OBJECTID STRINGS -.sp -You can also parse a string containing a \fBbson_oid_t\fP\&. The input string \fIMUST\fP be 24 characters or more in length. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init_from_string (&oid, "123456789012345678901234"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If you need to parse may \fBbson_oid_t\fP in a tight loop and can guarantee the data is safe, you might consider using the inline variant. It will be inlined into your code and reduce the need for a foreign function call. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234"); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH HASHING OBJECTIDS -.sp -If you need to store items in a hashtable, you may want to use the \fBbson_oid_t\fP as the key. Libbson provides a hash function for just this purpose. It is based on DJB hash. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -unsigned hash; - -hash = bson_oid_hash (oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH FETCHING OBJECTID CREATION TIME -.sp -You can easily fetch the time that a \fBbson_oid_t\fP was generated using \fBbson_oid_get_time_t()\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -time_t t; - -t = bson_oid_get_time_t (oid); -printf ("The OID was generated at %u\en", (unsigned) t); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_compare.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_compare.3 deleted file mode 100644 index 3681738..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_compare.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_COMPARE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_compare \- bson_oid_compare() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_oid_compare (const bson_oid_t *oid1, const bson_oid_t *oid2); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid1\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBoid2\fP: A \fBbson_oid_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_oid_compare()\fP function shall return a qsort() style value of a lexicographical sort of _oid1_ and _oid2_. -.SH RETURNS -.sp -less than 0, 0, or greater than 0 based on the comparison. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_copy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_copy.3 deleted file mode 100644 index 27f88e4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_copy.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_COPY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_copy \- bson_oid_copy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_oid_copy (const bson_oid_t *src, bson_oid_t *dst); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsrc\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBdst\fP: A \fBbson_oid_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Copies the contents of src into dst. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_equal.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_equal.3 deleted file mode 100644 index fc04e9c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_equal.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_EQUAL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_equal \- bson_oid_equal() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_oid_equal (const bson_oid_t *oid1, const bson_oid_t *oid2); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid1\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBoid2\fP: A \fBbson_oid_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Checks if two bson_oid_t contain the same bytes. -.SH RETURNS -.sp -true if they are equal, otherwise false. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_get_time_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_get_time_t.3 deleted file mode 100644 index 4d48e14..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_get_time_t.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_GET_TIME_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_get_time_t \- bson_oid_get_time_t() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -time_t -bson_oid_get_time_t (const bson_oid_t *oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the generation time in seconds since the UNIX Epoch of \fBoid\fP\&. -.SH RETURNS -.sp -A time_t containing the seconds since the UNIX epoch of \fBoid\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_hash.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_hash.3 deleted file mode 100644 index 2fc6d79..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_hash.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_HASH" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_hash \- bson_oid_hash() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -bson_oid_hash (const bson_oid_t *oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Generates a hash code for \fBoid\fP suitable for a hashtable. -.SH RETURNS -.sp -A 32\-bit hash code. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init.3 deleted file mode 100644 index bfc4bf9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_INIT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_init \- bson_oid_init() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_oid_init (bson_oid_t *oid, bson_context_t *context); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBcontext\fP: An \fIoptional\fP \fBbson_context_t\fP or NULL. -.UNINDENT -.SH DESCRIPTION -.sp -Generates a new \fBbson_oid_t\fP using either \fBcontext\fP or the default \fBbson_context_t\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_data.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_data.3 deleted file mode 100644 index afa2a13..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_data.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_INIT_FROM_DATA" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_init_from_data \- bson_oid_init_from_data() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_oid_init_from_data (bson_oid_t *oid, const uint8_t *data); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBdata\fP: A buffer containing 12 bytes for the oid. -.UNINDENT -.SH DESCRIPTION -.sp -Initializes a \fBbson_oid_t\fP using the raw buffer provided. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_string.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_string.3 deleted file mode 100644 index a64dfbb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_from_string.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_INIT_FROM_STRING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_init_from_string \- bson_oid_init_from_string() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_oid_init_from_string (bson_oid_t *oid, const char *str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBstr\fP: A string containing a hex encoded version of the oid. -.UNINDENT -.SH DESCRIPTION -.sp -Parses the string containing hex encoded oid and initialize the bytes in \fBoid\fP\&. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_init_from_string (&oid, "012345678901234567890123"); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_sequence.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_sequence.3 deleted file mode 100644 index 0aa93a7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_init_sequence.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_INIT_SEQUENCE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_init_sequence \- bson_oid_init_sequence() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_oid_init_sequence (bson_oid_t *oid, bson_context_t *context); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBcontext\fP: An optional \fBbson_context_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Generates a new ObjectID using the 64\-bit sequence. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This form of ObjectID is generally used by MongoDB replica peers only. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_is_valid.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_is_valid.3 deleted file mode 100644 index 4e246b5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_is_valid.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_IS_VALID" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_is_valid \- bson_oid_is_valid() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_oid_is_valid (const char *str, size_t length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstr\fP: A string. -.IP \(bu 2 -\fBlength\fP: The length of \fBstr\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Checks if a string containing a hex encoded string is a valid BSON ObjectID. -.SH RETURNS -.sp -true if \fBstr\fP could be parsed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_t.3 deleted file mode 100644 index d64d880..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_t.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_t \- bson_oid_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON ObjectID Abstraction -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - uint8_t bytes[12]; -} bson_oid_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_oid_t\fP structure contains the 12\-byte ObjectId notation defined by the \fI\%BSON ObjectID specification\fP\&. -.sp -ObjectId is a 12\-byte BSON type, constructed using: -.INDENT 0.0 -.IP \(bu 2 -a 4\-byte value representing the seconds since the Unix epoch (in Big Endian) -.IP \(bu 2 -a 3\-byte machine identifier -.IP \(bu 2 -a 2\-byte process id (Big Endian), and -.IP \(bu 2 -a 3\-byte counter (Big Endian), starting with a random value. -.UNINDENT -.SH STRING CONVERSION -.sp -You can convert an Object ID to a string using \fBbson_oid_to_string()\fP and back with \fBbson_oid_init_from_string()\fP\&. -.SH HASHING -.sp -A \fBbson_oid_t\fP can be used in hashtables using the function \fBbson_oid_hash()\fP and \fBbson_oid_equal()\fP\&. -.SH COMPARING -.sp -A \fBbson_oid_t\fP can be compared to another using \fBbson_oid_compare()\fP for \fBqsort()\fP style comparing and \fBbson_oid_equal()\fP for direct equality. -.SH VALIDATING -.sp -You can validate that a string containing a hex\-encoded ObjectID is valid using the function \fBbson_oid_is_valid()\fP\&. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_oid_t oid; - char str[25]; - - bson_oid_init (&oid, NULL); - bson_oid_to_string (&oid, str); - printf ("%s\en", str); - - if (bson_oid_is_valid (str, sizeof str)) { - bson_oid_init_from_string (&oid, str); - } - - printf ("The UNIX time was: %u\en", (unsigned) bson_oid_get_time_t (&oid)); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_to_string.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_to_string.3 deleted file mode 100644 index 106a26c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_oid_to_string.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_OID_TO_STRING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_oid_to_string \- bson_oid_to_string() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_oid_to_string (const bson_oid_t *oid, char str[25]); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBoid\fP: A \fBbson_oid_t\fP\&. -.IP \(bu 2 -\fBstr\fP: A location for the resulting string. -.UNINDENT -.SH DESCRIPTION -.sp -Converts \fBoid\fP into a hex encoded string. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_parsing.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_parsing.3 deleted file mode 100644 index 40e6d22..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_parsing.3 +++ /dev/null @@ -1,184 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_PARSING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_parsing \- Parsing and Iterating BSON Documents -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH PARSING -.sp -BSON documents are lazily parsed as necessary. To begin parsing a BSON document, use one of the provided Libbson functions to create a new \fBbson_t\fP from existing data such as \fBbson_new_from_data()\fP\&. This will make a copy of the data so that additional mutations may occur to the BSON document. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -If you only want to parse a BSON document and have no need to mutate it, you may use \fBbson_init_static()\fP to avoid making a copy of the data. -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; - -b = bson_new_from_data (my_data, my_data_len); -if (!b) { - fprintf (stderr, "The specified length embedded in did not match " - "\en"); - return; -} - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Only two checks are performed when creating a new \fBbson_t\fP from an existing buffer. First, the document must begin with the buffer length, matching what was expected by the caller. Second, the document must end with the expected trailing \fB\e0\fP byte. -.sp -To parse the document further we use a \fBbson_iter_t\fP to iterate the elements within the document. Let\(aqs print all of the field names in the document. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_iter_t iter; - -if ((b = bson_new_from_data (my_data, my_data_len))) { - if (bson_iter_init (&iter, b)) { - while (bson_iter_next (&iter)) { - printf ("Found element key: \e"%s\e"\en", bson_iter_key (&iter)); - } - } - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Converting a document to JSON uses a \fBbson_iter_t\fP and \fBbson_visitor_t\fP to iterate all fields of a BSON document recursively and generate a UTF\-8 encoded JSON string. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -char *json; - -if ((b = bson_new_from_data (my_data, my_data_len))) { - if ((json = bson_as_canonical_extended_json (b, NULL))) { - printf ("%s\en", json); - bson_free (json); - } - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH RECURSING INTO SUB-DOCUMENTS -.sp -Libbson provides convenient sub\-iterators to dive down into a sub\-document or sub\-array. Below is an example that will dive into a sub\-document named "foo" and print it\(aqs field names. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; -bson_iter_t child; -char *json; - -if (bson_iter_init_find (&iter, doc, "foo") && - BSON_ITER_HOLDS_DOCUMENT (&iter) && bson_iter_recurse (&iter, &child)) { - while (bson_iter_next (&child)) { - printf ("Found sub\-key of \e"foo\e" named \e"%s\e"\en", - bson_iter_key (&child)); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH FINDING FIELDS USING DOT NOTATION -.sp -Using the \fBbson_iter_recurse()\fP function exemplified above, \fBbson_iter_find_descendant()\fP can find a field for you using the MongoDB style path notation such as "foo.bar.0.baz". -.sp -Let\(aqs create a document like \fB{"foo": {"bar": [{"baz: 1}]}}\fP and locate the \fB"baz"\fP field. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_iter_t iter; -bson_iter_t baz; - -b = - BCON_NEW ("foo", "{", "bar", "[", "{", "baz", BCON_INT32 (1), "}", "]", "}"); - -if (bson_iter_init (&iter, b) && - bson_iter_find_descendant (&iter, "foo.bar.0.baz", &baz) && - BSON_ITER_HOLDS_INT32 (&baz)) { - printf ("baz = %d\en", bson_iter_int32 (&baz)); -} - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH VALIDATING A BSON DOCUMENT -.sp -If all you want to do is validate that a BSON document is valid, you can use \fBbson_validate()\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -size_t err_offset; - -if (!bson_validate (doc, BSON_VALIDATE_NONE, &err_offset)) { - fprintf (stderr, - "The document failed to validate at offset: %u\en", - (unsigned) err_offset); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See the \fBbson_validate()\fP documentation for more information and examples. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy.3 deleted file mode 100644 index b95e13f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_DESTROY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_destroy \- bson_reader_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_reader_destroy (bson_reader_t *reader); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_reader_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Destroys and releases all resources associated with \fBreader\fP\&. Does nothing if \fBreader\fP is NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy_func_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy_func_t.3 deleted file mode 100644 index c09da2a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_destroy_func_t.3 +++ /dev/null @@ -1,59 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_DESTROY_FUNC_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_destroy_func_t \- bson_reader_destroy_func_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*bson_reader_destroy_func_t) (void *handle); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBhandle\fP: The opaque handle provided to \fBbson_reader_new_from_handle\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -An optional callback function that will be called when a \fBbson_reader_t\fP created with \fBbson_reader_new_from_handle\fP is destroyed with \fBbson_reader_destroy()\fP\&. -.sp -The handle used when creating the reader is passed to this callback. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_data.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_data.3 deleted file mode 100644 index 3083d98..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_data.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_NEW_FROM_DATA" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_new_from_data \- bson_reader_new_from_data() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_reader_t * -bson_reader_new_from_data (const uint8_t *data, size_t length); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdata\fP: A uint8_t. -.IP \(bu 2 -\fBlength\fP: A size_t. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_reader_new_from_data()\fP function shall create a new \fBbson_reader_t\fP using the buffer supplied. \fBdata\fP is not copied and \fIMUST\fP be valid for the lifetime of the resulting \fBbson_reader_t\fP\&. -.SH RETURNS -.sp -A newly allocated \fBbson_reader_t\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_fd.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_fd.3 deleted file mode 100644 index 418aefb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_fd.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_NEW_FROM_FD" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_new_from_fd \- bson_reader_new_from_fd() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_reader_t * -bson_reader_new_from_fd (int fd, bool close_on_destroy); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBfd\fP: A valid file\-descriptor. -.IP \(bu 2 -\fBclose_on_destroy\fP: Whether \fBclose()\fP should be called on \fBfd\fP when the reader is destroyed. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_reader_new_from_fd()\fP function shall create a new \fBbson_reader_t\fP that will read from the provided file\-descriptor. -.sp -fd \fIMUST\fP be in blocking mode. -.sp -If \fBclose_fd\fP is true, then \fBfd\fP will be closed when the \fBbson_reader_t\fP is destroyed with \fBbson_reader_destroy()\fP\&. -.SH RETURNS -.sp -A newly allocated \fBbson_reader_t\fP that should be freed with \fBbson_reader_destroy\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_file.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_file.3 deleted file mode 100644 index e37281c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_file.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_NEW_FROM_FILE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_new_from_file \- bson_reader_new_from_file() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_reader_t * -bson_reader_new_from_file (const char *path, bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpath\fP: A filename in the host filename encoding. -.IP \(bu 2 -\fBerror\fP: A \fBbson_error_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new \fBbson_reader_t\fP using the file denoted by \fBfilename\fP\&. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -A newly allocated \fBbson_reader_t\fP on success, otherwise NULL and error is set. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_handle.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_handle.3 deleted file mode 100644 index 58fea5e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_new_from_handle.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_NEW_FROM_HANDLE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_new_from_handle \- bson_reader_new_from_handle() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_reader_t * -bson_reader_new_from_handle (void *handle, - bson_reader_read_func_t rf, - bson_reader_destroy_func_t df); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBhandle\fP: A user\-provided pointer or NULL. -.IP \(bu 2 -\fBrf\fP: A \fBbson_reader_read_func_t\fP\&. -.IP \(bu 2 -\fBdf\fP: A \fBbson_reader_destroy_func_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function allows for a pluggable data stream for the reader. This can be used to read from sockets, files, memory, or other arbitrary sources. -.SH RETURNS -.sp -A newly allocated bson_reader_t if successful; otherwise NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read.3 deleted file mode 100644 index e15a64a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read.3 +++ /dev/null @@ -1,89 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_READ" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_read \- bson_reader_read() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t * -bson_reader_read (bson_reader_t *reader, bool *reached_eof); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_reader_t\fP\&. -.IP \(bu 2 -\fBreached_eof\fP: A UNKNOWN. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_reader_read()\fP function shall read the next document from the underlying file\-descriptor or buffer. -.sp -If there are no further documents or a failure was detected, then NULL is returned. -.sp -If we reached the end of the sequence, \fBreached_eof\fP is set to true. -.sp -To detect an error, check for NULL and \fBreached_of\fP is false. -.SH RETURNS -.sp -A \fBbson_t\fP that should not be modified or freed. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t *doc; -bool reached_eof = false; - -while ((doc = bson_reader_read (reader, &reached_eof))) { - /* do something */ -} - -if (!reached_eof) { - fprintf (stderr, "Failed to read all documents.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read_func_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read_func_t.3 deleted file mode 100644 index c17d55f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_read_func_t.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_READ_FUNC_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_read_func_t \- bson_reader_read_func_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef ssize_t (*bson_reader_read_func_t) (void *handle, - void *buf, - size_t count); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBhandle\fP: The handle to read from. -.IP \(bu 2 -\fBbuf\fP: The buffer to read into. -.IP \(bu 2 -\fBcount\fP: The number of bytes to read. -.UNINDENT -.SH DESCRIPTION -.sp -A callback function that will be called by \fBbson_reader_t\fP to read the next chunk of data from the underlying opaque file descriptor. -.sp -This function is meant to operate similar to the \fBread(2)\fP function as part of libc on UNIX\-like systems. -.SH RETURNS -.sp -0 for end of stream. -.sp -\-1 for a failure on read. -.sp -A value greater than zero for the number of bytes read into \fBbuf\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_reset.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_reset.3 deleted file mode 100644 index 84b54d6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_reset.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_RESET" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_reset \- bson_reader_reset() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_reader_reset (bson_reader_t *reader); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_reader_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Seeks to the beginning of the underlying buffer. Valid only for a reader created from a buffer with \fBbson_reader_new_from_data\fP, not one created from a file, file descriptor, or handle. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_destroy_func.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_destroy_func.3 deleted file mode 100644 index ef0aae1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_destroy_func.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_SET_DESTROY_FUNC" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_set_destroy_func \- bson_reader_set_destroy_func() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_reader_set_destroy_func (bson_reader_t *reader, - bson_reader_destroy_func_t func); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_reader_t\fP\&. -.IP \(bu 2 -\fBfunc\fP: A \fBbson_reader_destroy_func_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Allows for setting a callback to be executed when a reader is destroyed. This should only be used by implementations implementing their own read callbacks. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_read_func.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_read_func.3 deleted file mode 100644 index 064a0d9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_set_read_func.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_SET_READ_FUNC" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_set_read_func \- bson_reader_set_read_func() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_reader_set_read_func (bson_reader_t *reader, bson_reader_read_func_t func); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_reader_t\fP\&. -.IP \(bu 2 -\fBfunc\fP: A \fBbson_reader_read_func_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Sets the function to read more data from the underlying stream in a custom bson_reader_t. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_t.3 deleted file mode 100644 index 0d15ac0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_t.3 +++ /dev/null @@ -1,158 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_t \- bson_reader_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Streaming BSON Document Reader -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_reader_t bson_reader_t; - -bson_reader_t * -bson_reader_new_from_handle (void *handle, - bson_reader_read_func_t rf, - bson_reader_destroy_func_t df); -bson_reader_t * -bson_reader_new_from_fd (int fd, bool close_on_destroy); -bson_reader_t * -bson_reader_new_from_file (const char *path, bson_error_t *error); -bson_reader_t * -bson_reader_new_from_data (const uint8_t *data, size_t length); - -void -bson_reader_destroy (bson_reader_t *reader); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -\fBbson_reader_t\fP is a structure used for reading a sequence of BSON documents. The sequence can come from a file\-descriptor, memory region, or custom callbacks. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | \-]...\enUse \- for STDIN.\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "\-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\en", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_tell.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_tell.3 deleted file mode 100644 index 3914a4a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reader_tell.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_READER_TELL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reader_tell \- bson_reader_tell() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -off_t -bson_reader_tell (bson_reader_t *reader); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBreader\fP: A \fBbson_reader_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Tells the current position within the underlying stream. -.SH RETURNS -.sp -\-1 on failure, otherwise the offset within the underlying stream. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc.3 deleted file mode 100644 index 6a33c3f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_REALLOC" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_realloc \- bson_realloc() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -bson_realloc (void *mem, size_t num_bytes); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBmem\fP: A memory region. -.IP \(bu 2 -\fBnum_bytes\fP: A size_t containing the new requested size. -.UNINDENT -.SH DESCRIPTION -.sp -This is a portable \fBrealloc()\fP wrapper. -.sp -In general, this function will return an allocation at least \fBsizeof(void*)\fP bytes or bigger. If \fBnum_bytes\fP is 0, then the allocation will be freed. -.sp -If there was a failure to allocate \fBnum_bytes\fP bytes, the process will be aborted. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function will abort on failure to allocate memory. -.UNINDENT -.UNINDENT -.SH RETURNS -.sp -A pointer to a memory region which \fIHAS NOT\fP been zeroed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_ctx.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_ctx.3 deleted file mode 100644 index eb5a439..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_ctx.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_REALLOC_CTX" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_realloc_ctx \- bson_realloc_ctx() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -bson_realloc_ctx (void *mem, size_t num_bytes, void *ctx); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBmem\fP: A memory region. -.IP \(bu 2 -\fBnum_bytes\fP: A size_t containing the requested size. -.IP \(bu 2 -\fBctx\fP: A consumer\-specific pointer or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function is identical to \fBbson_realloc()\fP except it takes a context parameter. This is useful when working with pooled or specific memory allocators. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_func.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_func.3 deleted file mode 100644 index f244b82..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_realloc_func.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_REALLOC_FUNC" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_realloc_func \- bson_realloc_func -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void *(*bson_realloc_func) (void *mem, size_t num_bytes, void *ctx); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBmem\fP: A memory region. -.IP \(bu 2 -\fBnum_bytes\fP: A size_t containing the requested size. -.IP \(bu 2 -\fBctx\fP: A consumer\-specific pointer or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This is a prototype for pluggable realloc functions used through the Libbson library. If you wish to use a custom allocator this is one way to do it. Additionally, \fBbson_realloc_ctx()\fP is a default implementation of this prototype. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reference.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reference.3 deleted file mode 100644 index 037c21c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reference.3 +++ /dev/null @@ -1,2475 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_REFERENCE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reference \- Index -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH LIBBSON -.sp -A Cross Platform BSON Library for C -.SS Introduction -.sp -libbson builds, parses, and iterates \fI\%BSON\fP documents, the native data format of MongoDB. It also converts BSON to and from JSON, and provides a platform compatibility layer for \fI\%the MongoDB C Driver\fP\&. -.SS Tutorial -.SS Using libbson In Your C Program -.SS Include bson.h -.sp -All libbson\(aqs functions and types are available in one header file. Simply include \fBbson.h\fP: -hello_bson.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, const char **argv) -{ - bson_t *b; - char *j; - - b = BCON_NEW ("hello", BCON_UTF8 ("bson!")); - j = bson_as_canonical_extended_json (b, NULL); - printf ("%s\en", j); - - bson_free (j); - bson_destroy (b); - - return 0; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SS CMake -.sp -The libbson installation includes a \fI\%CMake config\-file package\fP, so you can use CMake\(aqs \fI\%find_package\fP command to find libbson\(aqs header and library paths and link to libbson: -CMakeLists.txt.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Specify the minimum version you require. -find_package (libbson\-1.0 1.7 REQUIRED) - -message ("\-\- libbson found version \e"${BSON_VERSION}\e"") -message ("\-\- libbson include path \e"${BSON_INCLUDE_DIRS}\e"") -message ("\-\- libbson libraries \e"${BSON_LIBRARIES}\e"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_DEFINITIONS}) - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -By default, libbson is dynamically linked. You can use libbson as a static library instead: Use the included \fBlibbson\-static\-1.0\fP config\-file package and (on Unix) link to \fBpthread\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Specify the minimum version you require. -find_package (libbson\-static\-1.0 1.7 REQUIRED) - -message ("\-\- libbson\-static found version \e"${BSON_STATIC_VERSION}\e"") -message ("\-\- libbson\-static include path \e"${BSON_STATIC_INCLUDE_DIRS}\e"") -message ("\-\- libbson\-static libraries \e"${BSON_STATIC_LIBRARIES}\e"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_STATIC_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_STATIC_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_STATIC_DEFINITIONS}) - -.ft P -.fi -.UNINDENT -.UNINDENT -.SS pkg\-config -.sp -If you\(aqre not using CMake, use \fI\%pkg\-config\fP on the command line to set header and library paths: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -gcc \-o hello_bson hello_bson.c $(pkg\-config \-\-libs \-\-cflags libbson\-1.0) - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Or to statically link to libbson: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -gcc \-o hello_bson hello_bson.c $(pkg\-config \-\-libs \-\-cflags libbson\-static\-1.0) - -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Creating a BSON Document -.SS The bson_t structure -.sp -BSON documents are created using the \fBbson_t\fP structure. This structure encapsulates the necessary logic for encoding using the \fI\%BSON Specification\fP\&. At the core, \fBbson_t\fP is a buffer manager and set of encoding routines. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -BSON documents can live on the stack or the heap based on the performance needs or preference of the consumer. -.UNINDENT -.UNINDENT -.sp -Let\(aqs start by creating a new BSON document on the stack. Whenever using libbson, make sure you \fB#include \fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t b; - -bson_init (&b); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This creates an empty document. In JSON, this would be the same as \fB{}\fP\&. -.sp -We can now proceed to adding items to the BSON document. A variety of functions prefixed with \fBbson_append_\fP can be used based on the type of field you want to append. Let\(aqs append a UTF\-8 encoded string. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_append_utf8 (&b, "key", \-1, "value", \-1); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Notice the two \fB\-1\fP parameters. The first indicates that the length of \fBkey\fP in bytes should be determined with \fBstrlen()\fP\&. Alternatively, we could have passed the number \fB3\fP\&. The same goes for the second \fB\-1\fP, but for \fBvalue\fP\&. -.sp -Libbson provides macros to make this less tedious when using string literals. The following two appends are identical. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_append_utf8 (&b, "key", \-1, "value", \-1); -BSON_APPEND_UTF8 (&b, "key", "value"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now let\(aqs take a look at an example that adds a few different field types to a BSON document. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t b = BSON_INITIALIZER; - -BSON_APPEND_INT32 (&b, "a", 1); -BSON_APPEND_UTF8 (&b, "hello", "world"); -BSON_APPEND_BOOL (&b, "bool", true); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Notice that we omitted the call to \fBbson_init()\fP\&. By specifying \fBBSON_INITIALIZER\fP we can remove the need to initialize the structure to a base state. -.SS Sub\-Documents and Sub\-Arrays -.sp -To simplify the creation of sub\-documents and arrays, \fBbson_append_document_begin()\fP and \fBbson_append_array_begin()\fP exist. These can be used to build a sub\-document using the parent documents memory region as the destination buffer. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t parent; -bson_t child; -char *str; - -bson_init (&parent); -bson_append_document_begin (&parent, "foo", 3, &child); -bson_append_int32 (&child, "baz", 3, 1); -bson_append_document_end (&parent, &child); - -str = bson_as_canonical_extended_json (&parent, NULL); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (&parent); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "foo" : { "baz" : 1 } } -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Simplified BSON C Object Notation -.sp -Creating BSON documents by hand can be tedious and time consuming. BCON, or BSON C Object Notation, was added to allow for the creation of BSON documents in a format that looks closer to the destination format. -.sp -The following example shows the use of BCON. Notice that values for fields are wrapped in the \fBBCON_*\fP macros. These are required for the variadic processor to determine the parameter type. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *doc; - -doc = BCON_NEW ("foo", - "{", - "int", - BCON_INT32 (1), - "array", - "[", - BCON_INT32 (100), - "{", - "sub", - BCON_UTF8 ("value"), - "}", - "]", - "}"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Creates the following document -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "foo" : { "int" : 1, "array" : [ 100, { "sub" : "value" } ] } } -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Handling Errors -.SS Description -.sp -Many libbson functions report errors by returning \fBNULL\fP or \-1 and filling out a \fBbson_error_t\fP structure with an error domain, error code, and message. -.INDENT 0.0 -.IP \(bu 2 -\fBerror.domain\fP names the subsystem that generated the error. -.IP \(bu 2 -\fBerror.code\fP is a domain\-specific error type. -.IP \(bu 2 -\fBerror.message\fP describes the error. -.UNINDENT -.sp -Some error codes overlap with others; always check both the domain and code to determine the type of error. -.TS -center; -|l|l|l|. -_ -T{ -\fBBSON_ERROR_JSON\fP -T} T{ -\fBBSON_JSON_ERROR_READ_CORRUPT_JS\fP -\fBBSON_JSON_ERROR_READ_INVALID_PARAM\fP -\fBBSON_JSON_ERROR_READ_CB_FAILURE\fP -T} T{ -\fBbson_json_reader_t\fP tried to parse invalid MongoDB Extended JSON. -Tried to parse a valid JSON document that is invalid as MongoDBExtended JSON. -An internal callback failure during JSON parsing. -T} -_ -T{ -\fBBSON_ERROR_READER\fP -T} T{ -\fBBSON_ERROR_READER_BADFD\fP -T} T{ -\fBbson_json_reader_new_from_file\fP could not open the file. -T} -_ -.TE -.SS ObjectIDs -.sp -Libbson provides a simple way to generate ObjectIDs. It can be used in a single\-threaded or multi\-threaded manner depending on your requirements. -.sp -The \fBbson_oid_t\fP structure represents an \fBObjectID\fP in MongoDB. It is a 96\-bit identifier that includes various information about the system generating the OID. -.SS Composition -.INDENT 0.0 -.IP \(bu 2 -4 bytes : The UNIX timestamp in big\-endian format. -.IP \(bu 2 -3 bytes : A hash of the hostname. -.IP \(bu 2 -2 bytes : The \fBpid_t\fP of the current process. Alternatively the task\-id if configured. -.IP \(bu 2 -3 bytes : A 24\-bit monotonic counter incrementing from \fBrand()\fP in big\-endian. -.UNINDENT -.SS Sorting ObjectIDs -.sp -The typical way to sort in C is using \fBqsort()\fP\&. Therefore, Libbson provides a \fBqsort()\fP compatible callback function named \fBbson_oid_compare()\fP\&. It returns \fBless than 1\fP, \fBgreater than 1\fP, or \fB0\fP depending on the equality of two \fBbson_oid_t\fP structures. -.SS Comparing Object IDs -.sp -If you simply want to compare two \fBbson_oid_t\fP structures for equality, use \fBbson_oid_equal()\fP\&. -.SS Generating -.sp -To generate a \fBbson_oid_t\fP, you may use the following. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init (&oid, NULL); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Parsing ObjectID Strings -.sp -You can also parse a string containing a \fBbson_oid_t\fP\&. The input string \fIMUST\fP be 24 characters or more in length. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init_from_string (&oid, "123456789012345678901234"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If you need to parse may \fBbson_oid_t\fP in a tight loop and can guarantee the data is safe, you might consider using the inline variant. It will be inlined into your code and reduce the need for a foreign function call. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234"); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Hashing ObjectIDs -.sp -If you need to store items in a hashtable, you may want to use the \fBbson_oid_t\fP as the key. Libbson provides a hash function for just this purpose. It is based on DJB hash. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -unsigned hash; - -hash = bson_oid_hash (oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Fetching ObjectID Creation Time -.sp -You can easily fetch the time that a \fBbson_oid_t\fP was generated using \fBbson_oid_get_time_t()\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -time_t t; - -t = bson_oid_get_time_t (oid); -printf ("The OID was generated at %u\en", (unsigned) t); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Parsing and Iterating BSON Documents -.SS Parsing -.sp -BSON documents are lazily parsed as necessary. To begin parsing a BSON document, use one of the provided Libbson functions to create a new \fBbson_t\fP from existing data such as \fBbson_new_from_data()\fP\&. This will make a copy of the data so that additional mutations may occur to the BSON document. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -If you only want to parse a BSON document and have no need to mutate it, you may use \fBbson_init_static()\fP to avoid making a copy of the data. -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; - -b = bson_new_from_data (my_data, my_data_len); -if (!b) { - fprintf (stderr, "The specified length embedded in did not match " - "\en"); - return; -} - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Only two checks are performed when creating a new \fBbson_t\fP from an existing buffer. First, the document must begin with the buffer length, matching what was expected by the caller. Second, the document must end with the expected trailing \fB\e0\fP byte. -.sp -To parse the document further we use a \fBbson_iter_t\fP to iterate the elements within the document. Let\(aqs print all of the field names in the document. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_iter_t iter; - -if ((b = bson_new_from_data (my_data, my_data_len))) { - if (bson_iter_init (&iter, b)) { - while (bson_iter_next (&iter)) { - printf ("Found element key: \e"%s\e"\en", bson_iter_key (&iter)); - } - } - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Converting a document to JSON uses a \fBbson_iter_t\fP and \fBbson_visitor_t\fP to iterate all fields of a BSON document recursively and generate a UTF\-8 encoded JSON string. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -char *json; - -if ((b = bson_new_from_data (my_data, my_data_len))) { - if ((json = bson_as_canonical_extended_json (b, NULL))) { - printf ("%s\en", json); - bson_free (json); - } - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Recursing into Sub\-Documents -.sp -Libbson provides convenient sub\-iterators to dive down into a sub\-document or sub\-array. Below is an example that will dive into a sub\-document named "foo" and print it\(aqs field names. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; -bson_iter_t child; -char *json; - -if (bson_iter_init_find (&iter, doc, "foo") && - BSON_ITER_HOLDS_DOCUMENT (&iter) && bson_iter_recurse (&iter, &child)) { - while (bson_iter_next (&child)) { - printf ("Found sub\-key of \e"foo\e" named \e"%s\e"\en", - bson_iter_key (&child)); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Finding Fields using Dot Notation -.sp -Using the \fBbson_iter_recurse()\fP function exemplified above, \fBbson_iter_find_descendant()\fP can find a field for you using the MongoDB style path notation such as "foo.bar.0.baz". -.sp -Let\(aqs create a document like \fB{"foo": {"bar": [{"baz: 1}]}}\fP and locate the \fB"baz"\fP field. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_iter_t iter; -bson_iter_t baz; - -b = - BCON_NEW ("foo", "{", "bar", "[", "{", "baz", BCON_INT32 (1), "}", "]", "}"); - -if (bson_iter_init (&iter, b) && - bson_iter_find_descendant (&iter, "foo.bar.0.baz", &baz) && - BSON_ITER_HOLDS_INT32 (&baz)) { - printf ("baz = %d\en", bson_iter_int32 (&baz)); -} - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Validating a BSON Document -.sp -If all you want to do is validate that a BSON document is valid, you can use \fBbson_validate()\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -size_t err_offset; - -if (!bson_validate (doc, BSON_VALIDATE_NONE, &err_offset)) { - fprintf (stderr, - "The document failed to validate at offset: %u\en", - (unsigned) err_offset); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See the \fBbson_validate()\fP documentation for more information and examples. -.SS UTF\-8 -.SS Encoding -.sp -Libbson expects that you are always working with UTF\-8 encoded text. Anything else is \fBinvalid API use\fP\&. -.sp -If you should need to walk through UTF\-8 sequences, you can use the various UTF\-8 helper functions distributed with Libbson. -.SS Validating a UTF\-8 Sequence -.sp -To validate the string contained in \fBmy_string\fP, use the following. You may pass \fB\-1\fP for the string length if you know the string is NULL\-terminated. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -if (!bson_utf8_validate (my_string, \-1, false)) { - printf ("Validation failed.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If \fBmy_string\fP has NULL bytes within the string, you must provide the string length. Use the following format. Notice the \fBtrue\fP at the end indicating \fB\e0\fP is allowed. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -if (!bson_utf8_validate (my_string, my_string_len, true)) { - printf ("Validation failed.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -For more information see the API reference for \fBbson_utf8_validate()\fP\&. -.SS Guides -.SS Streaming BSON -.sp -\fBbson_reader_t\fP provides a streaming reader which can be initialized with a filedescriptor or memory region. \fBbson_writer_t\fP provides a streaming writer which can be initialized with a memory region. (Streaming BSON to a file descriptor is not yet supported.) -.SS Reading from a BSON Stream -.sp -\fBbson_reader_t\fP provides a convenient API to read sequential BSON documents from a file\-descriptor or memory buffer. The \fBbson_reader_read()\fP function will read forward in the underlying stream and return a \fBbson_t\fP that can be inspected and iterated upon. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *doc; - bson_error_t error; - bool eof; - - reader = bson_reader_new_from_file ("mycollection.bson", &error); - - if (!reader) { - fprintf (stderr, "Failed to open file.\en"); - return 1; - } - - while ((doc = bson_reader_read (reader, &eof))) { - char *str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\en", str); - bson_free (str); - } - - if (!eof) { - fprintf (stderr, - "corrupted bson document found at %u\en", - (unsigned) bson_reader_tell (reader)); - } - - bson_reader_destroy (reader); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See \fBbson_reader_new_from_fd()\fP, \fBbson_reader_new_from_file()\fP, and \fBbson_reader_new_from_data()\fP for more information. -.SS Writing a sequence of BSON Documents -.sp -\fBbson_writer_t\fP provides a convenient API to write a sequence of BSON documents to a memory buffer that can grow with \fBrealloc()\fP\&. The \fBbson_writer_begin()\fP and \fBbson_writer_end()\fP functions will manage the underlying buffer while building the sequence of documents. -.sp -This could also be useful if you want to write to a network packet while serializing the documents from a higher level language, (but do so just after the packets header). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_writer_t *writer; - bson_t *doc; - uint8_t *buf = NULL; - size_t buflen = 0; - bool r; - int i; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < 10000; i++) { - r = bson_writer_begin (writer, &doc); - assert (r); - - r = BSON_APPEND_INT32 (doc, "i", i); - assert (r); - - bson_writer_end (writer); - } - - bson_free (buf); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See \fBbson_writer_new()\fP for more information. -.SS JSON -.sp -Libbson provides routines for converting to and from the JSON format. In particular, it supports the \fI\%MongoDB extended JSON\fP format. -.SS Converting BSON to JSON -.sp -There are often times where you might want to convert a BSON document to JSON. It is convenient for debugging as well as an interchange format. To help with this, Libbson contains the functions \fBbson_as_canonical_extended_json()\fP and \fBbson_as_relaxed_extended_json()\fP\&. The canonical format preserves BSON type information for values that may have ambiguous representations in JSON (e.g. numeric types). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -size_t len; -char *str; - -b = BCON_NEW ("a", BCON_INT32 (1)); - -str = bson_as_canonical_extended_json (b, &len); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "a" : { "$numberInt": "1" } } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The relaxed format prefers JSON primitives for numeric values and may be used if type fidelity is not required. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -size_t len; -char *str; - -b = BCON_NEW ("a", BCON_INT32 (1)); - -str = bson_as_relaxed_extended_json (b, &len); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "a" : 1 } -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Converting JSON to BSON -.sp -Converting back from JSON is also useful and common enough that we added \fBbson_init_from_json()\fP and \fBbson_new_from_json()\fP\&. -.sp -The following example creates a new \fBbson_t\fP from the JSON string \fB{"a":1}\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_error_t error; - -b = bson_new_from_json ("{\e"a\e":1}", \-1, &error); - -if (!b) { - printf ("Error: %s\en", error.message); -} else { - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Streaming JSON Parsing -.sp -Libbson provides \fBbson_json_reader_t\fP to allow for parsing a sequence of JSON documents into BSON. The interface is similar to \fBbson_reader_t\fP but expects the input to be in the \fI\%MongoDB extended JSON\fP format. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - -#include -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "\-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\en%s\en", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\en"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Examples -.sp -The following example reads BSON documents from \fBstdin\fP and prints them to \fBstdout\fP as JSON. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | \-]...\enUse \- for STDIN.\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "\-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\en", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Use Valgrind to Check For BSON Data Leaks -.sp -A stack\-allocated \fBbson_t\fP contains a small internal buffer; it only heap\-allocates additional storage if necessary, depending on its data size. Therefore if you forget to call \fBbson_destroy\fP on a stack\-allocated \fBbson_t\fP, it might or might not cause a leak that can be detected by valgrind during testing. -.sp -To catch all potential BSON data leaks in your code, configure the BSON_MEMCHECK flag: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cmake \-DCMAKE_C_FLAGS="\-DBSON_MEMCHECK \-g" . -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -With this flag set, every \fBbson_t\fP mallocs at least one byte. Run your program\(aqs unittests with valgrind to verify all \fBbson_t\fP structs are destroyed. -.sp -Set the environment variable \fBMONGOC_TEST_VALGRIND\fP to \fBon\fP to skip timing\-dependent tests known to fail with valgrind. -.SS Cross Platform Notes -.SS Endianness -.sp -The BSON specification dictates that the encoding format is in little\-endian. Many implementations simply ignore endianness altogether and expect that they are to be run on little\-endian. Libbson supports both Big and Little Endian systems. This means we use \fBmemcpy()\fP when appropriate instead of dereferencing and properly convert to and from the host endian format. We expect the compiler intrinsics to optimize it to a dereference when possible. -.SS Threading -.sp -Libbson\(aqs data structures are \fINOT\fP thread\-safe. You are responsible for accessing and mutating these structures from one thread at a time. -.sp -Libbson requires POSIX threads (pthreads) on all UNIX\-like platforms. On Windows, the native threading interface is used. Libbson uses your system\(aqs threading library to safely generate unique ObjectIds, and to provide a fallback implementation for atomic operations on platforms without built\-in atomics. -.SS API Reference -.SS bson_t -.sp -BSON Document Abstraction -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -/** - * bson_empty: - * @b: a bson_t. - * - * Checks to see if @b is an empty BSON document. An empty BSON document is - * a 5 byte document which contains the length (4 bytes) and a single NUL - * byte indicating end of fields. - */ -#define bson_empty(b) /* ... */ - -/** - * bson_empty0: - * - * Like bson_empty() but treats NULL the same as an empty bson_t document. - */ -#define bson_empty0(b) /* ... */ - -/** - * bson_clear: - * - * Easily free a bson document and set it to NULL. Use like: - * - * bson_t *doc = bson_new(); - * bson_clear (&doc); - * BSON_ASSERT (doc == NULL); - */ -#define bson_clear(bptr) /* ... */ - -/** - * BSON_MAX_SIZE: - * - * The maximum size in bytes of a BSON document. - */ -#define BSON_MAX_SIZE /* ... */ - -#define BSON_APPEND_ARRAY(b, key, val) \e - bson_append_array (b, key, (int) strlen (key), val) - -#define BSON_APPEND_ARRAY_BEGIN(b, key, child) \e - bson_append_array_begin (b, key, (int) strlen (key), child) - -#define BSON_APPEND_BINARY(b, key, subtype, val, len) \e - bson_append_binary (b, key, (int) strlen (key), subtype, val, len) - -#define BSON_APPEND_BOOL(b, key, val) \e - bson_append_bool (b, key, (int) strlen (key), val) - -#define BSON_APPEND_CODE(b, key, val) \e - bson_append_code (b, key, (int) strlen (key), val) - -#define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \e - bson_append_code_with_scope (b, key, (int) strlen (key), val, scope) - -#define BSON_APPEND_DBPOINTER(b, key, coll, oid) \e - bson_append_dbpointer (b, key, (int) strlen (key), coll, oid) - -#define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \e - bson_append_document_begin (b, key, (int) strlen (key), child) - -#define BSON_APPEND_DOUBLE(b, key, val) \e - bson_append_double (b, key, (int) strlen (key), val) - -#define BSON_APPEND_DOCUMENT(b, key, val) \e - bson_append_document (b, key, (int) strlen (key), val) - -#define BSON_APPEND_INT32(b, key, val) \e - bson_append_int32 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_INT64(b, key, val) \e - bson_append_int64 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_MINKEY(b, key) \e - bson_append_minkey (b, key, (int) strlen (key)) - -#define BSON_APPEND_DECIMAL128(b, key, val) \e - bson_append_decimal128 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_MAXKEY(b, key) \e - bson_append_maxkey (b, key, (int) strlen (key)) - -#define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key)) - -#define BSON_APPEND_OID(b, key, val) \e - bson_append_oid (b, key, (int) strlen (key), val) - -#define BSON_APPEND_REGEX(b, key, val, opt) \e - bson_append_regex (b, key, (int) strlen (key), val, opt) - -#define BSON_APPEND_UTF8(b, key, val) \e - bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val)) - -#define BSON_APPEND_SYMBOL(b, key, val) \e - bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val)) - -#define BSON_APPEND_TIME_T(b, key, val) \e - bson_append_time_t (b, key, (int) strlen (key), val) - -#define BSON_APPEND_TIMEVAL(b, key, val) \e - bson_append_timeval (b, key, (int) strlen (key), val) - -#define BSON_APPEND_DATE_TIME(b, key, val) \e - bson_append_date_time (b, key, (int) strlen (key), val) - -#define BSON_APPEND_TIMESTAMP(b, key, val, inc) \e - bson_append_timestamp (b, key, (int) strlen (key), val, inc) - -#define BSON_APPEND_UNDEFINED(b, key) \e - bson_append_undefined (b, key, (int) strlen (key)) - -#define BSON_APPEND_VALUE(b, key, val) \e - bson_append_value (b, key, (int) strlen (key), (val)) - -BSON_ALIGNED_BEGIN (128) -typedef struct { - uint32_t flags; /* Internal flags for the bson_t. */ - uint32_t len; /* Length of BSON data. */ - uint8_t padding[120]; /* Padding for stack allocation. */ -} bson_t BSON_ALIGNED_END (128); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_t\fP structure represents a BSON document. This structure manages the underlying BSON encoded buffer. For mutable documents, it can append new data to the document. -.SS Performance Notes -.sp -The \fBbson_t\fP structure attempts to use an inline allocation within the structure to speed up performance of small documents. When this internal buffer has been exhausted, a heap allocated buffer will be dynamically allocated. Therefore, it is essential to call \fBbson_destroy()\fP on allocated documents. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -static void -create_on_heap (void) -{ - bson_t *b = bson_new (); - - BSON_APPEND_INT32 (b, "foo", 123); - BSON_APPEND_UTF8 (b, "bar", "foo"); - BSON_APPEND_DOUBLE (b, "baz", 1.23f); - - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_context_t -.sp -BSON OID Generation Context -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef enum { - BSON_CONTEXT_NONE = 0, - BSON_CONTEXT_THREAD_SAFE = (1 << 0), - BSON_CONTEXT_DISABLE_HOST_CACHE = (1 << 1), - BSON_CONTEXT_DISABLE_PID_CACHE = (1 << 2), -#ifdef BSON_HAVE_SYSCALL_TID - BSON_CONTEXT_USE_TASK_ID = (1 << 3), -#endif -} bson_context_flags_t; - -typedef struct _bson_context_t bson_context_t; - -bson_context_t * -bson_context_get_default (void) BSON_GNUC_CONST; -bson_context_t * -bson_context_new (bson_context_flags_t flags); -void -bson_context_destroy (bson_context_t *context); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_context_t\fP structure is context for generation of BSON Object IDs. This context allows for specialized overriding of how ObjectIDs are generated based on the applications requirements. For example, disabling of PID caching can be configured if the application cannot detect when a call to \fBfork()\fP has occurred. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int -main (int argc, char *argv[]) -{ - bson_context_t *ctx = NULL; - bson_oid_t oid; - - /* use default context, via bson_context_get_default() */ - bson_oid_init (&oid, NULL); - - /* specify a local context for additional control */ - ctx = bson_context_new (BSON_CONTEXT_DISABLE_PID_CACHE | - BSON_CONTEXT_THREAD_SAFE); - bson_oid_init (&oid, ctx); - - bson_context_destroy (ctx); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_decimal128_t -.sp -BSON Decimal128 Abstraction -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -#define BSON_DECIMAL128_STRING 43 -#define BSON_DECIMAL128_INF "Infinity" -#define BSON_DECIMAL128_NAN "NaN" - -typedef struct { -#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN - uint64_t low; - uint64_t high; -#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN - uint64_t high; - uint64_t low; -#endif -} bson_decimal128_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_decimal128_t\fP structure -represents the IEEE\-754 Decimal128 data type. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - char string[BSON_DECIMAL128_STRING]; - bson_decimal128_t decimal128; - - bson_decimal128_from_string ("100.00", &decimal128); - bson_decimal128_to_string (&decimal128, string); - printf ("Decimal128 value: %s\en", string); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_error_t -.sp -BSON Error Encapsulation -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - uint32_t domain; - uint32_t code; - char message[504]; -} bson_error_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_error_t\fP structure is used as an out\-parameter to pass error information to the caller. It should be stack\-allocated and does not requiring freeing. -.sp -See Handling Errors\&. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_reader_t *reader; -bson_error_t error; - -reader = bson_reader_new_from_file ("dump.bson", &error); -if (!reader) { - fprintf ( - stderr, "ERROR: %d.%d: %s\en", error.domain, error.code, error.message); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_iter_t -.sp -BSON Document Iterator -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -#define BSON_ITER_HOLDS_DOUBLE(iter) /* ... */ - -#define BSON_ITER_HOLDS_UTF8(iter) /* ... */ - -#define BSON_ITER_HOLDS_DOCUMENT(iter) /* ... */ - -#define BSON_ITER_HOLDS_ARRAY(iter) /* ... */ - -#define BSON_ITER_HOLDS_BINARY(iter) /* ... */ - -#define BSON_ITER_HOLDS_UNDEFINED(iter) /* ... */ - -#define BSON_ITER_HOLDS_OID(iter) /* ... */ - -#define BSON_ITER_HOLDS_BOOL(iter) /* ... */ - -#define BSON_ITER_HOLDS_DATE_TIME(iter) /* ... */ - -#define BSON_ITER_HOLDS_NULL(iter) /* ... */ - -#define BSON_ITER_HOLDS_REGEX(iter) /* ... */ - -#define BSON_ITER_HOLDS_DBPOINTER(iter) /* ... */ - -#define BSON_ITER_HOLDS_CODE(iter) /* ... */ - -#define BSON_ITER_HOLDS_SYMBOL(iter) /* ... */ - -#define BSON_ITER_HOLDS_CODEWSCOPE(iter) /* ... */ - -#define BSON_ITER_HOLDS_INT32(iter) /* ... */ - -#define BSON_ITER_HOLDS_TIMESTAMP(iter) /* ... */ - -#define BSON_ITER_HOLDS_INT64(iter) /* ... */ - -#define BSON_ITER_HOLDS_DECIMAL128(iter) /* ... */ - -#define BSON_ITER_HOLDS_MAXKEY(iter) /* ... */ - -#define BSON_ITER_HOLDS_MINKEY(iter) /* ... */ - -#define BSON_ITER_HOLDS_INT(iter) \e - (BSON_ITER_HOLDS_INT32 (iter) || BSON_ITER_HOLDS_INT64 (iter)) - -#define BSON_ITER_HOLDS_NUMBER(iter) \e - (BSON_ITER_HOLDS_INT (iter) || BSON_ITER_HOLDS_DOUBLE (iter)) - -#define BSON_ITER_IS_KEY(iter, key) \e - (0 == strcmp ((key), bson_iter_key ((iter)))) - -typedef struct { - /*< private >*/ -} bson_iter_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -\fBbson_iter_t\fP is a structure used to iterate through the elements of a \fBbson_t\fP\&. It is meant to be used on the stack and can be discarded at any time as it contains no external allocation. The contents of the structure should be considered private and may change between releases, however the structure size will not change. -.sp -The \fBbson_t\fP \fIMUST\fP be valid for the lifetime of the iter and it is an error to modify the \fBbson_t\fP while using the iter. -.SS Examples -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init (&iter, my_bson_doc)) { - while (bson_iter_next (&iter)) { - printf ("Found a field named: %s\en", bson_iter_key (&iter)); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init (&iter, my_bson_doc) && bson_iter_find (&iter, "my_field")) { - printf ("Found the field named: %s\en", bson_iter_key (&iter)); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; -bson_iter_t sub_iter; - -if (bson_iter_init_find (&iter, my_bson_doc, "mysubdoc") && - (BSON_ITER_HOLDS_DOCUMENT (&iter) || BSON_ITER_HOLDS_ARRAY (&iter)) && - bson_iter_recurse (&iter, &sub_iter)) { - while (bson_iter_next (&sub_iter)) { - printf ("Found key \e"%s\e" in sub document.\en", bson_iter_key (&sub_iter)); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init (&iter, my_doc) && - bson_iter_find_descendant (&iter, "a.b.c.d", &sub_iter)) { - printf ("The type of a.b.c.d is: %d\en", (int) bson_iter_type (&sub_iter)); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_json_reader_t -.sp -Bulk JSON to BSON conversion -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_json_reader_t bson_json_reader_t; - -typedef enum { - BSON_JSON_ERROR_READ_CORRUPT_JS = 1, - BSON_JSON_ERROR_READ_INVALID_PARAM, - BSON_JSON_ERROR_READ_CB_FAILURE, -} bson_json_error_code_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_json_reader_t\fP structure is used for reading a sequence of JSON documents and transforming them to \fBbson_t\fP documents. -.sp -This can often be useful if you want to perform bulk operations that are defined in a file containing JSON documents. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBbson_json_reader_t\fP works upon JSON documents formatted in \fI\%MongoDB extended JSON\fP format. -.UNINDENT -.UNINDENT -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - -#include -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "\-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\en%s\en", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\en"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_md5_t -.sp -BSON MD5 Abstraction -.SS Deprecated -.sp -All MD5 APIs are deprecated in libbson. -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef struct { - uint32_t count[2]; /* message length in bits, lsw first */ - uint32_t abcd[4]; /* digest buffer */ - uint8_t buf[64]; /* accumulate block */ -} bson_md5_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -bson_md5_t encapsulates an implementation of the MD5 algorithm. -.SS bson_oid_t -.sp -BSON ObjectID Abstraction -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - uint8_t bytes[12]; -} bson_oid_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_oid_t\fP structure contains the 12\-byte ObjectId notation defined by the \fI\%BSON ObjectID specification\fP\&. -.sp -ObjectId is a 12\-byte BSON type, constructed using: -.INDENT 0.0 -.IP \(bu 2 -a 4\-byte value representing the seconds since the Unix epoch (in Big Endian) -.IP \(bu 2 -a 3\-byte machine identifier -.IP \(bu 2 -a 2\-byte process id (Big Endian), and -.IP \(bu 2 -a 3\-byte counter (Big Endian), starting with a random value. -.UNINDENT -.SS String Conversion -.sp -You can convert an Object ID to a string using \fBbson_oid_to_string()\fP and back with \fBbson_oid_init_from_string()\fP\&. -.SS Hashing -.sp -A \fBbson_oid_t\fP can be used in hashtables using the function \fBbson_oid_hash()\fP and \fBbson_oid_equal()\fP\&. -.SS Comparing -.sp -A \fBbson_oid_t\fP can be compared to another using \fBbson_oid_compare()\fP for \fBqsort()\fP style comparing and \fBbson_oid_equal()\fP for direct equality. -.SS Validating -.sp -You can validate that a string containing a hex\-encoded ObjectID is valid using the function \fBbson_oid_is_valid()\fP\&. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_oid_t oid; - char str[25]; - - bson_oid_init (&oid, NULL); - bson_oid_to_string (&oid, str); - printf ("%s\en", str); - - if (bson_oid_is_valid (str, sizeof str)) { - bson_oid_init_from_string (&oid, str); - } - - printf ("The UNIX time was: %u\en", (unsigned) bson_oid_get_time_t (&oid)); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_reader_t -.sp -Streaming BSON Document Reader -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_reader_t bson_reader_t; - -bson_reader_t * -bson_reader_new_from_handle (void *handle, - bson_reader_read_func_t rf, - bson_reader_destroy_func_t df); -bson_reader_t * -bson_reader_new_from_fd (int fd, bool close_on_destroy); -bson_reader_t * -bson_reader_new_from_file (const char *path, bson_error_t *error); -bson_reader_t * -bson_reader_new_from_data (const uint8_t *data, size_t length); - -void -bson_reader_destroy (bson_reader_t *reader); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -\fBbson_reader_t\fP is a structure used for reading a sequence of BSON documents. The sequence can come from a file\-descriptor, memory region, or custom callbacks. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE\-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | \-]...\enUse \- for STDIN.\en", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "\-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \e"%s\e": %s\en", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\en", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Character and String Routines -.sp -We provide a small number of character and string routines to substitute for those that are not available on all platforms, and routines to make UTF\-8 character manipulation convenient. -.SS bson_string_t -.sp -String Building Abstraction -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - char *str; - uint32_t len; - uint32_t alloc; -} bson_string_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -\fBbson_string_t\fP is an abstraction for building strings. As chunks are added to the string, allocations are performed in powers of two. -.sp -This API is useful if you need to build UTF\-8 encoded strings. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_string_t *str; - -str = bson_string_new (NULL); -bson_string_append_printf (str, "%d %s %f\en", 0, "some string", 0.123); -printf ("%s\en", str\->str); - -bson_string_free (str, true); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -You can call \fBbson_string_free()\fP with \fBfalse\fP if you would like to take ownership of \fBstr\->str\fP\&. Some APIs that do this might call \fBreturn bson_string_free (str, false);\fP after building the string. -.UNINDENT -.UNINDENT -.SS bson_subtype_t -.sp -Binary Field Subtype -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - - -typedef enum { - BSON_SUBTYPE_BINARY = 0x00, - BSON_SUBTYPE_FUNCTION = 0x01, - BSON_SUBTYPE_BINARY_DEPRECATED = 0x02, - BSON_SUBTYPE_UUID_DEPRECATED = 0x03, - BSON_SUBTYPE_UUID = 0x04, - BSON_SUBTYPE_MD5 = 0x05, - BSON_SUBTYPE_USER = 0x80, -} bson_subtype_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -This enumeration contains the various subtypes that may be used in a binary field. See \fI\%http://bsonspec.org\fP for more information. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t doc = BSON_INITIALIZER; - -BSON_APPEND_BINARY (&doc, "binary", BSON_SUBTYPE_BINARY, data, data_len); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_type_t -.sp -BSON Type Enumeration -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef enum { - BSON_TYPE_EOD = 0x00, - BSON_TYPE_DOUBLE = 0x01, - BSON_TYPE_UTF8 = 0x02, - BSON_TYPE_DOCUMENT = 0x03, - BSON_TYPE_ARRAY = 0x04, - BSON_TYPE_BINARY = 0x05, - BSON_TYPE_UNDEFINED = 0x06, - BSON_TYPE_OID = 0x07, - BSON_TYPE_BOOL = 0x08, - BSON_TYPE_DATE_TIME = 0x09, - BSON_TYPE_NULL = 0x0A, - BSON_TYPE_REGEX = 0x0B, - BSON_TYPE_DBPOINTER = 0x0C, - BSON_TYPE_CODE = 0x0D, - BSON_TYPE_SYMBOL = 0x0E, - BSON_TYPE_CODEWSCOPE = 0x0F, - BSON_TYPE_INT32 = 0x10, - BSON_TYPE_TIMESTAMP = 0x11, - BSON_TYPE_INT64 = 0x12, - BSON_TYPE_DECIMAL128 = 0x13, - BSON_TYPE_MAXKEY = 0x7F, - BSON_TYPE_MINKEY = 0xFF, -} bson_type_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_type_t\fP enumeration contains all of the types from the \fI\%BSON Specification\fP\&. It can be used to determine the type of a field at runtime. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init_find (&iter, doc, "foo") && - (BSON_TYPE_INT32 == bson_iter_type (&iter))) { - printf ("\(aqfoo\(aq is an int32.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_unichar_t -.sp -Unicode Character Abstraction -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef uint32_t bson_unichar_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -\fBbson_unichar_t\fP provides an abstraction on a single unicode character. It is the 32\-bit representation of a character. As UTF\-8 can contain multi\-byte characters, this should be used when iterating through UTF\-8 text. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -static void -print_each_char (const char *str) -{ - bson_unichar_t c; - - for (; *str; str = bson_utf8_next_char (str)) { - c = bson_utf8_get_char (str); - printf ("The numberic value is %u.\en", (unsigned) c); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_value_t -.sp -BSON Boxed Container Type -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_value_t { - bson_type_t value_type; - union { - bson_oid_t v_oid; - int64_t v_int64; - int32_t v_int32; - int8_t v_int8; - double v_double; - bool v_bool; - int64_t v_datetime; - struct { - uint32_t timestamp; - uint32_t increment; - } v_timestamp; - struct { - uint32_t len; - char *str; - } v_utf8; - struct { - uint32_t data_len; - uint8_t *data; - } v_doc; - struct { - uint32_t data_len; - uint8_t *data; - bson_subtype_t subtype; - } v_binary; - struct { - char *regex; - char *options; - } v_regex; - struct { - char *collection; - uint32_t collection_len; - bson_oid_t oid; - } v_dbpointer; - struct { - uint32_t code_len; - char *code; - } v_code; - struct { - uint32_t code_len; - char *code; - uint32_t scope_len; - uint8_t *scope_data; - } v_codewscope; - struct { - uint32_t len; - char *symbol; - } v_symbol; - } value; -} bson_value_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_value_t\fP structure is a boxed type for encapsulating a runtime determined type. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_value_t *value; - -value = bson_iter_value (&iter); - -if (value\->value_type == BSON_TYPE_INT32) { - printf ("%d\en", value\->value.v_int32); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_visitor_t -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - /* run before / after descending into a document */ - bool (*visit_before) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_after) (const bson_iter_t *iter, const char *key, void *data); - /* corrupt BSON, or unsupported type and visit_unsupported_type not set */ - void (*visit_corrupt) (const bson_iter_t *iter, void *data); - /* normal bson field callbacks */ - bool (*visit_double) (const bson_iter_t *iter, - const char *key, - double v_double, - void *data); - bool (*visit_utf8) (const bson_iter_t *iter, - const char *key, - size_t v_utf8_len, - const char *v_utf8, - void *data); - bool (*visit_document) (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data); - bool (*visit_array) (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data); - bool (*visit_binary) (const bson_iter_t *iter, - const char *key, - bson_subtype_t v_subtype, - size_t v_binary_len, - const uint8_t *v_binary, - void *data); - /* normal field with deprecated "Undefined" BSON type */ - bool (*visit_undefined) (const bson_iter_t *iter, - const char *key, - void *data); - bool (*visit_oid) (const bson_iter_t *iter, - const char *key, - const bson_oid_t *v_oid, - void *data); - bool (*visit_bool) (const bson_iter_t *iter, - const char *key, - bool v_bool, - void *data); - bool (*visit_date_time) (const bson_iter_t *iter, - const char *key, - int64_t msec_since_epoch, - void *data); - bool (*visit_null) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_regex) (const bson_iter_t *iter, - const char *key, - const char *v_regex, - const char *v_options, - void *data); - bool (*visit_dbpointer) (const bson_iter_t *iter, - const char *key, - size_t v_collection_len, - const char *v_collection, - const bson_oid_t *v_oid, - void *data); - bool (*visit_code) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - void *data); - bool (*visit_symbol) (const bson_iter_t *iter, - const char *key, - size_t v_symbol_len, - const char *v_symbol, - void *data); - bool (*visit_codewscope) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - const bson_t *v_scope, - void *data); - bool (*visit_int32) (const bson_iter_t *iter, - const char *key, - int32_t v_int32, - void *data); - bool (*visit_timestamp) (const bson_iter_t *iter, - const char *key, - uint32_t v_timestamp, - uint32_t v_increment, - void *data); - bool (*visit_int64) (const bson_iter_t *iter, - const char *key, - int64_t v_int64, - void *data); - bool (*visit_maxkey) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_minkey) (const bson_iter_t *iter, const char *key, void *data); - /* if set, called instead of visit_corrupt when an apparently valid BSON - * includes an unrecognized field type (reading future version of BSON) */ - void (*visit_unsupported_type) (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data); - bool (*visit_decimal128) (const bson_iter_t *iter, - const char *key, - const bson_decimal128_t *v_decimal128, - void *data); - - void *padding[7]; -} bson_visitor_t bson_visitor_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_visitor_t\fP structure provides a series of callbacks that can be called while iterating a BSON document. This may simplify the conversion of a \fBbson_t\fP to a higher level language structure. -.sp -If the optional callback \fBvisit_unsupported_type\fP is set, it is called instead of \fBvisit_corrupt\fP in the specific case of an unrecognized field type. (Parsing is aborted in either case.) Use this callback to report an error like "unrecognized type" instead of simply "corrupt BSON". This future\-proofs code that may use an older version of libbson to parse future BSON formats. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -static bool -my_visit_before (const bson_iter_t *iter, const char *key, void *data) -{ - int *count = (int *) data; - - (*count)++; - - /* returning true stops further iteration of the document */ - - return false; -} - -static void -count_fields (bson_t *doc) -{ - bson_visitor_t visitor = {0}; - bson_iter_t iter; - int count = 0; - - visitor.visit_before = my_visit_before; - - if (bson_iter_init (&iter, doc)) { - bson_iter_visit_all (&iter, &visitor, &count); - } - - printf ("Found %d fields.\en", count); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The example below demonstrates how to set your own callbacks to provide information about the location of corrupt or unsupported BSON document entries. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -typedef struct { - ssize_t *err_offset; -} my_state_t; - -static void -my_visit_corrupt (const bson_iter_t *iter, void *data) -{ - *(((my_state_t *) data)\->err_offset) = iter\->off; -} - -static void -my_visit_unsupported_type (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data) -{ - *(((my_state_t *) data)\->err_offset) = iter\->off; -} - -static void -find_error_location (bson_t *doc) -{ - bson_visitor_t visitors = {0}; - bson_iter_t iter; - my_state_t state; - ssize_t err_offset = \-1; - - visitors.visit_corrupt = my_visit_corrupt; - visitors.visit_unsupported_type = my_visit_unsupported_type; - /* provide additional visitors as needed based on your requirements */ - state.err_offset = &err_offset; - - if (!bson_iter_init (&iter, doc)) { - printf ("Could not initialize iterator!"); - exit (1); - } - - if (bson_iter_visit_all (&iter, &visitors, &state) || - err_offset != \-1) { - printf ("Found error at offset %d.\en", err_offset); - } else { - printf ("BSON document had no errors.\en"); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS bson_writer_t -.sp -Bulk BSON serialization Abstraction -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_writer_t bson_writer_t; - -bson_writer_t * -bson_writer_new (uint8_t **buf, - size_t *buflen, - size_t offset, - bson_realloc_func realloc_func, - void *realloc_func_ctx); -void -bson_writer_destroy (bson_writer_t *writer); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The \fBbson_writer_t\fP API provides an abstraction for serializing many BSON documents to a single memory region. The memory region may be dynamically allocated and re\-allocated as more memory is demanded. This can be useful when building network packets from a high\-level language. For example, you can serialize a Python Dictionary directly to a single buffer destined for a TCP packet. -.SS Example -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int -main (int argc, char *argv[]) -{ - bson_writer_t *writer; - uint8_t *buf = NULL; - size_t buflen = 0; - bson_t *doc; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < 1000; i++) { - bson_writer_begin (writer, &doc); - BSON_APPEND_INT32 (&doc, "i", i); - bson_writer_end (writer); - } - - bson_writer_destroy (writer); - - bson_free (buf); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS System Clock -.sp -BSON Clock Abstraction -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -bson_get_monotonic_time (void); -int -bson_gettimeofday (struct timeval *tv, - struct timezone *tz); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The clock abstraction in Libbson provides a cross\-platform way to handle timeouts within the BSON library. It abstracts the differences in implementations of \fBgettimeofday()\fP as well as providing a monotonic (incrementing only) clock in microseconds. -.SS Memory Management -.sp -BSON Memory Abstraction. -.SS Description -.sp -Libbson contains a lightweight memory abstraction to make portability to new platforms easier. Additionally, it helps us integrate with interesting higher\-level languages. One caveat, however, is that Libbson is not designed to deal with Out of Memory (OOM) situations. Doing so requires extreme diligence throughout the application stack that has rarely been implemented correctly. This may change in the future. As it stands now, Libbson will \fBabort()\fP under OOM situations. -.sp -To aid in language binding integration, Libbson allows for setting a custom memory allocator via \fBbson_mem_set_vtable()\fP\&. This allocation may be reversed via \fBbson_mem_restore_vtable()\fP\&. -.SS Libbson Versioning -.sp -Versioning Macros and Functions -.SS Macros -.sp -The following preprocessor macros can be used to perform various checks based on the version of the library you are compiling against. This may be useful if you only want to enable a feature on a certain version of the library. -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_CHECK_VERSION(major, minor, micro) - -#define BSON_MAJOR_VERSION (1) -#define BSON_MINOR_VERSION (4) -#define BSON_MICRO_VERSION (1) -#define BSON_VERSION_S "1.4.1" - -#define BSON_VERSION_HEX \e - (BSON_MAJOR_VERSION << 24 | BSON_MINOR_VERSION << 16 | \e - BSON_MICRO_VERSION << 8) -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Only compile a block on Libbson 1.1.0 and newer. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#if BSON_CHECK_VERSION(1, 1, 0) -static void -do_something (void) -{ -} -#endif -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reinit.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reinit.3 deleted file mode 100644 index 5742945..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reinit.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_REINIT" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reinit \- bson_reinit() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_reinit (bson_t *b); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBb\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_reinit()\fP function shall be equivalent to calling \fBbson_destroy()\fP and \fBbson_init()\fP\&. -.sp -However, if the \fBbson_t\fP structure contains a malloc()\(aqd buffer, it may be reused. To be certain that any buffer is freed, always call \fBbson_destroy\fP on any \fBbson_t\fP structure, whether initialized or reinitialized, after its final use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reserve_buffer.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reserve_buffer.3 deleted file mode 100644 index c1798d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_reserve_buffer.3 +++ /dev/null @@ -1,146 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_RESERVE_BUFFER" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_reserve_buffer \- bson_reserve_buffer() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint8_t * -bson_reserve_buffer (bson_t *bson, uint32_t size); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: An initialized \fBbson_t\fP\&. -.IP \(bu 2 -\fBsize\fP: The length in bytes of the new buffer. -.UNINDENT -.SH DESCRIPTION -.sp -Grow the internal buffer of \fBbson\fP to \fBsize\fP and set the document length to \fBsize\fP\&. Useful for eliminating copies when reading BSON bytes from a stream. -.sp -First, initialize \fBbson\fP with \fBbson_init\fP or \fBbson_new\fP, then call this function. After it returns, the length of \fBbson\fP is set to \fBsize\fP but its contents are uninitialized memory: you must fill the contents with a BSON document of the correct length before any other operations. -.sp -The document must be freed with \fBbson_destroy\fP\&. -.SH RETURNS -.sp -A pointer to the internal buffer, which is at least \fBsize\fP bytes, or NULL if the space could not be allocated. -.SH EXAMPLE -.sp -Use \fBbson_reserve_buffer\fP to write a function that takes a \fBbson_t\fP pointer and reads a file into it directly: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -bool -read_into (bson_t *bson, FILE *fp) -{ - uint8_t *buffer; - long size; - - if (fseek (fp, 0L, SEEK_END) < 0) { - perror ("Couldn\(aqt get file size"); - return 1; - } - - size = ftell (fp); - if (size == EOF) { - perror ("Couldn\(aqt get file size"); - return 1; - } - - if (size > INT32_MAX) { - fprintf (stderr, "File too large\en"); - return 1; - } - - /* reserve buffer space \- bson is temporarily invalid */ - buffer = bson_reserve_buffer (bson, (uint32_t) size); - if (!buffer) { - fprintf (stderr, "Couldn\(aqt reserve %ld bytes", size); - return false; - } - - /* read file directly into the buffer */ - rewind (fp); - if (fread ((void *) buffer, 1, (size_t) size, fp) < (size_t) size) { - perror ("Couldn\(aqt read file"); - return false; - } - - return true; -} - -int -main () -{ - FILE *fp; - char *json; - - /* stack\-allocated, initialized bson_t */ - bson_t bson = BSON_INITIALIZER; - - if (!(fp = fopen ("document.bson", "rb"))) { - perror ("Couldn\(aqt read file"); - return 1; - } - - read_into (&bson, fp); - fclose (fp); - - json = bson_as_canonical_extended_json (&bson, NULL); - printf ("%s\en", json); - - bson_free (json); - bson_destroy (&bson); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_set_error.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_set_error.3 deleted file mode 100644 index d107dee..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_set_error.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_SET_ERROR" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_set_error \- bson_set_error() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_set_error ( - bson_error_t *error, uint32_t domain, uint32_t code, const char *format, ...) - BSON_GNUC_PRINTF (4, 5); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBerror\fP: A \fBbson_error_t\fP\&. -.IP \(bu 2 -\fBdomain\fP: A \fBuint32_t\fP\&. -.IP \(bu 2 -\fBcode\fP: A \fBuint32_t\fP\&. -.IP \(bu 2 -\fBformat\fP: A \fBprintf()\fP style format string. -.UNINDENT -.SH DESCRIPTION -.sp -This is a helper function to set the parameters of a \fBbson_error_t\fP\&. It handles the case where \fBerror\fP is NULL by doing nothing. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_sized_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_sized_new.3 deleted file mode 100644 index f76eb24..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_sized_new.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_SIZED_NEW" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_sized_new \- bson_sized_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t * -bson_sized_new (size_t size); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsize\fP: The size to pre\-allocate for the underlying buffer. -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_sized_new()\fP function shall create a new \fBbson_t\fP on the heap with a preallocated buffer. This is useful if you have a good idea of the size of the resulting document. -.SH RETURNS -.sp -A newly allocated \fBbson_t\fP that should be freed with \fBbson_destroy()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_snprintf.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_snprintf.3 deleted file mode 100644 index 024ddda..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_snprintf.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_SNPRINTF" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_snprintf \- bson_snprintf() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_snprintf (char *str, size_t size, const char *format, ...) - BSON_GNUC_PRINTF (3, 4); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstr\fP: The destination buffer. -.IP \(bu 2 -\fBsize\fP: The size of \fBstr\fP\&. -.IP \(bu 2 -\fBformat\fP: A printf style format string. -.UNINDENT -.SH DESCRIPTION -.sp -This is a portable wrapper around \fBsnprintf()\fP\&. It also enforces a trailing \fB\e0\fP in the resulting string. -.SH RETURNS -.sp -The number of bytes written to \fBstr\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_steal.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_steal.3 deleted file mode 100644 index 3ee4117..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_steal.3 +++ /dev/null @@ -1,119 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STEAL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_steal \- bson_steal() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_steal (bson_t *dst, bson_t *src); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdst\fP: An uninitialized \fBbson_t\fP\&. -.IP \(bu 2 -\fBsrc\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Efficiently transfer the contents of \fBsrc\fP to \fBdst\fP and destroy \fBsrc\fP\&. -.sp -Before calling this function, \fBsrc\fP must be initialized and \fBdst\fP must be uninitialized. After this function returns successfully, \fBsrc\fP is destroyed, and \fBdst\fP is initialized and must be freed with \fBbson_destroy\fP\&. -.sp -For example, if you have a higher\-level structure that wraps a \fBbson_t\fP, use \fBbson_steal\fP to transfer BSON data into it: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef struct { - bson_t bson; -} bson_wrapper_t; - - -bson_wrapper_t * -wrap_bson (bson_t *b) -{ - bson_wrapper_t *wrapper = bson_malloc (sizeof (bson_wrapper_t)); - - if (bson_steal (&wrapper\->bson, b)) { - return wrapper; - } - - bson_free (wrapper); - return NULL; -} - - -void -bson_wrapper_destroy (bson_wrapper_t *wrapper) -{ - bson_destroy (&wrapper\->bson); - bson_free (wrapper); -} - - -int -main (int argc, char *argv[]) -{ - bson_t bson = BSON_INITIALIZER; - bson_wrapper_t *wrapper; - - BSON_APPEND_UTF8 (&bson, "key", "value"); - - /* now "bson" is destroyed */ - wrapper = wrap_bson (&bson); - - /* clean up */ - bson_wrapper_destroy (wrapper); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See also \fBbson_destroy_with_steal\fP, a lower\-level function that returns the raw contents of a \fBbson_t\fP\&. -.SH RETURNS -.sp -Returns \fBtrue\fP if \fBsrc\fP was successfully moved to \fBdst\fP, \fBfalse\fP if \fBsrc\fP is invalid, or was statically initialized, or another error occurred. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strcasecmp.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strcasecmp.3 deleted file mode 100644 index 3da78d4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strcasecmp.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRCASECMP" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strcasecmp \- bson_strcasecmp() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_strcasecmp (const char *s1, const char *s2); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBs1\fP: A string. -.IP \(bu 2 -\fBs2\fP: A string. -.UNINDENT -.SH DESCRIPTION -.sp -A portable version of \fBstrcasecmp()\fP\&. -.SH RETURNS -.sp -Returns a negative integer if s1 sorts lexicographically before s2, a positive -integer if it sorts after, or 0 if they are equivalent, after translating both -strings to lower case. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup.3 deleted file mode 100644 index ad9e3b7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRDUP" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strdup \- bson_strdup() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_strdup (const char *str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstr\fP: A string. -.UNINDENT -.SH DESCRIPTION -.sp -Copies \fBstr\fP into a new string. If \fBstr\fP is NULL, then NULL is returned. -.SH RETURNS -.sp -A newly allocated string that should be freed with bson_free(). -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup_printf.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup_printf.3 deleted file mode 100644 index bb36af6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdup_printf.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRDUP_PRINTF" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strdup_printf \- bson_strdup_printf() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_strdup_printf (const char *format, ...) BSON_GNUC_PRINTF (1, 2); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBformat\fP: A printf style format string. -.UNINDENT -.SH DESCRIPTION -.sp -This function performs a printf style format but into a newly allocated string. -.SH RETURNS -.sp -A newly allocated string that should be freed with bson_free(). -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdupv_printf.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdupv_printf.3 deleted file mode 100644 index 5b8e60a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strdupv_printf.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRDUPV_PRINTF" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strdupv_printf \- bson_strdupv_printf() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_strdupv_printf (const char *format, va_list args) BSON_GNUC_PRINTF (1, 0); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBformat\fP: A printf style format string. -.IP \(bu 2 -\fBargs\fP: A va_list. -.UNINDENT -.SH DESCRIPTION -.sp -This function is like \fBbson_strdup_printf()\fP except takes a va_list of parameters. -.SH RETURNS -.sp -A newly allocated string that should be freed with bson_free(). -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_streaming_bson.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_streaming_bson.3 deleted file mode 100644 index 21c149a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_streaming_bson.3 +++ /dev/null @@ -1,134 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STREAMING_BSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_streaming_bson \- Streaming BSON -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -\fBbson_reader_t\fP provides a streaming reader which can be initialized with a filedescriptor or memory region. \fBbson_writer_t\fP provides a streaming writer which can be initialized with a memory region. (Streaming BSON to a file descriptor is not yet supported.) -.SH READING FROM A BSON STREAM -.sp -\fBbson_reader_t\fP provides a convenient API to read sequential BSON documents from a file\-descriptor or memory buffer. The \fBbson_reader_read()\fP function will read forward in the underlying stream and return a \fBbson_t\fP that can be inspected and iterated upon. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *doc; - bson_error_t error; - bool eof; - - reader = bson_reader_new_from_file ("mycollection.bson", &error); - - if (!reader) { - fprintf (stderr, "Failed to open file.\en"); - return 1; - } - - while ((doc = bson_reader_read (reader, &eof))) { - char *str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\en", str); - bson_free (str); - } - - if (!eof) { - fprintf (stderr, - "corrupted bson document found at %u\en", - (unsigned) bson_reader_tell (reader)); - } - - bson_reader_destroy (reader); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See \fBbson_reader_new_from_fd()\fP, \fBbson_reader_new_from_file()\fP, and \fBbson_reader_new_from_data()\fP for more information. -.SH WRITING A SEQUENCE OF BSON DOCUMENTS -.sp -\fBbson_writer_t\fP provides a convenient API to write a sequence of BSON documents to a memory buffer that can grow with \fBrealloc()\fP\&. The \fBbson_writer_begin()\fP and \fBbson_writer_end()\fP functions will manage the underlying buffer while building the sequence of documents. -.sp -This could also be useful if you want to write to a network packet while serializing the documents from a higher level language, (but do so just after the packets header). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - bson_writer_t *writer; - bson_t *doc; - uint8_t *buf = NULL; - size_t buflen = 0; - bool r; - int i; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < 10000; i++) { - r = bson_writer_begin (writer, &doc); - assert (r); - - r = BSON_APPEND_INT32 (doc, "i", i); - assert (r); - - bson_writer_end (writer); - } - - bson_free (buf); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See \fBbson_writer_new()\fP for more information. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strerror_r.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strerror_r.3 deleted file mode 100644 index b2c3dad..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strerror_r.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRERROR_R" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strerror_r \- bson_strerror_r() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_strerror_r (int err_code, char *buf, size_t buflen); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBerr_code\fP: An errno. -.IP \(bu 2 -\fBbuf\fP: A location to store the string. -.IP \(bu 2 -\fBbuflen\fP: The size of \fBbuf\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This is a portability wrapper around \fBstrerror()\fP\&. -.SH RETURNS -.sp -The passed in \fBbuf\fP parameter or an internal string. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strfreev.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strfreev.3 deleted file mode 100644 index 85290b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strfreev.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRFREEV" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strfreev \- bson_strfreev() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_strfreev (char **strv); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstrv\fP: A NULL\-terminated array of strings to free, including the array. -.UNINDENT -.SH DESCRIPTION -.sp -This will free each string in a NULL\-terminated array of strings and then the array itself. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append.3 deleted file mode 100644 index 4aff85e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_APPEND" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_append \- bson_string_append() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_string_append (bson_string_t *string, const char *str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A \fBbson_string_t\fP\&. -.IP \(bu 2 -\fBstr\fP: A string. -.UNINDENT -.SH DESCRIPTION -.sp -Appends the ASCII or UTF\-8 encoded string \fBstr\fP to \fBstring\fP\&. This is not suitable for embedding NULLs in strings. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_c.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_c.3 deleted file mode 100644 index 168e411..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_c.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_APPEND_C" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_append_c \- bson_string_append_c() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_string_append_c (bson_string_t *string, char str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A \fBbson_string_t\fP\&. -.IP \(bu 2 -\fBstr\fP: An ASCII char. -.UNINDENT -.SH DESCRIPTION -.sp -Appends \fBc\fP to the string builder \fBstring\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_printf.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_printf.3 deleted file mode 100644 index 55cc478..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_printf.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_APPEND_PRINTF" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_append_printf \- bson_string_append_printf() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_string_append_printf (bson_string_t *string, const char *format, ...) - BSON_GNUC_PRINTF (2, 3); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A \fBbson_string_t\fP\&. -.IP \(bu 2 -\fBformat\fP: A printf style format string. -.UNINDENT -.SH DESCRIPTION -.sp -Like bson_string_append() but formats a printf style string and then appends that to \fBstring\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_unichar.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_unichar.3 deleted file mode 100644 index e3861e5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_append_unichar.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_APPEND_UNICHAR" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_append_unichar \- bson_string_append_unichar() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_string_append_unichar (bson_string_t *string, bson_unichar_t unichar); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A \fBbson_string_t\fP\&. -.IP \(bu 2 -\fBunichar\fP: A \fBbson_unichar_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Appends a unicode character to string. The character will be encoded into its multi\-byte UTF\-8 representation. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_free.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_free.3 deleted file mode 100644 index e0f6fec..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_free.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_FREE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_free \- bson_string_free() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_string_free (bson_string_t *string, bool free_segment); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A \fBbson_string_t\fP\&. -.IP \(bu 2 -\fBfree_segment\fP: A bool indicating if \fBstr\->str\fP should be returned. -.UNINDENT -.SH DESCRIPTION -.sp -Frees the bson_string_t structure and optionally the string itself. -.SH RETURNS -.sp -\fBstr\->str\fP if \fBfree_segment\fP is true, otherwise NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_new.3 deleted file mode 100644 index c5e1b61..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_new.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_NEW" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_new \- bson_string_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_string_t * -bson_string_new (const char *str); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstr\fP: A string to be copied or NULL. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new string builder, which uses power\-of\-two growth of buffers. Use the various bson_string_append*() functions to append to the string. -.SH RETURNS -.sp -A newly allocated bson_string_t that should be freed with bson_string_free() when no longer in use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_t.3 deleted file mode 100644 index 53a60b8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_t.3 +++ /dev/null @@ -1,86 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_t \- bson_string_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -String Building Abstraction -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - char *str; - uint32_t len; - uint32_t alloc; -} bson_string_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -\fBbson_string_t\fP is an abstraction for building strings. As chunks are added to the string, allocations are performed in powers of two. -.sp -This API is useful if you need to build UTF\-8 encoded strings. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_string_t *str; - -str = bson_string_new (NULL); -bson_string_append_printf (str, "%d %s %f\en", 0, "some string", 0.123); -printf ("%s\en", str\->str); - -bson_string_free (str, true); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -You can call \fBbson_string_free()\fP with \fBfalse\fP if you would like to take ownership of \fBstr\->str\fP\&. Some APIs that do this might call \fBreturn bson_string_free (str, false);\fP after building the string. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_truncate.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_truncate.3 deleted file mode 100644 index 8e576cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_string_truncate.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRING_TRUNCATE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_string_truncate \- bson_string_truncate() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_string_truncate (bson_string_t *string, uint32_t len); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstring\fP: A \fBbson_string_t\fP\&. -.IP \(bu 2 -\fBlen\fP: The new length of the string, excluding the trailing \fB\e0\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Truncates the string so that it is \fBlen\fP bytes in length. This must be smaller or equal to the current length of the string. -.sp -A \fB\e0\fP byte will be placed where the end of the string occurs. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strncpy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strncpy.3 deleted file mode 100644 index 8d32f72..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strncpy.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRNCPY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strncpy \- bson_strncpy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_strncpy (char *dst, const char *src, size_t size); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdst\fP: The destination buffer. -.IP \(bu 2 -\fBsrc\fP: The src buffer. -.IP \(bu 2 -\fBsize\fP: The number of bytes to copy into dst, which must be at least that size. -.UNINDENT -.SH DESCRIPTION -.sp -Copies up to \fBsize\fP bytes from \fBsrc\fP into \fBdst\fP\&. \fBdst\fP must be at least \fBsize\fP bytes in size. A trailing \fB\e0\fP is always set. -.sp -Does nothing if \fBsize\fP is zero. -.sp -\fBbson_strncpy\fP matches the behavior of the C11 standard \fBstrncpy_s\fP, rather than \fBstrncpy\fP\&. This means that \fBbson_strncpy\fP always writes a null terminator to \fBdst\fP, even if \fBdst\fP is too short to fit the entire string from \fBsrc\fP\&. If there is additional space left in \fBdst\fP after copying \fBsrc\fP, \fBbson_strncpy\fP does not fill the remaining space with null characters. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strndup.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strndup.3 deleted file mode 100644 index 200a249..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strndup.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRNDUP" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strndup \- bson_strndup() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_strndup (const char *str, size_t n_bytes); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstr\fP: A string to copy. -.IP \(bu 2 -\fBn_bytes\fP: A size_t. -.UNINDENT -.SH DESCRIPTION -.sp -Allocates a new string and copies up to \fBn_bytes\fP from \fBstr\fP into it. A trailing \fB\e0\fP is always set. -.SH RETURNS -.sp -A newly allocated string that should be freed with bson_free(). -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strnlen.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strnlen.3 deleted file mode 100644 index 143f5a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_strnlen.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_STRNLEN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_strnlen \- bson_strnlen() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -size_t -bson_strnlen (const char *s, size_t maxlen); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBs\fP: A string. -.IP \(bu 2 -\fBmaxlen\fP: The maximum size of string to check. -.UNINDENT -.SH DESCRIPTION -.sp -A portable version of \fBstrnlen()\fP\&. -.SH RETURNS -.sp -The length of \fBs\fP in bytes or \fBmaxlen\fP if no \fB\e0\fP was found. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_subtype_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_subtype_t.3 deleted file mode 100644 index adb8316..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_subtype_t.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_SUBTYPE_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_subtype_t \- bson_subtype_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Binary Field Subtype -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - - -typedef enum { - BSON_SUBTYPE_BINARY = 0x00, - BSON_SUBTYPE_FUNCTION = 0x01, - BSON_SUBTYPE_BINARY_DEPRECATED = 0x02, - BSON_SUBTYPE_UUID_DEPRECATED = 0x03, - BSON_SUBTYPE_UUID = 0x04, - BSON_SUBTYPE_MD5 = 0x05, - BSON_SUBTYPE_USER = 0x80, -} bson_subtype_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -This enumeration contains the various subtypes that may be used in a binary field. See \fI\%http://bsonspec.org\fP for more information. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t doc = BSON_INITIALIZER; - -BSON_APPEND_BINARY (&doc, "binary", BSON_SUBTYPE_BINARY, data, data_len); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_t.3 deleted file mode 100644 index 1dadf62..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_t.3 +++ /dev/null @@ -1,197 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_t \- bson_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Document Abstraction -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -/** - * bson_empty: - * @b: a bson_t. - * - * Checks to see if @b is an empty BSON document. An empty BSON document is - * a 5 byte document which contains the length (4 bytes) and a single NUL - * byte indicating end of fields. - */ -#define bson_empty(b) /* ... */ - -/** - * bson_empty0: - * - * Like bson_empty() but treats NULL the same as an empty bson_t document. - */ -#define bson_empty0(b) /* ... */ - -/** - * bson_clear: - * - * Easily free a bson document and set it to NULL. Use like: - * - * bson_t *doc = bson_new(); - * bson_clear (&doc); - * BSON_ASSERT (doc == NULL); - */ -#define bson_clear(bptr) /* ... */ - -/** - * BSON_MAX_SIZE: - * - * The maximum size in bytes of a BSON document. - */ -#define BSON_MAX_SIZE /* ... */ - -#define BSON_APPEND_ARRAY(b, key, val) \e - bson_append_array (b, key, (int) strlen (key), val) - -#define BSON_APPEND_ARRAY_BEGIN(b, key, child) \e - bson_append_array_begin (b, key, (int) strlen (key), child) - -#define BSON_APPEND_BINARY(b, key, subtype, val, len) \e - bson_append_binary (b, key, (int) strlen (key), subtype, val, len) - -#define BSON_APPEND_BOOL(b, key, val) \e - bson_append_bool (b, key, (int) strlen (key), val) - -#define BSON_APPEND_CODE(b, key, val) \e - bson_append_code (b, key, (int) strlen (key), val) - -#define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \e - bson_append_code_with_scope (b, key, (int) strlen (key), val, scope) - -#define BSON_APPEND_DBPOINTER(b, key, coll, oid) \e - bson_append_dbpointer (b, key, (int) strlen (key), coll, oid) - -#define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \e - bson_append_document_begin (b, key, (int) strlen (key), child) - -#define BSON_APPEND_DOUBLE(b, key, val) \e - bson_append_double (b, key, (int) strlen (key), val) - -#define BSON_APPEND_DOCUMENT(b, key, val) \e - bson_append_document (b, key, (int) strlen (key), val) - -#define BSON_APPEND_INT32(b, key, val) \e - bson_append_int32 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_INT64(b, key, val) \e - bson_append_int64 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_MINKEY(b, key) \e - bson_append_minkey (b, key, (int) strlen (key)) - -#define BSON_APPEND_DECIMAL128(b, key, val) \e - bson_append_decimal128 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_MAXKEY(b, key) \e - bson_append_maxkey (b, key, (int) strlen (key)) - -#define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key)) - -#define BSON_APPEND_OID(b, key, val) \e - bson_append_oid (b, key, (int) strlen (key), val) - -#define BSON_APPEND_REGEX(b, key, val, opt) \e - bson_append_regex (b, key, (int) strlen (key), val, opt) - -#define BSON_APPEND_UTF8(b, key, val) \e - bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val)) - -#define BSON_APPEND_SYMBOL(b, key, val) \e - bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val)) - -#define BSON_APPEND_TIME_T(b, key, val) \e - bson_append_time_t (b, key, (int) strlen (key), val) - -#define BSON_APPEND_TIMEVAL(b, key, val) \e - bson_append_timeval (b, key, (int) strlen (key), val) - -#define BSON_APPEND_DATE_TIME(b, key, val) \e - bson_append_date_time (b, key, (int) strlen (key), val) - -#define BSON_APPEND_TIMESTAMP(b, key, val, inc) \e - bson_append_timestamp (b, key, (int) strlen (key), val, inc) - -#define BSON_APPEND_UNDEFINED(b, key) \e - bson_append_undefined (b, key, (int) strlen (key)) - -#define BSON_APPEND_VALUE(b, key, val) \e - bson_append_value (b, key, (int) strlen (key), (val)) - -BSON_ALIGNED_BEGIN (128) -typedef struct { - uint32_t flags; /* Internal flags for the bson_t. */ - uint32_t len; /* Length of BSON data. */ - uint8_t padding[120]; /* Padding for stack allocation. */ -} bson_t BSON_ALIGNED_END (128); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_t\fP structure represents a BSON document. This structure manages the underlying BSON encoded buffer. For mutable documents, it can append new data to the document. -.SH PERFORMANCE NOTES -.sp -The \fBbson_t\fP structure attempts to use an inline allocation within the structure to speed up performance of small documents. When this internal buffer has been exhausted, a heap allocated buffer will be dynamically allocated. Therefore, it is essential to call \fBbson_destroy()\fP on allocated documents. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -static void -create_on_heap (void) -{ - bson_t *b = bson_new (); - - BSON_APPEND_INT32 (b, "foo", 123); - BSON_APPEND_UTF8 (b, "bar", "foo"); - BSON_APPEND_DOUBLE (b, "baz", 1.23f); - - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_threading.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_threading.3 deleted file mode 100644 index c2a916c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_threading.3 +++ /dev/null @@ -1,42 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_THREADING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_threading \- Threading -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Libbson\(aqs data structures are \fINOT\fP thread\-safe. You are responsible for accessing and mutating these structures from one thread at a time. -.sp -Libbson requires POSIX threads (pthreads) on all UNIX\-like platforms. On Windows, the native threading interface is used. Libbson uses your system\(aqs threading library to safely generate unique ObjectIds, and to provide a fallback implementation for atomic operations on platforms without built\-in atomics. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_tutorial.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_tutorial.3 deleted file mode 100644 index 31c485b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_tutorial.3 +++ /dev/null @@ -1,615 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_TUTORIAL" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_tutorial \- Tutorial -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH USING LIBBSON IN YOUR C PROGRAM -.SS Include bson.h -.sp -All libbson\(aqs functions and types are available in one header file. Simply include \fBbson.h\fP: -hello_bson.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, const char **argv) -{ - bson_t *b; - char *j; - - b = BCON_NEW ("hello", BCON_UTF8 ("bson!")); - j = bson_as_canonical_extended_json (b, NULL); - printf ("%s\en", j); - - bson_free (j); - bson_destroy (b); - - return 0; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SS CMake -.sp -The libbson installation includes a \fI\%CMake config\-file package\fP, so you can use CMake\(aqs \fI\%find_package\fP command to find libbson\(aqs header and library paths and link to libbson: -CMakeLists.txt.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Specify the minimum version you require. -find_package (libbson\-1.0 1.7 REQUIRED) - -message ("\-\- libbson found version \e"${BSON_VERSION}\e"") -message ("\-\- libbson include path \e"${BSON_INCLUDE_DIRS}\e"") -message ("\-\- libbson libraries \e"${BSON_LIBRARIES}\e"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_DEFINITIONS}) - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -By default, libbson is dynamically linked. You can use libbson as a static library instead: Use the included \fBlibbson\-static\-1.0\fP config\-file package and (on Unix) link to \fBpthread\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Specify the minimum version you require. -find_package (libbson\-static\-1.0 1.7 REQUIRED) - -message ("\-\- libbson\-static found version \e"${BSON_STATIC_VERSION}\e"") -message ("\-\- libbson\-static include path \e"${BSON_STATIC_INCLUDE_DIRS}\e"") -message ("\-\- libbson\-static libraries \e"${BSON_STATIC_LIBRARIES}\e"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_STATIC_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_STATIC_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_STATIC_DEFINITIONS}) - -.ft P -.fi -.UNINDENT -.UNINDENT -.SS pkg\-config -.sp -If you\(aqre not using CMake, use \fI\%pkg\-config\fP on the command line to set header and library paths: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -gcc \-o hello_bson hello_bson.c $(pkg\-config \-\-libs \-\-cflags libbson\-1.0) - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Or to statically link to libbson: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -gcc \-o hello_bson hello_bson.c $(pkg\-config \-\-libs \-\-cflags libbson\-static\-1.0) - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH CREATING A BSON DOCUMENT -.SS The bson_t structure -.sp -BSON documents are created using the \fBbson_t\fP structure. This structure encapsulates the necessary logic for encoding using the \fI\%BSON Specification\fP\&. At the core, \fBbson_t\fP is a buffer manager and set of encoding routines. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -BSON documents can live on the stack or the heap based on the performance needs or preference of the consumer. -.UNINDENT -.UNINDENT -.sp -Let\(aqs start by creating a new BSON document on the stack. Whenever using libbson, make sure you \fB#include \fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t b; - -bson_init (&b); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This creates an empty document. In JSON, this would be the same as \fB{}\fP\&. -.sp -We can now proceed to adding items to the BSON document. A variety of functions prefixed with \fBbson_append_\fP can be used based on the type of field you want to append. Let\(aqs append a UTF\-8 encoded string. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_append_utf8 (&b, "key", \-1, "value", \-1); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Notice the two \fB\-1\fP parameters. The first indicates that the length of \fBkey\fP in bytes should be determined with \fBstrlen()\fP\&. Alternatively, we could have passed the number \fB3\fP\&. The same goes for the second \fB\-1\fP, but for \fBvalue\fP\&. -.sp -Libbson provides macros to make this less tedious when using string literals. The following two appends are identical. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_append_utf8 (&b, "key", \-1, "value", \-1); -BSON_APPEND_UTF8 (&b, "key", "value"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now let\(aqs take a look at an example that adds a few different field types to a BSON document. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t b = BSON_INITIALIZER; - -BSON_APPEND_INT32 (&b, "a", 1); -BSON_APPEND_UTF8 (&b, "hello", "world"); -BSON_APPEND_BOOL (&b, "bool", true); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Notice that we omitted the call to \fBbson_init()\fP\&. By specifying \fBBSON_INITIALIZER\fP we can remove the need to initialize the structure to a base state. -.SS Sub\-Documents and Sub\-Arrays -.sp -To simplify the creation of sub\-documents and arrays, \fBbson_append_document_begin()\fP and \fBbson_append_array_begin()\fP exist. These can be used to build a sub\-document using the parent documents memory region as the destination buffer. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t parent; -bson_t child; -char *str; - -bson_init (&parent); -bson_append_document_begin (&parent, "foo", 3, &child); -bson_append_int32 (&child, "baz", 3, 1); -bson_append_document_end (&parent, &child); - -str = bson_as_canonical_extended_json (&parent, NULL); -printf ("%s\en", str); -bson_free (str); - -bson_destroy (&parent); -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "foo" : { "baz" : 1 } } -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Simplified BSON C Object Notation -.sp -Creating BSON documents by hand can be tedious and time consuming. BCON, or BSON C Object Notation, was added to allow for the creation of BSON documents in a format that looks closer to the destination format. -.sp -The following example shows the use of BCON. Notice that values for fields are wrapped in the \fBBCON_*\fP macros. These are required for the variadic processor to determine the parameter type. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *doc; - -doc = BCON_NEW ("foo", - "{", - "int", - BCON_INT32 (1), - "array", - "[", - BCON_INT32 (100), - "{", - "sub", - BCON_UTF8 ("value"), - "}", - "]", - "}"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Creates the following document -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "foo" : { "int" : 1, "array" : [ 100, { "sub" : "value" } ] } } -.ft P -.fi -.UNINDENT -.UNINDENT -.SH HANDLING ERRORS -.SS Description -.sp -Many libbson functions report errors by returning \fBNULL\fP or \-1 and filling out a \fBbson_error_t\fP structure with an error domain, error code, and message. -.INDENT 0.0 -.IP \(bu 2 -\fBerror.domain\fP names the subsystem that generated the error. -.IP \(bu 2 -\fBerror.code\fP is a domain\-specific error type. -.IP \(bu 2 -\fBerror.message\fP describes the error. -.UNINDENT -.sp -Some error codes overlap with others; always check both the domain and code to determine the type of error. -.TS -center; -|l|l|l|. -_ -T{ -\fBBSON_ERROR_JSON\fP -T} T{ -\fBBSON_JSON_ERROR_READ_CORRUPT_JS\fP -\fBBSON_JSON_ERROR_READ_INVALID_PARAM\fP -\fBBSON_JSON_ERROR_READ_CB_FAILURE\fP -T} T{ -\fBbson_json_reader_t\fP tried to parse invalid MongoDB Extended JSON. -Tried to parse a valid JSON document that is invalid as MongoDBExtended JSON. -An internal callback failure during JSON parsing. -T} -_ -T{ -\fBBSON_ERROR_READER\fP -T} T{ -\fBBSON_ERROR_READER_BADFD\fP -T} T{ -\fBbson_json_reader_new_from_file\fP could not open the file. -T} -_ -.TE -.SH OBJECTIDS -.sp -Libbson provides a simple way to generate ObjectIDs. It can be used in a single\-threaded or multi\-threaded manner depending on your requirements. -.sp -The \fBbson_oid_t\fP structure represents an \fBObjectID\fP in MongoDB. It is a 96\-bit identifier that includes various information about the system generating the OID. -.SS Composition -.INDENT 0.0 -.IP \(bu 2 -4 bytes : The UNIX timestamp in big\-endian format. -.IP \(bu 2 -3 bytes : A hash of the hostname. -.IP \(bu 2 -2 bytes : The \fBpid_t\fP of the current process. Alternatively the task\-id if configured. -.IP \(bu 2 -3 bytes : A 24\-bit monotonic counter incrementing from \fBrand()\fP in big\-endian. -.UNINDENT -.SS Sorting ObjectIDs -.sp -The typical way to sort in C is using \fBqsort()\fP\&. Therefore, Libbson provides a \fBqsort()\fP compatible callback function named \fBbson_oid_compare()\fP\&. It returns \fBless than 1\fP, \fBgreater than 1\fP, or \fB0\fP depending on the equality of two \fBbson_oid_t\fP structures. -.SS Comparing Object IDs -.sp -If you simply want to compare two \fBbson_oid_t\fP structures for equality, use \fBbson_oid_equal()\fP\&. -.SS Generating -.sp -To generate a \fBbson_oid_t\fP, you may use the following. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init (&oid, NULL); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Parsing ObjectID Strings -.sp -You can also parse a string containing a \fBbson_oid_t\fP\&. The input string \fIMUST\fP be 24 characters or more in length. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init_from_string (&oid, "123456789012345678901234"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If you need to parse may \fBbson_oid_t\fP in a tight loop and can guarantee the data is safe, you might consider using the inline variant. It will be inlined into your code and reduce the need for a foreign function call. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_oid_t oid; - -bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234"); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Hashing ObjectIDs -.sp -If you need to store items in a hashtable, you may want to use the \fBbson_oid_t\fP as the key. Libbson provides a hash function for just this purpose. It is based on DJB hash. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -unsigned hash; - -hash = bson_oid_hash (oid); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Fetching ObjectID Creation Time -.sp -You can easily fetch the time that a \fBbson_oid_t\fP was generated using \fBbson_oid_get_time_t()\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -time_t t; - -t = bson_oid_get_time_t (oid); -printf ("The OID was generated at %u\en", (unsigned) t); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARSING AND ITERATING BSON DOCUMENTS -.SS Parsing -.sp -BSON documents are lazily parsed as necessary. To begin parsing a BSON document, use one of the provided Libbson functions to create a new \fBbson_t\fP from existing data such as \fBbson_new_from_data()\fP\&. This will make a copy of the data so that additional mutations may occur to the BSON document. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -If you only want to parse a BSON document and have no need to mutate it, you may use \fBbson_init_static()\fP to avoid making a copy of the data. -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; - -b = bson_new_from_data (my_data, my_data_len); -if (!b) { - fprintf (stderr, "The specified length embedded in did not match " - "\en"); - return; -} - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Only two checks are performed when creating a new \fBbson_t\fP from an existing buffer. First, the document must begin with the buffer length, matching what was expected by the caller. Second, the document must end with the expected trailing \fB\e0\fP byte. -.sp -To parse the document further we use a \fBbson_iter_t\fP to iterate the elements within the document. Let\(aqs print all of the field names in the document. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_iter_t iter; - -if ((b = bson_new_from_data (my_data, my_data_len))) { - if (bson_iter_init (&iter, b)) { - while (bson_iter_next (&iter)) { - printf ("Found element key: \e"%s\e"\en", bson_iter_key (&iter)); - } - } - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Converting a document to JSON uses a \fBbson_iter_t\fP and \fBbson_visitor_t\fP to iterate all fields of a BSON document recursively and generate a UTF\-8 encoded JSON string. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -char *json; - -if ((b = bson_new_from_data (my_data, my_data_len))) { - if ((json = bson_as_canonical_extended_json (b, NULL))) { - printf ("%s\en", json); - bson_free (json); - } - bson_destroy (b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Recursing into Sub\-Documents -.sp -Libbson provides convenient sub\-iterators to dive down into a sub\-document or sub\-array. Below is an example that will dive into a sub\-document named "foo" and print it\(aqs field names. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; -bson_iter_t child; -char *json; - -if (bson_iter_init_find (&iter, doc, "foo") && - BSON_ITER_HOLDS_DOCUMENT (&iter) && bson_iter_recurse (&iter, &child)) { - while (bson_iter_next (&child)) { - printf ("Found sub\-key of \e"foo\e" named \e"%s\e"\en", - bson_iter_key (&child)); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Finding Fields using Dot Notation -.sp -Using the \fBbson_iter_recurse()\fP function exemplified above, \fBbson_iter_find_descendant()\fP can find a field for you using the MongoDB style path notation such as "foo.bar.0.baz". -.sp -Let\(aqs create a document like \fB{"foo": {"bar": [{"baz: 1}]}}\fP and locate the \fB"baz"\fP field. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_t *b; -bson_iter_t iter; -bson_iter_t baz; - -b = - BCON_NEW ("foo", "{", "bar", "[", "{", "baz", BCON_INT32 (1), "}", "]", "}"); - -if (bson_iter_init (&iter, b) && - bson_iter_find_descendant (&iter, "foo.bar.0.baz", &baz) && - BSON_ITER_HOLDS_INT32 (&baz)) { - printf ("baz = %d\en", bson_iter_int32 (&baz)); -} - -bson_destroy (b); -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Validating a BSON Document -.sp -If all you want to do is validate that a BSON document is valid, you can use \fBbson_validate()\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -size_t err_offset; - -if (!bson_validate (doc, BSON_VALIDATE_NONE, &err_offset)) { - fprintf (stderr, - "The document failed to validate at offset: %u\en", - (unsigned) err_offset); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See the \fBbson_validate()\fP documentation for more information and examples. -.SH UTF-8 -.SS Encoding -.sp -Libbson expects that you are always working with UTF\-8 encoded text. Anything else is \fBinvalid API use\fP\&. -.sp -If you should need to walk through UTF\-8 sequences, you can use the various UTF\-8 helper functions distributed with Libbson. -.SS Validating a UTF\-8 Sequence -.sp -To validate the string contained in \fBmy_string\fP, use the following. You may pass \fB\-1\fP for the string length if you know the string is NULL\-terminated. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -if (!bson_utf8_validate (my_string, \-1, false)) { - printf ("Validation failed.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If \fBmy_string\fP has NULL bytes within the string, you must provide the string length. Use the following format. Notice the \fBtrue\fP at the end indicating \fB\e0\fP is allowed. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -if (!bson_utf8_validate (my_string, my_string_len, true)) { - printf ("Validation failed.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -For more information see the API reference for \fBbson_utf8_validate()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_type_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_type_t.3 deleted file mode 100644 index 453b4b8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_type_t.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_TYPE_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_type_t \- bson_type_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Type Enumeration -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef enum { - BSON_TYPE_EOD = 0x00, - BSON_TYPE_DOUBLE = 0x01, - BSON_TYPE_UTF8 = 0x02, - BSON_TYPE_DOCUMENT = 0x03, - BSON_TYPE_ARRAY = 0x04, - BSON_TYPE_BINARY = 0x05, - BSON_TYPE_UNDEFINED = 0x06, - BSON_TYPE_OID = 0x07, - BSON_TYPE_BOOL = 0x08, - BSON_TYPE_DATE_TIME = 0x09, - BSON_TYPE_NULL = 0x0A, - BSON_TYPE_REGEX = 0x0B, - BSON_TYPE_DBPOINTER = 0x0C, - BSON_TYPE_CODE = 0x0D, - BSON_TYPE_SYMBOL = 0x0E, - BSON_TYPE_CODEWSCOPE = 0x0F, - BSON_TYPE_INT32 = 0x10, - BSON_TYPE_TIMESTAMP = 0x11, - BSON_TYPE_INT64 = 0x12, - BSON_TYPE_DECIMAL128 = 0x13, - BSON_TYPE_MAXKEY = 0x7F, - BSON_TYPE_MINKEY = 0xFF, -} bson_type_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_type_t\fP enumeration contains all of the types from the \fI\%BSON Specification\fP\&. It can be used to determine the type of a field at runtime. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_iter_t iter; - -if (bson_iter_init_find (&iter, doc, "foo") && - (BSON_TYPE_INT32 == bson_iter_type (&iter))) { - printf ("\(aqfoo\(aq is an int32.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_uint32_to_string.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_uint32_to_string.3 deleted file mode 100644 index 326b4a2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_uint32_to_string.3 +++ /dev/null @@ -1,96 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UINT32_TO_STRING" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_uint32_to_string \- bson_uint32_to_string() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -size_t -bson_uint32_to_string (uint32_t value, - const char **strptr, - char *str, - size_t size); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBvalue\fP: A uint32_t. -.IP \(bu 2 -\fBstrptr\fP: A location for the resulting string pointer. -.IP \(bu 2 -\fBstr\fP: A location to buffer the string. -.IP \(bu 2 -\fBsize\fP: A size_t containing the size of \fBstr\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Converts \fBvalue\fP to a string. -.sp -If \fBvalue\fP is from 0 to 999, it will use a constant string in the data section of the library. -.sp -If not, a string will be formatted using \fBstr\fP and \fBsnprintf()\fP\&. -.sp -\fBstrptr\fP will always be set. It will either point to \fBstr\fP or a constant string. Use this as your key. -.SH ARRAY ELEMENT KEY BUILDING -.sp -Each element in a BSON array has a monotonic string key like \fB"0"\fP, \fB"1"\fP, etc. This function is optimized for generating such string keys. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char str[16]; -const char *key; -uint32_t i; - -for (i = 0; i < 10; i++) { - bson_uint32_to_string (i, &key, str, sizeof str); - printf ("Key: %s\en", key); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH RETURNS -.sp -The number of bytes in the resulting string. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_unichar_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_unichar_t.3 deleted file mode 100644 index 5a331f6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_unichar_t.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UNICHAR_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_unichar_t \- bson_unichar_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Unicode Character Abstraction -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef uint32_t bson_unichar_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -\fBbson_unichar_t\fP provides an abstraction on a single unicode character. It is the 32\-bit representation of a character. As UTF\-8 can contain multi\-byte characters, this should be used when iterating through UTF\-8 text. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -static void -print_each_char (const char *str) -{ - bson_unichar_t c; - - for (; *str; str = bson_utf8_next_char (str)) { - c = bson_utf8_get_char (str); - printf ("The numberic value is %u.\en", (unsigned) c); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8.3 deleted file mode 100644 index 49162e1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UTF8" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_utf8 \- UTF-8 -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH ENCODING -.sp -Libbson expects that you are always working with UTF\-8 encoded text. Anything else is \fBinvalid API use\fP\&. -.sp -If you should need to walk through UTF\-8 sequences, you can use the various UTF\-8 helper functions distributed with Libbson. -.SH VALIDATING A UTF-8 SEQUENCE -.sp -To validate the string contained in \fBmy_string\fP, use the following. You may pass \fB\-1\fP for the string length if you know the string is NULL\-terminated. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -if (!bson_utf8_validate (my_string, \-1, false)) { - printf ("Validation failed.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If \fBmy_string\fP has NULL bytes within the string, you must provide the string length. Use the following format. Notice the \fBtrue\fP at the end indicating \fB\e0\fP is allowed. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -if (!bson_utf8_validate (my_string, my_string_len, true)) { - printf ("Validation failed.\en"); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -For more information see the API reference for \fBbson_utf8_validate()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_escape_for_json.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_escape_for_json.3 deleted file mode 100644 index c392815..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_escape_for_json.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UTF8_ESCAPE_FOR_JSON" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_utf8_escape_for_json \- bson_utf8_escape_for_json() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char * -bson_utf8_escape_for_json (const char *utf8, ssize_t utf8_len); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fButf8\fP: A UTF\-8 encoded string. -.IP \(bu 2 -\fButf8_len\fP: The length of \fButf8\fP in bytes or \-1 if it is NULL terminated. -.UNINDENT -.SH DESCRIPTION -.sp -Allocates a new string matching \fButf8\fP except that special -characters in JSON are escaped. The resulting string is also -UTF\-8 encoded. -.sp -Both " and \e characters will be backslash\-escaped. If a NUL -byte is found before \fButf8_len\fP bytes, it is converted to -"\eu0000". Other non\-ASCII characters in the input are preserved. -.SH RETURNS -.sp -A newly allocated string that should be freed with \fBbson_free()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_from_unichar.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_from_unichar.3 deleted file mode 100644 index 474fa01..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_from_unichar.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UTF8_FROM_UNICHAR" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_utf8_from_unichar \- bson_utf8_from_unichar() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_utf8_from_unichar (bson_unichar_t unichar, char utf8[6], uint32_t *len); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBunichar\fP: A \fBbson_unichar_t\fP\&. -.IP \(bu 2 -\fButf8\fP: A location for the utf8 sequence. -.IP \(bu 2 -\fBlen\fP: A location for the number of bytes in the resulting utf8 sequence. -.UNINDENT -.SH DESCRIPTION -.sp -Converts a single unicode character to a multi\-byte UTF\-8 sequence. The result is stored in \fButf8\fP and the number of bytes used in \fBlen\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_get_char.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_get_char.3 deleted file mode 100644 index 93c3497..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_get_char.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UTF8_GET_CHAR" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_utf8_get_char \- bson_utf8_get_char() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_unichar_t -bson_utf8_get_char (const char *utf8); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fButf8\fP: A UTF\-8 encoded string. -.UNINDENT -.SH DESCRIPTION -.sp -Converts the current character in a UTF\-8 sequence to a bson_unichar_t, the 32\-bit representation of the multi\-byte character. -.SH RETURNS -.sp -A bson_unichar_t. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_next_char.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_next_char.3 deleted file mode 100644 index 8f42856..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_next_char.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UTF8_NEXT_CHAR" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_utf8_next_char \- bson_utf8_next_char() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -bson_utf8_next_char (const char *utf8); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fButf8\fP: A UTF\-8 encoded string. -.UNINDENT -.SH DESCRIPTION -.sp -Advances within \fButf8\fP to the next UTF\-8 character, which may be multiple bytes offset from \fButf8\fP\&. A pointer to the next character is returned. -.sp -It is invalid to call this function on a string whose current character is \fB\e0\fP\&. -.SH RETURNS -.sp -A pointer to the beginning of the next character in the UTF\-8 encoded string. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_validate.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_validate.3 deleted file mode 100644 index 3196c8d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_utf8_validate.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_UTF8_VALIDATE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_utf8_validate \- bson_utf8_validate() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_utf8_validate (const char *utf8, size_t utf8_len, bool allow_null); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fButf8\fP: A string to verify. -.IP \(bu 2 -\fButf8_len\fP: The length of \fButf8\fP in bytes. -.IP \(bu 2 -\fBallow_null\fP: A bool indicating that embedded \fB\e0\fP bytes are allowed. -.UNINDENT -.SH DESCRIPTION -.sp -Validates that the content within \fButf8\fP is valid UTF\-8 (by the RFC 3629 standard). If \fBallow_null\fP is \fBtrue\fP, then embedded NULL bytes are allowed (\fB\e0\fP). -.SH RETURNS -.sp -true if \fButf8\fP contains valid UTF\-8. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_valgrind.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_valgrind.3 deleted file mode 100644 index 28d1779..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_valgrind.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VALGRIND" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_valgrind \- Use Valgrind to Check For BSON Data Leaks -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -A stack\-allocated \fBbson_t\fP contains a small internal buffer; it only heap\-allocates additional storage if necessary, depending on its data size. Therefore if you forget to call \fBbson_destroy\fP on a stack\-allocated \fBbson_t\fP, it might or might not cause a leak that can be detected by valgrind during testing. -.sp -To catch all potential BSON data leaks in your code, configure the BSON_MEMCHECK flag: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cmake \-DCMAKE_C_FLAGS="\-DBSON_MEMCHECK \-g" . -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -With this flag set, every \fBbson_t\fP mallocs at least one byte. Run your program\(aqs unittests with valgrind to verify all \fBbson_t\fP structs are destroyed. -.sp -Set the environment variable \fBMONGOC_TEST_VALGRIND\fP to \fBon\fP to skip timing\-dependent tests known to fail with valgrind. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate.3 deleted file mode 100644 index 12ce951..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VALIDATE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_validate \- bson_validate() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_validate (const bson_t *bson, bson_validate_flags_t flags, size_t *offset); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A bitwise\-or of all desired \fBbson_validate_flags_t\fP\&. -.IP \(bu 2 -\fBoffset\fP: A location for the offset within \fBbson\fP where the error occurred. -.UNINDENT -.SH DESCRIPTION -.sp -Validates a BSON document by walking through the document and inspecting the keys and values for valid content. -.sp -You can modify how the validation occurs through the use of the \fBflags\fP parameter, see \fBbson_validate_with_error()\fP for details. -.SH RETURNS -.sp -Returns true if \fBbson\fP is valid; otherwise false and \fBoffset\fP is set to the byte offset where the error was detected. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate_with_error.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate_with_error.3 deleted file mode 100644 index cc07b1c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_validate_with_error.3 +++ /dev/null @@ -1,96 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VALIDATE_WITH_ERROR" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_validate_with_error \- bson_validate_with_error() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef enum { - BSON_VALIDATE_NONE = 0, - BSON_VALIDATE_UTF8 = (1 << 0), - BSON_VALIDATE_DOLLAR_KEYS = (1 << 1), - BSON_VALIDATE_DOT_KEYS = (1 << 2), - BSON_VALIDATE_UTF8_ALLOW_NULL = (1 << 3), - BSON_VALIDATE_EMPTY_KEYS = (1 << 4), -} bson_validate_flags_t; - -bool -bson_validate_with_error (const bson_t *bson, - bson_validate_flags_t flags, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A bitwise\-or of all desired validation flags. -.IP \(bu 2 -\fBerror\fP: Optional \fBbson_error_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Validates a BSON document by walking through the document and inspecting the keys and values for valid content. -.sp -You can modify how the validation occurs through the use of the \fBflags\fP parameter. A description of their effect is below. -.INDENT 0.0 -.IP \(bu 2 -\fBBSON_VALIDATE_NONE\fP Basic validation of BSON length and structure. -.IP \(bu 2 -\fBBSON_VALIDATE_UTF8\fP All keys and string values are checked for invalid UTF\-8. -.IP \(bu 2 -\fBBSON_VALIDATE_UTF8_ALLOW_NULL\fP String values are allowed to have embedded NULL bytes. -.IP \(bu 2 -\fBBSON_VALIDATE_DOLLAR_KEYS\fP Prohibit keys that start with \fB$\fP outside of a "DBRef" subdocument. -.IP \(bu 2 -\fBBSON_VALIDATE_DOT_KEYS\fP Prohibit keys that contain \fB\&.\fP anywhere in the string. -.IP \(bu 2 -\fBBSON_VALIDATE_EMPTY_KEYS\fP Prohibit zero\-length keys. -.UNINDENT -.sp -See also \fBbson_validate()\fP\&. -.SH RETURNS -.sp -Returns true if \fBbson\fP is valid; otherwise false and \fBerror\fP is filled out. -.sp -The \fBbson_error_t\fP domain is set to \fBBSON_ERROR_INVALID\fP\&. Its code is set to one of the \fBbson_validate_flags_t\fP flags indicating which validation failed; for example, if a key contains invalid UTF\-8, then the code is set to \fBBSON_VALIDATE_UTF8\fP, but if the basic structure of the BSON document is corrupt, the code is set to \fBBSON_VALIDATE_NONE\fP\&. The error message is filled out, and gives more detail if possible. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_copy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_copy.3 deleted file mode 100644 index 8457866..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_copy.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VALUE_COPY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_value_copy \- bson_value_copy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_value_copy (const bson_value_t *src, bson_value_t *dst); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsrc\fP: A \fBbson_value_t\fP to copy from. -.IP \(bu 2 -\fBdst\fP: A \fBbson_value_t\fP to copy into. -.UNINDENT -.SH DESCRIPTION -.sp -This function will copy the boxed content in \fBsrc\fP into \fBdst\fP\&. \fBdst\fP must be freed with \fBbson_value_destroy()\fP when no longer in use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_destroy.3 deleted file mode 100644 index 989cc83..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_destroy.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VALUE_DESTROY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_value_destroy \- bson_value_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_value_destroy (bson_value_t *value); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBvalue\fP: A \fBbson_value_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Releases any resources associated with \fBvalue\fP\&. Does nothing if \fBvalue\fP is NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_t.3 deleted file mode 100644 index 3fcda85..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_value_t.3 +++ /dev/null @@ -1,124 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VALUE_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_value_t \- bson_value_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -BSON Boxed Container Type -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_value_t { - bson_type_t value_type; - union { - bson_oid_t v_oid; - int64_t v_int64; - int32_t v_int32; - int8_t v_int8; - double v_double; - bool v_bool; - int64_t v_datetime; - struct { - uint32_t timestamp; - uint32_t increment; - } v_timestamp; - struct { - uint32_t len; - char *str; - } v_utf8; - struct { - uint32_t data_len; - uint8_t *data; - } v_doc; - struct { - uint32_t data_len; - uint8_t *data; - bson_subtype_t subtype; - } v_binary; - struct { - char *regex; - char *options; - } v_regex; - struct { - char *collection; - uint32_t collection_len; - bson_oid_t oid; - } v_dbpointer; - struct { - uint32_t code_len; - char *code; - } v_code; - struct { - uint32_t code_len; - char *code; - uint32_t scope_len; - uint8_t *scope_data; - } v_codewscope; - struct { - uint32_t len; - char *symbol; - } v_symbol; - } value; -} bson_value_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_value_t\fP structure is a boxed type for encapsulating a runtime determined type. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_value_t *value; - -value = bson_iter_value (&iter); - -if (value\->value_type == BSON_TYPE_INT32) { - printf ("%d\en", value\->value.v_int32); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_version.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_version.3 deleted file mode 100644 index 114311c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_version.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VERSION" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_version \- Libbson Versioning -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Versioning Macros and Functions -.SH MACROS -.sp -The following preprocessor macros can be used to perform various checks based on the version of the library you are compiling against. This may be useful if you only want to enable a feature on a certain version of the library. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#define BSON_CHECK_VERSION(major, minor, micro) - -#define BSON_MAJOR_VERSION (1) -#define BSON_MINOR_VERSION (4) -#define BSON_MICRO_VERSION (1) -#define BSON_VERSION_S "1.4.1" - -#define BSON_VERSION_HEX \e - (BSON_MAJOR_VERSION << 24 | BSON_MINOR_VERSION << 16 | \e - BSON_MICRO_VERSION << 8) -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Only compile a block on Libbson 1.1.0 and newer. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#if BSON_CHECK_VERSION(1, 1, 0) -static void -do_something (void) -{ -} -#endif -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_visitor_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_visitor_t.3 deleted file mode 100644 index 8597d48..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_visitor_t.3 +++ /dev/null @@ -1,256 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VISITOR_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_visitor_t \- bson_visitor_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct { - /* run before / after descending into a document */ - bool (*visit_before) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_after) (const bson_iter_t *iter, const char *key, void *data); - /* corrupt BSON, or unsupported type and visit_unsupported_type not set */ - void (*visit_corrupt) (const bson_iter_t *iter, void *data); - /* normal bson field callbacks */ - bool (*visit_double) (const bson_iter_t *iter, - const char *key, - double v_double, - void *data); - bool (*visit_utf8) (const bson_iter_t *iter, - const char *key, - size_t v_utf8_len, - const char *v_utf8, - void *data); - bool (*visit_document) (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data); - bool (*visit_array) (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data); - bool (*visit_binary) (const bson_iter_t *iter, - const char *key, - bson_subtype_t v_subtype, - size_t v_binary_len, - const uint8_t *v_binary, - void *data); - /* normal field with deprecated "Undefined" BSON type */ - bool (*visit_undefined) (const bson_iter_t *iter, - const char *key, - void *data); - bool (*visit_oid) (const bson_iter_t *iter, - const char *key, - const bson_oid_t *v_oid, - void *data); - bool (*visit_bool) (const bson_iter_t *iter, - const char *key, - bool v_bool, - void *data); - bool (*visit_date_time) (const bson_iter_t *iter, - const char *key, - int64_t msec_since_epoch, - void *data); - bool (*visit_null) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_regex) (const bson_iter_t *iter, - const char *key, - const char *v_regex, - const char *v_options, - void *data); - bool (*visit_dbpointer) (const bson_iter_t *iter, - const char *key, - size_t v_collection_len, - const char *v_collection, - const bson_oid_t *v_oid, - void *data); - bool (*visit_code) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - void *data); - bool (*visit_symbol) (const bson_iter_t *iter, - const char *key, - size_t v_symbol_len, - const char *v_symbol, - void *data); - bool (*visit_codewscope) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - const bson_t *v_scope, - void *data); - bool (*visit_int32) (const bson_iter_t *iter, - const char *key, - int32_t v_int32, - void *data); - bool (*visit_timestamp) (const bson_iter_t *iter, - const char *key, - uint32_t v_timestamp, - uint32_t v_increment, - void *data); - bool (*visit_int64) (const bson_iter_t *iter, - const char *key, - int64_t v_int64, - void *data); - bool (*visit_maxkey) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_minkey) (const bson_iter_t *iter, const char *key, void *data); - /* if set, called instead of visit_corrupt when an apparently valid BSON - * includes an unrecognized field type (reading future version of BSON) */ - void (*visit_unsupported_type) (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data); - bool (*visit_decimal128) (const bson_iter_t *iter, - const char *key, - const bson_decimal128_t *v_decimal128, - void *data); - - void *padding[7]; -} bson_visitor_t bson_visitor_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_visitor_t\fP structure provides a series of callbacks that can be called while iterating a BSON document. This may simplify the conversion of a \fBbson_t\fP to a higher level language structure. -.sp -If the optional callback \fBvisit_unsupported_type\fP is set, it is called instead of \fBvisit_corrupt\fP in the specific case of an unrecognized field type. (Parsing is aborted in either case.) Use this callback to report an error like "unrecognized type" instead of simply "corrupt BSON". This future\-proofs code that may use an older version of libbson to parse future BSON formats. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -static bool -my_visit_before (const bson_iter_t *iter, const char *key, void *data) -{ - int *count = (int *) data; - - (*count)++; - - /* returning true stops further iteration of the document */ - - return false; -} - -static void -count_fields (bson_t *doc) -{ - bson_visitor_t visitor = {0}; - bson_iter_t iter; - int count = 0; - - visitor.visit_before = my_visit_before; - - if (bson_iter_init (&iter, doc)) { - bson_iter_visit_all (&iter, &visitor, &count); - } - - printf ("Found %d fields.\en", count); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The example below demonstrates how to set your own callbacks to provide information about the location of corrupt or unsupported BSON document entries. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -typedef struct { - ssize_t *err_offset; -} my_state_t; - -static void -my_visit_corrupt (const bson_iter_t *iter, void *data) -{ - *(((my_state_t *) data)\->err_offset) = iter\->off; -} - -static void -my_visit_unsupported_type (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data) -{ - *(((my_state_t *) data)\->err_offset) = iter\->off; -} - -static void -find_error_location (bson_t *doc) -{ - bson_visitor_t visitors = {0}; - bson_iter_t iter; - my_state_t state; - ssize_t err_offset = \-1; - - visitors.visit_corrupt = my_visit_corrupt; - visitors.visit_unsupported_type = my_visit_unsupported_type; - /* provide additional visitors as needed based on your requirements */ - state.err_offset = &err_offset; - - if (!bson_iter_init (&iter, doc)) { - printf ("Could not initialize iterator!"); - exit (1); - } - - if (bson_iter_visit_all (&iter, &visitors, &state) || - err_offset != \-1) { - printf ("Found error at offset %d.\en", err_offset); - } else { - printf ("BSON document had no errors.\en"); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_vsnprintf.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_vsnprintf.3 deleted file mode 100644 index 7c12173..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_vsnprintf.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_VSNPRINTF" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_vsnprintf \- bson_vsnprintf() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int -bson_vsnprintf (char *str, size_t size, const char *format, va_list ap) - BSON_GNUC_PRINTF (3, 0); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstr\fP: A location for the resulting string. -.IP \(bu 2 -\fBsize\fP: The size of str in bytes. -.IP \(bu 2 -\fBformat\fP: A printf style format string. -.IP \(bu 2 -\fBap\fP: A va_list of parameters for the format. -.UNINDENT -.SH DESCRIPTION -.sp -Like bson_snprintf() but allows for variadic parameters. -.SH RETURNS -.sp -The number of bytes written to \fBstr\fP excluding the \fB\e0\fP byte. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_begin.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_begin.3 deleted file mode 100644 index 6de5d7d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_begin.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_WRITER_BEGIN" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_writer_begin \- bson_writer_begin() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -bson_writer_begin (bson_writer_t *writer, bson_t **bson); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBwriter\fP: A \fBbson_writer_t\fP\&. -.IP \(bu 2 -\fBbson\fP: A \fBbson_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Begins writing a new document. The caller may use the bson structure to write out a new BSON document. When completed, the caller must call either \fBbson_writer_end()\fP or \fBbson_writer_rollback()\fP\&. -.SH RETURNS -.sp -true if there was space in the underlying buffers to begin the document. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_destroy.3 deleted file mode 100644 index 04c4701..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_destroy.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_WRITER_DESTROY" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_writer_destroy \- bson_writer_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_writer_destroy (bson_writer_t *writer); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBwriter\fP: A \fBbson_writer_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Cleanup after \fBwriter\fP and release any allocated memory. Does nothing if \fBwriter\fP is NULL. Note that the buffer supplied to \fBbson_writer_new()\fP is \fINOT\fP freed from this method. The caller is responsible for that. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_end.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_end.3 deleted file mode 100644 index 247e758..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_end.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_WRITER_END" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_writer_end \- bson_writer_end() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_writer_end (bson_writer_t *writer); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBwriter\fP: A \fBbson_writer_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Complete writing of a \fBbson_writer_t\fP to the buffer supplied. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_get_length.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_get_length.3 deleted file mode 100644 index b0744f6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_get_length.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_WRITER_GET_LENGTH" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_writer_get_length \- bson_writer_get_length() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -size_t -bson_writer_get_length (bson_writer_t *writer); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBwriter\fP: A \fBbson_writer_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the current length of the content written by the buffer (including the initial offset). This includes a partly written document currently being written. -.sp -This is useful if you want to check to see if you\(aqve passed a given memory boundary that cannot be sent in a packet. See \fBbson_writer_rollback()\fP to abort the current document being written. -.SH RETURNS -.sp -The length of the underlying buffer. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_new.3 deleted file mode 100644 index 0ff5172..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_new.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_WRITER_NEW" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_writer_new \- bson_writer_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bson_writer_t * -bson_writer_new (uint8_t **buf, - size_t *buflen, - size_t offset, - bson_realloc_func realloc_func, - void *realloc_func_ctx); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbuf\fP: A uint8_t. -.IP \(bu 2 -\fBbuflen\fP: A size_t. -.IP \(bu 2 -\fBoffset\fP: A size_t. -.IP \(bu 2 -\fBrealloc_func\fP: A bson_realloc_func. -.IP \(bu 2 -\fBrealloc_func_ctx\fP: A bson_realloc_func. -.UNINDENT -.SH DESCRIPTION -.sp -Creates a new instance of \fBbson_writer_t\fP using the \fBbuffer\fP, \fBlength\fP, \fBoffset\fP, and _realloc()_ function supplied. -.sp -The caller is expected to clean up the structure when finished using \fBbson_writer_destroy()\fP\&. -.SH RETURNS -.sp -A newly allocated bson_writer_t. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_rollback.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_rollback.3 deleted file mode 100644 index 29c0bf4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_rollback.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_WRITER_ROLLBACK" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_writer_rollback \- bson_writer_rollback() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_writer_rollback (bson_writer_t *writer); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBwriter\fP: A \fBbson_writer_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Abort the appending of the current bson_t to the memory region managed by \fBwriter\fP\&. This is useful if you detected that you went past a particular memory limit. For example, MongoDB has 48MB message limits. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_t.3 deleted file mode 100644 index bb86886..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_writer_t.3 +++ /dev/null @@ -1,99 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_WRITER_T" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_writer_t \- bson_writer_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Bulk BSON serialization Abstraction -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _bson_writer_t bson_writer_t; - -bson_writer_t * -bson_writer_new (uint8_t **buf, - size_t *buflen, - size_t offset, - bson_realloc_func realloc_func, - void *realloc_func_ctx); -void -bson_writer_destroy (bson_writer_t *writer); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -The \fBbson_writer_t\fP API provides an abstraction for serializing many BSON documents to a single memory region. The memory region may be dynamically allocated and re\-allocated as more memory is demanded. This can be useful when building network packets from a high\-level language. For example, you can serialize a Python Dictionary directly to a single buffer destined for a TCP packet. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int -main (int argc, char *argv[]) -{ - bson_writer_t *writer; - uint8_t *buf = NULL; - size_t buflen = 0; - bson_t *doc; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < 1000; i++) { - bson_writer_begin (writer, &doc); - BSON_APPEND_INT32 (&doc, "i", i); - bson_writer_end (writer); - } - - bson_writer_destroy (writer); - - bson_free (buf); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_zero_free.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_zero_free.3 deleted file mode 100644 index df19c40..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/man/bson_zero_free.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "BSON_ZERO_FREE" "3" "Jan 24, 2019" "1.13.1" "Libbson" -.SH NAME -bson_zero_free \- bson_zero_free() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -bson_zero_free (void *mem, size_t size); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBmem\fP: A memory region. -.IP \(bu 2 -\fBsize\fP: The size of \fBmem\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function behaves like \fBbson_free()\fP except that it zeroes the memory first. This can be useful if you are storing passwords or other similarly important data. Note that if it truly is important, you probably want a page protected with \fBmlock()\fP as well to prevent it swapping to disk. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/oid.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/oid.rst deleted file mode 100644 index c20f80f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/oid.rst +++ /dev/null @@ -1,80 +0,0 @@ -:man_page: bson_oid - -ObjectIDs -========= - -Libbson provides a simple way to generate ObjectIDs. It can be used in a single-threaded or multi-threaded manner depending on your requirements. - -The :symbol:`bson_oid_t` structure represents an ``ObjectID`` in MongoDB. It is a 96-bit identifier that includes various information about the system generating the OID. - -Composition ------------ - -* 4 bytes : The UNIX timestamp in big-endian format. -* 3 bytes : A hash of the hostname. -* 2 bytes : The ``pid_t`` of the current process. Alternatively the task-id if configured. -* 3 bytes : A 24-bit monotonic counter incrementing from ``rand()`` in big-endian. - -Sorting ObjectIDs ------------------ - -The typical way to sort in C is using ``qsort()``. Therefore, Libbson provides a ``qsort()`` compatible callback function named :symbol:`bson_oid_compare()`. It returns ``less than 1``, ``greater than 1``, or ``0`` depending on the equality of two :symbol:`bson_oid_t` structures. - -Comparing Object IDs --------------------- - -If you simply want to compare two :symbol:`bson_oid_t` structures for equality, use :symbol:`bson_oid_equal()`. - -Generating ----------- - -To generate a :symbol:`bson_oid_t`, you may use the following. - -.. code-block:: c - - bson_oid_t oid; - - bson_oid_init (&oid, NULL); - -Parsing ObjectID Strings ------------------------- - -You can also parse a string containing a :symbol:`bson_oid_t`. The input string *MUST* be 24 characters or more in length. - -.. code-block:: c - - bson_oid_t oid; - - bson_oid_init_from_string (&oid, "123456789012345678901234"); - -If you need to parse may :symbol:`bson_oid_t` in a tight loop and can guarantee the data is safe, you might consider using the inline variant. It will be inlined into your code and reduce the need for a foreign function call. - -.. code-block:: c - - bson_oid_t oid; - - bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234"); - -Hashing ObjectIDs ------------------ - -If you need to store items in a hashtable, you may want to use the :symbol:`bson_oid_t` as the key. Libbson provides a hash function for just this purpose. It is based on DJB hash. - -.. code-block:: c - - unsigned hash; - - hash = bson_oid_hash (oid); - -Fetching ObjectID Creation Time -------------------------------- - -You can easily fetch the time that a :symbol:`bson_oid_t` was generated using :symbol:`bson_oid_get_time_t()`. - -.. code-block:: c - - time_t t; - - t = bson_oid_get_time_t (oid); - printf ("The OID was generated at %u\n", (unsigned) t); - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/parsing.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/parsing.rst deleted file mode 100644 index 65f5437..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/parsing.rst +++ /dev/null @@ -1,120 +0,0 @@ -:man_page: bson_parsing - -Parsing and Iterating BSON Documents -==================================== - -Parsing -------- - -BSON documents are lazily parsed as necessary. To begin parsing a BSON document, use one of the provided Libbson functions to create a new :symbol:`bson_t` from existing data such as :symbol:`bson_new_from_data()`. This will make a copy of the data so that additional mutations may occur to the BSON document. - -.. tip:: - - If you only want to parse a BSON document and have no need to mutate it, you may use :symbol:`bson_init_static()` to avoid making a copy of the data. - -.. code-block:: c - - bson_t *b; - - b = bson_new_from_data (my_data, my_data_len); - if (!b) { - fprintf (stderr, "The specified length embedded in did not match " - "\n"); - return; - } - - bson_destroy (b); - -Only two checks are performed when creating a new :symbol:`bson_t` from an existing buffer. First, the document must begin with the buffer length, matching what was expected by the caller. Second, the document must end with the expected trailing ``\0`` byte. - -To parse the document further we use a :symbol:`bson_iter_t` to iterate the elements within the document. Let's print all of the field names in the document. - -.. code-block:: c - - bson_t *b; - bson_iter_t iter; - - if ((b = bson_new_from_data (my_data, my_data_len))) { - if (bson_iter_init (&iter, b)) { - while (bson_iter_next (&iter)) { - printf ("Found element key: \"%s\"\n", bson_iter_key (&iter)); - } - } - bson_destroy (b); - } - -Converting a document to JSON uses a :symbol:`bson_iter_t` and :symbol:`bson_visitor_t` to iterate all fields of a BSON document recursively and generate a UTF-8 encoded JSON string. - -.. code-block:: c - - bson_t *b; - char *json; - - if ((b = bson_new_from_data (my_data, my_data_len))) { - if ((json = bson_as_canonical_extended_json (b, NULL))) { - printf ("%s\n", json); - bson_free (json); - } - bson_destroy (b); - } - -Recursing into Sub-Documents ----------------------------- - -Libbson provides convenient sub-iterators to dive down into a sub-document or sub-array. Below is an example that will dive into a sub-document named "foo" and print it's field names. - -.. code-block:: c - - bson_iter_t iter; - bson_iter_t child; - char *json; - - if (bson_iter_init_find (&iter, doc, "foo") && - BSON_ITER_HOLDS_DOCUMENT (&iter) && bson_iter_recurse (&iter, &child)) { - while (bson_iter_next (&child)) { - printf ("Found sub-key of \"foo\" named \"%s\"\n", - bson_iter_key (&child)); - } - } - -Finding Fields using Dot Notation ---------------------------------- - -Using the :symbol:`bson_iter_recurse()` function exemplified above, :symbol:`bson_iter_find_descendant()` can find a field for you using the MongoDB style path notation such as "foo.bar.0.baz". - -Let's create a document like ``{"foo": {"bar": [{"baz: 1}]}}`` and locate the ``"baz"`` field. - -.. code-block:: c - - bson_t *b; - bson_iter_t iter; - bson_iter_t baz; - - b = - BCON_NEW ("foo", "{", "bar", "[", "{", "baz", BCON_INT32 (1), "}", "]", "}"); - - if (bson_iter_init (&iter, b) && - bson_iter_find_descendant (&iter, "foo.bar.0.baz", &baz) && - BSON_ITER_HOLDS_INT32 (&baz)) { - printf ("baz = %d\n", bson_iter_int32 (&baz)); - } - - bson_destroy (b); - -Validating a BSON Document --------------------------- - -If all you want to do is validate that a BSON document is valid, you can use :symbol:`bson_validate()`. - -.. code-block:: c - - size_t err_offset; - - if (!bson_validate (doc, BSON_VALIDATE_NONE, &err_offset)) { - fprintf (stderr, - "The document failed to validate at offset: %u\n", - (unsigned) err_offset); - } - -See the :symbol:`bson_validate()` documentation for more information and examples. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/streaming-bson.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/streaming-bson.rst deleted file mode 100644 index 862a733..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/streaming-bson.rst +++ /dev/null @@ -1,93 +0,0 @@ -:man_page: bson_streaming_bson - -Streaming BSON -============== - -:symbol:`bson_reader_t` provides a streaming reader which can be initialized with a filedescriptor or memory region. :symbol:`bson_writer_t` provides a streaming writer which can be initialized with a memory region. (Streaming BSON to a file descriptor is not yet supported.) - -Reading from a BSON Stream --------------------------- - -:symbol:`bson_reader_t` provides a convenient API to read sequential BSON documents from a file-descriptor or memory buffer. The :symbol:`bson_reader_read()` function will read forward in the underlying stream and return a :symbol:`bson_t` that can be inspected and iterated upon. - -.. code-block:: c - - #include - #include - - int - main (int argc, char *argv[]) - { - bson_reader_t *reader; - const bson_t *doc; - bson_error_t error; - bool eof; - - reader = bson_reader_new_from_file ("mycollection.bson", &error); - - if (!reader) { - fprintf (stderr, "Failed to open file.\n"); - return 1; - } - - while ((doc = bson_reader_read (reader, &eof))) { - char *str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\n", str); - bson_free (str); - } - - if (!eof) { - fprintf (stderr, - "corrupted bson document found at %u\n", - (unsigned) bson_reader_tell (reader)); - } - - bson_reader_destroy (reader); - - return 0; - } - -See :symbol:`bson_reader_new_from_fd()`, :symbol:`bson_reader_new_from_file()`, and :symbol:`bson_reader_new_from_data()` for more information. - -Writing a sequence of BSON Documents ------------------------------------- - -:symbol:`bson_writer_t` provides a convenient API to write a sequence of BSON documents to a memory buffer that can grow with ``realloc()``. The :symbol:`bson_writer_begin()` and :symbol:`bson_writer_end()` functions will manage the underlying buffer while building the sequence of documents. - -This could also be useful if you want to write to a network packet while serializing the documents from a higher level language, (but do so just after the packets header). - -.. code-block:: c - - #include - #include - #include - - int - main (int argc, char *argv[]) - { - bson_writer_t *writer; - bson_t *doc; - uint8_t *buf = NULL; - size_t buflen = 0; - bool r; - int i; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < 10000; i++) { - r = bson_writer_begin (writer, &doc); - assert (r); - - r = BSON_APPEND_INT32 (doc, "i", i); - assert (r); - - bson_writer_end (writer); - } - - bson_free (buf); - - return 0; - } - -See :symbol:`bson_writer_new()` for more information. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/threading.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/threading.rst deleted file mode 100644 index 550ca1c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/threading.rst +++ /dev/null @@ -1,9 +0,0 @@ -:man_page: bson_threading - -Threading -========= - -Libbson's data structures are *NOT* thread-safe. You are responsible for accessing and mutating these structures from one thread at a time. - -Libbson requires POSIX threads (pthreads) on all UNIX-like platforms. On Windows, the native threading interface is used. Libbson uses your system's threading library to safely generate unique :doc:`ObjectIds `, and to provide a fallback implementation for atomic operations on platforms without built-in atomics. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/tutorial.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/tutorial.rst deleted file mode 100644 index f7e2ff7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/tutorial.rst +++ /dev/null @@ -1,15 +0,0 @@ -:man_page: bson_tutorial - -Tutorial -======== - -.. toctree:: - :titlesonly: - :maxdepth: 1 - - include-and-link - creating - errors - oid - parsing - utf8 diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/utf8.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/utf8.rst deleted file mode 100644 index 140f6e6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/utf8.rst +++ /dev/null @@ -1,33 +0,0 @@ -:man_page: bson_utf8 - -UTF-8 -===== - -Encoding --------- - -Libbson expects that you are always working with UTF-8 encoded text. Anything else is **invalid API use**. - -If you should need to walk through UTF-8 sequences, you can use the various UTF-8 helper functions distributed with Libbson. - -Validating a UTF-8 Sequence ---------------------------- - -To validate the string contained in ``my_string``, use the following. You may pass ``-1`` for the string length if you know the string is NULL-terminated. - -.. code-block:: c - - if (!bson_utf8_validate (my_string, -1, false)) { - printf ("Validation failed.\n"); - } - -If ``my_string`` has NULL bytes within the string, you must provide the string length. Use the following format. Notice the ``true`` at the end indicating ``\0`` is allowed. - -.. code-block:: c - - if (!bson_utf8_validate (my_string, my_string_len, true)) { - printf ("Validation failed.\n"); - } - -For more information see the API reference for :symbol:`bson_utf8_validate()`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/valgrind.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/valgrind.rst deleted file mode 100644 index 4898e3f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/valgrind.rst +++ /dev/null @@ -1,16 +0,0 @@ -:man_page: bson_valgrind - -Use Valgrind to Check For BSON Data Leaks -========================================= - -A stack-allocated :symbol:`bson_t` contains a small internal buffer; it only heap-allocates additional storage if necessary, depending on its data size. Therefore if you forget to call :symbol:`bson_destroy` on a stack-allocated :symbol:`bson_t`, it might or might not cause a leak that can be detected by valgrind during testing. - -To catch all potential BSON data leaks in your code, configure the BSON_MEMCHECK flag: - -.. code-block:: none - - cmake -DCMAKE_C_FLAGS="-DBSON_MEMCHECK -g" . - -With this flag set, every :symbol:`bson_t` mallocs at least one byte. Run your program's unittests with valgrind to verify all :symbol:`bson_t` structs are destroyed. - -Set the environment variable ``MONGOC_TEST_VALGRIND`` to ``on`` to skip timing-dependent tests known to fail with valgrind. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/version.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/version.rst deleted file mode 100644 index e7c25e7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/doc/version.rst +++ /dev/null @@ -1,54 +0,0 @@ -:man_page: bson_version - -Libbson Versioning -================== - -Versioning Macros and Functions - -Macros ------- - -The following preprocessor macros can be used to perform various checks based on the version of the library you are compiling against. This may be useful if you only want to enable a feature on a certain version of the library. - -Synopsis --------- - -.. code-block:: c - - #define BSON_CHECK_VERSION(major, minor, micro) - - #define BSON_MAJOR_VERSION (1) - #define BSON_MINOR_VERSION (4) - #define BSON_MICRO_VERSION (1) - #define BSON_VERSION_S "1.4.1" - - #define BSON_VERSION_HEX \ - (BSON_MAJOR_VERSION << 24 | BSON_MINOR_VERSION << 16 | \ - BSON_MICRO_VERSION << 8) - -Only compile a block on Libbson 1.1.0 and newer. - -.. code-block:: c - - #if BSON_CHECK_VERSION(1, 1, 0) - static void - do_something (void) - { - } - #endif - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - bson_check_version - bson_get_major_version - bson_get_micro_version - bson_get_minor_version - bson_get_version - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/CMakeLists.txt deleted file mode 100644 index 7a7f85b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -file (GLOB_RECURSE src_libbson_examples_DIST_cs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.c) -file (GLOB_RECURSE src_libbson_examples_DIST_shs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.sh) - -set_dist_list (src_libbson_examples_DIST - CMakeLists.txt - cmake/find_package/CMakeLists.txt - cmake/find_package_static/CMakeLists.txt - ${src_libbson_examples_DIST_cs} - ${src_libbson_examples_DIST_shs} -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-col-view.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-col-view.c deleted file mode 100644 index 317b227..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-col-view.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#define QUERY(...) ELE_QUERY, __VA_ARGS__, NULL -#define SORT(...) ELE_SORT, __VA_ARGS__, NULL -#define LIMIT(var) ELE_LIMIT, (var) -#define COL_VIEW_CREATE(...) col_view_create ("", __VA_ARGS__, ELE_END) - -typedef enum ele { - ELE_SORT, - ELE_LIMIT, - ELE_QUERY, - ELE_END, -} ele_t; - -bson_t * -col_view_create (const char *stub, ...) -{ - bson_t *bson; - va_list ap; - ele_t type; - int keep_going = 1; - - bcon_append_ctx_t ctx; - bcon_append_ctx_init (&ctx); - - va_start (ap, stub); - - bson = bson_new (); - - while (keep_going) { - type = va_arg (ap, ele_t); - - switch (type) { - case ELE_SORT: - BCON_APPEND_CTX (bson, &ctx, "sort", "{"); - bcon_append_ctx_va (bson, &ctx, &ap); - BCON_APPEND_CTX (bson, &ctx, "}"); - break; - case ELE_LIMIT: { - int i = va_arg (ap, int); - BCON_APPEND_CTX (bson, &ctx, "limit", BCON_INT32 (i)); - break; - } - case ELE_QUERY: - BCON_APPEND_CTX (bson, &ctx, "query", "{"); - bcon_append_ctx_va (bson, &ctx, &ap); - BCON_APPEND_CTX (bson, &ctx, "}"); - break; - case ELE_END: - keep_going = 0; - break; - default: - BSON_ASSERT (0); - break; - } - } - - va_end (ap); - - return bson; -} - -int -main (int argc, char *argv[]) -{ - bson_t *bson; - char *json; - - bson = COL_VIEW_CREATE ( - SORT ("a", BCON_INT32 (1)), QUERY ("hello", "world"), LIMIT (10)); - - json = bson_as_canonical_extended_json (bson, NULL); - printf ("%s\n", json); - bson_free (json); - - bson_destroy (bson); - - return 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-speed.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-speed.c deleted file mode 100644 index 01159f0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bcon-speed.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2013-2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include -#include -#include - -/* - * This is a test for comparing the performance of BCON to regular - * bson_append*() function calls. - * - * Maybe run the following a few times to get an idea of the performance - * implications of using BCON. Generally, it's fast enough to be very - * useful and result in easier to read BSON code. - * - * time ./bcon-speed 100000 y - * time ./bcon-speed 100000 n - */ - - -int -main (int argc, char *argv[]) -{ - int i; - int n; - int bcon; - bson_t bson, foo, bar, baz; - bson_init (&bson); - - if (argc != 3) { - fprintf (stderr, - "usage: bcon-speed NUM_ITERATIONS [y|n]\n" - "\n" - " y = perform speed tests with bcon\n" - " n = perform speed tests with bson_append\n" - "\n"); - return EXIT_FAILURE; - } - - BSON_ASSERT (argc == 3); - - n = atoi (argv[1]); - bcon = (argv[2][0] == 'y') ? 1 : 0; - - for (i = 0; i < n; i++) { - if (bcon) { - BCON_APPEND (&bson, - "foo", - "{", - "bar", - "{", - "baz", - "[", - BCON_INT32 (1), - BCON_INT32 (2), - BCON_INT32 (3), - "]", - "}", - "}"); - } else { - bson_append_document_begin (&bson, "foo", -1, &foo); - bson_append_document_begin (&foo, "bar", -1, &bar); - bson_append_array_begin (&bar, "baz", -1, &baz); - bson_append_int32 (&baz, "0", -1, 1); - bson_append_int32 (&baz, "1", -1, 2); - bson_append_int32 (&baz, "2", -1, 3); - bson_append_array_end (&bar, &baz); - bson_append_document_end (&foo, &bar); - bson_append_document_end (&bson, &foo); - } - - bson_reinit (&bson); - } - - bson_destroy (&bson); - - return 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-metrics.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-metrics.c deleted file mode 100644 index 9eeb941..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-metrics.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * This program will scan each BSON document contained in the provided files - * and print metrics to STDOUT. - */ - -#include -#include -#include - -#define MAX_RECURSION 100 - -static double -dtimeofday (void) -{ - struct timeval timeval; - bson_gettimeofday (&timeval); - return (timeval.tv_sec + timeval.tv_usec * 0.000001); -} - -typedef struct { - uint64_t count; - char *description; -} bson_type_metrics_t; - -typedef struct { - uint64_t doc_count; - uint64_t element_count; - uint64_t doc_size_max; - uint64_t key_size_tally; - uint64_t utf8_size_tally; - uint32_t depth; - bson_type_metrics_t bson_type_metrics[256]; -} bson_metrics_state_t; - -static bson_metrics_state_t initial_state = { - 0L, - 0L, - 0L, - 0L, - 0L, - 0L, - {{/* BSON_TYPE_EOD = 0x00 */ 0L, "End of document"}, - {/* BSON_TYPE_DOUBLE = 0x01 */ 0L, "Floating point"}, - {/* BSON_TYPE_UTF8 = 0x02 */ 0L, "UTF-8 string"}, - {/* BSON_TYPE_DOCUMENT = 0x03 */ 0L, "Embedded document"}, - {/* BSON_TYPE_ARRAY = 0x04 */ 0L, "Array"}, - {/* BSON_TYPE_BINARY = 0x05 */ 0L, "Binary data"}, - {/* BSON_TYPE_UNDEFINED = 0x06 */ 0L, "Undefined - Deprecated"}, - {/* BSON_TYPE_OID = 0x07 */ 0L, "ObjectId"}, - {/* BSON_TYPE_BOOL = 0x08 */ 0L, "Boolean"}, - {/* BSON_TYPE_DATE_TIME = 0x09 */ 0L, "UTC datetime"}, - {/* BSON_TYPE_NULL = 0x0A */ 0L, "Null value"}, - {/* BSON_TYPE_REGEX = 0x0B */ 0L, "Regular expression"}, - {/* BSON_TYPE_DBPOINTER = 0x0C */ 0L, "DBPointer - Deprecated"}, - {/* BSON_TYPE_CODE = 0x0D */ 0L, "JavaScript code"}, - {/* BSON_TYPE_SYMBOL = 0x0E */ 0L, "Symbol - Deprecated"}, - {/* BSON_TYPE_CODEWSCOPE = 0x0F */ 0L, "JavaScript code w/ scope"}, - {/* BSON_TYPE_INT32 = 0x10 */ 0L, "32-bit Integer"}, - {/* BSON_TYPE_TIMESTAMP = 0x11 */ 0L, "Timestamp"}, - {/* BSON_TYPE_INT64 = 0x12 */ 0L, "64-bit Integer"}, - {0L, NULL}}}; - -static bson_metrics_state_t state; - -static int -compar_bson_type_metrics (const void *a, const void *b) -{ - return (((bson_type_metrics_t *) b)->count - - ((bson_type_metrics_t *) a)->count); -} - -/* - * Forward declarations. - */ -static bool -bson_metrics_visit_array (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data); -static bool -bson_metrics_visit_document (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data); - -static bool -bson_metrics_visit_utf8 (const bson_iter_t *iter, - const char *key, - size_t v_utf8_len, - const char *v_utf8, - void *data) -{ - bson_metrics_state_t *s = data; - s->utf8_size_tally += v_utf8_len; - - return false; -} - -static bool -bson_metrics_visit_before (const bson_iter_t *iter, const char *key, void *data) -{ - bson_metrics_state_t *s = data; - bson_type_t btype; - ++s->element_count; - s->key_size_tally += strlen (key); /* TODO - filter out array keys(?) */ - btype = bson_iter_type (iter); - ++s->bson_type_metrics[btype].count; - - return false; -} - -static const bson_visitor_t bson_metrics_visitors = { - bson_metrics_visit_before, - NULL, /* visit_after */ - NULL, /* visit_corrupt */ - NULL, /* visit_double */ - bson_metrics_visit_utf8, - bson_metrics_visit_document, - bson_metrics_visit_array, - NULL, /* visit_binary */ - NULL, /* visit_undefined */ - NULL, /* visit_oid */ - NULL, /* visit_bool */ - NULL, /* visit_date_time */ - NULL, /* visit_null */ - NULL, /* visit_regex */ - NULL, /* visit_dbpointer */ - NULL, /* visit_code */ - NULL, /* visit_symbol */ - NULL, /* visit_codewscope */ - NULL, /* visit_int32 */ - NULL, /* visit_timestamp */ - NULL, /* visit_int64 */ - NULL, /* visit_maxkey */ - NULL, /* visit_minkey */ -}; - -static bool -bson_metrics_visit_document (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data) -{ - bson_metrics_state_t *s = data; - bson_iter_t child; - - if (s->depth >= MAX_RECURSION) { - fprintf (stderr, "Invalid document, max recursion reached.\n"); - return true; - } - - if (bson_iter_init (&child, v_document)) { - s->depth++; - bson_iter_visit_all (&child, &bson_metrics_visitors, data); - s->depth--; - } - - return false; -} - -static bool -bson_metrics_visit_array (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data) -{ - bson_metrics_state_t *s = data; - bson_iter_t child; - - if (s->depth >= MAX_RECURSION) { - fprintf (stderr, "Invalid document, max recursion reached.\n"); - return true; - } - - if (bson_iter_init (&child, v_array)) { - s->depth++; - bson_iter_visit_all (&child, &bson_metrics_visitors, data); - s->depth--; - } - - return false; -} - -static void -bson_metrics (const bson_t *bson, size_t *length, void *data) -{ - bson_iter_t iter; - bson_metrics_state_t *s = data; - ++s->doc_count; - - if (bson_iter_init (&iter, bson)) { - bson_iter_visit_all (&iter, &bson_metrics_visitors, data); - } -} - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - int i, j; - double dtime_before, dtime_after, dtime_delta; - uint64_t aggregate_count; - off_t mark; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - printf ("["); - for (i = 1; i < argc; i++) { - if (i > 1) - printf (","); - filename = argv[i]; - - /* - * Initialize a new reader for this file descriptor. - */ - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - - state = initial_state; - dtime_before = dtimeofday (); - mark = 0; - while ((b = bson_reader_read (reader, NULL))) { - off_t pos = bson_reader_tell (reader); - state.doc_size_max = BSON_MAX (pos - mark, state.doc_size_max); - mark = pos; - bson_metrics (b, NULL, &state); - } - dtime_after = dtimeofday (); - dtime_delta = BSON_MAX (dtime_after - dtime_before, 0.000001); - state.bson_type_metrics[BSON_TYPE_MAXKEY].description = "Max key"; - state.bson_type_metrics[BSON_TYPE_MINKEY].description = "Min key"; - aggregate_count = state.bson_type_metrics[BSON_TYPE_DOCUMENT].count + - state.bson_type_metrics[BSON_TYPE_ARRAY].count; - qsort (state.bson_type_metrics, - 256, - sizeof (bson_type_metrics_t), - compar_bson_type_metrics); - - printf ("\n {\n"); - printf (" \"file\": \"%s\",\n", filename); - printf (" \"secs\": %.2f,\n", dtime_delta); - printf (" \"docs_per_sec\": %" PRIu64 ",\n", - (uint64_t) floor (state.doc_count / dtime_delta)); - printf (" \"docs\": %" PRIu64 ",\n", state.doc_count); - printf (" \"elements\": %" PRIu64 ",\n", state.element_count); - printf (" \"elements_per_doc\": %" PRIu64 ",\n", - (uint64_t) floor ((double) state.element_count / - (double) BSON_MAX (state.doc_count, 1))); - printf (" \"aggregates\": %" PRIu64 ",\n", aggregate_count); - printf (" \"aggregates_per_doc\": %" PRIu64 ",\n", - (uint64_t) floor ((double) aggregate_count / - (double) BSON_MAX (state.doc_count, 1))); - printf (" \"degree\": %" PRIu64 ",\n", - (uint64_t) floor ( - (double) state.element_count / - ((double) BSON_MAX (state.doc_count + aggregate_count, 1)))); - printf (" \"doc_size_max\": %" PRIu64 ",\n", state.doc_size_max); - printf (" \"doc_size_average\": %" PRIu64 ",\n", - (uint64_t) floor ((double) bson_reader_tell (reader) / - (double) BSON_MAX (state.doc_count, 1))); - printf (" \"key_size_average\": %" PRIu64 ",\n", - (uint64_t) floor ((double) state.key_size_tally / - (double) BSON_MAX (state.element_count, 1))); - printf (" \"string_size_average\": %" PRIu64 ",\n", - (uint64_t) floor ( - (double) state.utf8_size_tally / - (double) BSON_MAX ( - state.bson_type_metrics[BSON_TYPE_UTF8].count, 1))); - printf (" \"percent_by_type\": {\n"); - for (j = 0; state.bson_type_metrics[j].count > 0; j++) { - bson_type_metrics_t bson_type_metrics = state.bson_type_metrics[j]; - printf (" \"%s\": %" PRIu64 ",\n", - bson_type_metrics.description, - (uint64_t) floor ((double) bson_type_metrics.count * 100.0 / - (double) BSON_MAX (state.element_count, 1))); - } - printf (" }\n"); - printf (" }"); - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - printf ("\n]\n"); - - return 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-streaming-reader.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-streaming-reader.c deleted file mode 100644 index ff55d82..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-streaming-reader.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2015 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#ifdef _WIN32 -#include -#include -#else -#include -#include -#include -#include -#include -#endif - - -#define DEFAULT_PORT "5000" -#define DEFAULT_HOST "localhost" - - -/* - * bson-streaming-remote-open -- - * - * Makes a connection to the specified host and port over TCP. This - * abstracts away most of the socket details required to make a - * connection. - * - * Parameters: - * @hostname: The name of the host to connect to, or NULL. - * @port: The port number of the server on the host, or NULL. - * - * Returns: - * A valid file descriptor ready for reading on success. - * -1 on failure. - */ -int -bson_streaming_remote_open (const char *hostname, const char *port) -{ - int error, sock; - struct addrinfo hints, *ptr, *server_list; - - /* - * Look up the host's address information, hinting that we'd like to use a - * TCP/IP connection. - */ - memset (&hints, 0, sizeof hints); - hints.ai_family = PF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - error = - getaddrinfo ((!hostname || !strlen (hostname)) ? DEFAULT_HOST : hostname, - (!port || !strlen (port)) ? DEFAULT_PORT : port, - &hints, - &server_list); - - if (error) { - fprintf (stderr, - "bson-streaming-remote-open: Failed to get server info: %s\n", - gai_strerror (error)); - return -1; - } - - /* - * Iterate through the results of getaddrinfo, attempting to connect to the - * first possible result. - */ - for (ptr = server_list; ptr != NULL; ptr = ptr->ai_next) { - sock = socket (ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); - - if (sock < 0) { - perror ("bson-streaming-remote-open: socket creation failed"); - continue; - } - - if (connect (sock, ptr->ai_addr, ptr->ai_addrlen) < 0) { - close (sock); - perror ("bson-streaming-remote-open: connect failure"); - continue; - } - - /* - * Connection success. - */ - break; - } - - freeaddrinfo (server_list); - if (ptr == NULL) { - fprintf (stderr, - "bson-streaming-remote-open: failed to connect to server\n"); - return -1; - } - - return sock; -} - - -/* - * main -- - * - * Connects to a server and reads BSON from it. This program takes the - * following command line options: - * - * -h Print this help and exit. - * -s SERVER_NAME Specify the host name of the server. - * -p PORT_NUM Specify the port number to connect to on the server. - */ -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - char *hostname = NULL; - char *json; - char *port = NULL; - const bson_t *document; - int fd; - int opt; - - opterr = 1; - - /* - * Parse command line arguments. - */ - while ((opt = getopt (argc, argv, "hs:p:")) != -1) { - switch (opt) { - case 'h': - fprintf ( - stdout, "Usage: %s [-s SERVER_NAME] [-p PORT_NUM]\n", argv[0]); - free (hostname); - free (port); - return EXIT_SUCCESS; - case 'p': - free (port); - port = (char *) malloc (strlen (optarg) + 1); - strcpy (port, optarg); - break; - case 's': - free (hostname); - hostname = (char *) malloc (strlen (optarg) + 1); - strcpy (hostname, optarg); - break; - default: - fprintf (stderr, "Unknown option: %s\n", optarg); - } - } - - /* - * Open a file descriptor on the remote and read in BSON documents, one by - * one. As an example of processing, this prints the incoming documents as - * JSON onto STDOUT. - */ - fd = bson_streaming_remote_open (hostname, port); - if (fd == -1) { - free (hostname); - free (port); - return EXIT_FAILURE; - } - - reader = bson_reader_new_from_fd (fd, true); - while ((document = bson_reader_read (reader, NULL))) { - json = bson_as_canonical_extended_json (document, NULL); - fprintf (stdout, "%s\n", json); - bson_free (json); - } - - /* - * Destroy the reader, which performs cleanup. The ``true'' argument passed - * to bson_reader_new_from_fd tells libbson to close the file descriptor on - * destruction. - */ - bson_reader_destroy (reader); - free (hostname); - free (port); - return EXIT_SUCCESS; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-to-json.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-to-json.c deleted file mode 100644 index e4e7139..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-to-json.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each BSON document contained in the provided files - * as a JSON string to STDOUT. - */ - - -#include -#include - -#ifndef STDIN_FILENO -#define STDIN_FILENO 0 -#endif - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - char *str; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s [FILE | -]...\nUse - for STDIN.\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - if (strcmp (filename, "-") == 0) { - reader = bson_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - str = bson_as_canonical_extended_json (b, NULL); - fprintf (stdout, "%s\n", str); - bson_free (str); - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-validate.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-validate.c deleted file mode 100644 index baeb4e7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/bson-validate.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will validate each BSON document contained in the files provide - * as arguments to the program. Each document from each file is read in - * sequence until a bad BSON document is found or there are no more documents - * to read. - * - * Try running it with: - * - * ./bson-validate tests/binary/overflow2.bson - * ./bson-validate tests/binary/trailingnull.bson - */ - - -#include -#include -#include - - -int -main (int argc, char *argv[]) -{ - bson_reader_t *reader; - const bson_t *b; - bson_error_t error; - const char *filename; - size_t offset; - int docnum; - int i; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - docnum = 0; - - /* - * Initialize a new reader for this file descriptor. - */ - if (!(reader = bson_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - - /* - * Convert each incoming document to JSON and print to stdout. - */ - while ((b = bson_reader_read (reader, NULL))) { - docnum++; - if (!bson_validate ( - b, - (BSON_VALIDATE_UTF8 | BSON_VALIDATE_UTF8_ALLOW_NULL), - &offset)) { - fprintf (stderr, - "Document %u in \"%s\" is invalid at offset %u.\n", - docnum, - filename, - (int) offset); - bson_reader_destroy (reader); - return 1; - } - } - - /* - * Cleanup after our reader, which closes the file descriptor. - */ - bson_reader_destroy (reader); - } - - return 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package/CMakeLists.txt deleted file mode 100644 index 74ee789..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 MongoDB Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Demonstrates how to use the CMake 'find_package' mechanism to locate -# and build against libbson. - -cmake_minimum_required (VERSION 2.8) - -if (APPLE) - cmake_policy (SET CMP0042 OLD) -endif () - -project (hello_bson LANGUAGES C) - -# NOTE: For this to work, the CMAKE_PREFIX_PATH variable must be set to point to -# the directory that was used as the argument to CMAKE_INSTALL_PREFIX when -# building libbson. -# -- sphinx-include-start -- -# Specify the minimum version you require. -find_package (libbson-1.0 1.7 REQUIRED) - -message ("-- libbson found version \"${BSON_VERSION}\"") -message ("-- libbson include path \"${BSON_INCLUDE_DIRS}\"") -message ("-- libbson libraries \"${BSON_LIBRARIES}\"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_DEFINITIONS}) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package_static/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package_static/CMakeLists.txt deleted file mode 100644 index 47ca754..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/cmake/find_package_static/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 MongoDB Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Demonstrates how to use the CMake 'find_package' mechanism to locate -# and build against libbson. - -cmake_minimum_required (VERSION 2.8) - -if (APPLE) - cmake_policy (SET CMP0042 OLD) -endif () - -project (hello_bson LANGUAGES C) - -# NOTE: For this to work, the CMAKE_PREFIX_PATH variable must be set to point to -# the directory that was used as the argument to CMAKE_INSTALL_PREFIX when -# building libbson. -# -- sphinx-include-start -- -# Specify the minimum version you require. -find_package (libbson-static-1.0 1.7 REQUIRED) - -message ("-- libbson-static found version \"${BSON_STATIC_VERSION}\"") -message ("-- libbson-static include path \"${BSON_STATIC_INCLUDE_DIRS}\"") -message ("-- libbson-static libraries \"${BSON_STATIC_LIBRARIES}\"") - -# The "hello_bson.c" sample program is shared among four tests. -add_executable (hello_bson ../../hello_bson.c) -target_include_directories (hello_bson PRIVATE ${BSON_STATIC_INCLUDE_DIRS}) -target_link_libraries (hello_bson PRIVATE ${BSON_STATIC_LIBRARIES}) -target_compile_definitions (hello_bson PRIVATE ${BSON_STATIC_DEFINITIONS}) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config-static.sh b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config-static.sh deleted file mode 100644 index cc7fc51..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config-static.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -set -o xtrace # Write all commands first to stderr -set -o errexit # Exit the script with error if any of the commands fail - -# -- sphinx-include-start -- -gcc -o hello_bson hello_bson.c $(pkg-config --libs --cflags libbson-static-1.0) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config.sh b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config.sh deleted file mode 100644 index acf91f4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/compile-with-pkg-config.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -set -o xtrace # Write all commands first to stderr -set -o errexit # Exit the script with error if any of the commands fail - -# -- sphinx-include-start -- -gcc -o hello_bson hello_bson.c $(pkg-config --libs --cflags libbson-1.0) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/hello_bson.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/hello_bson.c deleted file mode 100644 index 5bb1ea5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/hello_bson.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2017 MongoDB Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* -- sphinx-include-start -- */ -#include -#include - -int -main (int argc, const char **argv) -{ - bson_t *b; - char *j; - - b = BCON_NEW ("hello", BCON_UTF8 ("bson!")); - j = bson_as_canonical_extended_json (b, NULL); - printf ("%s\n", j); - - bson_free (j); - bson_destroy (b); - - return 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/json-to-bson.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/json-to-bson.c deleted file mode 100644 index 7339d2d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/examples/json-to-bson.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* - * This program will print each JSON document contained in the provided files - * as a BSON string to STDOUT. - */ - - -#include -#include -#include - - -#ifndef STDIN_FILENO -#define STDIN_FILENO 0 -#endif - -int -main (int argc, char *argv[]) -{ - bson_json_reader_t *reader; - bson_error_t error; - const char *filename; - bson_t doc = BSON_INITIALIZER; - int i; - int b; - - /* - * Print program usage if no arguments are provided. - */ - if (argc == 1) { - fprintf (stderr, "usage: %s FILE...\n", argv[0]); - return 1; - } - - /* - * Process command line arguments expecting each to be a filename. - */ - for (i = 1; i < argc; i++) { - filename = argv[i]; - - /* - * Open the filename provided in command line arguments. - */ - if (0 == strcmp (filename, "-")) { - reader = bson_json_reader_new_from_fd (STDIN_FILENO, false); - } else { - if (!(reader = bson_json_reader_new_from_file (filename, &error))) { - fprintf ( - stderr, "Failed to open \"%s\": %s\n", filename, error.message); - continue; - } - } - - /* - * Convert each incoming document to BSON and print to stdout. - */ - while ((b = bson_json_reader_read (reader, &doc, &error))) { - if (b < 0) { - fprintf (stderr, "Error in json parsing:\n%s\n", error.message); - abort (); - } - - if (fwrite (bson_get_data (&doc), 1, doc.len, stdout) != doc.len) { - fprintf (stderr, "Failed to write to stdout, exiting.\n"); - exit (1); - } - bson_reinit (&doc); - } - - bson_json_reader_destroy (reader); - bson_destroy (&doc); - } - - return 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/CMakeLists.txt deleted file mode 100644 index 6a8befb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_subdirectory (bson) -add_subdirectory (jsonsl) - -set_local_dist (src_libbson_src_DIST_local - CMakeLists.txt - libbson-1.0.pc.in - libbson-static-1.0.pc.in -) - -set (src_libbson_src_DIST - ${src_libbson_src_DIST_local} - ${src_libbson_src_bson_DIST} - ${src_libbson_src_jsonsl_DIST} - PARENT_SCOPE -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/CMakeLists.txt deleted file mode 100644 index 29a5ec7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/CMakeLists.txt +++ /dev/null @@ -1,68 +0,0 @@ -set (src_libbson_src_bson_DIST_hs - bcon.h - bson.h - bson-atomic.h - bson-clock.h - bson-compat.h - bson-context.h - bson-decimal128.h - bson-endian.h - bson-error.h - bson-iter.h - bson-json.h - bson-keys.h - bson-macros.h - bson-md5.h - bson-memory.h - bson-oid.h - bson-reader.h - bson-string.h - bson-types.h - bson-utf8.h - bson-value.h - bson-version-functions.h - bson-writer.h - bson-private.h - bson-iso8601-private.h - bson-context-private.h - bson-fnv-private.h - bson-timegm-private.h - forwarding/bson.h -) -extra_dist_generated ( - bson-version.h -) - -set (src_libbson_src_bson_DIST_cs - bcon.c - bson.c - bson-atomic.c - bson-clock.c - bson-context.c - bson-decimal128.c - bson-error.c - bson-fnv.c - bson-iter.c - bson-iso8601.c - bson-json.c - bson-keys.c - bson-md5.c - bson-memory.c - bson-oid.c - bson-reader.c - bson-string.c - bson-timegm.c - bson-utf8.c - bson-value.c - bson-version-functions.c - bson-writer.c -) - -set_dist_list (src_libbson_src_bson_DIST - CMakeLists.txt - bson-config.h.in - bson-version.h.in - modules/module.modulemap.in - ${src_libbson_src_bson_DIST_hs} - ${src_libbson_src_bson_DIST_cs} -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.c deleted file mode 100644 index e3c81fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.c +++ /dev/null @@ -1,1017 +0,0 @@ -/* - * @file bcon.c - * @brief BCON (BSON C Object Notation) Implementation - */ - -/* Copyright 2009-2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "bson/bcon.h" -#include "bson/bson-config.h" - -/* These stack manipulation macros are used to manage append recursion in - * bcon_append_ctx_va(). They take care of some awkward dereference rules (the - * real bson object isn't in the stack, but accessed by pointer) and add in run - * time asserts to make sure we don't blow the stack in either direction */ - -#define STACK_ELE(_delta, _name) (ctx->stack[(_delta) + ctx->n]._name) - -#define STACK_BSON(_delta) \ - (((_delta) + ctx->n) == 0 ? bson : &STACK_ELE (_delta, bson)) - -#define STACK_ITER(_delta) \ - (((_delta) + ctx->n) == 0 ? &root_iter : &STACK_ELE (_delta, iter)) - -#define STACK_BSON_PARENT STACK_BSON (-1) -#define STACK_BSON_CHILD STACK_BSON (0) - -#define STACK_ITER_PARENT STACK_ITER (-1) -#define STACK_ITER_CHILD STACK_ITER (0) - -#define STACK_I STACK_ELE (0, i) -#define STACK_IS_ARRAY STACK_ELE (0, is_array) - -#define STACK_PUSH_ARRAY(statement) \ - do { \ - BSON_ASSERT (ctx->n < (BCON_STACK_MAX - 1)); \ - ctx->n++; \ - STACK_I = 0; \ - STACK_IS_ARRAY = 1; \ - statement; \ - } while (0) - -#define STACK_PUSH_DOC(statement) \ - do { \ - BSON_ASSERT (ctx->n < (BCON_STACK_MAX - 1)); \ - ctx->n++; \ - STACK_IS_ARRAY = 0; \ - statement; \ - } while (0) - -#define STACK_POP_ARRAY(statement) \ - do { \ - BSON_ASSERT (STACK_IS_ARRAY); \ - BSON_ASSERT (ctx->n != 0); \ - statement; \ - ctx->n--; \ - } while (0) - -#define STACK_POP_DOC(statement) \ - do { \ - BSON_ASSERT (!STACK_IS_ARRAY); \ - BSON_ASSERT (ctx->n != 0); \ - statement; \ - ctx->n--; \ - } while (0) - -/* This is a landing pad union for all of the types we can process with bcon. - * We need actual storage for this to capture the return value of va_arg, which - * takes multiple calls to get everything we need for some complex types */ -typedef union bcon_append { - char *UTF8; - double DOUBLE; - bson_t *DOCUMENT; - bson_t *ARRAY; - bson_t *BCON; - - struct { - bson_subtype_t subtype; - uint8_t *binary; - uint32_t length; - } BIN; - - bson_oid_t *OID; - bool BOOL; - int64_t DATE_TIME; - - struct { - char *regex; - char *flags; - } REGEX; - - struct { - char *collection; - bson_oid_t *oid; - } DBPOINTER; - - const char *CODE; - - char *SYMBOL; - - struct { - const char *js; - bson_t *scope; - } CODEWSCOPE; - - int32_t INT32; - - struct { - uint32_t timestamp; - uint32_t increment; - } TIMESTAMP; - - int64_t INT64; - bson_decimal128_t *DECIMAL128; - const bson_iter_t *ITER; -} bcon_append_t; - -/* same as bcon_append_t. Some extra symbols and varying types that handle the - * differences between bson_append and bson_iter */ -typedef union bcon_extract { - bson_type_t TYPE; - bson_iter_t *ITER; - const char *key; - const char **UTF8; - double *DOUBLE; - bson_t *DOCUMENT; - bson_t *ARRAY; - - struct { - bson_subtype_t *subtype; - const uint8_t **binary; - uint32_t *length; - } BIN; - - const bson_oid_t **OID; - bool *BOOL; - int64_t *DATE_TIME; - - struct { - const char **regex; - const char **flags; - } REGEX; - - struct { - const char **collection; - const bson_oid_t **oid; - } DBPOINTER; - - const char **CODE; - - const char **SYMBOL; - - struct { - const char **js; - bson_t *scope; - } CODEWSCOPE; - - int32_t *INT32; - - struct { - uint32_t *timestamp; - uint32_t *increment; - } TIMESTAMP; - - int64_t *INT64; - bson_decimal128_t *DECIMAL128; -} bcon_extract_t; - -static const char *gBconMagic = "BCON_MAGIC"; -static const char *gBconeMagic = "BCONE_MAGIC"; - -const char * -bson_bcon_magic (void) -{ - return gBconMagic; -} - - -const char * -bson_bcone_magic (void) -{ - return gBconeMagic; -} - -static void -_noop (void) -{ -} - -/* appends val to the passed bson object. Meant to be a super simple dispatch - * table */ -static void -_bcon_append_single (bson_t *bson, - bcon_type_t type, - const char *key, - bcon_append_t *val) -{ - switch ((int) type) { - case BCON_TYPE_UTF8: - BSON_ASSERT (bson_append_utf8 (bson, key, -1, val->UTF8, -1)); - break; - case BCON_TYPE_DOUBLE: - BSON_ASSERT (bson_append_double (bson, key, -1, val->DOUBLE)); - break; - case BCON_TYPE_BIN: { - BSON_ASSERT (bson_append_binary ( - bson, key, -1, val->BIN.subtype, val->BIN.binary, val->BIN.length)); - break; - } - case BCON_TYPE_UNDEFINED: - BSON_ASSERT (bson_append_undefined (bson, key, -1)); - break; - case BCON_TYPE_OID: - BSON_ASSERT (bson_append_oid (bson, key, -1, val->OID)); - break; - case BCON_TYPE_BOOL: - BSON_ASSERT (bson_append_bool (bson, key, -1, (bool) val->BOOL)); - break; - case BCON_TYPE_DATE_TIME: - BSON_ASSERT (bson_append_date_time (bson, key, -1, val->DATE_TIME)); - break; - case BCON_TYPE_NULL: - BSON_ASSERT (bson_append_null (bson, key, -1)); - break; - case BCON_TYPE_REGEX: { - BSON_ASSERT ( - bson_append_regex (bson, key, -1, val->REGEX.regex, val->REGEX.flags)); - break; - } - case BCON_TYPE_DBPOINTER: { - BSON_ASSERT (bson_append_dbpointer ( - bson, key, -1, val->DBPOINTER.collection, val->DBPOINTER.oid)); - break; - } - case BCON_TYPE_CODE: - BSON_ASSERT (bson_append_code (bson, key, -1, val->CODE)); - break; - case BCON_TYPE_SYMBOL: - BSON_ASSERT (bson_append_symbol (bson, key, -1, val->SYMBOL, -1)); - break; - case BCON_TYPE_CODEWSCOPE: - BSON_ASSERT (bson_append_code_with_scope ( - bson, key, -1, val->CODEWSCOPE.js, val->CODEWSCOPE.scope)); - break; - case BCON_TYPE_INT32: - BSON_ASSERT (bson_append_int32 (bson, key, -1, val->INT32)); - break; - case BCON_TYPE_TIMESTAMP: { - BSON_ASSERT (bson_append_timestamp ( - bson, key, -1, val->TIMESTAMP.timestamp, val->TIMESTAMP.increment)); - break; - } - case BCON_TYPE_INT64: - BSON_ASSERT (bson_append_int64 (bson, key, -1, val->INT64)); - break; - case BCON_TYPE_DECIMAL128: - BSON_ASSERT (bson_append_decimal128 (bson, key, -1, val->DECIMAL128)); - break; - case BCON_TYPE_MAXKEY: - BSON_ASSERT (bson_append_maxkey (bson, key, -1)); - break; - case BCON_TYPE_MINKEY: - BSON_ASSERT (bson_append_minkey (bson, key, -1)); - break; - case BCON_TYPE_ARRAY: { - BSON_ASSERT (bson_append_array (bson, key, -1, val->ARRAY)); - break; - } - case BCON_TYPE_DOCUMENT: { - BSON_ASSERT (bson_append_document (bson, key, -1, val->DOCUMENT)); - break; - } - case BCON_TYPE_ITER: - BSON_ASSERT (bson_append_iter (bson, key, -1, val->ITER)); - break; - default: - BSON_ASSERT (0); - break; - } -} - -#define CHECK_TYPE(_type) \ - do { \ - if (bson_iter_type (iter) != (_type)) { \ - return false; \ - } \ - } while (0) - -/* extracts the value under the iterator and writes it to val. returns false - * if the iterator type doesn't match the token type. - * - * There are two magic tokens: - * - * BCONE_SKIP - - * Let's us verify that a key has a type, without caring about its value. - * This allows for wider declarative BSON verification - * - * BCONE_ITER - - * Returns the underlying iterator. This could allow for more complicated, - * procedural verification (if a parameter could have multiple types). - * */ -static bool -_bcon_extract_single (const bson_iter_t *iter, - bcon_type_t type, - bcon_extract_t *val) -{ - switch ((int) type) { - case BCON_TYPE_UTF8: - CHECK_TYPE (BSON_TYPE_UTF8); - *val->UTF8 = bson_iter_utf8 (iter, NULL); - break; - case BCON_TYPE_DOUBLE: - CHECK_TYPE (BSON_TYPE_DOUBLE); - *val->DOUBLE = bson_iter_double (iter); - break; - case BCON_TYPE_BIN: - CHECK_TYPE (BSON_TYPE_BINARY); - bson_iter_binary ( - iter, val->BIN.subtype, val->BIN.length, val->BIN.binary); - break; - case BCON_TYPE_UNDEFINED: - CHECK_TYPE (BSON_TYPE_UNDEFINED); - break; - case BCON_TYPE_OID: - CHECK_TYPE (BSON_TYPE_OID); - *val->OID = bson_iter_oid (iter); - break; - case BCON_TYPE_BOOL: - CHECK_TYPE (BSON_TYPE_BOOL); - *val->BOOL = bson_iter_bool (iter); - break; - case BCON_TYPE_DATE_TIME: - CHECK_TYPE (BSON_TYPE_DATE_TIME); - *val->DATE_TIME = bson_iter_date_time (iter); - break; - case BCON_TYPE_NULL: - CHECK_TYPE (BSON_TYPE_NULL); - break; - case BCON_TYPE_REGEX: - CHECK_TYPE (BSON_TYPE_REGEX); - *val->REGEX.regex = bson_iter_regex (iter, val->REGEX.flags); - - break; - case BCON_TYPE_DBPOINTER: - CHECK_TYPE (BSON_TYPE_DBPOINTER); - bson_iter_dbpointer ( - iter, NULL, val->DBPOINTER.collection, val->DBPOINTER.oid); - break; - case BCON_TYPE_CODE: - CHECK_TYPE (BSON_TYPE_CODE); - *val->CODE = bson_iter_code (iter, NULL); - break; - case BCON_TYPE_SYMBOL: - CHECK_TYPE (BSON_TYPE_SYMBOL); - *val->SYMBOL = bson_iter_symbol (iter, NULL); - break; - case BCON_TYPE_CODEWSCOPE: { - const uint8_t *buf; - uint32_t len; - - CHECK_TYPE (BSON_TYPE_CODEWSCOPE); - - *val->CODEWSCOPE.js = bson_iter_codewscope (iter, NULL, &len, &buf); - - BSON_ASSERT (bson_init_static (val->CODEWSCOPE.scope, buf, len)); - break; - } - case BCON_TYPE_INT32: - CHECK_TYPE (BSON_TYPE_INT32); - *val->INT32 = bson_iter_int32 (iter); - break; - case BCON_TYPE_TIMESTAMP: - CHECK_TYPE (BSON_TYPE_TIMESTAMP); - bson_iter_timestamp ( - iter, val->TIMESTAMP.timestamp, val->TIMESTAMP.increment); - break; - case BCON_TYPE_INT64: - CHECK_TYPE (BSON_TYPE_INT64); - *val->INT64 = bson_iter_int64 (iter); - break; - case BCON_TYPE_DECIMAL128: - CHECK_TYPE (BSON_TYPE_DECIMAL128); - BSON_ASSERT (bson_iter_decimal128 (iter, val->DECIMAL128)); - break; - case BCON_TYPE_MAXKEY: - CHECK_TYPE (BSON_TYPE_MAXKEY); - break; - case BCON_TYPE_MINKEY: - CHECK_TYPE (BSON_TYPE_MINKEY); - break; - case BCON_TYPE_ARRAY: { - const uint8_t *buf; - uint32_t len; - - CHECK_TYPE (BSON_TYPE_ARRAY); - - bson_iter_array (iter, &len, &buf); - - BSON_ASSERT (bson_init_static (val->ARRAY, buf, len)); - break; - } - case BCON_TYPE_DOCUMENT: { - const uint8_t *buf; - uint32_t len; - - CHECK_TYPE (BSON_TYPE_DOCUMENT); - - bson_iter_document (iter, &len, &buf); - - BSON_ASSERT (bson_init_static (val->DOCUMENT, buf, len)); - break; - } - case BCON_TYPE_SKIP: - CHECK_TYPE (val->TYPE); - break; - case BCON_TYPE_ITER: - memcpy (val->ITER, iter, sizeof *iter); - break; - default: - BSON_ASSERT (0); - break; - } - - return true; -} - -/* Consumes ap, storing output values into u and returning the type of the - * captured token. - * - * The basic workflow goes like this: - * - * 1. Look at the current arg. It will be a char * - * a. If it's a NULL, we're done processing. - * b. If it's BCON_MAGIC (a symbol with storage in this module) - * I. The next token is the type - * II. The type specifies how many args to eat and their types - * c. Otherwise it's either recursion related or a raw string - * I. If the first byte is '{', '}', '[', or ']' pass back an - * appropriate recursion token - * II. If not, just call it a UTF8 token and pass that back - */ -static bcon_type_t -_bcon_append_tokenize (va_list *ap, bcon_append_t *u) -{ - char *mark; - bcon_type_t type; - - mark = va_arg (*ap, char *); - - BSON_ASSERT (mark != BCONE_MAGIC); - - if (mark == NULL) { - type = BCON_TYPE_END; - } else if (mark == BCON_MAGIC) { - type = va_arg (*ap, bcon_type_t); - - switch ((int) type) { - case BCON_TYPE_UTF8: - u->UTF8 = va_arg (*ap, char *); - break; - case BCON_TYPE_DOUBLE: - u->DOUBLE = va_arg (*ap, double); - break; - case BCON_TYPE_DOCUMENT: - u->DOCUMENT = va_arg (*ap, bson_t *); - break; - case BCON_TYPE_ARRAY: - u->ARRAY = va_arg (*ap, bson_t *); - break; - case BCON_TYPE_BIN: - u->BIN.subtype = va_arg (*ap, bson_subtype_t); - u->BIN.binary = va_arg (*ap, uint8_t *); - u->BIN.length = va_arg (*ap, uint32_t); - break; - case BCON_TYPE_UNDEFINED: - break; - case BCON_TYPE_OID: - u->OID = va_arg (*ap, bson_oid_t *); - break; - case BCON_TYPE_BOOL: - u->BOOL = va_arg (*ap, int); - break; - case BCON_TYPE_DATE_TIME: - u->DATE_TIME = va_arg (*ap, int64_t); - break; - case BCON_TYPE_NULL: - break; - case BCON_TYPE_REGEX: - u->REGEX.regex = va_arg (*ap, char *); - u->REGEX.flags = va_arg (*ap, char *); - break; - case BCON_TYPE_DBPOINTER: - u->DBPOINTER.collection = va_arg (*ap, char *); - u->DBPOINTER.oid = va_arg (*ap, bson_oid_t *); - break; - case BCON_TYPE_CODE: - u->CODE = va_arg (*ap, char *); - break; - case BCON_TYPE_SYMBOL: - u->SYMBOL = va_arg (*ap, char *); - break; - case BCON_TYPE_CODEWSCOPE: - u->CODEWSCOPE.js = va_arg (*ap, char *); - u->CODEWSCOPE.scope = va_arg (*ap, bson_t *); - break; - case BCON_TYPE_INT32: - u->INT32 = va_arg (*ap, int32_t); - break; - case BCON_TYPE_TIMESTAMP: - u->TIMESTAMP.timestamp = va_arg (*ap, uint32_t); - u->TIMESTAMP.increment = va_arg (*ap, uint32_t); - break; - case BCON_TYPE_INT64: - u->INT64 = va_arg (*ap, int64_t); - break; - case BCON_TYPE_DECIMAL128: - u->DECIMAL128 = va_arg (*ap, bson_decimal128_t *); - break; - case BCON_TYPE_MAXKEY: - break; - case BCON_TYPE_MINKEY: - break; - case BCON_TYPE_BCON: - u->BCON = va_arg (*ap, bson_t *); - break; - case BCON_TYPE_ITER: - u->ITER = va_arg (*ap, const bson_iter_t *); - break; - default: - BSON_ASSERT (0); - break; - } - } else { - switch (mark[0]) { - case '{': - type = BCON_TYPE_DOC_START; - break; - case '}': - type = BCON_TYPE_DOC_END; - break; - case '[': - type = BCON_TYPE_ARRAY_START; - break; - case ']': - type = BCON_TYPE_ARRAY_END; - break; - - default: - type = BCON_TYPE_UTF8; - u->UTF8 = mark; - break; - } - } - - return type; -} - - -/* Consumes ap, storing output values into u and returning the type of the - * captured token. - * - * The basic workflow goes like this: - * - * 1. Look at the current arg. It will be a char * - * a. If it's a NULL, we're done processing. - * b. If it's BCONE_MAGIC (a symbol with storage in this module) - * I. The next token is the type - * II. The type specifies how many args to eat and their types - * c. Otherwise it's either recursion related or a raw string - * I. If the first byte is '{', '}', '[', or ']' pass back an - * appropriate recursion token - * II. If not, just call it a UTF8 token and pass that back - */ -static bcon_type_t -_bcon_extract_tokenize (va_list *ap, bcon_extract_t *u) -{ - char *mark; - bcon_type_t type; - - mark = va_arg (*ap, char *); - - BSON_ASSERT (mark != BCON_MAGIC); - - if (mark == NULL) { - type = BCON_TYPE_END; - } else if (mark == BCONE_MAGIC) { - type = va_arg (*ap, bcon_type_t); - - switch ((int) type) { - case BCON_TYPE_UTF8: - u->UTF8 = va_arg (*ap, const char **); - break; - case BCON_TYPE_DOUBLE: - u->DOUBLE = va_arg (*ap, double *); - break; - case BCON_TYPE_DOCUMENT: - u->DOCUMENT = va_arg (*ap, bson_t *); - break; - case BCON_TYPE_ARRAY: - u->ARRAY = va_arg (*ap, bson_t *); - break; - case BCON_TYPE_BIN: - u->BIN.subtype = va_arg (*ap, bson_subtype_t *); - u->BIN.binary = va_arg (*ap, const uint8_t **); - u->BIN.length = va_arg (*ap, uint32_t *); - break; - case BCON_TYPE_UNDEFINED: - break; - case BCON_TYPE_OID: - u->OID = va_arg (*ap, const bson_oid_t **); - break; - case BCON_TYPE_BOOL: - u->BOOL = va_arg (*ap, bool *); - break; - case BCON_TYPE_DATE_TIME: - u->DATE_TIME = va_arg (*ap, int64_t *); - break; - case BCON_TYPE_NULL: - break; - case BCON_TYPE_REGEX: - u->REGEX.regex = va_arg (*ap, const char **); - u->REGEX.flags = va_arg (*ap, const char **); - break; - case BCON_TYPE_DBPOINTER: - u->DBPOINTER.collection = va_arg (*ap, const char **); - u->DBPOINTER.oid = va_arg (*ap, const bson_oid_t **); - break; - case BCON_TYPE_CODE: - u->CODE = va_arg (*ap, const char **); - break; - case BCON_TYPE_SYMBOL: - u->SYMBOL = va_arg (*ap, const char **); - break; - case BCON_TYPE_CODEWSCOPE: - u->CODEWSCOPE.js = va_arg (*ap, const char **); - u->CODEWSCOPE.scope = va_arg (*ap, bson_t *); - break; - case BCON_TYPE_INT32: - u->INT32 = va_arg (*ap, int32_t *); - break; - case BCON_TYPE_TIMESTAMP: - u->TIMESTAMP.timestamp = va_arg (*ap, uint32_t *); - u->TIMESTAMP.increment = va_arg (*ap, uint32_t *); - break; - case BCON_TYPE_INT64: - u->INT64 = va_arg (*ap, int64_t *); - break; - case BCON_TYPE_DECIMAL128: - u->DECIMAL128 = va_arg (*ap, bson_decimal128_t *); - break; - case BCON_TYPE_MAXKEY: - break; - case BCON_TYPE_MINKEY: - break; - case BCON_TYPE_SKIP: - u->TYPE = va_arg (*ap, bson_type_t); - break; - case BCON_TYPE_ITER: - u->ITER = va_arg (*ap, bson_iter_t *); - break; - default: - BSON_ASSERT (0); - break; - } - } else { - switch (mark[0]) { - case '{': - type = BCON_TYPE_DOC_START; - break; - case '}': - type = BCON_TYPE_DOC_END; - break; - case '[': - type = BCON_TYPE_ARRAY_START; - break; - case ']': - type = BCON_TYPE_ARRAY_END; - break; - - default: - type = BCON_TYPE_RAW; - u->key = mark; - break; - } - } - - return type; -} - - -/* This trivial utility function is useful for concatenating a bson object onto - * the end of another, ignoring the keys from the source bson object and - * continuing to use and increment the keys from the source. It's only useful - * when called from bcon_append_ctx_va */ -static void -_bson_concat_array (bson_t *dest, const bson_t *src, bcon_append_ctx_t *ctx) -{ - bson_iter_t iter; - const char *key; - char i_str[16]; - bool r; - - r = bson_iter_init (&iter, src); - - if (!r) { - fprintf (stderr, "Invalid BSON document, possible memory coruption.\n"); - return; - } - - STACK_I--; - - while (bson_iter_next (&iter)) { - bson_uint32_to_string (STACK_I, &key, i_str, sizeof i_str); - STACK_I++; - - BSON_ASSERT (bson_append_iter (dest, key, -1, &iter)); - } -} - - -/* Append_ctx_va consumes the va_list until NULL is found, appending into bson - * as tokens are found. It can receive or return an in-progress bson object - * via the ctx param. It can also operate on the middle of a va_list, and so - * can be wrapped inside of another varargs function. - * - * Note that passing in a va_list that isn't perferectly formatted for BCON - * ingestion will almost certainly result in undefined behavior - * - * The workflow relies on the passed ctx object, which holds a stack of bson - * objects, along with metadata (if the emedded layer is an array, and which - * element it is on if so). We iterate, generating tokens from the va_list, - * until we reach an END token. If any errors occur, we just blow up (the - * var_args stuff is already incredibly fragile to mistakes, and we have no way - * of introspecting, so just don't screw it up). - * - * There are also a few STACK_* macros in here which manimpulate ctx that are - * defined up top. - * */ -void -bcon_append_ctx_va (bson_t *bson, bcon_append_ctx_t *ctx, va_list *ap) -{ - bcon_type_t type; - const char *key; - char i_str[16]; - - bcon_append_t u = {0}; - - while (1) { - if (STACK_IS_ARRAY) { - bson_uint32_to_string (STACK_I, &key, i_str, sizeof i_str); - STACK_I++; - } else { - type = _bcon_append_tokenize (ap, &u); - - if (type == BCON_TYPE_END) { - return; - } - - if (type == BCON_TYPE_DOC_END) { - STACK_POP_DOC ( - bson_append_document_end (STACK_BSON_PARENT, STACK_BSON_CHILD)); - continue; - } - - if (type == BCON_TYPE_BCON) { - bson_concat (STACK_BSON_CHILD, u.BCON); - continue; - } - - BSON_ASSERT (type == BCON_TYPE_UTF8); - - key = u.UTF8; - } - - type = _bcon_append_tokenize (ap, &u); - BSON_ASSERT (type != BCON_TYPE_END); - - switch ((int) type) { - case BCON_TYPE_BCON: - BSON_ASSERT (STACK_IS_ARRAY); - _bson_concat_array (STACK_BSON_CHILD, u.BCON, ctx); - - break; - case BCON_TYPE_DOC_START: - STACK_PUSH_DOC (bson_append_document_begin ( - STACK_BSON_PARENT, key, -1, STACK_BSON_CHILD)); - break; - case BCON_TYPE_DOC_END: - STACK_POP_DOC ( - bson_append_document_end (STACK_BSON_PARENT, STACK_BSON_CHILD)); - break; - case BCON_TYPE_ARRAY_START: - STACK_PUSH_ARRAY (bson_append_array_begin ( - STACK_BSON_PARENT, key, -1, STACK_BSON_CHILD)); - break; - case BCON_TYPE_ARRAY_END: - STACK_POP_ARRAY ( - bson_append_array_end (STACK_BSON_PARENT, STACK_BSON_CHILD)); - break; - default: - _bcon_append_single (STACK_BSON_CHILD, type, key, &u); - - break; - } - } -} - - -/* extract_ctx_va consumes the va_list until NULL is found, extracting values - * as tokens are found. It can receive or return an in-progress bson object - * via the ctx param. It can also operate on the middle of a va_list, and so - * can be wrapped inside of another varargs function. - * - * Note that passing in a va_list that isn't perferectly formatted for BCON - * ingestion will almost certainly result in undefined behavior - * - * The workflow relies on the passed ctx object, which holds a stack of iterator - * objects, along with metadata (if the emedded layer is an array, and which - * element it is on if so). We iterate, generating tokens from the va_list, - * until we reach an END token. If any errors occur, we just blow up (the - * var_args stuff is already incredibly fragile to mistakes, and we have no way - * of introspecting, so just don't screw it up). - * - * There are also a few STACK_* macros in here which manimpulate ctx that are - * defined up top. - * - * The function returns true if all tokens could be successfully matched, false - * otherwise. - * */ -bool -bcon_extract_ctx_va (bson_t *bson, bcon_extract_ctx_t *ctx, va_list *ap) -{ - bcon_type_t type; - const char *key; - bson_iter_t root_iter; - bson_iter_t current_iter; - char i_str[16]; - - bcon_extract_t u = {0}; - - BSON_ASSERT (bson_iter_init (&root_iter, bson)); - - while (1) { - if (STACK_IS_ARRAY) { - bson_uint32_to_string (STACK_I, &key, i_str, sizeof i_str); - STACK_I++; - } else { - type = _bcon_extract_tokenize (ap, &u); - - if (type == BCON_TYPE_END) { - return true; - } - - if (type == BCON_TYPE_DOC_END) { - STACK_POP_DOC (_noop ()); - continue; - } - - BSON_ASSERT (type == BCON_TYPE_RAW); - - key = u.key; - } - - type = _bcon_extract_tokenize (ap, &u); - BSON_ASSERT (type != BCON_TYPE_END); - - if (type == BCON_TYPE_DOC_END) { - STACK_POP_DOC (_noop ()); - } else if (type == BCON_TYPE_ARRAY_END) { - STACK_POP_ARRAY (_noop ()); - } else { - memcpy (¤t_iter, STACK_ITER_CHILD, sizeof current_iter); - - if (!bson_iter_find (¤t_iter, key)) { - return false; - } - - switch ((int) type) { - case BCON_TYPE_DOC_START: - - if (bson_iter_type (¤t_iter) != BSON_TYPE_DOCUMENT) { - return false; - } - - STACK_PUSH_DOC ( - bson_iter_recurse (¤t_iter, STACK_ITER_CHILD)); - break; - case BCON_TYPE_ARRAY_START: - - if (bson_iter_type (¤t_iter) != BSON_TYPE_ARRAY) { - return false; - } - - STACK_PUSH_ARRAY ( - bson_iter_recurse (¤t_iter, STACK_ITER_CHILD)); - break; - default: - - if (!_bcon_extract_single (¤t_iter, type, &u)) { - return false; - } - - break; - } - } - } -} - -void -bcon_extract_ctx_init (bcon_extract_ctx_t *ctx) -{ - ctx->n = 0; - ctx->stack[0].is_array = false; -} - -bool -bcon_extract (bson_t *bson, ...) -{ - va_list ap; - bcon_extract_ctx_t ctx; - bool r; - - bcon_extract_ctx_init (&ctx); - - va_start (ap, bson); - - r = bcon_extract_ctx_va (bson, &ctx, &ap); - - va_end (ap); - - return r; -} - - -void -bcon_append (bson_t *bson, ...) -{ - va_list ap; - bcon_append_ctx_t ctx; - - bcon_append_ctx_init (&ctx); - - va_start (ap, bson); - - bcon_append_ctx_va (bson, &ctx, &ap); - - va_end (ap); -} - - -void -bcon_append_ctx (bson_t *bson, bcon_append_ctx_t *ctx, ...) -{ - va_list ap; - - va_start (ap, ctx); - - bcon_append_ctx_va (bson, ctx, &ap); - - va_end (ap); -} - - -void -bcon_extract_ctx (bson_t *bson, bcon_extract_ctx_t *ctx, ...) -{ - va_list ap; - - va_start (ap, ctx); - - bcon_extract_ctx_va (bson, ctx, &ap); - - va_end (ap); -} - -void -bcon_append_ctx_init (bcon_append_ctx_t *ctx) -{ - ctx->n = 0; - ctx->stack[0].is_array = 0; -} - - -bson_t * -bcon_new (void *unused, ...) -{ - va_list ap; - bcon_append_ctx_t ctx; - bson_t *bson; - - bcon_append_ctx_init (&ctx); - - bson = bson_new (); - - va_start (ap, unused); - - bcon_append_ctx_va (bson, &ctx, &ap); - - va_end (ap); - - return bson; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.h deleted file mode 100644 index 29251b0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bcon.h +++ /dev/null @@ -1,293 +0,0 @@ -/* - * @file bcon.h - * @brief BCON (BSON C Object Notation) Declarations - */ - -/* Copyright 2009-2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef BCON_H_ -#define BCON_H_ - -#include "bson/bson.h" - - -BSON_BEGIN_DECLS - - -#define BCON_STACK_MAX 100 - -#define BCON_ENSURE_DECLARE(fun, type) \ - static BSON_INLINE type bcon_ensure_##fun (type _t) \ - { \ - return _t; \ - } - -#define BCON_ENSURE(fun, val) bcon_ensure_##fun (val) - -#define BCON_ENSURE_STORAGE(fun, val) bcon_ensure_##fun (&(val)) - -BCON_ENSURE_DECLARE (const_char_ptr, const char *) -BCON_ENSURE_DECLARE (const_char_ptr_ptr, const char **) -BCON_ENSURE_DECLARE (double, double) -BCON_ENSURE_DECLARE (double_ptr, double *) -BCON_ENSURE_DECLARE (const_bson_ptr, const bson_t *) -BCON_ENSURE_DECLARE (bson_ptr, bson_t *) -BCON_ENSURE_DECLARE (subtype, bson_subtype_t) -BCON_ENSURE_DECLARE (subtype_ptr, bson_subtype_t *) -BCON_ENSURE_DECLARE (const_uint8_ptr, const uint8_t *) -BCON_ENSURE_DECLARE (const_uint8_ptr_ptr, const uint8_t **) -BCON_ENSURE_DECLARE (uint32, uint32_t) -BCON_ENSURE_DECLARE (uint32_ptr, uint32_t *) -BCON_ENSURE_DECLARE (const_oid_ptr, const bson_oid_t *) -BCON_ENSURE_DECLARE (const_oid_ptr_ptr, const bson_oid_t **) -BCON_ENSURE_DECLARE (int32, int32_t) -BCON_ENSURE_DECLARE (int32_ptr, int32_t *) -BCON_ENSURE_DECLARE (int64, int64_t) -BCON_ENSURE_DECLARE (int64_ptr, int64_t *) -BCON_ENSURE_DECLARE (const_decimal128_ptr, const bson_decimal128_t *) -BCON_ENSURE_DECLARE (bool, bool) -BCON_ENSURE_DECLARE (bool_ptr, bool *) -BCON_ENSURE_DECLARE (bson_type, bson_type_t) -BCON_ENSURE_DECLARE (bson_iter_ptr, bson_iter_t *) -BCON_ENSURE_DECLARE (const_bson_iter_ptr, const bson_iter_t *) - -#define BCON_UTF8(_val) \ - BCON_MAGIC, BCON_TYPE_UTF8, BCON_ENSURE (const_char_ptr, (_val)) -#define BCON_DOUBLE(_val) \ - BCON_MAGIC, BCON_TYPE_DOUBLE, BCON_ENSURE (double, (_val)) -#define BCON_DOCUMENT(_val) \ - BCON_MAGIC, BCON_TYPE_DOCUMENT, BCON_ENSURE (const_bson_ptr, (_val)) -#define BCON_ARRAY(_val) \ - BCON_MAGIC, BCON_TYPE_ARRAY, BCON_ENSURE (const_bson_ptr, (_val)) -#define BCON_BIN(_subtype, _binary, _length) \ - BCON_MAGIC, BCON_TYPE_BIN, BCON_ENSURE (subtype, (_subtype)), \ - BCON_ENSURE (const_uint8_ptr, (_binary)), \ - BCON_ENSURE (uint32, (_length)) -#define BCON_UNDEFINED BCON_MAGIC, BCON_TYPE_UNDEFINED -#define BCON_OID(_val) \ - BCON_MAGIC, BCON_TYPE_OID, BCON_ENSURE (const_oid_ptr, (_val)) -#define BCON_BOOL(_val) BCON_MAGIC, BCON_TYPE_BOOL, BCON_ENSURE (bool, (_val)) -#define BCON_DATE_TIME(_val) \ - BCON_MAGIC, BCON_TYPE_DATE_TIME, BCON_ENSURE (int64, (_val)) -#define BCON_NULL BCON_MAGIC, BCON_TYPE_NULL -#define BCON_REGEX(_regex, _flags) \ - BCON_MAGIC, BCON_TYPE_REGEX, BCON_ENSURE (const_char_ptr, (_regex)), \ - BCON_ENSURE (const_char_ptr, (_flags)) -#define BCON_DBPOINTER(_collection, _oid) \ - BCON_MAGIC, BCON_TYPE_DBPOINTER, \ - BCON_ENSURE (const_char_ptr, (_collection)), \ - BCON_ENSURE (const_oid_ptr, (_oid)) -#define BCON_CODE(_val) \ - BCON_MAGIC, BCON_TYPE_CODE, BCON_ENSURE (const_char_ptr, (_val)) -#define BCON_SYMBOL(_val) \ - BCON_MAGIC, BCON_TYPE_SYMBOL, BCON_ENSURE (const_char_ptr, (_val)) -#define BCON_CODEWSCOPE(_js, _scope) \ - BCON_MAGIC, BCON_TYPE_CODEWSCOPE, BCON_ENSURE (const_char_ptr, (_js)), \ - BCON_ENSURE (const_bson_ptr, (_scope)) -#define BCON_INT32(_val) \ - BCON_MAGIC, BCON_TYPE_INT32, BCON_ENSURE (int32, (_val)) -#define BCON_TIMESTAMP(_timestamp, _increment) \ - BCON_MAGIC, BCON_TYPE_TIMESTAMP, BCON_ENSURE (int32, (_timestamp)), \ - BCON_ENSURE (int32, (_increment)) -#define BCON_INT64(_val) \ - BCON_MAGIC, BCON_TYPE_INT64, BCON_ENSURE (int64, (_val)) -#define BCON_DECIMAL128(_val) \ - BCON_MAGIC, BCON_TYPE_DECIMAL128, BCON_ENSURE (const_decimal128_ptr, (_val)) -#define BCON_MAXKEY BCON_MAGIC, BCON_TYPE_MAXKEY -#define BCON_MINKEY BCON_MAGIC, BCON_TYPE_MINKEY -#define BCON(_val) \ - BCON_MAGIC, BCON_TYPE_BCON, BCON_ENSURE (const_bson_ptr, (_val)) -#define BCON_ITER(_val) \ - BCON_MAGIC, BCON_TYPE_ITER, BCON_ENSURE (const_bson_iter_ptr, (_val)) - -#define BCONE_UTF8(_val) \ - BCONE_MAGIC, BCON_TYPE_UTF8, BCON_ENSURE_STORAGE (const_char_ptr_ptr, (_val)) -#define BCONE_DOUBLE(_val) \ - BCONE_MAGIC, BCON_TYPE_DOUBLE, BCON_ENSURE_STORAGE (double_ptr, (_val)) -#define BCONE_DOCUMENT(_val) \ - BCONE_MAGIC, BCON_TYPE_DOCUMENT, BCON_ENSURE_STORAGE (bson_ptr, (_val)) -#define BCONE_ARRAY(_val) \ - BCONE_MAGIC, BCON_TYPE_ARRAY, BCON_ENSURE_STORAGE (bson_ptr, (_val)) -#define BCONE_BIN(subtype, binary, length) \ - BCONE_MAGIC, BCON_TYPE_BIN, BCON_ENSURE_STORAGE (subtype_ptr, (subtype)), \ - BCON_ENSURE_STORAGE (const_uint8_ptr_ptr, (binary)), \ - BCON_ENSURE_STORAGE (uint32_ptr, (length)) -#define BCONE_UNDEFINED BCONE_MAGIC, BCON_TYPE_UNDEFINED -#define BCONE_OID(_val) \ - BCONE_MAGIC, BCON_TYPE_OID, BCON_ENSURE_STORAGE (const_oid_ptr_ptr, (_val)) -#define BCONE_BOOL(_val) \ - BCONE_MAGIC, BCON_TYPE_BOOL, BCON_ENSURE_STORAGE (bool_ptr, (_val)) -#define BCONE_DATE_TIME(_val) \ - BCONE_MAGIC, BCON_TYPE_DATE_TIME, BCON_ENSURE_STORAGE (int64_ptr, (_val)) -#define BCONE_NULL BCONE_MAGIC, BCON_TYPE_NULL -#define BCONE_REGEX(_regex, _flags) \ - BCONE_MAGIC, BCON_TYPE_REGEX, \ - BCON_ENSURE_STORAGE (const_char_ptr_ptr, (_regex)), \ - BCON_ENSURE_STORAGE (const_char_ptr_ptr, (_flags)) -#define BCONE_DBPOINTER(_collection, _oid) \ - BCONE_MAGIC, BCON_TYPE_DBPOINTER, \ - BCON_ENSURE_STORAGE (const_char_ptr_ptr, (_collection)), \ - BCON_ENSURE_STORAGE (const_oid_ptr_ptr, (_oid)) -#define BCONE_CODE(_val) \ - BCONE_MAGIC, BCON_TYPE_CODE, BCON_ENSURE_STORAGE (const_char_ptr_ptr, (_val)) -#define BCONE_SYMBOL(_val) \ - BCONE_MAGIC, BCON_TYPE_SYMBOL, \ - BCON_ENSURE_STORAGE (const_char_ptr_ptr, (_val)) -#define BCONE_CODEWSCOPE(_js, _scope) \ - BCONE_MAGIC, BCON_TYPE_CODEWSCOPE, \ - BCON_ENSURE_STORAGE (const_char_ptr_ptr, (_js)), \ - BCON_ENSURE_STORAGE (bson_ptr, (_scope)) -#define BCONE_INT32(_val) \ - BCONE_MAGIC, BCON_TYPE_INT32, BCON_ENSURE_STORAGE (int32_ptr, (_val)) -#define BCONE_TIMESTAMP(_timestamp, _increment) \ - BCONE_MAGIC, BCON_TYPE_TIMESTAMP, \ - BCON_ENSURE_STORAGE (int32_ptr, (_timestamp)), \ - BCON_ENSURE_STORAGE (int32_ptr, (_increment)) -#define BCONE_INT64(_val) \ - BCONE_MAGIC, BCON_TYPE_INT64, BCON_ENSURE_STORAGE (int64_ptr, (_val)) -#define BCONE_DECIMAL128(_val) \ - BCONE_MAGIC, BCON_TYPE_DECIMAL128, \ - BCON_ENSURE_STORAGE (const_decimal128_ptr, (_val)) -#define BCONE_MAXKEY BCONE_MAGIC, BCON_TYPE_MAXKEY -#define BCONE_MINKEY BCONE_MAGIC, BCON_TYPE_MINKEY -#define BCONE_SKIP(_val) \ - BCONE_MAGIC, BCON_TYPE_SKIP, BCON_ENSURE (bson_type, (_val)) -#define BCONE_ITER(_val) \ - BCONE_MAGIC, BCON_TYPE_ITER, BCON_ENSURE_STORAGE (bson_iter_ptr, (_val)) - -#define BCON_MAGIC bson_bcon_magic () -#define BCONE_MAGIC bson_bcone_magic () - -typedef enum { - BCON_TYPE_UTF8, - BCON_TYPE_DOUBLE, - BCON_TYPE_DOCUMENT, - BCON_TYPE_ARRAY, - BCON_TYPE_BIN, - BCON_TYPE_UNDEFINED, - BCON_TYPE_OID, - BCON_TYPE_BOOL, - BCON_TYPE_DATE_TIME, - BCON_TYPE_NULL, - BCON_TYPE_REGEX, - BCON_TYPE_DBPOINTER, - BCON_TYPE_CODE, - BCON_TYPE_SYMBOL, - BCON_TYPE_CODEWSCOPE, - BCON_TYPE_INT32, - BCON_TYPE_TIMESTAMP, - BCON_TYPE_INT64, - BCON_TYPE_DECIMAL128, - BCON_TYPE_MAXKEY, - BCON_TYPE_MINKEY, - BCON_TYPE_BCON, - BCON_TYPE_ARRAY_START, - BCON_TYPE_ARRAY_END, - BCON_TYPE_DOC_START, - BCON_TYPE_DOC_END, - BCON_TYPE_END, - BCON_TYPE_RAW, - BCON_TYPE_SKIP, - BCON_TYPE_ITER, - BCON_TYPE_ERROR, -} bcon_type_t; - -typedef struct bcon_append_ctx_frame { - int i; - bool is_array; - bson_t bson; -} bcon_append_ctx_frame_t; - -typedef struct bcon_extract_ctx_frame { - int i; - bool is_array; - bson_iter_t iter; -} bcon_extract_ctx_frame_t; - -typedef struct _bcon_append_ctx_t { - bcon_append_ctx_frame_t stack[BCON_STACK_MAX]; - int n; -} bcon_append_ctx_t; - -typedef struct _bcon_extract_ctx_t { - bcon_extract_ctx_frame_t stack[BCON_STACK_MAX]; - int n; -} bcon_extract_ctx_t; - -BSON_EXPORT (void) -bcon_append (bson_t *bson, ...) BSON_GNUC_NULL_TERMINATED; -BSON_EXPORT (void) -bcon_append_ctx (bson_t *bson, - bcon_append_ctx_t *ctx, - ...) BSON_GNUC_NULL_TERMINATED; -BSON_EXPORT (void) -bcon_append_ctx_va (bson_t *bson, bcon_append_ctx_t *ctx, va_list *va); -BSON_EXPORT (void) -bcon_append_ctx_init (bcon_append_ctx_t *ctx); - -BSON_EXPORT (void) -bcon_extract_ctx_init (bcon_extract_ctx_t *ctx); - -BSON_EXPORT (void) -bcon_extract_ctx (bson_t *bson, - bcon_extract_ctx_t *ctx, - ...) BSON_GNUC_NULL_TERMINATED; - -BSON_EXPORT (bool) -bcon_extract_ctx_va (bson_t *bson, bcon_extract_ctx_t *ctx, va_list *ap); - -BSON_EXPORT (bool) -bcon_extract (bson_t *bson, ...) BSON_GNUC_NULL_TERMINATED; - -BSON_EXPORT (bool) -bcon_extract_va (bson_t *bson, - bcon_extract_ctx_t *ctx, - ...) BSON_GNUC_NULL_TERMINATED; - -BSON_EXPORT (bson_t *) -bcon_new (void *unused, ...) BSON_GNUC_NULL_TERMINATED; - -/** - * The bcon_..() functions are all declared with __attribute__((sentinel)). - * - * From GCC manual for "sentinel": "A valid NULL in this context is defined as - * zero with any pointer type. If your system defines the NULL macro with an - * integer type then you need to add an explicit cast." - * Case in point: GCC on Solaris (at least) - */ -#define BCON_APPEND(_bson, ...) \ - bcon_append ((_bson), __VA_ARGS__, (void *) NULL) -#define BCON_APPEND_CTX(_bson, _ctx, ...) \ - bcon_append_ctx ((_bson), (_ctx), __VA_ARGS__, (void *) NULL) - -#define BCON_EXTRACT(_bson, ...) \ - bcon_extract ((_bson), __VA_ARGS__, (void *) NULL) - -#define BCON_EXTRACT_CTX(_bson, _ctx, ...) \ - bcon_extract ((_bson), (_ctx), __VA_ARGS__, (void *) NULL) - -#define BCON_NEW(...) bcon_new (NULL, __VA_ARGS__, (void *) NULL) - -BSON_EXPORT (const char *) -bson_bcon_magic (void) BSON_GNUC_PURE; -BSON_EXPORT (const char *) -bson_bcone_magic (void) BSON_GNUC_PURE; - - -BSON_END_DECLS - - -#endif diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.c deleted file mode 100644 index 3faf896..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "bson/bson-atomic.h" - - -/* - * We should only ever hit these on non-Windows systems, for which we require - * pthread support. Therefore, we will avoid making a threading portability - * for threads here and just use pthreads directly. - */ - - -#ifdef __BSON_NEED_BARRIER -#include -static pthread_mutex_t gBarrier = PTHREAD_MUTEX_INITIALIZER; -void -bson_memory_barrier (void) -{ - pthread_mutex_lock (&gBarrier); - pthread_mutex_unlock (&gBarrier); -} -#endif - - -#ifdef __BSON_NEED_ATOMIC_32 -#include -static pthread_mutex_t gSync32 = PTHREAD_MUTEX_INITIALIZER; -int32_t -bson_atomic_int_add (volatile int32_t *p, int32_t n) -{ - int ret; - - pthread_mutex_lock (&gSync32); - *p += n; - ret = *p; - pthread_mutex_unlock (&gSync32); - - return ret; -} -#endif - - -#ifdef __BSON_NEED_ATOMIC_64 -#include -static pthread_mutex_t gSync64 = PTHREAD_MUTEX_INITIALIZER; -int64_t -bson_atomic_int64_add (volatile int64_t *p, int64_t n) -{ - int64_t ret; - - pthread_mutex_lock (&gSync64); - *p += n; - ret = *p; - pthread_mutex_unlock (&gSync64); - - return ret; -} -#endif diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.h deleted file mode 100644 index 18e29c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-atomic.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2013-2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_ATOMIC_H -#define BSON_ATOMIC_H - - -#include "bson/bson-config.h" -#include "bson/bson-compat.h" -#include "bson/bson-macros.h" - - -BSON_BEGIN_DECLS - - -#if defined(__sun) && defined(__SVR4) -/* Solaris */ -#include -#define bson_atomic_int_add(p, v) \ - atomic_add_32_nv ((volatile uint32_t *) p, (v)) -#define bson_atomic_int64_add(p, v) \ - atomic_add_64_nv ((volatile uint64_t *) p, (v)) -#elif defined(_WIN32) -/* MSVC/MinGW */ -#define bson_atomic_int_add(p, v) \ - (InterlockedExchangeAdd ((volatile LONG *) (p), (LONG) (v)) + (LONG) (v)) -#define bson_atomic_int64_add(p, v) \ - (InterlockedExchangeAdd64 ((volatile LONGLONG *) (p), (LONGLONG) (v)) + \ - (LONGLONG) (v)) -#else -#ifdef BSON_HAVE_ATOMIC_32_ADD_AND_FETCH -#define bson_atomic_int_add(p, v) __sync_add_and_fetch ((p), (v)) -#else -#define __BSON_NEED_ATOMIC_32 -#endif -#ifdef BSON_HAVE_ATOMIC_64_ADD_AND_FETCH -#if BSON_GNUC_IS_VERSION(4, 1) -/* - * GCC 4.1 on i386 can generate buggy 64-bit atomic increment. - * So we will work around with a fallback. - * - * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40693 - */ -#define __BSON_NEED_ATOMIC_64 -#else -#define bson_atomic_int64_add(p, v) \ - __sync_add_and_fetch ((volatile int64_t *) (p), (int64_t) (v)) -#endif -#else -#define __BSON_NEED_ATOMIC_64 -#endif -#endif - -#ifdef __BSON_NEED_ATOMIC_32 -BSON_EXPORT (int32_t) -bson_atomic_int_add (volatile int32_t *p, int32_t n); -#endif -#ifdef __BSON_NEED_ATOMIC_64 -BSON_EXPORT (int64_t) -bson_atomic_int64_add (volatile int64_t *p, int64_t n); -#endif - - -#if defined(_WIN32) -#define bson_memory_barrier() MemoryBarrier () -#elif defined(__GNUC__) -#if BSON_GNUC_CHECK_VERSION(4, 1) -#define bson_memory_barrier() __sync_synchronize () -#else -#warning "GCC Pre-4.1 discovered, using inline assembly for memory barrier." -#define bson_memory_barrier() __asm__ volatile("" ::: "memory") -#endif -#elif defined(__SUNPRO_C) -#include -#define bson_memory_barrier() __machine_rw_barrier () -#elif defined(__xlC__) -#define bson_memory_barrier() __sync () -#else -#define __BSON_NEED_BARRIER 1 -#warning "Unknown compiler, using lock for compiler barrier." -BSON_EXPORT (void) -bson_memory_barrier (void); -#endif - - -BSON_END_DECLS - - -#endif /* BSON_ATOMIC_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.c deleted file mode 100644 index b3819d4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifdef __APPLE__ -#include -#include -#include -#include -#endif - - -#include "bson/bson-config.h" -#include "bson/bson-compat.h" - - -#if defined(BSON_HAVE_CLOCK_GETTIME) -#include -#include -#endif - -#include "bson/bson-clock.h" - - -/* - *-------------------------------------------------------------------------- - * - * bson_gettimeofday -- - * - * A wrapper around gettimeofday() with fallback support for Windows. - * - * Returns: - * 0 if successful. - * - * Side effects: - * @tv is set. - * - *-------------------------------------------------------------------------- - */ - -int -bson_gettimeofday (struct timeval *tv) /* OUT */ -{ -#if defined(_WIN32) -#if defined(_MSC_VER) -#define DELTA_EPOCH_IN_MICROSEC 11644473600000000Ui64 -#else -#define DELTA_EPOCH_IN_MICROSEC 11644473600000000ULL -#endif - FILETIME ft; - uint64_t tmp = 0; - - /* - * The const value is shamelessly stolen from - * http://www.boost.org/doc/libs/1_55_0/boost/chrono/detail/inlined/win/chrono.hpp - * - * File times are the number of 100 nanosecond intervals elapsed since - * 12:00 am Jan 1, 1601 UTC. I haven't check the math particularly hard - * - * ... good luck - */ - - if (tv) { - GetSystemTimeAsFileTime (&ft); - - /* pull out of the filetime into a 64 bit uint */ - tmp |= ft.dwHighDateTime; - tmp <<= 32; - tmp |= ft.dwLowDateTime; - - /* convert from 100's of nanosecs to microsecs */ - tmp /= 10; - - /* adjust to unix epoch */ - tmp -= DELTA_EPOCH_IN_MICROSEC; - - tv->tv_sec = (long) (tmp / 1000000UL); - tv->tv_usec = (long) (tmp % 1000000UL); - } - - return 0; -#else - return gettimeofday (tv, NULL); -#endif -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_get_monotonic_time -- - * - * Returns the monotonic system time, if available. A best effort is - * made to use the monotonic clock. However, some systems may not - * support such a feature. - * - * Returns: - * The monotonic clock in microseconds. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -int64_t -bson_get_monotonic_time (void) -{ -#if defined(BSON_HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) - struct timespec ts; - /* ts.tv_sec may be a four-byte integer on 32 bit machines, so cast to - * int64_t to avoid truncation. */ - clock_gettime (CLOCK_MONOTONIC, &ts); - return (((int64_t) ts.tv_sec * 1000000) + (ts.tv_nsec / 1000)); -#elif defined(__APPLE__) - static mach_timebase_info_data_t info = {0}; - static double ratio = 0.0; - - if (!info.denom) { - /* the value from mach_absolute_time () * info.numer / info.denom - * is in nano seconds. So we have to divid by 1000.0 to get micro - * seconds*/ - mach_timebase_info (&info); - ratio = (double) info.numer / (double) info.denom / 1000.0; - } - - return mach_absolute_time () * ratio; -#elif defined(_WIN32) - /* Despite it's name, this is in milliseconds! */ - int64_t ticks = GetTickCount64 (); - return (ticks * 1000); -#elif defined(__hpux__) - int64_t nanosec = gethrtime (); - return (nanosec / 1000UL); -#else -#warning "Monotonic clock is not yet supported on your platform." - struct timeval tv; - - bson_gettimeofday (&tv); - return ((int64_t) tv.tv_sec * 1000000) + tv.tv_usec; -#endif -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.h deleted file mode 100644 index 195668d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-clock.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_CLOCK_H -#define BSON_CLOCK_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson-compat.h" -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -BSON_EXPORT (int64_t) -bson_get_monotonic_time (void); -BSON_EXPORT (int) -bson_gettimeofday (struct timeval *tv); - - -BSON_END_DECLS - - -#endif /* BSON_CLOCK_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-compat.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-compat.h deleted file mode 100644 index 68f384d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-compat.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_COMPAT_H -#define BSON_COMPAT_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#if defined(__MINGW32__) -#if defined(__USE_MINGW_ANSI_STDIO) -#if __USE_MINGW_ANSI_STDIO < 1 -#error "__USE_MINGW_ANSI_STDIO > 0 is required for correct PRI* macros" -#endif -#else -#define __USE_MINGW_ANSI_STDIO 1 -#endif -#endif - -#include "bson/bson-config.h" -#include "bson/bson-macros.h" - - -#ifdef BSON_OS_WIN32 -#if defined(_WIN32_WINNT) && (_WIN32_WINNT < 0x0600) -#undef _WIN32_WINNT -#endif -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0600 -#endif -#ifndef NOMINMAX -#define NOMINMAX -#endif -#include -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#include -#undef WIN32_LEAN_AND_MEAN -#else -#include -#endif -#include -#include -#endif - - -#ifdef BSON_OS_UNIX -#include -#include -#endif - - -#include "bson/bson-macros.h" - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -BSON_BEGIN_DECLS - -#if !defined(_MSC_VER) || (_MSC_VER >= 1800) -#include -#endif -#ifdef _MSC_VER -#ifndef __cplusplus -/* benign redefinition of type */ -#pragma warning(disable : 4142) -#ifndef _SSIZE_T_DEFINED -#define _SSIZE_T_DEFINED -typedef SSIZE_T ssize_t; -#endif -#ifndef _SIZE_T_DEFINED -#define _SIZE_T_DEFINED -typedef SIZE_T size_t; -#endif -#pragma warning(default : 4142) -#else -/* - * MSVC++ does not include ssize_t, just size_t. - * So we need to synthesize that as well. - */ -#pragma warning(disable : 4142) -#ifndef _SSIZE_T_DEFINED -#define _SSIZE_T_DEFINED -typedef SSIZE_T ssize_t; -#endif -#pragma warning(default : 4142) -#endif -#ifndef PRIi32 -#define PRIi32 "d" -#endif -#ifndef PRId32 -#define PRId32 "d" -#endif -#ifndef PRIu32 -#define PRIu32 "u" -#endif -#ifndef PRIi64 -#define PRIi64 "I64i" -#endif -#ifndef PRId64 -#define PRId64 "I64i" -#endif -#ifndef PRIu64 -#define PRIu64 "I64u" -#endif -#endif - -#if defined(__MINGW32__) && !defined(INIT_ONCE_STATIC_INIT) -#define INIT_ONCE_STATIC_INIT RTL_RUN_ONCE_INIT -typedef RTL_RUN_ONCE INIT_ONCE; -#endif - -#ifdef BSON_HAVE_STDBOOL_H -#include -#elif !defined(__bool_true_false_are_defined) -#ifndef __cplusplus -typedef signed char bool; -#define false 0 -#define true 1 -#endif -#define __bool_true_false_are_defined 1 -#endif - - -#if defined(__GNUC__) -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) -#define bson_sync_synchronize() __sync_synchronize () -#elif defined(__i386__) || defined(__i486__) || defined(__i586__) || \ - defined(__i686__) || defined(__x86_64__) -#define bson_sync_synchronize() asm volatile("mfence" ::: "memory") -#else -#define bson_sync_synchronize() asm volatile("sync" ::: "memory") -#endif -#elif defined(_MSC_VER) -#define bson_sync_synchronize() MemoryBarrier () -#endif - - -#if !defined(va_copy) && defined(__va_copy) -#define va_copy(dst, src) __va_copy (dst, src) -#endif - - -#if !defined(va_copy) -#define va_copy(dst, src) ((dst) = (src)) -#endif - - -BSON_END_DECLS - - -#endif /* BSON_COMPAT_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-config.h.in b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-config.h.in deleted file mode 100644 index f09c32b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-config.h.in +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef BSON_CONFIG_H -#define BSON_CONFIG_H - -/* - * Define to 1234 for Little Endian, 4321 for Big Endian. - */ -#define BSON_BYTE_ORDER @BSON_BYTE_ORDER@ - - -/* - * Define to 1 if you have stdbool.h - */ -#define BSON_HAVE_STDBOOL_H @BSON_HAVE_STDBOOL_H@ -#if BSON_HAVE_STDBOOL_H != 1 -# undef BSON_HAVE_STDBOOL_H -#endif - - -/* - * Define to 1 for POSIX-like systems, 2 for Windows. - */ -#define BSON_OS @BSON_OS@ - - -/* - * Define to 1 if we have access to GCC 32-bit atomic builtins. - * While this requires GCC 4.1+ in most cases, it is also architecture - * dependent. For example, some PPC or ARM systems may not have it even - * if it is a recent GCC version. - */ -#define BSON_HAVE_ATOMIC_32_ADD_AND_FETCH @BSON_HAVE_ATOMIC_32_ADD_AND_FETCH@ -#if BSON_HAVE_ATOMIC_32_ADD_AND_FETCH != 1 -# undef BSON_HAVE_ATOMIC_32_ADD_AND_FETCH -#endif - -/* - * Similarly, define to 1 if we have access to GCC 64-bit atomic builtins. - */ -#define BSON_HAVE_ATOMIC_64_ADD_AND_FETCH @BSON_HAVE_ATOMIC_64_ADD_AND_FETCH@ -#if BSON_HAVE_ATOMIC_64_ADD_AND_FETCH != 1 -# undef BSON_HAVE_ATOMIC_64_ADD_AND_FETCH -#endif - - -/* - * Define to 1 if you have clock_gettime() available. - */ -#define BSON_HAVE_CLOCK_GETTIME @BSON_HAVE_CLOCK_GETTIME@ -#if BSON_HAVE_CLOCK_GETTIME != 1 -# undef BSON_HAVE_CLOCK_GETTIME -#endif - - -/* - * Define to 1 if you have strings.h available on your platform. - */ -#define BSON_HAVE_STRINGS_H @BSON_HAVE_STRINGS_H@ -#if BSON_HAVE_STRINGS_H != 1 -# undef BSON_HAVE_STRINGS_H -#endif - - -/* - * Define to 1 if you have strnlen available on your platform. - */ -#define BSON_HAVE_STRNLEN @BSON_HAVE_STRNLEN@ -#if BSON_HAVE_STRNLEN != 1 -# undef BSON_HAVE_STRNLEN -#endif - - -/* - * Define to 1 if you have snprintf available on your platform. - */ -#define BSON_HAVE_SNPRINTF @BSON_HAVE_SNPRINTF@ -#if BSON_HAVE_SNPRINTF != 1 -# undef BSON_HAVE_SNPRINTF -#endif - - -/* - * Define to 1 if you have gmtime_r available on your platform. - */ -#define BSON_HAVE_GMTIME_R @BSON_HAVE_GMTIME_R@ -#if BSON_HAVE_GMTIME_R != 1 -# undef BSON_HAVE_GMTIME_R -#endif - - -/* - * Define to 1 if you have reallocf available on your platform. - */ -#define BSON_HAVE_REALLOCF @BSON_HAVE_REALLOCF@ -#if BSON_HAVE_REALLOCF != 1 -# undef BSON_HAVE_REALLOCF -#endif - - -/* - * Define to 1 if you have struct timespec available on your platform. - */ -#define BSON_HAVE_TIMESPEC @BSON_HAVE_TIMESPEC@ -#if BSON_HAVE_TIMESPEC != 1 -# undef BSON_HAVE_TIMESPEC -#endif - - -/* - * Define to 1 if you want extra aligned types in libbson - */ -#define BSON_EXTRA_ALIGN @BSON_EXTRA_ALIGN@ -#if BSON_EXTRA_ALIGN != 1 -# undef BSON_EXTRA_ALIGN -#endif - - -/* - * Define to 1 if you have SYS_gettid syscall - */ -#define BSON_HAVE_SYSCALL_TID @BSON_HAVE_SYSCALL_TID@ -#if BSON_HAVE_SYSCALL_TID != 1 -# undef BSON_HAVE_SYSCALL_TID -#endif - -#define BSON_HAVE_RAND_R @BSON_HAVE_RAND_R@ -#if BSON_HAVE_RAND_R != 1 -# undef BSON_HAVE_RAND_R -#endif - - -#endif /* BSON_CONFIG_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context-private.h deleted file mode 100644 index 0edce82..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context-private.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_CONTEXT_PRIVATE_H -#define BSON_CONTEXT_PRIVATE_H - - -#include "bson/bson-context.h" -#include "common-thread-private.h" - - -BSON_BEGIN_DECLS - - -struct _bson_context_t { - /* flags are defined in bson_context_flags_t */ - int flags : 7; - bool pidbe_once : 1; - uint8_t pidbe[2]; - uint8_t fnv[3]; - int32_t seq32; - int64_t seq64; - - void (*oid_get_host) (bson_context_t *context, bson_oid_t *oid); - void (*oid_get_pid) (bson_context_t *context, bson_oid_t *oid); - void (*oid_get_seq32) (bson_context_t *context, bson_oid_t *oid); - void (*oid_get_seq64) (bson_context_t *context, bson_oid_t *oid); -}; - - -BSON_END_DECLS - - -#endif /* BSON_CONTEXT_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.c deleted file mode 100644 index faae662..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.c +++ /dev/null @@ -1,502 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "bson/bson-compat.h" - -#include -#include -#include -#include -#include - -#include "bson/bson-atomic.h" -#include "bson/bson-clock.h" -#include "bson/bson-context.h" -#include "bson/bson-context-private.h" -#include "bson/bson-fnv-private.h" -#include "bson/bson-memory.h" -#include "common-thread-private.h" - -#ifdef BSON_HAVE_SYSCALL_TID -#include -#endif - - -#ifndef HOST_NAME_MAX -#define HOST_NAME_MAX 256 -#endif - - -/* - * Globals. - */ -static bson_context_t gContextDefault; - - -#ifdef BSON_HAVE_SYSCALL_TID -static long -bson_gettid (void) -{ - return syscall (SYS_gettid); -} -#endif - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_host -- - * - * Retrieves a 3 byte hash of the hostname and assigns those bytes - * to the host portion of oid. - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_host (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - uint8_t *bytes = (uint8_t *) oid; - uint32_t fnv1a_hash; - char hostname[HOST_NAME_MAX]; - - BSON_ASSERT (context); - BSON_ASSERT (oid); - - gethostname (hostname, sizeof hostname); - hostname[HOST_NAME_MAX - 1] = '\0'; - - fnv1a_hash = _mongoc_fnv_24a_str (hostname); - - bytes[4] = (uint8_t) ((fnv1a_hash >> (0 * 8)) & 0xff); - bytes[5] = (uint8_t) ((fnv1a_hash >> (1 * 8)) & 0xff); - bytes[6] = (uint8_t) ((fnv1a_hash >> (2 * 8)) & 0xff); -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_host_cached -- - * - * Fetch the cached copy of the 3 byte hash of the hostname - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_host_cached (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - BSON_ASSERT (context); - BSON_ASSERT (oid); - - oid->bytes[4] = context->fnv[0]; - oid->bytes[5] = context->fnv[1]; - oid->bytes[6] = context->fnv[2]; -} - - -static BSON_INLINE uint16_t -_bson_getpid (void) -{ - uint16_t pid; -#ifdef BSON_OS_WIN32 - DWORD real_pid; - - real_pid = GetCurrentProcessId (); - pid = (real_pid & 0xFFFF) ^ ((real_pid >> 16) & 0xFFFF); -#else - pid = getpid (); -#endif - - return pid; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_pid -- - * - * Initialize the pid field of @oid. - * - * The pid field is 2 bytes, big-endian for memcmp(). - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_pid (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - uint16_t pid = _bson_getpid (); - uint8_t *bytes = (uint8_t *) &pid; - - BSON_ASSERT (context); - BSON_ASSERT (oid); - - pid = BSON_UINT16_TO_BE (pid); - - oid->bytes[7] = bytes[0]; - oid->bytes[8] = bytes[1]; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_pid_cached -- - * - * Fetch the cached copy of the current pid. - * This helps avoid multiple calls to getpid() which is slower - * on some systems. - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_pid_cached (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - oid->bytes[7] = context->pidbe[0]; - oid->bytes[8] = context->pidbe[1]; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_seq32 -- - * - * 32-bit sequence generator, non-thread-safe version. - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_seq32 (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - uint32_t seq = context->seq32++; - - seq = BSON_UINT32_TO_BE (seq); - memcpy (&oid->bytes[9], ((uint8_t *) &seq) + 1, 3); -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_seq32_threadsafe -- - * - * Thread-safe version of 32-bit sequence generator. - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_seq32_threadsafe (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - int32_t seq = bson_atomic_int_add (&context->seq32, 1); - - seq = BSON_UINT32_TO_BE (seq); - memcpy (&oid->bytes[9], ((uint8_t *) &seq) + 1, 3); -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_seq64 -- - * - * 64-bit oid sequence generator, non-thread-safe version. - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_seq64 (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - uint64_t seq; - - BSON_ASSERT (context); - BSON_ASSERT (oid); - - seq = BSON_UINT64_TO_BE (context->seq64++); - memcpy (&oid->bytes[4], &seq, sizeof (seq)); -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_context_get_oid_seq64_threadsafe -- - * - * Thread-safe 64-bit sequence generator. - * - * Returns: - * None. - * - * Side effects: - * @oid is modified. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_context_get_oid_seq64_threadsafe (bson_context_t *context, /* IN */ - bson_oid_t *oid) /* OUT */ -{ - int64_t seq = bson_atomic_int64_add (&context->seq64, 1); - - seq = BSON_UINT64_TO_BE (seq); - memcpy (&oid->bytes[4], &seq, sizeof (seq)); -} - - -static void -_bson_context_init (bson_context_t *context, /* IN */ - bson_context_flags_t flags) /* IN */ -{ - struct timeval tv; - uint16_t pid; - unsigned int seed[3]; - unsigned int real_seed; - bson_oid_t oid; - - context->flags = (int) flags; - context->oid_get_host = _bson_context_get_oid_host_cached; - context->oid_get_pid = _bson_context_get_oid_pid_cached; - context->oid_get_seq32 = _bson_context_get_oid_seq32; - context->oid_get_seq64 = _bson_context_get_oid_seq64; - - /* - * Generate a seed for our the random starting position of our increment - * bytes. We mask off the last nibble so that the last digit of the OID will - * start at zero. Just to be nice. - * - * The seed itself is made up of the current time in seconds, milliseconds, - * and pid xored together. I welcome better solutions if at all necessary. - */ - bson_gettimeofday (&tv); - seed[0] = (unsigned int) tv.tv_sec; - seed[1] = (unsigned int) tv.tv_usec; - seed[2] = _bson_getpid (); - real_seed = seed[0] ^ seed[1] ^ seed[2]; - -#ifndef BSON_HAVE_RAND_R - /* ms's runtime is multithreaded by default, so no rand_r */ - /* no rand_r on android either */ - srand (real_seed); - context->seq32 = rand () & 0x007FFFF0; -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \ - defined(__OpenBSD__) - arc4random_buf (&context->seq32, sizeof (context->seq32)); - context->seq32 &= 0x007FFFF0; -#else - context->seq32 = rand_r (&real_seed) & 0x007FFFF0; -#endif - - if ((flags & BSON_CONTEXT_DISABLE_HOST_CACHE)) { - context->oid_get_host = _bson_context_get_oid_host; - } else { - _bson_context_get_oid_host (context, &oid); - context->fnv[0] = oid.bytes[4]; - context->fnv[1] = oid.bytes[5]; - context->fnv[2] = oid.bytes[6]; - } - - if ((flags & BSON_CONTEXT_THREAD_SAFE)) { - context->oid_get_seq32 = _bson_context_get_oid_seq32_threadsafe; - context->oid_get_seq64 = _bson_context_get_oid_seq64_threadsafe; - } - - if ((flags & BSON_CONTEXT_DISABLE_PID_CACHE)) { - context->oid_get_pid = _bson_context_get_oid_pid; - } else { -#ifdef BSON_HAVE_SYSCALL_TID - if ((flags & BSON_CONTEXT_USE_TASK_ID)) { - uint16_t tid; - - /* This call is always successful */ - tid = (uint16_t) bson_gettid (); - pid = BSON_UINT16_TO_BE (tid); - } else -#endif - { - pid = BSON_UINT16_TO_BE (_bson_getpid ()); - } - - memcpy (&context->pidbe[0], &pid, 2); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_context_new -- - * - * Initializes a new context with the flags specified. - * - * In most cases, you want to call this with @flags set to - * BSON_CONTEXT_NONE. - * - * If you are running on Linux, %BSON_CONTEXT_USE_TASK_ID can result - * in a healthy speedup for multi-threaded scenarios. - * - * If you absolutely must have a single context for your application - * and use more than one thread, then %BSON_CONTEXT_THREAD_SAFE should - * be bitwise-or'd with your flags. This requires synchronization - * between threads. - * - * If you expect your hostname to change often, you may consider - * specifying %BSON_CONTEXT_DISABLE_HOST_CACHE so that gethostname() - * is called for every OID generated. This is much slower. - * - * If you expect your pid to change without notice, such as from an - * unexpected call to fork(), then specify - * %BSON_CONTEXT_DISABLE_PID_CACHE. - * - * Returns: - * A newly allocated bson_context_t that should be freed with - * bson_context_destroy(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_context_t * -bson_context_new (bson_context_flags_t flags) -{ - bson_context_t *context; - - context = bson_malloc0 (sizeof *context); - _bson_context_init (context, flags); - - return context; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_context_destroy -- - * - * Cleans up a bson_context_t and releases any associated resources. - * This should be called when you are done using @context. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_context_destroy (bson_context_t *context) /* IN */ -{ - bson_free (context); -} - - -static BSON_ONCE_FUN (_bson_context_init_default) -{ - _bson_context_init ( - &gContextDefault, - (BSON_CONTEXT_THREAD_SAFE | BSON_CONTEXT_DISABLE_PID_CACHE)); - BSON_ONCE_RETURN; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_context_get_default -- - * - * Fetches the default, thread-safe implementation of #bson_context_t. - * If you need faster generation, it is recommended you create your - * own #bson_context_t with bson_context_new(). - * - * Returns: - * A shared instance to the default #bson_context_t. This should not - * be modified or freed. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_context_t * -bson_context_get_default (void) -{ - static bson_once_t once = BSON_ONCE_INIT; - - bson_once (&once, _bson_context_init_default); - - return &gContextDefault; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.h deleted file mode 100644 index 0520d2d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-context.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_CONTEXT_H -#define BSON_CONTEXT_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -BSON_EXPORT (bson_context_t *) -bson_context_new (bson_context_flags_t flags); -BSON_EXPORT (void) -bson_context_destroy (bson_context_t *context); -BSON_EXPORT (bson_context_t *) -bson_context_get_default (void); - - -BSON_END_DECLS - - -#endif /* BSON_CONTEXT_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.c deleted file mode 100644 index 27829a5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.c +++ /dev/null @@ -1,773 +0,0 @@ - -/* - * Copyright 2015 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include - -#include "bson/bson-decimal128.h" -#include "bson/bson-types.h" -#include "bson/bson-macros.h" -#include "bson/bson-string.h" - - -#define BSON_DECIMAL128_EXPONENT_MAX 6111 -#define BSON_DECIMAL128_EXPONENT_MIN -6176 -#define BSON_DECIMAL128_EXPONENT_BIAS 6176 -#define BSON_DECIMAL128_MAX_DIGITS 34 - -#define BSON_DECIMAL128_SET_NAN(dec) \ - do { \ - (dec).high = 0x7c00000000000000ull; \ - (dec).low = 0; \ - } while (0); -#define BSON_DECIMAL128_SET_INF(dec, isneg) \ - do { \ - (dec).high = 0x7800000000000000ull + 0x8000000000000000ull * (isneg); \ - (dec).low = 0; \ - } while (0); - -/** - * _bson_uint128_t: - * - * This struct represents a 128 bit integer. - */ -typedef struct { - uint32_t parts[4]; /* 32-bit words stored high to low. */ -} _bson_uint128_t; - - -/** - *------------------------------------------------------------------------------ - * - * _bson_uint128_divide1B -- - * - * This function divides a #_bson_uint128_t by 1000000000 (1 billion) and - * computes the quotient and remainder. - * - * The remainder will contain 9 decimal digits for conversion to string. - * - * @value The #_bson_uint128_t operand. - * @quotient A pointer to store the #_bson_uint128_t quotient. - * @rem A pointer to store the #uint64_t remainder. - * - * Returns: - * The quotient at @quotient and the remainder at @rem. - * - * Side effects: - * None. - * - *------------------------------------------------------------------------------ - */ -static void -_bson_uint128_divide1B (_bson_uint128_t value, /* IN */ - _bson_uint128_t *quotient, /* OUT */ - uint32_t *rem) /* OUT */ -{ - const uint32_t DIVISOR = 1000 * 1000 * 1000; - uint64_t _rem = 0; - int i = 0; - - if (!value.parts[0] && !value.parts[1] && !value.parts[2] && - !value.parts[3]) { - *quotient = value; - *rem = 0; - return; - } - - - for (i = 0; i <= 3; i++) { - _rem <<= 32; /* Adjust remainder to match value of next dividend */ - _rem += value.parts[i]; /* Add the divided to _rem */ - value.parts[i] = (uint32_t) (_rem / DIVISOR); - _rem %= DIVISOR; /* Store the remainder */ - } - - *quotient = value; - *rem = (uint32_t) _rem; -} - - -/** - *------------------------------------------------------------------------------ - * - * bson_decimal128_to_string -- - * - * This function converts a BID formatted decimal128 value to string, - * accepting a &bson_decimal128_t as @dec. The string is stored at @str. - * - * @dec : The BID formatted decimal to convert. - * @str : The output decimal128 string. At least %BSON_DECIMAL128_STRING - *characters. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *------------------------------------------------------------------------------ - */ -void -bson_decimal128_to_string (const bson_decimal128_t *dec, /* IN */ - char *str) /* OUT */ -{ - uint32_t COMBINATION_MASK = 0x1f; /* Extract least significant 5 bits */ - uint32_t EXPONENT_MASK = 0x3fff; /* Extract least significant 14 bits */ - uint32_t COMBINATION_INFINITY = 30; /* Value of combination field for Inf */ - uint32_t COMBINATION_NAN = 31; /* Value of combination field for NaN */ - uint32_t EXPONENT_BIAS = 6176; /* decimal128 exponent bias */ - - char *str_out = str; /* output pointer in string */ - char significand_str[35]; /* decoded significand digits */ - - - /* Note: bits in this routine are referred to starting at 0, */ - /* from the sign bit, towards the coefficient. */ - uint32_t high; /* bits 0 - 31 */ - uint32_t midh; /* bits 32 - 63 */ - uint32_t midl; /* bits 64 - 95 */ - uint32_t low; /* bits 96 - 127 */ - uint32_t combination; /* bits 1 - 5 */ - uint32_t biased_exponent; /* decoded biased exponent (14 bits) */ - uint32_t significand_digits = 0; /* the number of significand digits */ - uint32_t significand[36] = {0}; /* the base-10 digits in the significand */ - uint32_t *significand_read = significand; /* read pointer into significand */ - int32_t exponent; /* unbiased exponent */ - int32_t scientific_exponent; /* the exponent if scientific notation is - * used */ - bool is_zero = false; /* true if the number is zero */ - - uint8_t significand_msb; /* the most signifcant significand bits (50-46) */ - _bson_uint128_t - significand128; /* temporary storage for significand decoding */ - size_t i; /* indexing variables */ - int j, k; - - memset (significand_str, 0, sizeof (significand_str)); - - if ((int64_t) dec->high < 0) { /* negative */ - *(str_out++) = '-'; - } - - low = (uint32_t) dec->low, midl = (uint32_t) (dec->low >> 32), - midh = (uint32_t) dec->high, high = (uint32_t) (dec->high >> 32); - - /* Decode combination field and exponent */ - combination = (high >> 26) & COMBINATION_MASK; - - if (BSON_UNLIKELY ((combination >> 3) == 3)) { - /* Check for 'special' values */ - if (combination == COMBINATION_INFINITY) { /* Infinity */ - strcpy (str_out, BSON_DECIMAL128_INF); - return; - } else if (combination == COMBINATION_NAN) { /* NaN */ - /* str, not str_out, to erase the sign */ - strcpy (str, BSON_DECIMAL128_NAN); - /* we don't care about the NaN payload. */ - return; - } else { - biased_exponent = (high >> 15) & EXPONENT_MASK; - significand_msb = 0x8 + ((high >> 14) & 0x1); - } - } else { - significand_msb = (high >> 14) & 0x7; - biased_exponent = (high >> 17) & EXPONENT_MASK; - } - - exponent = biased_exponent - EXPONENT_BIAS; - /* Create string of significand digits */ - - /* Convert the 114-bit binary number represented by */ - /* (high, midh, midl, low) to at most 34 decimal */ - /* digits through modulo and division. */ - significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14); - significand128.parts[1] = midh; - significand128.parts[2] = midl; - significand128.parts[3] = low; - - if (significand128.parts[0] == 0 && significand128.parts[1] == 0 && - significand128.parts[2] == 0 && significand128.parts[3] == 0) { - is_zero = true; - } else if (significand128.parts[0] >= (1 << 17)) { - /* The significand is non-canonical or zero. - * In order to preserve compatibility with the densely packed decimal - * format, the maximum value for the significand of decimal128 is - * 1e34 - 1. If the value is greater than 1e34 - 1, the IEEE 754 - * standard dictates that the significand is interpreted as zero. - */ - is_zero = true; - } else { - for (k = 3; k >= 0; k--) { - uint32_t least_digits = 0; - _bson_uint128_divide1B ( - significand128, &significand128, &least_digits); - - /* We now have the 9 least significant digits (in base 2). */ - /* Convert and output to string. */ - if (!least_digits) { - continue; - } - - for (j = 8; j >= 0; j--) { - significand[k * 9 + j] = least_digits % 10; - least_digits /= 10; - } - } - } - - /* Output format options: */ - /* Scientific - [-]d.dddE(+/-)dd or [-]dE(+/-)dd */ - /* Regular - ddd.ddd */ - - if (is_zero) { - significand_digits = 1; - *significand_read = 0; - } else { - significand_digits = 36; - while (!(*significand_read)) { - significand_digits--; - significand_read++; - } - } - - scientific_exponent = significand_digits - 1 + exponent; - - /* The scientific exponent checks are dictated by the string conversion - * specification and are somewhat arbitrary cutoffs. - * - * We must check exponent > 0, because if this is the case, the number - * has trailing zeros. However, we *cannot* output these trailing zeros, - * because doing so would change the precision of the value, and would - * change stored data if the string converted number is round tripped. - */ - if (scientific_exponent < -6 || exponent > 0) { - /* Scientific format */ - *(str_out++) = *(significand_read++) + '0'; - significand_digits--; - - if (significand_digits) { - *(str_out++) = '.'; - } - - for (i = 0; i < significand_digits && (str_out - str) < 36; i++) { - *(str_out++) = *(significand_read++) + '0'; - } - /* Exponent */ - *(str_out++) = 'E'; - bson_snprintf (str_out, 6, "%+d", scientific_exponent); - } else { - /* Regular format with no decimal place */ - if (exponent >= 0) { - for (i = 0; i < significand_digits && (str_out - str) < 36; i++) { - *(str_out++) = *(significand_read++) + '0'; - } - *str_out = '\0'; - } else { - int32_t radix_position = significand_digits + exponent; - - if (radix_position > 0) { /* non-zero digits before radix */ - for (i = 0; - i < radix_position && (str_out - str) < BSON_DECIMAL128_STRING; - i++) { - *(str_out++) = *(significand_read++) + '0'; - } - } else { /* leading zero before radix point */ - *(str_out++) = '0'; - } - - *(str_out++) = '.'; - while (radix_position++ < 0) { /* add leading zeros after radix */ - *(str_out++) = '0'; - } - - for (i = 0; - (i < significand_digits - BSON_MAX (radix_position - 1, 0)) && - (str_out - str) < BSON_DECIMAL128_STRING; - i++) { - *(str_out++) = *(significand_read++) + '0'; - } - *str_out = '\0'; - } - } -} - -typedef struct { - uint64_t high, low; -} _bson_uint128_6464_t; - - -/** - *------------------------------------------------------------------------- - * - * mul64x64 -- - * - * This function multiplies two &uint64_t into a &_bson_uint128_6464_t. - * - * Returns: - * The product of @left and @right. - * - * Side Effects: - * None. - * - *------------------------------------------------------------------------- - */ -static void -_mul_64x64 (uint64_t left, /* IN */ - uint64_t right, /* IN */ - _bson_uint128_6464_t *product) /* OUT */ -{ - uint64_t left_high, left_low, right_high, right_low, product_high, - product_mid, product_mid2, product_low; - _bson_uint128_6464_t rt = {0}; - - if (!left && !right) { - *product = rt; - return; - } - - left_high = left >> 32; - left_low = (uint32_t) left; - right_high = right >> 32; - right_low = (uint32_t) right; - - product_high = left_high * right_high; - product_mid = left_high * right_low; - product_mid2 = left_low * right_high; - product_low = left_low * right_low; - - product_high += product_mid >> 32; - product_mid = (uint32_t) product_mid + product_mid2 + (product_low >> 32); - - product_high = product_high + (product_mid >> 32); - product_low = (product_mid << 32) + (uint32_t) product_low; - - rt.high = product_high; - rt.low = product_low; - *product = rt; -} - -/** - *------------------------------------------------------------------------------ - * - * _dec128_tolower -- - * - * This function converts the ASCII character @c to lowercase. It is locale - * insensitive (unlike the stdlib tolower). - * - * Returns: - * The lowercased character. - */ -char -_dec128_tolower (char c) -{ - if (isupper (c)) { - c += 32; - } - - return c; -} - -/** - *------------------------------------------------------------------------------ - * - * _dec128_istreq -- - * - * This function compares the null-terminated *ASCII* strings @a and @b - * for case-insensitive equality. - * - * Returns: - * true if the strings are equal, false otherwise. - */ -bool -_dec128_istreq (const char *a, /* IN */ - const char *b /* IN */) -{ - while (*a != '\0' || *b != '\0') { - /* strings are different lengths. */ - if (*a == '\0' || *b == '\0') { - return false; - } - - if (_dec128_tolower (*a) != _dec128_tolower (*b)) { - return false; - } - - a++; - b++; - } - - return true; -} - -/** - *------------------------------------------------------------------------------ - * - * bson_decimal128_from_string -- - * - * This function converts @string in the format [+-]ddd[.]ddd[E][+-]dddd to - * decimal128. Out of range values are converted to +/-Infinity. Invalid - * strings are converted to NaN. - * - * If more digits are provided than the available precision allows, - * round to the nearest expressable decimal128 with ties going to even will - * occur. - * - * Note: @string must be ASCII only! - * - * Returns: - * true on success, or false on failure. @dec will be NaN if @str was invalid - * The &bson_decimal128_t converted from @string at @dec. - * - * Side effects: - * None. - * - *------------------------------------------------------------------------------ - */ -bool -bson_decimal128_from_string (const char *string, /* IN */ - bson_decimal128_t *dec) /* OUT */ -{ - return bson_decimal128_from_string_w_len (string, -1, dec); -} - - -/** - *------------------------------------------------------------------------------ - * - * bson_decimal128_from_string_w_len -- - * - * This function converts @string in the format [+-]ddd[.]ddd[E][+-]dddd to - * decimal128. Out of range values are converted to +/-Infinity. Invalid - * strings are converted to NaN. @len is the length of the string, or -1 - * meaning the string is null-terminated. - * - * If more digits are provided than the available precision allows, - * round to the nearest expressable decimal128 with ties going to even will - * occur. - * - * Note: @string must be ASCII only! - * - * Returns: - * true on success, or false on failure. @dec will be NaN if @str was invalid - * The &bson_decimal128_t converted from @string at @dec. - * - * Side effects: - * None. - * - *------------------------------------------------------------------------------ - */ -bool -bson_decimal128_from_string_w_len (const char *string, /* IN */ - int len, /* IN */ - bson_decimal128_t *dec) /* OUT */ -{ - _bson_uint128_6464_t significand = {0}; - - const char *str_read = string; /* Read pointer for consuming str. */ - - /* Parsing state tracking */ - bool is_negative = false; - bool saw_radix = false; - bool includes_sign = false; /* True if the input string contains a sign. */ - bool found_nonzero = false; - - size_t significant_digits = 0; /* Total number of significant digits - * (no leading or trailing zero) */ - size_t ndigits_read = 0; /* Total number of significand digits read */ - size_t ndigits = 0; /* Total number of digits (no leading zeros) */ - size_t radix_position = 0; /* The number of the digits after radix */ - size_t first_nonzero = 0; /* The index of the first non-zero in *str* */ - - uint16_t digits[BSON_DECIMAL128_MAX_DIGITS] = {0}; - uint16_t ndigits_stored = 0; /* The number of digits in digits */ - uint16_t *digits_insert = digits; /* Insertion pointer for digits */ - size_t first_digit = 0; /* The index of the first non-zero digit */ - size_t last_digit = 0; /* The index of the last digit */ - - int32_t exponent = 0; - uint64_t significand_high = 0; /* The high 17 digits of the significand */ - uint64_t significand_low = 0; /* The low 17 digits of the significand */ - uint16_t biased_exponent = 0; /* The biased exponent */ - - BSON_ASSERT (dec); - dec->high = 0; - dec->low = 0; - - if (*str_read == '+' || *str_read == '-') { - is_negative = *(str_read++) == '-'; - includes_sign = true; - } - - /* Check for Infinity or NaN */ - if (!isdigit (*str_read) && *str_read != '.') { - if (_dec128_istreq (str_read, "inf") || - _dec128_istreq (str_read, "infinity")) { - BSON_DECIMAL128_SET_INF (*dec, is_negative); - return true; - } else if (_dec128_istreq (str_read, "nan")) { - BSON_DECIMAL128_SET_NAN (*dec); - return true; - } - - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - /* Read digits */ - while (((isdigit (*str_read) || *str_read == '.')) && - (len == -1 || str_read < string + len)) { - if (*str_read == '.') { - if (saw_radix) { - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - saw_radix = true; - str_read++; - continue; - } - - if (ndigits_stored < 34) { - if (*str_read != '0' || found_nonzero) { - if (!found_nonzero) { - first_nonzero = ndigits_read; - } - - found_nonzero = true; - *(digits_insert++) = *(str_read) - '0'; /* Only store 34 digits */ - ndigits_stored++; - } - } - - if (found_nonzero) { - ndigits++; - } - - if (saw_radix) { - radix_position++; - } - - ndigits_read++; - str_read++; - } - - if (saw_radix && !ndigits_read) { - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - /* Read exponent if exists */ - if (*str_read == 'e' || *str_read == 'E') { - int nread = 0; -#ifdef _MSC_VER -#define SSCANF sscanf_s -#else -#define SSCANF sscanf -#endif - int read_exponent = SSCANF (++str_read, "%d%n", &exponent, &nread); - str_read += nread; - - if (!read_exponent || nread == 0) { - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - -#undef SSCANF - } - - if ((len == -1 || str_read < string + len) && *str_read) { - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - /* Done reading input. */ - /* Find first non-zero digit in digits */ - first_digit = 0; - - if (!ndigits_stored) { /* value is zero */ - first_digit = 0; - last_digit = 0; - digits[0] = 0; - ndigits = 1; - ndigits_stored = 1; - significant_digits = 0; - } else { - last_digit = ndigits_stored - 1; - significant_digits = ndigits; - /* Mark trailing zeros as non-significant */ - while (string[first_nonzero + significant_digits - 1 + includes_sign + - saw_radix] == '0') { - significant_digits--; - } - } - - - /* Normalization of exponent */ - /* Correct exponent based on radix position, and shift significand as needed - */ - /* to represent user input */ - - /* Overflow prevention */ - if (exponent <= radix_position && radix_position - exponent > (1 << 14)) { - exponent = BSON_DECIMAL128_EXPONENT_MIN; - } else { - exponent -= radix_position; - } - - /* Attempt to normalize the exponent */ - while (exponent > BSON_DECIMAL128_EXPONENT_MAX) { - /* Shift exponent to significand and decrease */ - last_digit++; - - if (last_digit - first_digit > BSON_DECIMAL128_MAX_DIGITS) { - /* The exponent is too great to shift into the significand. */ - if (significant_digits == 0) { - /* Value is zero, we are allowed to clamp the exponent. */ - exponent = BSON_DECIMAL128_EXPONENT_MAX; - break; - } - - /* Overflow is not permitted, error. */ - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - exponent--; - } - - while (exponent < BSON_DECIMAL128_EXPONENT_MIN || ndigits_stored < ndigits) { - /* Shift last digit */ - if (last_digit == 0) { - /* underflow is not allowed, but zero clamping is */ - if (significant_digits == 0) { - exponent = BSON_DECIMAL128_EXPONENT_MIN; - break; - } - - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - if (ndigits_stored < ndigits) { - if (string[ndigits - 1 + includes_sign + saw_radix] - '0' != 0 && - significant_digits != 0) { - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - ndigits--; /* adjust to match digits not stored */ - } else { - if (digits[last_digit] != 0) { - /* Inexact rounding is not allowed. */ - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - - - last_digit--; /* adjust to round */ - } - - if (exponent < BSON_DECIMAL128_EXPONENT_MAX) { - exponent++; - } else { - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - } - - /* Round */ - /* We've normalized the exponent, but might still need to round. */ - if (last_digit - first_digit + 1 < significant_digits) { - uint8_t round_digit; - - /* There are non-zero digits after last_digit that need rounding. */ - /* We round to nearest, ties to even */ - round_digit = - string[first_nonzero + last_digit + includes_sign + saw_radix + 1] - - '0'; - - if (round_digit != 0) { - /* Inexact (non-zero) rounding is not allowed */ - BSON_DECIMAL128_SET_NAN (*dec); - return false; - } - } - - /* Encode significand */ - significand_high = 0, /* The high 17 digits of the significand */ - significand_low = 0; /* The low 17 digits of the significand */ - - if (significant_digits == 0) { /* read a zero */ - significand_high = 0; - significand_low = 0; - } else if (last_digit - first_digit < 17) { - size_t d_idx = first_digit; - significand_low = digits[d_idx++]; - - for (; d_idx <= last_digit; d_idx++) { - significand_low *= 10; - significand_low += digits[d_idx]; - significand_high = 0; - } - } else { - size_t d_idx = first_digit; - significand_high = digits[d_idx++]; - - for (; d_idx <= last_digit - 17; d_idx++) { - significand_high *= 10; - significand_high += digits[d_idx]; - } - - significand_low = digits[d_idx++]; - - for (; d_idx <= last_digit; d_idx++) { - significand_low *= 10; - significand_low += digits[d_idx]; - } - } - - _mul_64x64 (significand_high, 100000000000000000ull, &significand); - significand.low += significand_low; - - if (significand.low < significand_low) { - significand.high += 1; - } - - - biased_exponent = (exponent + (int16_t) BSON_DECIMAL128_EXPONENT_BIAS); - - /* Encode combination, exponent, and significand. */ - if ((significand.high >> 49) & 1) { - /* Encode '11' into bits 1 to 3 */ - dec->high |= (0x3ull << 61); - dec->high |= (biased_exponent & 0x3fffull) << 47; - dec->high |= significand.high & 0x7fffffffffffull; - } else { - dec->high |= (biased_exponent & 0x3fffull) << 49; - dec->high |= significand.high & 0x1ffffffffffffull; - } - - dec->low = significand.low; - - /* Encode sign */ - if (is_negative) { - dec->high |= 0x8000000000000000ull; - } - - return true; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.h deleted file mode 100644 index e7fe7de..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-decimal128.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_DECIMAL128_H -#define BSON_DECIMAL128_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - -#include - -#include "bson/bson-macros.h" -#include "bson/bson-config.h" -#include "bson/bson-types.h" - - -/** - * BSON_DECIMAL128_STRING: - * - * The length of a decimal128 string (with null terminator). - * - * 1 for the sign - * 35 for digits and radix - * 2 for exponent indicator and sign - * 4 for exponent digits - */ -#define BSON_DECIMAL128_STRING 43 -#define BSON_DECIMAL128_INF "Infinity" -#define BSON_DECIMAL128_NAN "NaN" - - -BSON_BEGIN_DECLS - -BSON_EXPORT (void) -bson_decimal128_to_string (const bson_decimal128_t *dec, char *str); - - -/* Note: @string must be ASCII characters only! */ -BSON_EXPORT (bool) -bson_decimal128_from_string (const char *string, bson_decimal128_t *dec); - -BSON_EXPORT (bool) -bson_decimal128_from_string_w_len (const char *string, - int len, - bson_decimal128_t *dec); - -BSON_END_DECLS - - -#endif /* BSON_DECIMAL128_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-endian.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-endian.h deleted file mode 100644 index 4fc2dfd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-endian.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_ENDIAN_H -#define BSON_ENDIAN_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#if defined(__sun) -#include -#endif - -#include "bson/bson-config.h" -#include "bson/bson-macros.h" -#include "bson/bson-compat.h" - - -BSON_BEGIN_DECLS - - -#define BSON_BIG_ENDIAN 4321 -#define BSON_LITTLE_ENDIAN 1234 - - -#if defined(__sun) -#define BSON_UINT16_SWAP_LE_BE(v) BSWAP_16 ((uint16_t) v) -#define BSON_UINT32_SWAP_LE_BE(v) BSWAP_32 ((uint32_t) v) -#define BSON_UINT64_SWAP_LE_BE(v) BSWAP_64 ((uint64_t) v) -#elif defined(__clang__) && defined(__clang_major__) && \ - defined(__clang_minor__) && (__clang_major__ >= 3) && \ - (__clang_minor__ >= 1) -#if __has_builtin(__builtin_bswap16) -#define BSON_UINT16_SWAP_LE_BE(v) __builtin_bswap16 (v) -#endif -#if __has_builtin(__builtin_bswap32) -#define BSON_UINT32_SWAP_LE_BE(v) __builtin_bswap32 (v) -#endif -#if __has_builtin(__builtin_bswap64) -#define BSON_UINT64_SWAP_LE_BE(v) __builtin_bswap64 (v) -#endif -#elif defined(__GNUC__) && (__GNUC__ >= 4) -#if __GNUC__ > 4 || (defined(__GNUC_MINOR__) && __GNUC_MINOR__ >= 3) -#define BSON_UINT32_SWAP_LE_BE(v) __builtin_bswap32 ((uint32_t) v) -#define BSON_UINT64_SWAP_LE_BE(v) __builtin_bswap64 ((uint64_t) v) -#endif -#if __GNUC__ > 4 || (defined(__GNUC_MINOR__) && __GNUC_MINOR__ >= 8) -#define BSON_UINT16_SWAP_LE_BE(v) __builtin_bswap16 ((uint32_t) v) -#endif -#endif - - -#ifndef BSON_UINT16_SWAP_LE_BE -#define BSON_UINT16_SWAP_LE_BE(v) __bson_uint16_swap_slow ((uint16_t) v) -#endif - - -#ifndef BSON_UINT32_SWAP_LE_BE -#define BSON_UINT32_SWAP_LE_BE(v) __bson_uint32_swap_slow ((uint32_t) v) -#endif - - -#ifndef BSON_UINT64_SWAP_LE_BE -#define BSON_UINT64_SWAP_LE_BE(v) __bson_uint64_swap_slow ((uint64_t) v) -#endif - - -#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN -#define BSON_UINT16_FROM_LE(v) ((uint16_t) v) -#define BSON_UINT16_TO_LE(v) ((uint16_t) v) -#define BSON_UINT16_FROM_BE(v) BSON_UINT16_SWAP_LE_BE (v) -#define BSON_UINT16_TO_BE(v) BSON_UINT16_SWAP_LE_BE (v) -#define BSON_UINT32_FROM_LE(v) ((uint32_t) v) -#define BSON_UINT32_TO_LE(v) ((uint32_t) v) -#define BSON_UINT32_FROM_BE(v) BSON_UINT32_SWAP_LE_BE (v) -#define BSON_UINT32_TO_BE(v) BSON_UINT32_SWAP_LE_BE (v) -#define BSON_UINT64_FROM_LE(v) ((uint64_t) v) -#define BSON_UINT64_TO_LE(v) ((uint64_t) v) -#define BSON_UINT64_FROM_BE(v) BSON_UINT64_SWAP_LE_BE (v) -#define BSON_UINT64_TO_BE(v) BSON_UINT64_SWAP_LE_BE (v) -#define BSON_DOUBLE_FROM_LE(v) ((double) v) -#define BSON_DOUBLE_TO_LE(v) ((double) v) -#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN -#define BSON_UINT16_FROM_LE(v) BSON_UINT16_SWAP_LE_BE (v) -#define BSON_UINT16_TO_LE(v) BSON_UINT16_SWAP_LE_BE (v) -#define BSON_UINT16_FROM_BE(v) ((uint16_t) v) -#define BSON_UINT16_TO_BE(v) ((uint16_t) v) -#define BSON_UINT32_FROM_LE(v) BSON_UINT32_SWAP_LE_BE (v) -#define BSON_UINT32_TO_LE(v) BSON_UINT32_SWAP_LE_BE (v) -#define BSON_UINT32_FROM_BE(v) ((uint32_t) v) -#define BSON_UINT32_TO_BE(v) ((uint32_t) v) -#define BSON_UINT64_FROM_LE(v) BSON_UINT64_SWAP_LE_BE (v) -#define BSON_UINT64_TO_LE(v) BSON_UINT64_SWAP_LE_BE (v) -#define BSON_UINT64_FROM_BE(v) ((uint64_t) v) -#define BSON_UINT64_TO_BE(v) ((uint64_t) v) -#define BSON_DOUBLE_FROM_LE(v) (__bson_double_swap_slow (v)) -#define BSON_DOUBLE_TO_LE(v) (__bson_double_swap_slow (v)) -#else -#error "The endianness of target architecture is unknown." -#endif - - -/* - *-------------------------------------------------------------------------- - * - * __bson_uint16_swap_slow -- - * - * Fallback endianness conversion for 16-bit integers. - * - * Returns: - * The endian swapped version. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE uint16_t -__bson_uint16_swap_slow (uint16_t v) /* IN */ -{ - return ((v & 0x00FF) << 8) | ((v & 0xFF00) >> 8); -} - - -/* - *-------------------------------------------------------------------------- - * - * __bson_uint32_swap_slow -- - * - * Fallback endianness conversion for 32-bit integers. - * - * Returns: - * The endian swapped version. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE uint32_t -__bson_uint32_swap_slow (uint32_t v) /* IN */ -{ - return ((v & 0x000000FFU) << 24) | ((v & 0x0000FF00U) << 8) | - ((v & 0x00FF0000U) >> 8) | ((v & 0xFF000000U) >> 24); -} - - -/* - *-------------------------------------------------------------------------- - * - * __bson_uint64_swap_slow -- - * - * Fallback endianness conversion for 64-bit integers. - * - * Returns: - * The endian swapped version. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE uint64_t -__bson_uint64_swap_slow (uint64_t v) /* IN */ -{ - return ((v & 0x00000000000000FFULL) << 56) | - ((v & 0x000000000000FF00ULL) << 40) | - ((v & 0x0000000000FF0000ULL) << 24) | - ((v & 0x00000000FF000000ULL) << 8) | - ((v & 0x000000FF00000000ULL) >> 8) | - ((v & 0x0000FF0000000000ULL) >> 24) | - ((v & 0x00FF000000000000ULL) >> 40) | - ((v & 0xFF00000000000000ULL) >> 56); -} - - -/* - *-------------------------------------------------------------------------- - * - * __bson_double_swap_slow -- - * - * Fallback endianness conversion for double floating point. - * - * Returns: - * The endian swapped version. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -BSON_STATIC_ASSERT2 (sizeof_uint64_t, sizeof (double) == sizeof (uint64_t)); - -static BSON_INLINE double -__bson_double_swap_slow (double v) /* IN */ -{ - uint64_t uv; - - memcpy (&uv, &v, sizeof (v)); - uv = BSON_UINT64_SWAP_LE_BE (uv); - memcpy (&v, &uv, sizeof (v)); - - return v; -} - -BSON_END_DECLS - - -#endif /* BSON_ENDIAN_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.c deleted file mode 100644 index 6806377..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include - -#include "bson/bson-compat.h" -#include "bson/bson-config.h" -#include "bson/bson-error.h" -#include "bson/bson-memory.h" -#include "bson/bson-string.h" -#include "bson/bson-types.h" - - -/* - *-------------------------------------------------------------------------- - * - * bson_set_error -- - * - * Initializes @error using the parameters specified. - * - * @domain is an application specific error domain which should - * describe which module initiated the error. Think of this as the - * exception type. - * - * @code is the @domain specific error code. - * - * @format is used to generate the format string. It uses vsnprintf() - * internally so the format should match what you would use there. - * - * Parameters: - * @error: A #bson_error_t. - * @domain: The error domain. - * @code: The error code. - * @format: A printf style format string. - * - * Returns: - * None. - * - * Side effects: - * @error is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_set_error (bson_error_t *error, /* OUT */ - uint32_t domain, /* IN */ - uint32_t code, /* IN */ - const char *format, /* IN */ - ...) /* IN */ -{ - va_list args; - - if (error) { - error->domain = domain; - error->code = code; - - va_start (args, format); - bson_vsnprintf (error->message, sizeof error->message, format, args); - va_end (args); - - error->message[sizeof error->message - 1] = '\0'; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strerror_r -- - * - * This is a reentrant safe macro for strerror. - * - * The resulting string may be stored in @buf. - * - * Returns: - * A pointer to a static string or @buf. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_strerror_r (int err_code, /* IN */ - char *buf, /* IN */ - size_t buflen) /* IN */ -{ - static const char *unknown_msg = "Unknown error"; - char *ret = NULL; - -#if defined(_WIN32) - if (strerror_s (buf, buflen, err_code) != 0) { - ret = buf; - } -#elif defined(__GNUC__) && defined(_GNU_SOURCE) - ret = strerror_r (err_code, buf, buflen); -#else /* XSI strerror_r */ - if (strerror_r (err_code, buf, buflen) == 0) { - ret = buf; - } -#endif - - if (!ret) { - bson_strncpy (buf, unknown_msg, buflen); - ret = buf; - } - - return ret; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.h deleted file mode 100644 index af727c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-error.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_ERROR_H -#define BSON_ERROR_H - - -#include "bson/bson-compat.h" -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -#define BSON_ERROR_JSON 1 -#define BSON_ERROR_READER 2 -#define BSON_ERROR_INVALID 3 - - -BSON_EXPORT (void) -bson_set_error (bson_error_t *error, - uint32_t domain, - uint32_t code, - const char *format, - ...) BSON_GNUC_PRINTF (4, 5); -BSON_EXPORT (char *) -bson_strerror_r (int err_code, char *buf, size_t buflen); - - -BSON_END_DECLS - - -#endif /* BSON_ERROR_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv-private.h deleted file mode 100644 index 9781366..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv-private.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Please do not copyright this code. This code is in the public domain. - * - * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO - * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF - * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * By: - * chongo /\oo/\ - * http://www.isthe.com/chongo/ - */ - -#ifndef MONGO_C_DRIVER_BSON_FNV_PRIVATE_H -#define MONGO_C_DRIVER_BSON_FNV_PRIVATE_H - -#include "bson/bson.h" - -uint32_t -_mongoc_fnv_24a_str (char *str); - -#endif /* MONGO_C_DRIVER_BSON_FNV_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv.c deleted file mode 100644 index d7ddf9c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-fnv.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Please do not copyright this code. This code is in the public domain. - * - * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO - * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF - * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * By: - * chongo /\oo/\ - * http://www.isthe.com/chongo/ - */ - -/* - * Sources: http://www.isthe.com/chongo/src/fnv/hash_32a.c - * http://www.isthe.com/chongo/tech/comp/fnv/index.html#xor-fold - */ - -#include "bson/bson-fnv-private.h" - -/* - * 32 bit FNV-1a non-zero initial basis - * - * The FNV-1 initial basis is the FNV-0 hash of the following 32 octets: - * - * chongo /\../\ - * - * NOTE: The \'s above are not back-slashing escape characters. - * They are literal ASCII backslash 0x5c characters. - * - * NOTE: The FNV-1a initial basis is the same value as FNV-1 by definition. - */ -#define FNV1_32A_INIT ((uint32_t) 0x811c9dc5) - -/* - * 32 bit magic FNV-1a prime - * NOTE: define NO_FNV_GCC_OPTIMIZATION to use this prime - */ -#define FNV_32_PRIME ((Fnv32_t) 0x01000193) - -/* - * For producing 24 bit FNV-1a hash using xor-fold on a 32 bit FNV-1a hash - */ -#define MASK_24 (((uint32_t) 1 << 24) - 1) /* i.e., (uint32_t) 0xffffff */ - -/*--------------------------------------------------------------------------- - * - * _mongoc_fnv_24a_str -- - * - * perform a 32 bit Fowler/Noll/Vo FNV-1a hash on a string and - * xor-fold it into a 24 bit hash - * - * Return: - * 24 bit hash as a static hash type - * - * Note: - * input strings with multiple null characters will stop being - * processed at the first null - * - *-------------------------------------------------------------------------- - */ -uint32_t -_mongoc_fnv_24a_str (char *str) -{ - uint32_t hval = FNV1_32A_INIT; /* initial 32 bit hash basis */ - unsigned char *s = (unsigned char *) str; /* unsigned string */ - - /* FNV-1a hash each octet in the buffer */ - while (*s) { - /* xor the bottom with the current octet */ - hval ^= (uint32_t) *s++; - -/* multiply by the 32 bit FNV magic prime mod 2^32 */ -#if defined(NO_FNV_GCC_OPTIMIZATION) - hval *= FNV_32_PRIME; -#else - hval += - (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24); -#endif - } - - /* xor-fold the result to a 24 bit value */ - hval = (hval >> 24) ^ (hval & MASK_24); - - /* return our new 24 bit hash value */ - return hval; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601-private.h deleted file mode 100644 index 44471f2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601-private.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_ISO8601_PRIVATE_H -#define BSON_ISO8601_PRIVATE_H - - -#include "bson/bson-compat.h" -#include "bson/bson-macros.h" -#include "bson/bson-string.h" - - -BSON_BEGIN_DECLS - -bool -_bson_iso8601_date_parse (const char *str, - int32_t len, - int64_t *out, - bson_error_t *error); - -/** - * _bson_iso8601_date_format: - * @msecs_since_epoch: A positive number of milliseconds since Jan 1, 1970. - * @str: The string to append the ISO8601-formatted to. - * - * Appends a date formatted like "2012-12-24T12:15:30.500Z" to @str. - */ -void -_bson_iso8601_date_format (int64_t msecs_since_epoch, bson_string_t *str); - -BSON_END_DECLS - - -#endif /* BSON_ISO8601_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601.c deleted file mode 100644 index bd44ff5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iso8601.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "bson/bson-compat.h" -#include "bson/bson-macros.h" -#include "bson/bson-error.h" -#include "bson/bson-iso8601-private.h" -#include "bson/bson-json.h" -#include "bson/bson-timegm-private.h" - - -static bool -get_tok (const char *terminals, - const char **ptr, - int32_t *remaining, - const char **out, - int32_t *out_len) -{ - const char *terminal; - bool found_terminal = false; - - if (!*remaining) { - *out = ""; - *out_len = 0; - } - - *out = *ptr; - *out_len = -1; - - for (; *remaining && !found_terminal; - (*ptr)++, (*remaining)--, (*out_len)++) { - for (terminal = terminals; *terminal; terminal++) { - if (**ptr == *terminal) { - found_terminal = true; - break; - } - } - } - - if (!found_terminal) { - (*out_len)++; - } - - return found_terminal; -} - -static bool -digits_only (const char *str, int32_t len) -{ - int i; - - for (i = 0; i < len; i++) { - if (!isdigit (str[i])) { - return false; - } - } - - return true; -} - -static bool -parse_num (const char *str, - int32_t len, - int32_t digits, - int32_t min, - int32_t max, - int32_t *out) -{ - int i; - int magnitude = 1; - int32_t value = 0; - - if ((digits >= 0 && len != digits) || !digits_only (str, len)) { - return false; - } - - for (i = 1; i <= len; i++, magnitude *= 10) { - value += (str[len - i] - '0') * magnitude; - } - - if (value < min || value > max) { - return false; - } - - *out = value; - - return true; -} - -bool -_bson_iso8601_date_parse (const char *str, - int32_t len, - int64_t *out, - bson_error_t *error) -{ - const char *ptr; - int32_t remaining = len; - - const char *year_ptr = NULL; - const char *month_ptr = NULL; - const char *day_ptr = NULL; - const char *hour_ptr = NULL; - const char *min_ptr = NULL; - const char *sec_ptr = NULL; - const char *millis_ptr = NULL; - const char *tz_ptr = NULL; - - int32_t year_len = 0; - int32_t month_len = 0; - int32_t day_len = 0; - int32_t hour_len = 0; - int32_t min_len = 0; - int32_t sec_len = 0; - int32_t millis_len = 0; - int32_t tz_len = 0; - - int32_t year; - int32_t month; - int32_t day; - int32_t hour; - int32_t min; - int32_t sec = 0; - int64_t millis = 0; - int32_t tz_adjustment = 0; - - struct bson_tm posix_date = {0}; - -#define DATE_PARSE_ERR(msg) \ - bson_set_error (error, \ - BSON_ERROR_JSON, \ - BSON_JSON_ERROR_READ_INVALID_PARAM, \ - "Could not parse \"%s\" as date: " msg, \ - str); \ - return false - -#define DEFAULT_DATE_PARSE_ERR \ - DATE_PARSE_ERR ("use ISO8601 format yyyy-mm-ddThh:mm plus timezone, either" \ - " \"Z\" or like \"+0500\"") - - ptr = str; - - /* we have to match at least yyyy-mm-ddThh:mm */ - if (!(get_tok ("-", &ptr, &remaining, &year_ptr, &year_len) && - get_tok ("-", &ptr, &remaining, &month_ptr, &month_len) && - get_tok ("T", &ptr, &remaining, &day_ptr, &day_len) && - get_tok (":", &ptr, &remaining, &hour_ptr, &hour_len) && - get_tok (":+-Z", &ptr, &remaining, &min_ptr, &min_len))) { - DEFAULT_DATE_PARSE_ERR; - } - - /* if the minute has a ':' at the end look for seconds */ - if (min_ptr[min_len] == ':') { - if (remaining < 2) { - DATE_PARSE_ERR ("reached end of date while looking for seconds"); - } - - get_tok (".+-Z", &ptr, &remaining, &sec_ptr, &sec_len); - - if (!sec_len) { - DATE_PARSE_ERR ("minute ends in \":\" seconds is required"); - } - } - - /* if we had a second and it is followed by a '.' look for milliseconds */ - if (sec_len && sec_ptr[sec_len] == '.') { - if (remaining < 2) { - DATE_PARSE_ERR ("reached end of date while looking for milliseconds"); - } - - get_tok ("+-Z", &ptr, &remaining, &millis_ptr, &millis_len); - - if (!millis_len) { - DATE_PARSE_ERR ("seconds ends in \".\", milliseconds is required"); - } - } - - /* backtrack by 1 to put ptr on the timezone */ - ptr--; - remaining++; - - get_tok ("", &ptr, &remaining, &tz_ptr, &tz_len); - - if (!parse_num (year_ptr, year_len, 4, -9999, 9999, &year)) { - DATE_PARSE_ERR ("year must be an integer"); - } - - /* values are as in struct tm */ - year -= 1900; - - if (!parse_num (month_ptr, month_len, 2, 1, 12, &month)) { - DATE_PARSE_ERR ("month must be an integer"); - } - - /* values are as in struct tm */ - month -= 1; - - if (!parse_num (day_ptr, day_len, 2, 1, 31, &day)) { - DATE_PARSE_ERR ("day must be an integer"); - } - - if (!parse_num (hour_ptr, hour_len, 2, 0, 23, &hour)) { - DATE_PARSE_ERR ("hour must be an integer"); - } - - if (!parse_num (min_ptr, min_len, 2, 0, 59, &min)) { - DATE_PARSE_ERR ("minute must be an integer"); - } - - if (sec_len && !parse_num (sec_ptr, sec_len, 2, 0, 60, &sec)) { - DATE_PARSE_ERR ("seconds must be an integer"); - } - - if (tz_len > 0) { - if (tz_ptr[0] == 'Z' && tz_len == 1) { - /* valid */ - } else if (tz_ptr[0] == '+' || tz_ptr[0] == '-') { - int32_t tz_hour; - int32_t tz_min; - - if (tz_len != 5 || !digits_only (tz_ptr + 1, 4)) { - DATE_PARSE_ERR ("could not parse timezone"); - } - - if (!parse_num (tz_ptr + 1, 2, -1, -23, 23, &tz_hour)) { - DATE_PARSE_ERR ("timezone hour must be at most 23"); - } - - if (!parse_num (tz_ptr + 3, 2, -1, 0, 59, &tz_min)) { - DATE_PARSE_ERR ("timezone minute must be at most 59"); - } - - /* we inflect the meaning of a 'positive' timezone. Those are hours - * we have to subtract, and vice versa */ - tz_adjustment = - (tz_ptr[0] == '-' ? 1 : -1) * ((tz_min * 60) + (tz_hour * 60 * 60)); - - if (!(tz_adjustment > -86400 && tz_adjustment < 86400)) { - DATE_PARSE_ERR ("timezone offset must be less than 24 hours"); - } - } else { - DATE_PARSE_ERR ("timezone is required"); - } - } - - if (millis_len > 0) { - int i; - int magnitude; - millis = 0; - - if (millis_len > 3 || !digits_only (millis_ptr, millis_len)) { - DATE_PARSE_ERR ("milliseconds must be an integer"); - } - - for (i = 1, magnitude = 1; i <= millis_len; i++, magnitude *= 10) { - millis += (millis_ptr[millis_len - i] - '0') * magnitude; - } - - if (millis_len == 1) { - millis *= 100; - } else if (millis_len == 2) { - millis *= 10; - } - - if (millis < 0 || millis > 1000) { - DATE_PARSE_ERR ("milliseconds must be at least 0 and less than 1000"); - } - } - - posix_date.tm_sec = sec; - posix_date.tm_min = min; - posix_date.tm_hour = hour; - posix_date.tm_mday = day; - posix_date.tm_mon = month; - posix_date.tm_year = year; - posix_date.tm_wday = 0; - posix_date.tm_yday = 0; - - millis = 1000 * _bson_timegm (&posix_date) + millis; - millis += tz_adjustment * 1000; - *out = millis; - - return true; -} - - -void -_bson_iso8601_date_format (int64_t msec_since_epoch, bson_string_t *str) -{ - time_t t; - int64_t msecs_part; - char buf[64]; - - msecs_part = msec_since_epoch % 1000; - t = (time_t) (msec_since_epoch / 1000); - -#ifdef BSON_HAVE_GMTIME_R - { - struct tm posix_date; - gmtime_r (&t, &posix_date); - strftime (buf, sizeof buf, "%Y-%m-%dT%H:%M:%S", &posix_date); - } -#elif defined(_MSC_VER) - { - /* Windows gmtime_s is thread-safe */ - struct tm time_buf; - gmtime_s (&time_buf, &t); - strftime (buf, sizeof buf, "%Y-%m-%dT%H:%M:%S", &time_buf); - } -#else - strftime (buf, sizeof buf, "%Y-%m-%dT%H:%M:%S", gmtime (&t)); -#endif - - if (msecs_part) { - bson_string_append_printf (str, "%s.%3" PRId64 "Z", buf, msecs_part); - } else { - bson_string_append (str, buf); - bson_string_append_c (str, 'Z'); - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.c deleted file mode 100644 index 820134e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.c +++ /dev/null @@ -1,2528 +0,0 @@ -/* - * Copyright 2013-2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "bson/bson-iter.h" -#include "bson/bson-config.h" -#include "bson/bson-decimal128.h" -#include "bson-types.h" - -#define ITER_TYPE(i) ((bson_type_t) * ((i)->raw + (i)->type)) - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_init -- - * - * Initializes @iter to be used to iterate @bson. - * - * Returns: - * true if bson_iter_t was initialized. otherwise false. - * - * Side effects: - * @iter is initialized. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_init (bson_iter_t *iter, /* OUT */ - const bson_t *bson) /* IN */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (bson); - - if (BSON_UNLIKELY (bson->len < 5)) { - memset (iter, 0, sizeof *iter); - return false; - } - - iter->raw = bson_get_data (bson); - iter->len = bson->len; - iter->off = 0; - iter->type = 0; - iter->key = 0; - iter->d1 = 0; - iter->d2 = 0; - iter->d3 = 0; - iter->d4 = 0; - iter->next_off = 4; - iter->err_off = 0; - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_init_from_data -- - * - * Initializes @iter to be used to iterate @data of length @length - * - * Returns: - * true if bson_iter_t was initialized. otherwise false. - * - * Side effects: - * @iter is initialized. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_init_from_data (bson_iter_t *iter, /* OUT */ - const uint8_t *data, /* IN */ - size_t length) /* IN */ -{ - uint32_t len_le; - - BSON_ASSERT (iter); - BSON_ASSERT (data); - - if (BSON_UNLIKELY ((length < 5) || (length > INT_MAX))) { - memset (iter, 0, sizeof *iter); - return false; - } - - memcpy (&len_le, data, sizeof (len_le)); - - if (BSON_UNLIKELY ((size_t) BSON_UINT32_FROM_LE (len_le) != length)) { - memset (iter, 0, sizeof *iter); - return false; - } - - if (BSON_UNLIKELY (data[length - 1])) { - memset (iter, 0, sizeof *iter); - return false; - } - - iter->raw = (uint8_t *) data; - iter->len = length; - iter->off = 0; - iter->type = 0; - iter->key = 0; - iter->d1 = 0; - iter->d2 = 0; - iter->d3 = 0; - iter->d4 = 0; - iter->next_off = 4; - iter->err_off = 0; - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_recurse -- - * - * Creates a new sub-iter looking at the document or array that @iter - * is currently pointing at. - * - * Returns: - * true if successful and @child was initialized. - * - * Side effects: - * @child is initialized. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_recurse (const bson_iter_t *iter, /* IN */ - bson_iter_t *child) /* OUT */ -{ - const uint8_t *data = NULL; - uint32_t len = 0; - - BSON_ASSERT (iter); - BSON_ASSERT (child); - - if (ITER_TYPE (iter) == BSON_TYPE_DOCUMENT) { - bson_iter_document (iter, &len, &data); - } else if (ITER_TYPE (iter) == BSON_TYPE_ARRAY) { - bson_iter_array (iter, &len, &data); - } else { - return false; - } - - child->raw = data; - child->len = len; - child->off = 0; - child->type = 0; - child->key = 0; - child->d1 = 0; - child->d2 = 0; - child->d3 = 0; - child->d4 = 0; - child->next_off = 4; - child->err_off = 0; - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_init_find -- - * - * Initializes a #bson_iter_t and moves the iter to the first field - * matching @key. - * - * Returns: - * true if the field named @key was found; otherwise false. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_init_find (bson_iter_t *iter, /* INOUT */ - const bson_t *bson, /* IN */ - const char *key) /* IN */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (bson); - BSON_ASSERT (key); - - return bson_iter_init (iter, bson) && bson_iter_find (iter, key); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_init_find_w_len -- - * - * Initializes a #bson_iter_t and moves the iter to the first field - * matching @key. - * - * Returns: - * true if the field named @key was found; otherwise false. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_init_find_w_len (bson_iter_t *iter, /* INOUT */ - const bson_t *bson, /* IN */ - const char *key, /* IN */ - int keylen) /* IN */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (bson); - BSON_ASSERT (key); - - return bson_iter_init (iter, bson) && - bson_iter_find_w_len (iter, key, keylen); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_init_find_case -- - * - * A case-insensitive version of bson_iter_init_find(). - * - * Returns: - * true if the field was found and @iter is observing that field. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_init_find_case (bson_iter_t *iter, /* INOUT */ - const bson_t *bson, /* IN */ - const char *key) /* IN */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (bson); - BSON_ASSERT (key); - - return bson_iter_init (iter, bson) && bson_iter_find_case (iter, key); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_find_w_len -- - * - * Searches through @iter starting from the current position for a key - * matching @key. @keylen indicates the length of @key, or -1 to - * determine the length with strlen(). - * - * Returns: - * true if the field @key was found. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_find_w_len (bson_iter_t *iter, /* INOUT */ - const char *key, /* IN */ - int keylen) /* IN */ -{ - const char *ikey; - - if (keylen < 0) { - keylen = (int) strlen (key); - } - - while (bson_iter_next (iter)) { - ikey = bson_iter_key (iter); - - if ((0 == strncmp (key, ikey, keylen)) && (ikey[keylen] == '\0')) { - return true; - } - } - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_find -- - * - * Searches through @iter starting from the current position for a key - * matching @key. This is a case-sensitive search meaning "KEY" and - * "key" would NOT match. - * - * Returns: - * true if @key is found. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_find (bson_iter_t *iter, /* INOUT */ - const char *key) /* IN */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (key); - - return bson_iter_find_w_len (iter, key, -1); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_find_case -- - * - * Searches through @iter starting from the current position for a key - * matching @key. This is a case-insensitive search meaning "KEY" and - * "key" would match. - * - * Returns: - * true if @key is found. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_find_case (bson_iter_t *iter, /* INOUT */ - const char *key) /* IN */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (key); - - while (bson_iter_next (iter)) { - if (!bson_strcasecmp (key, bson_iter_key (iter))) { - return true; - } - } - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_find_descendant -- - * - * Locates a descendant using the "parent.child.key" notation. This - * operates similar to bson_iter_find() except that it can recurse - * into children documents using the dot notation. - * - * Returns: - * true if the descendant was found and @descendant was initialized. - * - * Side effects: - * @descendant may be initialized. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_find_descendant (bson_iter_t *iter, /* INOUT */ - const char *dotkey, /* IN */ - bson_iter_t *descendant) /* OUT */ -{ - bson_iter_t tmp; - const char *dot; - size_t sublen; - - BSON_ASSERT (iter); - BSON_ASSERT (dotkey); - BSON_ASSERT (descendant); - - if ((dot = strchr (dotkey, '.'))) { - sublen = dot - dotkey; - } else { - sublen = strlen (dotkey); - } - - if (bson_iter_find_w_len (iter, dotkey, (int) sublen)) { - if (!dot) { - *descendant = *iter; - return true; - } - - if (BSON_ITER_HOLDS_DOCUMENT (iter) || BSON_ITER_HOLDS_ARRAY (iter)) { - if (bson_iter_recurse (iter, &tmp)) { - return bson_iter_find_descendant (&tmp, dot + 1, descendant); - } - } - } - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_key -- - * - * Retrieves the key of the current field. The resulting key is valid - * while @iter is valid. - * - * Returns: - * A string that should not be modified or freed. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -const char * -bson_iter_key (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - return bson_iter_key_unsafe (iter); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_type -- - * - * Retrieves the type of the current field. It may be useful to check - * the type using the BSON_ITER_HOLDS_*() macros. - * - * Returns: - * A bson_type_t. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_type_t -bson_iter_type (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (iter->raw); - BSON_ASSERT (iter->len); - - return bson_iter_type_unsafe (iter); -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_iter_next_internal -- - * - * Internal function to advance @iter to the next field and retrieve - * the key and BSON type before error-checking. @next_keylen is - * the key length of the next field being iterated or 0 if this is - * not known. - * - * Return: - * true if an element was decoded, else false. - * - * Side effects: - * @key and @bson_type are set. - * - * If the return value is false: - * - @iter is invalidated: @iter->raw is NULLed - * - @unsupported is set to true if the bson type is unsupported - * - otherwise if the BSON is corrupt, @iter->err_off is nonzero - * - otherwise @bson_type is set to BSON_TYPE_EOD - * - *-------------------------------------------------------------------------- - */ - -static bool -_bson_iter_next_internal (bson_iter_t *iter, /* INOUT */ - uint32_t next_keylen, /* IN */ - const char **key, /* OUT */ - uint32_t *bson_type, /* OUT */ - bool *unsupported) /* OUT */ -{ - const uint8_t *data; - uint32_t o; - unsigned int len; - - BSON_ASSERT (iter); - - *unsupported = false; - - if (!iter->raw) { - *key = NULL; - *bson_type = BSON_TYPE_EOD; - return false; - } - - data = iter->raw; - len = iter->len; - - iter->off = iter->next_off; - iter->type = iter->off; - iter->key = iter->off + 1; - iter->d1 = 0; - iter->d2 = 0; - iter->d3 = 0; - iter->d4 = 0; - - if (next_keylen == 0) { - /* iterate from start to end of NULL-terminated key string */ - for (o = iter->key; o < len; o++) { - if (!data[o]) { - iter->d1 = ++o; - goto fill_data_fields; - } - } - } else { - o = iter->key + next_keylen + 1; - iter->d1 = o; - goto fill_data_fields; - } - - goto mark_invalid; - -fill_data_fields: - - *key = bson_iter_key_unsafe (iter); - *bson_type = ITER_TYPE (iter); - - switch (*bson_type) { - case BSON_TYPE_DATE_TIME: - case BSON_TYPE_DOUBLE: - case BSON_TYPE_INT64: - case BSON_TYPE_TIMESTAMP: - iter->next_off = o + 8; - break; - case BSON_TYPE_CODE: - case BSON_TYPE_SYMBOL: - case BSON_TYPE_UTF8: { - uint32_t l; - - if ((o + 4) >= len) { - iter->err_off = o; - goto mark_invalid; - } - - iter->d2 = o + 4; - memcpy (&l, iter->raw + iter->d1, sizeof (l)); - l = BSON_UINT32_FROM_LE (l); - - if (l > (len - (o + 4))) { - iter->err_off = o; - goto mark_invalid; - } - - iter->next_off = o + 4 + l; - - /* - * Make sure the string length includes the NUL byte. - */ - if (BSON_UNLIKELY ((l == 0) || (iter->next_off >= len))) { - iter->err_off = o; - goto mark_invalid; - } - - /* - * Make sure the last byte is a NUL byte. - */ - if (BSON_UNLIKELY ((iter->raw + iter->d2)[l - 1] != '\0')) { - iter->err_off = o + 4 + l - 1; - goto mark_invalid; - } - } break; - case BSON_TYPE_BINARY: { - bson_subtype_t subtype; - uint32_t l; - - if (o >= (len - 4)) { - iter->err_off = o; - goto mark_invalid; - } - - iter->d2 = o + 4; - iter->d3 = o + 5; - - memcpy (&l, iter->raw + iter->d1, sizeof (l)); - l = BSON_UINT32_FROM_LE (l); - - if (l >= (len - o - 4)) { - iter->err_off = o; - goto mark_invalid; - } - - subtype = *(iter->raw + iter->d2); - - if (subtype == BSON_SUBTYPE_BINARY_DEPRECATED) { - int32_t binary_len; - - if (l < 4) { - iter->err_off = o; - goto mark_invalid; - } - - /* subtype 2 has a redundant length header in the data */ - memcpy (&binary_len, (iter->raw + iter->d3), sizeof (binary_len)); - binary_len = BSON_UINT32_FROM_LE (binary_len); - if (binary_len + 4 != l) { - iter->err_off = iter->d3; - goto mark_invalid; - } - } - - iter->next_off = o + 5 + l; - } break; - case BSON_TYPE_ARRAY: - case BSON_TYPE_DOCUMENT: { - uint32_t l; - - if (o >= (len - 4)) { - iter->err_off = o; - goto mark_invalid; - } - - memcpy (&l, iter->raw + iter->d1, sizeof (l)); - l = BSON_UINT32_FROM_LE (l); - - if ((l > len) || (l > (len - o))) { - iter->err_off = o; - goto mark_invalid; - } - - iter->next_off = o + l; - } break; - case BSON_TYPE_OID: - iter->next_off = o + 12; - break; - case BSON_TYPE_BOOL: { - char val; - - if (iter->d1 >= len) { - iter->err_off = o; - goto mark_invalid; - } - - memcpy (&val, iter->raw + iter->d1, 1); - if (val != 0x00 && val != 0x01) { - iter->err_off = o; - goto mark_invalid; - } - - iter->next_off = o + 1; - } break; - case BSON_TYPE_REGEX: { - bool eor = false; - bool eoo = false; - - for (; o < len; o++) { - if (!data[o]) { - iter->d2 = ++o; - eor = true; - break; - } - } - - if (!eor) { - iter->err_off = iter->next_off; - goto mark_invalid; - } - - for (; o < len; o++) { - if (!data[o]) { - eoo = true; - break; - } - } - - if (!eoo) { - iter->err_off = iter->next_off; - goto mark_invalid; - } - - iter->next_off = o + 1; - } break; - case BSON_TYPE_DBPOINTER: { - uint32_t l; - - if (o >= (len - 4)) { - iter->err_off = o; - goto mark_invalid; - } - - iter->d2 = o + 4; - memcpy (&l, iter->raw + iter->d1, sizeof (l)); - l = BSON_UINT32_FROM_LE (l); - - /* Check valid string length. l counts '\0' but not 4 bytes for itself. */ - if (l == 0 || l > (len - o - 4)) { - iter->err_off = o; - goto mark_invalid; - } - - if (*(iter->raw + o + l + 3)) { - /* not null terminated */ - iter->err_off = o + l + 3; - goto mark_invalid; - } - - iter->d3 = o + 4 + l; - iter->next_off = o + 4 + l + 12; - } break; - case BSON_TYPE_CODEWSCOPE: { - uint32_t l; - uint32_t doclen; - - if ((len < 19) || (o >= (len - 14))) { - iter->err_off = o; - goto mark_invalid; - } - - iter->d2 = o + 4; - iter->d3 = o + 8; - - memcpy (&l, iter->raw + iter->d1, sizeof (l)); - l = BSON_UINT32_FROM_LE (l); - - if ((l < 14) || (l >= (len - o))) { - iter->err_off = o; - goto mark_invalid; - } - - iter->next_off = o + l; - - if (iter->next_off >= len) { - iter->err_off = o; - goto mark_invalid; - } - - memcpy (&l, iter->raw + iter->d2, sizeof (l)); - l = BSON_UINT32_FROM_LE (l); - - if (l == 0 || l >= (len - o - 4 - 4)) { - iter->err_off = o; - goto mark_invalid; - } - - if ((o + 4 + 4 + l + 4) >= iter->next_off) { - iter->err_off = o + 4; - goto mark_invalid; - } - - iter->d4 = o + 4 + 4 + l; - memcpy (&doclen, iter->raw + iter->d4, sizeof (doclen)); - doclen = BSON_UINT32_FROM_LE (doclen); - - if ((o + 4 + 4 + l + doclen) != iter->next_off) { - iter->err_off = o + 4 + 4 + l; - goto mark_invalid; - } - } break; - case BSON_TYPE_INT32: - iter->next_off = o + 4; - break; - case BSON_TYPE_DECIMAL128: - iter->next_off = o + 16; - break; - case BSON_TYPE_MAXKEY: - case BSON_TYPE_MINKEY: - case BSON_TYPE_NULL: - case BSON_TYPE_UNDEFINED: - iter->next_off = o; - break; - default: - *unsupported = true; - /* FALL THROUGH */ - case BSON_TYPE_EOD: - iter->err_off = o; - goto mark_invalid; - } - - /* - * Check to see if any of the field locations would overflow the - * current BSON buffer. If so, set the error location to the offset - * of where the field starts. - */ - if (iter->next_off >= len) { - iter->err_off = o; - goto mark_invalid; - } - - iter->err_off = 0; - - return true; - -mark_invalid: - iter->raw = NULL; - iter->len = 0; - iter->next_off = 0; - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_next -- - * - * Advances @iter to the next field of the underlying BSON document. - * If all fields have been exhausted, then %false is returned. - * - * It is a programming error to use @iter after this function has - * returned false. - * - * Returns: - * true if the iter was advanced to the next record. - * otherwise false and @iter should be considered invalid. - * - * Side effects: - * @iter may be invalidated. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_next (bson_iter_t *iter) /* INOUT */ -{ - uint32_t bson_type; - const char *key; - bool unsupported; - - return _bson_iter_next_internal (iter, 0, &key, &bson_type, &unsupported); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_binary -- - * - * Retrieves the BSON_TYPE_BINARY field. The subtype is stored in - * @subtype. The length of @binary in bytes is stored in @binary_len. - * - * @binary should not be modified or freed and is only valid while - * @iter's bson_t is valid and unmodified. - * - * Parameters: - * @iter: A bson_iter_t - * @subtype: A location for the binary subtype. - * @binary_len: A location for the length of @binary. - * @binary: A location for a pointer to the binary data. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_binary (const bson_iter_t *iter, /* IN */ - bson_subtype_t *subtype, /* OUT */ - uint32_t *binary_len, /* OUT */ - const uint8_t **binary) /* OUT */ -{ - bson_subtype_t backup; - - BSON_ASSERT (iter); - BSON_ASSERT (!binary || binary_len); - - if (ITER_TYPE (iter) == BSON_TYPE_BINARY) { - if (!subtype) { - subtype = &backup; - } - - *subtype = (bson_subtype_t) * (iter->raw + iter->d2); - - if (binary) { - memcpy (binary_len, (iter->raw + iter->d1), sizeof (*binary_len)); - *binary_len = BSON_UINT32_FROM_LE (*binary_len); - *binary = iter->raw + iter->d3; - - if (*subtype == BSON_SUBTYPE_BINARY_DEPRECATED) { - *binary_len -= sizeof (int32_t); - *binary += sizeof (int32_t); - } - } - - return; - } - - if (binary) { - *binary = NULL; - } - - if (binary_len) { - *binary_len = 0; - } - - if (subtype) { - *subtype = BSON_SUBTYPE_BINARY; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_bool -- - * - * Retrieves the current field of type BSON_TYPE_BOOL. - * - * Returns: - * true or false, dependent on bson document. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_bool (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_BOOL) { - return bson_iter_bool_unsafe (iter); - } - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_as_bool -- - * - * If @iter is on a boolean field, returns the boolean. If it is on a - * non-boolean field such as int32, int64, or double, it will convert - * the value to a boolean. - * - * Zero is false, and non-zero is true. - * - * Returns: - * true or false, dependent on field type. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_iter_as_bool (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - switch ((int) ITER_TYPE (iter)) { - case BSON_TYPE_BOOL: - return bson_iter_bool (iter); - case BSON_TYPE_DOUBLE: - return !(bson_iter_double (iter) == 0.0); - case BSON_TYPE_INT64: - return !(bson_iter_int64 (iter) == 0); - case BSON_TYPE_INT32: - return !(bson_iter_int32 (iter) == 0); - case BSON_TYPE_UTF8: - return true; - case BSON_TYPE_NULL: - case BSON_TYPE_UNDEFINED: - return false; - default: - return true; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_double -- - * - * Retrieves the current field of type BSON_TYPE_DOUBLE. - * - * Returns: - * A double. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -double -bson_iter_double (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DOUBLE) { - return bson_iter_double_unsafe (iter); - } - - return 0; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_as_double -- - * - * If @iter is on a field of type BSON_TYPE_DOUBLE, - * returns the double. If it is on an integer field - * such as int32, int64, or bool, it will convert - * the value to a double. - * - * - * Returns: - * A double. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -double -bson_iter_as_double (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - switch ((int) ITER_TYPE (iter)) { - case BSON_TYPE_BOOL: - return (double) bson_iter_bool (iter); - case BSON_TYPE_DOUBLE: - return bson_iter_double (iter); - case BSON_TYPE_INT32: - return (double) bson_iter_int32 (iter); - case BSON_TYPE_INT64: - return (double) bson_iter_int64 (iter); - default: - return 0; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_int32 -- - * - * Retrieves the value of the field of type BSON_TYPE_INT32. - * - * Returns: - * A 32-bit signed integer. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -int32_t -bson_iter_int32 (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_INT32) { - return bson_iter_int32_unsafe (iter); - } - - return 0; -} - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_int64 -- - * - * Retrieves a 64-bit signed integer for the current BSON_TYPE_INT64 - * field. - * - * Returns: - * A 64-bit signed integer. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -int64_t -bson_iter_int64 (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_INT64) { - return bson_iter_int64_unsafe (iter); - } - - return 0; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_as_int64 -- - * - * If @iter is not an int64 field, it will try to convert the value to - * an int64. Such field types include: - * - * - bool - * - double - * - int32 - * - * Returns: - * An int64_t. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -int64_t -bson_iter_as_int64 (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - switch ((int) ITER_TYPE (iter)) { - case BSON_TYPE_BOOL: - return (int64_t) bson_iter_bool (iter); - case BSON_TYPE_DOUBLE: - return (int64_t) bson_iter_double (iter); - case BSON_TYPE_INT64: - return bson_iter_int64 (iter); - case BSON_TYPE_INT32: - return (int64_t) bson_iter_int32 (iter); - default: - return 0; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_decimal128 -- - * - * This function retrieves the current field of type - *%BSON_TYPE_DECIMAL128. - * The result is valid while @iter is valid, and is stored in @dec. - * - * Returns: - * - * True on success, false on failure. - * - * Side Effects: - * None. - * - *-------------------------------------------------------------------------- - */ -bool -bson_iter_decimal128 (const bson_iter_t *iter, /* IN */ - bson_decimal128_t *dec) /* OUT */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DECIMAL128) { - bson_iter_decimal128_unsafe (iter, dec); - return true; - } - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_oid -- - * - * Retrieves the current field of type %BSON_TYPE_OID. The result is - * valid while @iter is valid. - * - * Returns: - * A bson_oid_t that should not be modified or freed. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -const bson_oid_t * -bson_iter_oid (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_OID) { - return bson_iter_oid_unsafe (iter); - } - - return NULL; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_regex -- - * - * Fetches the current field from the iter which should be of type - * BSON_TYPE_REGEX. - * - * Returns: - * Regex from @iter. This should not be modified or freed. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -const char * -bson_iter_regex (const bson_iter_t *iter, /* IN */ - const char **options) /* IN */ -{ - const char *ret = NULL; - const char *ret_options = NULL; - - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_REGEX) { - ret = (const char *) (iter->raw + iter->d1); - ret_options = (const char *) (iter->raw + iter->d2); - } - - if (options) { - *options = ret_options; - } - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_utf8 -- - * - * Retrieves the current field of type %BSON_TYPE_UTF8 as a UTF-8 - * encoded string. - * - * Parameters: - * @iter: A bson_iter_t. - * @length: A location for the length of the string. - * - * Returns: - * A string that should not be modified or freed. - * - * Side effects: - * @length will be set to the result strings length if non-NULL. - * - *-------------------------------------------------------------------------- - */ - -const char * -bson_iter_utf8 (const bson_iter_t *iter, /* IN */ - uint32_t *length) /* OUT */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_UTF8) { - if (length) { - *length = bson_iter_utf8_len_unsafe (iter); - } - - return (const char *) (iter->raw + iter->d2); - } - - if (length) { - *length = 0; - } - - return NULL; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_dup_utf8 -- - * - * Copies the current UTF-8 element into a newly allocated string. The - * string should be freed using bson_free() when the caller is - * finished with it. - * - * Returns: - * A newly allocated char* that should be freed with bson_free(). - * - * Side effects: - * @length will be set to the result strings length if non-NULL. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_iter_dup_utf8 (const bson_iter_t *iter, /* IN */ - uint32_t *length) /* OUT */ -{ - uint32_t local_length = 0; - const char *str; - char *ret = NULL; - - BSON_ASSERT (iter); - - if ((str = bson_iter_utf8 (iter, &local_length))) { - ret = bson_malloc0 (local_length + 1); - memcpy (ret, str, local_length); - ret[local_length] = '\0'; - } - - if (length) { - *length = local_length; - } - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_code -- - * - * Retrieves the current field of type %BSON_TYPE_CODE. The length of - * the resulting string is stored in @length. - * - * Parameters: - * @iter: A bson_iter_t. - * @length: A location for the code length. - * - * Returns: - * A NUL-terminated string containing the code which should not be - * modified or freed. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -const char * -bson_iter_code (const bson_iter_t *iter, /* IN */ - uint32_t *length) /* OUT */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_CODE) { - if (length) { - *length = bson_iter_utf8_len_unsafe (iter); - } - - return (const char *) (iter->raw + iter->d2); - } - - if (length) { - *length = 0; - } - - return NULL; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_codewscope -- - * - * Similar to bson_iter_code() but with a scope associated encoded as - * a BSON document. @scope should not be modified or freed. It is - * valid while @iter is valid. - * - * Parameters: - * @iter: A #bson_iter_t. - * @length: A location for the length of resulting string. - * @scope_len: A location for the length of @scope. - * @scope: A location for the scope encoded as BSON. - * - * Returns: - * A NUL-terminated string that should not be modified or freed. - * - * Side effects: - * @length is set to the resulting string length in bytes. - * @scope_len is set to the length of @scope in bytes. - * @scope is set to the scope documents buffer which can be - * turned into a bson document with bson_init_static(). - * - *-------------------------------------------------------------------------- - */ - -const char * -bson_iter_codewscope (const bson_iter_t *iter, /* IN */ - uint32_t *length, /* OUT */ - uint32_t *scope_len, /* OUT */ - const uint8_t **scope) /* OUT */ -{ - uint32_t len; - - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_CODEWSCOPE) { - if (length) { - memcpy (&len, iter->raw + iter->d2, sizeof (len)); - /* The string length was checked > 0 in _bson_iter_next_internal. */ - len = BSON_UINT32_FROM_LE (len); - BSON_ASSERT (len > 0); - *length = len - 1; - } - - memcpy (&len, iter->raw + iter->d4, sizeof (len)); - *scope_len = BSON_UINT32_FROM_LE (len); - *scope = iter->raw + iter->d4; - return (const char *) (iter->raw + iter->d3); - } - - if (length) { - *length = 0; - } - - if (scope_len) { - *scope_len = 0; - } - - if (scope) { - *scope = NULL; - } - - return NULL; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_dbpointer -- - * - * Retrieves a BSON_TYPE_DBPOINTER field. @collection_len will be set - * to the length of the collection name. The collection name will be - * placed into @collection. The oid will be placed into @oid. - * - * @collection and @oid should not be modified. - * - * Parameters: - * @iter: A #bson_iter_t. - * @collection_len: A location for the length of @collection. - * @collection: A location for the collection name. - * @oid: A location for the oid. - * - * Returns: - * None. - * - * Side effects: - * @collection_len is set to the length of @collection in bytes - * excluding the null byte. - * @collection is set to the collection name, including a terminating - * null byte. - * @oid is initialized with the oid. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_dbpointer (const bson_iter_t *iter, /* IN */ - uint32_t *collection_len, /* OUT */ - const char **collection, /* OUT */ - const bson_oid_t **oid) /* OUT */ -{ - BSON_ASSERT (iter); - - if (collection) { - *collection = NULL; - } - - if (oid) { - *oid = NULL; - } - - if (ITER_TYPE (iter) == BSON_TYPE_DBPOINTER) { - if (collection_len) { - memcpy ( - collection_len, (iter->raw + iter->d1), sizeof (*collection_len)); - *collection_len = BSON_UINT32_FROM_LE (*collection_len); - - if ((*collection_len) > 0) { - (*collection_len)--; - } - } - - if (collection) { - *collection = (const char *) (iter->raw + iter->d2); - } - - if (oid) { - *oid = (const bson_oid_t *) (iter->raw + iter->d3); - } - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_symbol -- - * - * Retrieves the symbol of the current field of type BSON_TYPE_SYMBOL. - * - * Parameters: - * @iter: A bson_iter_t. - * @length: A location for the length of the symbol. - * - * Returns: - * A string containing the symbol as UTF-8. The value should not be - * modified or freed. - * - * Side effects: - * @length is set to the resulting strings length in bytes, - * excluding the null byte. - * - *-------------------------------------------------------------------------- - */ - -const char * -bson_iter_symbol (const bson_iter_t *iter, /* IN */ - uint32_t *length) /* OUT */ -{ - const char *ret = NULL; - uint32_t ret_length = 0; - - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_SYMBOL) { - ret = (const char *) (iter->raw + iter->d2); - ret_length = bson_iter_utf8_len_unsafe (iter); - } - - if (length) { - *length = ret_length; - } - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_date_time -- - * - * Fetches the number of milliseconds elapsed since the UNIX epoch. - * This value can be negative as times before 1970 are valid. - * - * Returns: - * A signed 64-bit integer containing the number of milliseconds. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -int64_t -bson_iter_date_time (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DATE_TIME) { - return bson_iter_int64_unsafe (iter); - } - - return 0; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_time_t -- - * - * Retrieves the current field of type BSON_TYPE_DATE_TIME as a - * time_t. - * - * Returns: - * A #time_t of the number of seconds since UNIX epoch in UTC. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -time_t -bson_iter_time_t (const bson_iter_t *iter) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DATE_TIME) { - return bson_iter_time_t_unsafe (iter); - } - - return 0; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_timestamp -- - * - * Fetches the current field if it is a BSON_TYPE_TIMESTAMP. - * - * Parameters: - * @iter: A #bson_iter_t. - * @timestamp: a location for the timestamp. - * @increment: A location for the increment. - * - * Returns: - * None. - * - * Side effects: - * @timestamp is initialized. - * @increment is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_timestamp (const bson_iter_t *iter, /* IN */ - uint32_t *timestamp, /* OUT */ - uint32_t *increment) /* OUT */ -{ - uint64_t encoded; - uint32_t ret_timestamp = 0; - uint32_t ret_increment = 0; - - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_TIMESTAMP) { - memcpy (&encoded, iter->raw + iter->d1, sizeof (encoded)); - encoded = BSON_UINT64_FROM_LE (encoded); - ret_timestamp = (encoded >> 32) & 0xFFFFFFFF; - ret_increment = encoded & 0xFFFFFFFF; - } - - if (timestamp) { - *timestamp = ret_timestamp; - } - - if (increment) { - *increment = ret_increment; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_timeval -- - * - * Retrieves the current field of type BSON_TYPE_DATE_TIME and stores - * it into the struct timeval provided. tv->tv_sec is set to the - * number of seconds since the UNIX epoch in UTC. - * - * Since BSON_TYPE_DATE_TIME does not support fractions of a second, - * tv->tv_usec will always be set to zero. - * - * Returns: - * None. - * - * Side effects: - * @tv is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_timeval (const bson_iter_t *iter, /* IN */ - struct timeval *tv) /* OUT */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DATE_TIME) { - bson_iter_timeval_unsafe (iter, tv); - return; - } - - memset (tv, 0, sizeof *tv); -} - - -/** - * bson_iter_document: - * @iter: a bson_iter_t. - * @document_len: A location for the document length. - * @document: A location for a pointer to the document buffer. - * - */ -/* - *-------------------------------------------------------------------------- - * - * bson_iter_document -- - * - * Retrieves the data to the document BSON structure and stores the - * length of the document buffer in @document_len and the document - * buffer in @document. - * - * If you would like to iterate over the child contents, you might - * consider creating a bson_t on the stack such as the following. It - * allows you to call functions taking a const bson_t* only. - * - * bson_t b; - * uint32_t len; - * const uint8_t *data; - * - * bson_iter_document(iter, &len, &data); - * - * if (bson_init_static (&b, data, len)) { - * ... - * } - * - * There is no need to cleanup the bson_t structure as no data can be - * modified in the process of its use (as it is static/const). - * - * Returns: - * None. - * - * Side effects: - * @document_len is initialized. - * @document is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_document (const bson_iter_t *iter, /* IN */ - uint32_t *document_len, /* OUT */ - const uint8_t **document) /* OUT */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (document_len); - BSON_ASSERT (document); - - *document = NULL; - *document_len = 0; - - if (ITER_TYPE (iter) == BSON_TYPE_DOCUMENT) { - memcpy (document_len, (iter->raw + iter->d1), sizeof (*document_len)); - *document_len = BSON_UINT32_FROM_LE (*document_len); - *document = (iter->raw + iter->d1); - } -} - - -/** - * bson_iter_array: - * @iter: a #bson_iter_t. - * @array_len: A location for the array length. - * @array: A location for a pointer to the array buffer. - */ -/* - *-------------------------------------------------------------------------- - * - * bson_iter_array -- - * - * Retrieves the data to the array BSON structure and stores the - * length of the array buffer in @array_len and the array buffer in - * @array. - * - * If you would like to iterate over the child contents, you might - * consider creating a bson_t on the stack such as the following. It - * allows you to call functions taking a const bson_t* only. - * - * bson_t b; - * uint32_t len; - * const uint8_t *data; - * - * bson_iter_array (iter, &len, &data); - * - * if (bson_init_static (&b, data, len)) { - * ... - * } - * - * There is no need to cleanup the #bson_t structure as no data can be - * modified in the process of its use. - * - * Returns: - * None. - * - * Side effects: - * @array_len is initialized. - * @array is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_array (const bson_iter_t *iter, /* IN */ - uint32_t *array_len, /* OUT */ - const uint8_t **array) /* OUT */ -{ - BSON_ASSERT (iter); - BSON_ASSERT (array_len); - BSON_ASSERT (array); - - *array = NULL; - *array_len = 0; - - if (ITER_TYPE (iter) == BSON_TYPE_ARRAY) { - memcpy (array_len, (iter->raw + iter->d1), sizeof (*array_len)); - *array_len = BSON_UINT32_FROM_LE (*array_len); - *array = (iter->raw + iter->d1); - } -} - - -#define VISIT_FIELD(name) visitor->visit_##name && visitor->visit_##name -#define VISIT_AFTER VISIT_FIELD (after) -#define VISIT_BEFORE VISIT_FIELD (before) -#define VISIT_CORRUPT \ - if (visitor->visit_corrupt) \ - visitor->visit_corrupt -#define VISIT_DOUBLE VISIT_FIELD (double) -#define VISIT_UTF8 VISIT_FIELD (utf8) -#define VISIT_DOCUMENT VISIT_FIELD (document) -#define VISIT_ARRAY VISIT_FIELD (array) -#define VISIT_BINARY VISIT_FIELD (binary) -#define VISIT_UNDEFINED VISIT_FIELD (undefined) -#define VISIT_OID VISIT_FIELD (oid) -#define VISIT_BOOL VISIT_FIELD (bool) -#define VISIT_DATE_TIME VISIT_FIELD (date_time) -#define VISIT_NULL VISIT_FIELD (null) -#define VISIT_REGEX VISIT_FIELD (regex) -#define VISIT_DBPOINTER VISIT_FIELD (dbpointer) -#define VISIT_CODE VISIT_FIELD (code) -#define VISIT_SYMBOL VISIT_FIELD (symbol) -#define VISIT_CODEWSCOPE VISIT_FIELD (codewscope) -#define VISIT_INT32 VISIT_FIELD (int32) -#define VISIT_TIMESTAMP VISIT_FIELD (timestamp) -#define VISIT_INT64 VISIT_FIELD (int64) -#define VISIT_DECIMAL128 VISIT_FIELD (decimal128) -#define VISIT_MAXKEY VISIT_FIELD (maxkey) -#define VISIT_MINKEY VISIT_FIELD (minkey) - - -bool -bson_iter_visit_all (bson_iter_t *iter, /* INOUT */ - const bson_visitor_t *visitor, /* IN */ - void *data) /* IN */ -{ - uint32_t bson_type; - const char *key; - bool unsupported; - - BSON_ASSERT (iter); - BSON_ASSERT (visitor); - - while (_bson_iter_next_internal (iter, 0, &key, &bson_type, &unsupported)) { - if (*key && !bson_utf8_validate (key, strlen (key), false)) { - iter->err_off = iter->off; - break; - } - - if (VISIT_BEFORE (iter, key, data)) { - return true; - } - - switch (bson_type) { - case BSON_TYPE_DOUBLE: - - if (VISIT_DOUBLE (iter, key, bson_iter_double (iter), data)) { - return true; - } - - break; - case BSON_TYPE_UTF8: { - uint32_t utf8_len; - const char *utf8; - - utf8 = bson_iter_utf8 (iter, &utf8_len); - - if (!bson_utf8_validate (utf8, utf8_len, true)) { - iter->err_off = iter->off; - return true; - } - - if (VISIT_UTF8 (iter, key, utf8_len, utf8, data)) { - return true; - } - } break; - case BSON_TYPE_DOCUMENT: { - const uint8_t *docbuf = NULL; - uint32_t doclen = 0; - bson_t b; - - bson_iter_document (iter, &doclen, &docbuf); - - if (bson_init_static (&b, docbuf, doclen) && - VISIT_DOCUMENT (iter, key, &b, data)) { - return true; - } - } break; - case BSON_TYPE_ARRAY: { - const uint8_t *docbuf = NULL; - uint32_t doclen = 0; - bson_t b; - - bson_iter_array (iter, &doclen, &docbuf); - - if (bson_init_static (&b, docbuf, doclen) && - VISIT_ARRAY (iter, key, &b, data)) { - return true; - } - } break; - case BSON_TYPE_BINARY: { - const uint8_t *binary = NULL; - bson_subtype_t subtype = BSON_SUBTYPE_BINARY; - uint32_t binary_len = 0; - - bson_iter_binary (iter, &subtype, &binary_len, &binary); - - if (VISIT_BINARY (iter, key, subtype, binary_len, binary, data)) { - return true; - } - } break; - case BSON_TYPE_UNDEFINED: - - if (VISIT_UNDEFINED (iter, key, data)) { - return true; - } - - break; - case BSON_TYPE_OID: - - if (VISIT_OID (iter, key, bson_iter_oid (iter), data)) { - return true; - } - - break; - case BSON_TYPE_BOOL: - - if (VISIT_BOOL (iter, key, bson_iter_bool (iter), data)) { - return true; - } - - break; - case BSON_TYPE_DATE_TIME: - - if (VISIT_DATE_TIME (iter, key, bson_iter_date_time (iter), data)) { - return true; - } - - break; - case BSON_TYPE_NULL: - - if (VISIT_NULL (iter, key, data)) { - return true; - } - - break; - case BSON_TYPE_REGEX: { - const char *regex = NULL; - const char *options = NULL; - regex = bson_iter_regex (iter, &options); - - if (!bson_utf8_validate (regex, strlen (regex), true)) { - iter->err_off = iter->off; - return true; - } - - if (VISIT_REGEX (iter, key, regex, options, data)) { - return true; - } - } break; - case BSON_TYPE_DBPOINTER: { - uint32_t collection_len = 0; - const char *collection = NULL; - const bson_oid_t *oid = NULL; - - bson_iter_dbpointer (iter, &collection_len, &collection, &oid); - - if (!bson_utf8_validate (collection, collection_len, true)) { - iter->err_off = iter->off; - return true; - } - - if (VISIT_DBPOINTER ( - iter, key, collection_len, collection, oid, data)) { - return true; - } - } break; - case BSON_TYPE_CODE: { - uint32_t code_len; - const char *code; - - code = bson_iter_code (iter, &code_len); - - if (!bson_utf8_validate (code, code_len, true)) { - iter->err_off = iter->off; - return true; - } - - if (VISIT_CODE (iter, key, code_len, code, data)) { - return true; - } - } break; - case BSON_TYPE_SYMBOL: { - uint32_t symbol_len; - const char *symbol; - - symbol = bson_iter_symbol (iter, &symbol_len); - - if (!bson_utf8_validate (symbol, symbol_len, true)) { - iter->err_off = iter->off; - return true; - } - - if (VISIT_SYMBOL (iter, key, symbol_len, symbol, data)) { - return true; - } - } break; - case BSON_TYPE_CODEWSCOPE: { - uint32_t length = 0; - const char *code; - const uint8_t *docbuf = NULL; - uint32_t doclen = 0; - bson_t b; - - code = bson_iter_codewscope (iter, &length, &doclen, &docbuf); - - if (!bson_utf8_validate (code, length, true)) { - iter->err_off = iter->off; - return true; - } - - if (bson_init_static (&b, docbuf, doclen) && - VISIT_CODEWSCOPE (iter, key, length, code, &b, data)) { - return true; - } - } break; - case BSON_TYPE_INT32: - - if (VISIT_INT32 (iter, key, bson_iter_int32 (iter), data)) { - return true; - } - - break; - case BSON_TYPE_TIMESTAMP: { - uint32_t timestamp; - uint32_t increment; - bson_iter_timestamp (iter, ×tamp, &increment); - - if (VISIT_TIMESTAMP (iter, key, timestamp, increment, data)) { - return true; - } - } break; - case BSON_TYPE_INT64: - - if (VISIT_INT64 (iter, key, bson_iter_int64 (iter), data)) { - return true; - } - - break; - case BSON_TYPE_DECIMAL128: { - bson_decimal128_t dec; - bson_iter_decimal128 (iter, &dec); - - if (VISIT_DECIMAL128 (iter, key, &dec, data)) { - return true; - } - } break; - case BSON_TYPE_MAXKEY: - - if (VISIT_MAXKEY (iter, bson_iter_key_unsafe (iter), data)) { - return true; - } - - break; - case BSON_TYPE_MINKEY: - - if (VISIT_MINKEY (iter, bson_iter_key_unsafe (iter), data)) { - return true; - } - - break; - case BSON_TYPE_EOD: - default: - break; - } - - if (VISIT_AFTER (iter, bson_iter_key_unsafe (iter), data)) { - return true; - } - } - - if (iter->err_off) { - if (unsupported && visitor->visit_unsupported_type && - bson_utf8_validate (key, strlen (key), false)) { - visitor->visit_unsupported_type (iter, key, bson_type, data); - return false; - } - - VISIT_CORRUPT (iter, data); - } - -#undef VISIT_FIELD - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_overwrite_bool -- - * - * Overwrites the current BSON_TYPE_BOOLEAN field with a new value. - * This is performed in-place and therefore no keys are moved. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_overwrite_bool (bson_iter_t *iter, /* IN */ - bool value) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_BOOL) { - memcpy ((void *) (iter->raw + iter->d1), &value, 1); - } -} - - -void -bson_iter_overwrite_oid (bson_iter_t *iter, const bson_oid_t *value) -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_OID) { - memcpy ( - (void *) (iter->raw + iter->d1), value->bytes, sizeof (value->bytes)); - } -} - - -void -bson_iter_overwrite_timestamp (bson_iter_t *iter, - uint32_t timestamp, - uint32_t increment) -{ - uint64_t value; - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_TIMESTAMP) { - value = ((((uint64_t) timestamp) << 32U) | ((uint64_t) increment)); - value = BSON_UINT64_TO_LE (value); - memcpy ((void *) (iter->raw + iter->d1), &value, sizeof (value)); - } -} - - -void -bson_iter_overwrite_date_time (bson_iter_t *iter, int64_t value) -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DATE_TIME) { - value = BSON_UINT64_TO_LE (value); - memcpy ((void *) (iter->raw + iter->d1), &value, sizeof (value)); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_overwrite_int32 -- - * - * Overwrites the current BSON_TYPE_INT32 field with a new value. - * This is performed in-place and therefore no keys are moved. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_overwrite_int32 (bson_iter_t *iter, /* IN */ - int32_t value) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_INT32) { -#if BSON_BYTE_ORDER != BSON_LITTLE_ENDIAN - value = BSON_UINT32_TO_LE (value); -#endif - memcpy ((void *) (iter->raw + iter->d1), &value, sizeof (value)); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_overwrite_int64 -- - * - * Overwrites the current BSON_TYPE_INT64 field with a new value. - * This is performed in-place and therefore no keys are moved. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_overwrite_int64 (bson_iter_t *iter, /* IN */ - int64_t value) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_INT64) { -#if BSON_BYTE_ORDER != BSON_LITTLE_ENDIAN - value = BSON_UINT64_TO_LE (value); -#endif - memcpy ((void *) (iter->raw + iter->d1), &value, sizeof (value)); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_overwrite_double -- - * - * Overwrites the current BSON_TYPE_DOUBLE field with a new value. - * This is performed in-place and therefore no keys are moved. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_iter_overwrite_double (bson_iter_t *iter, /* IN */ - double value) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DOUBLE) { - value = BSON_DOUBLE_TO_LE (value); - memcpy ((void *) (iter->raw + iter->d1), &value, sizeof (value)); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_overwrite_decimal128 -- - * - * Overwrites the current BSON_TYPE_DECIMAL128 field with a new value. - * This is performed in-place and therefore no keys are moved. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ -void -bson_iter_overwrite_decimal128 (bson_iter_t *iter, /* IN */ - bson_decimal128_t *value) /* IN */ -{ - BSON_ASSERT (iter); - - if (ITER_TYPE (iter) == BSON_TYPE_DECIMAL128) { -#if BSON_BYTE_ORDER != BSON_LITTLE_ENDIAN - uint64_t data[2]; - data[0] = BSON_UINT64_TO_LE (value->low); - data[1] = BSON_UINT64_TO_LE (value->high); - memcpy ((void *) (iter->raw + iter->d1), data, sizeof (data)); -#else - memcpy ((void *) (iter->raw + iter->d1), value, sizeof (*value)); -#endif - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_iter_value -- - * - * Retrieves a bson_value_t containing the boxed value of the current - * element. The result of this function valid until the state of - * iter has been changed (through the use of bson_iter_next()). - * - * Returns: - * A bson_value_t that should not be modified or freed. If you need - * to hold on to the value, use bson_value_copy(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -const bson_value_t * -bson_iter_value (bson_iter_t *iter) /* IN */ -{ - bson_value_t *value; - - BSON_ASSERT (iter); - - value = &iter->value; - value->value_type = ITER_TYPE (iter); - - switch (value->value_type) { - case BSON_TYPE_DOUBLE: - value->value.v_double = bson_iter_double (iter); - break; - case BSON_TYPE_UTF8: - value->value.v_utf8.str = - (char *) bson_iter_utf8 (iter, &value->value.v_utf8.len); - break; - case BSON_TYPE_DOCUMENT: - bson_iter_document (iter, - &value->value.v_doc.data_len, - (const uint8_t **) &value->value.v_doc.data); - break; - case BSON_TYPE_ARRAY: - bson_iter_array (iter, - &value->value.v_doc.data_len, - (const uint8_t **) &value->value.v_doc.data); - break; - case BSON_TYPE_BINARY: - bson_iter_binary (iter, - &value->value.v_binary.subtype, - &value->value.v_binary.data_len, - (const uint8_t **) &value->value.v_binary.data); - break; - case BSON_TYPE_OID: - bson_oid_copy (bson_iter_oid (iter), &value->value.v_oid); - break; - case BSON_TYPE_BOOL: - value->value.v_bool = bson_iter_bool (iter); - break; - case BSON_TYPE_DATE_TIME: - value->value.v_datetime = bson_iter_date_time (iter); - break; - case BSON_TYPE_REGEX: - value->value.v_regex.regex = (char *) bson_iter_regex ( - iter, (const char **) &value->value.v_regex.options); - break; - case BSON_TYPE_DBPOINTER: { - const bson_oid_t *oid; - - bson_iter_dbpointer (iter, - &value->value.v_dbpointer.collection_len, - (const char **) &value->value.v_dbpointer.collection, - &oid); - bson_oid_copy (oid, &value->value.v_dbpointer.oid); - break; - } - case BSON_TYPE_CODE: - value->value.v_code.code = - (char *) bson_iter_code (iter, &value->value.v_code.code_len); - break; - case BSON_TYPE_SYMBOL: - value->value.v_symbol.symbol = - (char *) bson_iter_symbol (iter, &value->value.v_symbol.len); - break; - case BSON_TYPE_CODEWSCOPE: - value->value.v_codewscope.code = (char *) bson_iter_codewscope ( - iter, - &value->value.v_codewscope.code_len, - &value->value.v_codewscope.scope_len, - (const uint8_t **) &value->value.v_codewscope.scope_data); - break; - case BSON_TYPE_INT32: - value->value.v_int32 = bson_iter_int32 (iter); - break; - case BSON_TYPE_TIMESTAMP: - bson_iter_timestamp (iter, - &value->value.v_timestamp.timestamp, - &value->value.v_timestamp.increment); - break; - case BSON_TYPE_INT64: - value->value.v_int64 = bson_iter_int64 (iter); - break; - case BSON_TYPE_DECIMAL128: - bson_iter_decimal128 (iter, &(value->value.v_decimal128)); - break; - case BSON_TYPE_NULL: - case BSON_TYPE_UNDEFINED: - case BSON_TYPE_MAXKEY: - case BSON_TYPE_MINKEY: - break; - case BSON_TYPE_EOD: - default: - return NULL; - } - - return value; -} - -uint32_t -bson_iter_key_len (const bson_iter_t *iter) -{ - /* - * f i e l d n a m e \0 _ - * ^ ^ - * | | - * iter->key iter->d1 - * - */ - BSON_ASSERT (iter->d1 > iter->key); - return iter->d1 - iter->key - 1; -} - -bool -bson_iter_init_from_data_at_offset (bson_iter_t *iter, - const uint8_t *data, - size_t length, - uint32_t offset, - uint32_t keylen) -{ - const char *key; - uint32_t bson_type; - bool unsupported; - - BSON_ASSERT (iter); - BSON_ASSERT (data); - - if (BSON_UNLIKELY ((length < 5) || (length > INT_MAX))) { - memset (iter, 0, sizeof *iter); - return false; - } - - iter->raw = (uint8_t *) data; - iter->len = (uint32_t) length; - iter->off = 0; - iter->type = 0; - iter->key = 0; - iter->next_off = offset; - iter->err_off = 0; - - if (!_bson_iter_next_internal ( - iter, keylen, &key, &bson_type, &unsupported)) { - memset (iter, 0, sizeof *iter); - return false; - } - - return true; -} - -uint32_t -bson_iter_offset (bson_iter_t *iter) -{ - return iter->off; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.h deleted file mode 100644 index d48ca0f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-iter.h +++ /dev/null @@ -1,550 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_ITER_H -#define BSON_ITER_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson.h" -#include "bson/bson-endian.h" -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -#define BSON_ITER_HOLDS_DOUBLE(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DOUBLE) - -#define BSON_ITER_HOLDS_UTF8(iter) (bson_iter_type ((iter)) == BSON_TYPE_UTF8) - -#define BSON_ITER_HOLDS_DOCUMENT(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DOCUMENT) - -#define BSON_ITER_HOLDS_ARRAY(iter) (bson_iter_type ((iter)) == BSON_TYPE_ARRAY) - -#define BSON_ITER_HOLDS_BINARY(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_BINARY) - -#define BSON_ITER_HOLDS_UNDEFINED(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_UNDEFINED) - -#define BSON_ITER_HOLDS_OID(iter) (bson_iter_type ((iter)) == BSON_TYPE_OID) - -#define BSON_ITER_HOLDS_BOOL(iter) (bson_iter_type ((iter)) == BSON_TYPE_BOOL) - -#define BSON_ITER_HOLDS_DATE_TIME(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DATE_TIME) - -#define BSON_ITER_HOLDS_NULL(iter) (bson_iter_type ((iter)) == BSON_TYPE_NULL) - -#define BSON_ITER_HOLDS_REGEX(iter) (bson_iter_type ((iter)) == BSON_TYPE_REGEX) - -#define BSON_ITER_HOLDS_DBPOINTER(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DBPOINTER) - -#define BSON_ITER_HOLDS_CODE(iter) (bson_iter_type ((iter)) == BSON_TYPE_CODE) - -#define BSON_ITER_HOLDS_SYMBOL(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_SYMBOL) - -#define BSON_ITER_HOLDS_CODEWSCOPE(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_CODEWSCOPE) - -#define BSON_ITER_HOLDS_INT32(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT32) - -#define BSON_ITER_HOLDS_TIMESTAMP(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_TIMESTAMP) - -#define BSON_ITER_HOLDS_INT64(iter) (bson_iter_type ((iter)) == BSON_TYPE_INT64) - -#define BSON_ITER_HOLDS_DECIMAL128(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_DECIMAL128) - -#define BSON_ITER_HOLDS_MAXKEY(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_MAXKEY) - -#define BSON_ITER_HOLDS_MINKEY(iter) \ - (bson_iter_type ((iter)) == BSON_TYPE_MINKEY) - -#define BSON_ITER_HOLDS_INT(iter) \ - (BSON_ITER_HOLDS_INT32 (iter) || BSON_ITER_HOLDS_INT64 (iter)) - -#define BSON_ITER_HOLDS_NUMBER(iter) \ - (BSON_ITER_HOLDS_INT (iter) || BSON_ITER_HOLDS_DOUBLE (iter)) - -#define BSON_ITER_IS_KEY(iter, key) \ - (0 == strcmp ((key), bson_iter_key ((iter)))) - - -BSON_EXPORT (const bson_value_t *) -bson_iter_value (bson_iter_t *iter); - - -/** - * bson_iter_utf8_len_unsafe: - * @iter: a bson_iter_t. - * - * Returns the length of a string currently pointed to by @iter. This performs - * no validation so the is responsible for knowing the BSON is valid. Calling - * bson_validate() is one way to do this ahead of time. - */ -static BSON_INLINE uint32_t -bson_iter_utf8_len_unsafe (const bson_iter_t *iter) -{ - int32_t val; - - memcpy (&val, iter->raw + iter->d1, sizeof (val)); - val = BSON_UINT32_FROM_LE (val); - return BSON_MAX (0, val - 1); -} - - -BSON_EXPORT (void) -bson_iter_array (const bson_iter_t *iter, - uint32_t *array_len, - const uint8_t **array); - - -BSON_EXPORT (void) -bson_iter_binary (const bson_iter_t *iter, - bson_subtype_t *subtype, - uint32_t *binary_len, - const uint8_t **binary); - - -BSON_EXPORT (const char *) -bson_iter_code (const bson_iter_t *iter, uint32_t *length); - - -/** - * bson_iter_code_unsafe: - * @iter: A bson_iter_t. - * @length: A location for the length of the resulting string. - * - * Like bson_iter_code() but performs no integrity checks. - * - * Returns: A string that should not be modified or freed. - */ -static BSON_INLINE const char * -bson_iter_code_unsafe (const bson_iter_t *iter, uint32_t *length) -{ - *length = bson_iter_utf8_len_unsafe (iter); - return (const char *) (iter->raw + iter->d2); -} - - -BSON_EXPORT (const char *) -bson_iter_codewscope (const bson_iter_t *iter, - uint32_t *length, - uint32_t *scope_len, - const uint8_t **scope); - - -BSON_EXPORT (void) -bson_iter_dbpointer (const bson_iter_t *iter, - uint32_t *collection_len, - const char **collection, - const bson_oid_t **oid); - - -BSON_EXPORT (void) -bson_iter_document (const bson_iter_t *iter, - uint32_t *document_len, - const uint8_t **document); - - -BSON_EXPORT (double) -bson_iter_double (const bson_iter_t *iter); - -BSON_EXPORT (double) -bson_iter_as_double (const bson_iter_t *iter); - -/** - * bson_iter_double_unsafe: - * @iter: A bson_iter_t. - * - * Similar to bson_iter_double() but does not perform an integrity checking. - * - * Returns: A double. - */ -static BSON_INLINE double -bson_iter_double_unsafe (const bson_iter_t *iter) -{ - double val; - - memcpy (&val, iter->raw + iter->d1, sizeof (val)); - return BSON_DOUBLE_FROM_LE (val); -} - - -BSON_EXPORT (bool) -bson_iter_init (bson_iter_t *iter, const bson_t *bson); - -BSON_EXPORT (bool) -bson_iter_init_from_data (bson_iter_t *iter, - const uint8_t *data, - size_t length); - - -BSON_EXPORT (bool) -bson_iter_init_find (bson_iter_t *iter, const bson_t *bson, const char *key); - - -BSON_EXPORT (bool) -bson_iter_init_find_w_len (bson_iter_t *iter, - const bson_t *bson, - const char *key, - int keylen); - - -BSON_EXPORT (bool) -bson_iter_init_find_case (bson_iter_t *iter, - const bson_t *bson, - const char *key); - -BSON_EXPORT (bool) -bson_iter_init_from_data_at_offset (bson_iter_t *iter, - const uint8_t *data, - size_t length, - uint32_t offset, - uint32_t keylen); - -BSON_EXPORT (int32_t) -bson_iter_int32 (const bson_iter_t *iter); - - -/** - * bson_iter_int32_unsafe: - * @iter: A bson_iter_t. - * - * Similar to bson_iter_int32() but with no integrity checking. - * - * Returns: A 32-bit signed integer. - */ -static BSON_INLINE int32_t -bson_iter_int32_unsafe (const bson_iter_t *iter) -{ - int32_t val; - - memcpy (&val, iter->raw + iter->d1, sizeof (val)); - return BSON_UINT32_FROM_LE (val); -} - - -BSON_EXPORT (int64_t) -bson_iter_int64 (const bson_iter_t *iter); - - -BSON_EXPORT (int64_t) -bson_iter_as_int64 (const bson_iter_t *iter); - - -/** - * bson_iter_int64_unsafe: - * @iter: a bson_iter_t. - * - * Similar to bson_iter_int64() but without integrity checking. - * - * Returns: A 64-bit signed integer. - */ -static BSON_INLINE int64_t -bson_iter_int64_unsafe (const bson_iter_t *iter) -{ - int64_t val; - - memcpy (&val, iter->raw + iter->d1, sizeof (val)); - return BSON_UINT64_FROM_LE (val); -} - - -BSON_EXPORT (bool) -bson_iter_find (bson_iter_t *iter, const char *key); - - -BSON_EXPORT (bool) -bson_iter_find_w_len (bson_iter_t *iter, const char *key, int keylen); - - -BSON_EXPORT (bool) -bson_iter_find_case (bson_iter_t *iter, const char *key); - - -BSON_EXPORT (bool) -bson_iter_find_descendant (bson_iter_t *iter, - const char *dotkey, - bson_iter_t *descendant); - - -BSON_EXPORT (bool) -bson_iter_next (bson_iter_t *iter); - - -BSON_EXPORT (const bson_oid_t *) -bson_iter_oid (const bson_iter_t *iter); - - -/** - * bson_iter_oid_unsafe: - * @iter: A #bson_iter_t. - * - * Similar to bson_iter_oid() but performs no integrity checks. - * - * Returns: A #bson_oid_t that should not be modified or freed. - */ -static BSON_INLINE const bson_oid_t * -bson_iter_oid_unsafe (const bson_iter_t *iter) -{ - return (const bson_oid_t *) (iter->raw + iter->d1); -} - - -BSON_EXPORT (bool) -bson_iter_decimal128 (const bson_iter_t *iter, bson_decimal128_t *dec); - - -/** - * bson_iter_decimal128_unsafe: - * @iter: A #bson_iter_t. - * - * Similar to bson_iter_decimal128() but performs no integrity checks. - * - * Returns: A #bson_decimal128_t. - */ -static BSON_INLINE void -bson_iter_decimal128_unsafe (const bson_iter_t *iter, bson_decimal128_t *dec) -{ - uint64_t low_le; - uint64_t high_le; - - memcpy (&low_le, iter->raw + iter->d1, sizeof (low_le)); - memcpy (&high_le, iter->raw + iter->d1 + 8, sizeof (high_le)); - - dec->low = BSON_UINT64_FROM_LE (low_le); - dec->high = BSON_UINT64_FROM_LE (high_le); -} - - -BSON_EXPORT (const char *) -bson_iter_key (const bson_iter_t *iter); - -BSON_EXPORT (uint32_t) -bson_iter_key_len (const bson_iter_t *iter); - - -/** - * bson_iter_key_unsafe: - * @iter: A bson_iter_t. - * - * Similar to bson_iter_key() but performs no integrity checking. - * - * Returns: A string that should not be modified or freed. - */ -static BSON_INLINE const char * -bson_iter_key_unsafe (const bson_iter_t *iter) -{ - return (const char *) (iter->raw + iter->key); -} - - -BSON_EXPORT (const char *) -bson_iter_utf8 (const bson_iter_t *iter, uint32_t *length); - - -/** - * bson_iter_utf8_unsafe: - * - * Similar to bson_iter_utf8() but performs no integrity checking. - * - * Returns: A string that should not be modified or freed. - */ -static BSON_INLINE const char * -bson_iter_utf8_unsafe (const bson_iter_t *iter, size_t *length) -{ - *length = bson_iter_utf8_len_unsafe (iter); - return (const char *) (iter->raw + iter->d2); -} - - -BSON_EXPORT (char *) -bson_iter_dup_utf8 (const bson_iter_t *iter, uint32_t *length); - - -BSON_EXPORT (int64_t) -bson_iter_date_time (const bson_iter_t *iter); - - -BSON_EXPORT (time_t) -bson_iter_time_t (const bson_iter_t *iter); - - -/** - * bson_iter_time_t_unsafe: - * @iter: A bson_iter_t. - * - * Similar to bson_iter_time_t() but performs no integrity checking. - * - * Returns: A time_t containing the number of seconds since UNIX epoch - * in UTC. - */ -static BSON_INLINE time_t -bson_iter_time_t_unsafe (const bson_iter_t *iter) -{ - return (time_t) (bson_iter_int64_unsafe (iter) / 1000UL); -} - - -BSON_EXPORT (void) -bson_iter_timeval (const bson_iter_t *iter, struct timeval *tv); - - -/** - * bson_iter_timeval_unsafe: - * @iter: A bson_iter_t. - * @tv: A struct timeval. - * - * Similar to bson_iter_timeval() but performs no integrity checking. - */ -static BSON_INLINE void -bson_iter_timeval_unsafe (const bson_iter_t *iter, struct timeval *tv) -{ - int64_t value = bson_iter_int64_unsafe (iter); -#ifdef BSON_OS_WIN32 - tv->tv_sec = (long) (value / 1000); -#else - tv->tv_sec = (suseconds_t) (value / 1000); -#endif - tv->tv_usec = (value % 1000) * 1000; -} - - -BSON_EXPORT (void) -bson_iter_timestamp (const bson_iter_t *iter, - uint32_t *timestamp, - uint32_t *increment); - - -BSON_EXPORT (bool) -bson_iter_bool (const bson_iter_t *iter); - - -/** - * bson_iter_bool_unsafe: - * @iter: A bson_iter_t. - * - * Similar to bson_iter_bool() but performs no integrity checking. - * - * Returns: true or false. - */ -static BSON_INLINE bool -bson_iter_bool_unsafe (const bson_iter_t *iter) -{ - char val; - - memcpy (&val, iter->raw + iter->d1, 1); - return !!val; -} - - -BSON_EXPORT (bool) -bson_iter_as_bool (const bson_iter_t *iter); - - -BSON_EXPORT (const char *) -bson_iter_regex (const bson_iter_t *iter, const char **options); - - -BSON_EXPORT (const char *) -bson_iter_symbol (const bson_iter_t *iter, uint32_t *length); - - -BSON_EXPORT (bson_type_t) -bson_iter_type (const bson_iter_t *iter); - - -/** - * bson_iter_type_unsafe: - * @iter: A bson_iter_t. - * - * Similar to bson_iter_type() but performs no integrity checking. - * - * Returns: A bson_type_t. - */ -static BSON_INLINE bson_type_t -bson_iter_type_unsafe (const bson_iter_t *iter) -{ - return (bson_type_t) (iter->raw + iter->type)[0]; -} - - -BSON_EXPORT (bool) -bson_iter_recurse (const bson_iter_t *iter, bson_iter_t *child); - - -BSON_EXPORT (void) -bson_iter_overwrite_int32 (bson_iter_t *iter, int32_t value); - - -BSON_EXPORT (void) -bson_iter_overwrite_int64 (bson_iter_t *iter, int64_t value); - - -BSON_EXPORT (void) -bson_iter_overwrite_double (bson_iter_t *iter, double value); - - -BSON_EXPORT (void) -bson_iter_overwrite_decimal128 (bson_iter_t *iter, bson_decimal128_t *value); - - -BSON_EXPORT (void) -bson_iter_overwrite_bool (bson_iter_t *iter, bool value); - - -BSON_EXPORT (void) -bson_iter_overwrite_oid (bson_iter_t *iter, const bson_oid_t *value); - - -BSON_EXPORT (void) -bson_iter_overwrite_timestamp (bson_iter_t *iter, - uint32_t timestamp, - uint32_t increment); - - -BSON_EXPORT (void) -bson_iter_overwrite_date_time (bson_iter_t *iter, int64_t value); - - -BSON_EXPORT (bool) -bson_iter_visit_all (bson_iter_t *iter, - const bson_visitor_t *visitor, - void *data); - -BSON_EXPORT (uint32_t) -bson_iter_offset (bson_iter_t *iter); - - -BSON_END_DECLS - - -#endif /* BSON_ITER_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.c deleted file mode 100644 index a41fb1d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.c +++ /dev/null @@ -1,2408 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include -#include -#include - -#include "bson/bson.h" -#include "bson/bson-config.h" -#include "bson/bson-json.h" -#include "bson/bson-iso8601-private.h" - -#include "common-b64-private.h" -#include "jsonsl/jsonsl.h" - -#ifdef _WIN32 -#include -#include -#endif - -#ifndef _MSC_VER -#include -#endif - -#ifdef _MSC_VER -#define SSCANF sscanf_s -#else -#define SSCANF sscanf -#endif - -#define STACK_MAX 100 -#define BSON_JSON_DEFAULT_BUF_SIZE (1 << 14) -#define AT_LEAST_0(x) ((x) >= 0 ? (x) : 0) - - -#define READ_STATE_ENUM(ENUM) BSON_JSON_##ENUM, -#define GENERATE_STRING(STRING) #STRING, - -#define FOREACH_READ_STATE(RS) \ - RS (REGULAR) \ - RS (DONE) \ - RS (ERROR) \ - RS (IN_START_MAP) \ - RS (IN_BSON_TYPE) \ - RS (IN_BSON_TYPE_DATE_NUMBERLONG) \ - RS (IN_BSON_TYPE_DATE_ENDMAP) \ - RS (IN_BSON_TYPE_TIMESTAMP_STARTMAP) \ - RS (IN_BSON_TYPE_TIMESTAMP_VALUES) \ - RS (IN_BSON_TYPE_TIMESTAMP_ENDMAP) \ - RS (IN_BSON_TYPE_REGEX_STARTMAP) \ - RS (IN_BSON_TYPE_REGEX_VALUES) \ - RS (IN_BSON_TYPE_REGEX_ENDMAP) \ - RS (IN_BSON_TYPE_BINARY_VALUES) \ - RS (IN_BSON_TYPE_BINARY_ENDMAP) \ - RS (IN_BSON_TYPE_SCOPE_STARTMAP) \ - RS (IN_BSON_TYPE_DBPOINTER_STARTMAP) \ - RS (IN_SCOPE) \ - RS (IN_DBPOINTER) - -typedef enum { FOREACH_READ_STATE (READ_STATE_ENUM) } bson_json_read_state_t; - -static const char *read_state_names[] = {FOREACH_READ_STATE (GENERATE_STRING)}; - -#define BSON_STATE_ENUM(ENUM) BSON_JSON_LF_##ENUM, - -#define FOREACH_BSON_STATE(BS) \ - /* legacy {$regex: "...", $options: "..."} */ \ - BS (REGEX) \ - BS (OPTIONS) \ - /* modern $regularExpression: {pattern: "...", options: "..."} */ \ - BS (REGULAR_EXPRESSION_PATTERN) \ - BS (REGULAR_EXPRESSION_OPTIONS) \ - BS (CODE) \ - BS (SCOPE) \ - BS (OID) \ - BS (BINARY) \ - BS (TYPE) \ - BS (DATE) \ - BS (TIMESTAMP_T) \ - BS (TIMESTAMP_I) \ - BS (UNDEFINED) \ - BS (MINKEY) \ - BS (MAXKEY) \ - BS (INT32) \ - BS (INT64) \ - BS (DOUBLE) \ - BS (DECIMAL128) \ - BS (DBPOINTER) \ - BS (SYMBOL) \ - BS (DBREF) - -typedef enum { - FOREACH_BSON_STATE (BSON_STATE_ENUM) -} bson_json_read_bson_state_t; - -static const char *bson_state_names[] = {FOREACH_BSON_STATE (GENERATE_STRING)}; - -typedef struct { - uint8_t *buf; - size_t n_bytes; - size_t len; -} bson_json_buf_t; - - -typedef enum { - BSON_JSON_FRAME_INITIAL = 0, - BSON_JSON_FRAME_ARRAY, - BSON_JSON_FRAME_DOC, - BSON_JSON_FRAME_SCOPE, - BSON_JSON_FRAME_DBPOINTER, -} bson_json_frame_type_t; - - -typedef struct { - int i; - bson_json_frame_type_t type; - bool has_ref; - bool has_id; - bson_t bson; -} bson_json_stack_frame_t; - - -typedef union { - struct { - bool has_pattern; - bool has_options; - bool is_legacy; - } regex; - struct { - bool has_oid; - bson_oid_t oid; - } oid; - struct { - bool has_binary; - bool has_subtype; - bson_subtype_t type; - bool is_legacy; - } binary; - struct { - bool has_date; - int64_t date; - } date; - struct { - bool has_t; - bool has_i; - uint32_t t; - uint32_t i; - } timestamp; - struct { - bool has_undefined; - } undefined; - struct { - bool has_minkey; - } minkey; - struct { - bool has_maxkey; - } maxkey; - struct { - int32_t value; - } v_int32; - struct { - int64_t value; - } v_int64; - struct { - double value; - } v_double; - struct { - bson_decimal128_t value; - } v_decimal128; -} bson_json_bson_data_t; - - -/* collect info while parsing a {$code: "...", $scope: {...}} object */ -typedef struct { - bool has_code; - bool has_scope; - bool in_scope; - bson_json_buf_t key_buf; - bson_json_buf_t code_buf; -} bson_json_code_t; - - -static void -_bson_json_code_cleanup (bson_json_code_t *code_data) -{ - bson_free (code_data->key_buf.buf); - bson_free (code_data->code_buf.buf); -} - - -typedef struct { - bson_t *bson; - bson_json_stack_frame_t stack[STACK_MAX]; - int n; - const char *key; - bson_json_buf_t key_buf; - bson_json_buf_t unescaped; - bson_json_read_state_t read_state; - bson_json_read_bson_state_t bson_state; - bson_type_t bson_type; - bson_json_buf_t bson_type_buf[3]; - bson_json_bson_data_t bson_type_data; - bson_json_code_t code_data; - bson_json_buf_t dbpointer_key; -} bson_json_reader_bson_t; - - -typedef struct { - void *data; - bson_json_reader_cb cb; - bson_json_destroy_cb dcb; - uint8_t *buf; - size_t buf_size; - size_t bytes_read; - size_t bytes_parsed; - bool all_whitespace; -} bson_json_reader_producer_t; - - -struct _bson_json_reader_t { - bson_json_reader_producer_t producer; - bson_json_reader_bson_t bson; - jsonsl_t json; - ssize_t json_text_pos; - bool should_reset; - ssize_t advance; - bson_json_buf_t tok_accumulator; - bson_error_t *error; -}; - - -typedef struct { - int fd; - bool do_close; -} bson_json_reader_handle_fd_t; - - -/* forward decl */ -static void -_bson_json_save_map_key (bson_json_reader_bson_t *bson, - const uint8_t *val, - size_t len); - - -static void -_noop (void) -{ -} - -#define STACK_ELE(_delta, _name) (bson->stack[(_delta) + bson->n]._name) -#define STACK_BSON(_delta) \ - (((_delta) + bson->n) == 0 ? bson->bson : &STACK_ELE (_delta, bson)) -#define STACK_BSON_PARENT STACK_BSON (-1) -#define STACK_BSON_CHILD STACK_BSON (0) -#define STACK_I STACK_ELE (0, i) -#define STACK_FRAME_TYPE STACK_ELE (0, type) -#define STACK_IS_INITIAL (STACK_FRAME_TYPE == BSON_JSON_FRAME_INITIAL) -#define STACK_IS_ARRAY (STACK_FRAME_TYPE == BSON_JSON_FRAME_ARRAY) -#define STACK_IS_DOC (STACK_FRAME_TYPE == BSON_JSON_FRAME_DOC) -#define STACK_IS_SCOPE (STACK_FRAME_TYPE == BSON_JSON_FRAME_SCOPE) -#define STACK_IS_DBPOINTER (STACK_FRAME_TYPE == BSON_JSON_FRAME_DBPOINTER) -#define FRAME_TYPE_HAS_BSON(_type) \ - ((_type) == BSON_JSON_FRAME_SCOPE || (_type) == BSON_JSON_FRAME_DBPOINTER) -#define STACK_HAS_BSON FRAME_TYPE_HAS_BSON (STACK_FRAME_TYPE) -#define STACK_HAS_REF STACK_ELE (0, has_ref) -#define STACK_HAS_ID STACK_ELE (0, has_id) -#define STACK_PUSH(frame_type) \ - do { \ - if (bson->n >= (STACK_MAX - 1)) { \ - return; \ - } \ - bson->n++; \ - if (STACK_HAS_BSON) { \ - if (FRAME_TYPE_HAS_BSON (frame_type)) { \ - bson_reinit (STACK_BSON_CHILD); \ - } else { \ - bson_destroy (STACK_BSON_CHILD); \ - } \ - } else if (FRAME_TYPE_HAS_BSON (frame_type)) { \ - bson_init (STACK_BSON_CHILD); \ - } \ - STACK_FRAME_TYPE = frame_type; \ - } while (0) -#define STACK_PUSH_ARRAY(statement) \ - do { \ - STACK_PUSH (BSON_JSON_FRAME_ARRAY); \ - STACK_I = 0; \ - if (bson->n != 0) { \ - statement; \ - } \ - } while (0) -#define STACK_PUSH_DOC(statement) \ - do { \ - STACK_PUSH (BSON_JSON_FRAME_DOC); \ - STACK_HAS_REF = false; \ - STACK_HAS_ID = false; \ - if (bson->n != 0) { \ - statement; \ - } \ - } while (0) -#define STACK_PUSH_SCOPE \ - do { \ - STACK_PUSH (BSON_JSON_FRAME_SCOPE); \ - bson->code_data.in_scope = true; \ - } while (0) -#define STACK_PUSH_DBPOINTER \ - do { \ - STACK_PUSH (BSON_JSON_FRAME_DBPOINTER); \ - } while (0) -#define STACK_POP_ARRAY(statement) \ - do { \ - if (!STACK_IS_ARRAY) { \ - return; \ - } \ - if (bson->n < 0) { \ - return; \ - } \ - if (bson->n > 0) { \ - statement; \ - } \ - bson->n--; \ - } while (0) -#define STACK_POP_DOC(statement) \ - do { \ - if (STACK_IS_ARRAY) { \ - return; \ - } \ - if (bson->n < 0) { \ - return; \ - } \ - if (bson->n > 0) { \ - statement; \ - } \ - bson->n--; \ - } while (0) -#define STACK_POP_SCOPE \ - do { \ - STACK_POP_DOC (_noop ()); \ - bson->code_data.in_scope = false; \ - } while (0); -#define STACK_POP_DBPOINTER STACK_POP_DOC (_noop ()) -#define BASIC_CB_PREAMBLE \ - const char *key; \ - size_t len; \ - bson_json_reader_bson_t *bson = &reader->bson; \ - _bson_json_read_fixup_key (bson); \ - key = bson->key; \ - len = bson->key_buf.len; -#define BASIC_CB_BAIL_IF_NOT_NORMAL(_type) \ - if (bson->read_state != BSON_JSON_REGULAR) { \ - _bson_json_read_set_error (reader, \ - "Invalid read of %s in state %s", \ - (_type), \ - read_state_names[bson->read_state]); \ - return; \ - } else if (!key) { \ - _bson_json_read_set_error (reader, \ - "Invalid read of %s without key in state %s", \ - (_type), \ - read_state_names[bson->read_state]); \ - return; \ - } -#define HANDLE_OPTION(_key, _type, _state) \ - (len == strlen (_key) && strncmp ((const char *) val, (_key), len) == 0) \ - { \ - if (bson->bson_type && bson->bson_type != (_type)) { \ - _bson_json_read_set_error (reader, \ - "Invalid key \"%s\". Looking for values " \ - "for type \"%s\", got \"%s\"", \ - (_key), \ - _bson_json_type_name (bson->bson_type), \ - _bson_json_type_name (_type)); \ - return; \ - } \ - bson->bson_type = (_type); \ - bson->bson_state = (_state); \ - } - - -static void -_bson_json_read_set_error (bson_json_reader_t *reader, const char *fmt, ...) - BSON_GNUC_PRINTF (2, 3); - - -static void -_bson_json_read_set_error (bson_json_reader_t *reader, /* IN */ - const char *fmt, /* IN */ - ...) -{ - va_list ap; - - if (reader->error) { - reader->error->domain = BSON_ERROR_JSON; - reader->error->code = BSON_JSON_ERROR_READ_INVALID_PARAM; - va_start (ap, fmt); - bson_vsnprintf ( - reader->error->message, sizeof reader->error->message, fmt, ap); - va_end (ap); - reader->error->message[sizeof reader->error->message - 1] = '\0'; - } - - reader->bson.read_state = BSON_JSON_ERROR; - jsonsl_stop (reader->json); -} - - -static void -_bson_json_read_corrupt (bson_json_reader_t *reader, const char *fmt, ...) - BSON_GNUC_PRINTF (2, 3); - - -static void -_bson_json_read_corrupt (bson_json_reader_t *reader, /* IN */ - const char *fmt, /* IN */ - ...) -{ - va_list ap; - - if (reader->error) { - reader->error->domain = BSON_ERROR_JSON; - reader->error->code = BSON_JSON_ERROR_READ_CORRUPT_JS; - va_start (ap, fmt); - bson_vsnprintf ( - reader->error->message, sizeof reader->error->message, fmt, ap); - va_end (ap); - reader->error->message[sizeof reader->error->message - 1] = '\0'; - } - - reader->bson.read_state = BSON_JSON_ERROR; - jsonsl_stop (reader->json); -} - - -static void -_bson_json_buf_ensure (bson_json_buf_t *buf, /* IN */ - size_t len) /* IN */ -{ - if (buf->n_bytes < len) { - bson_free (buf->buf); - - buf->n_bytes = bson_next_power_of_two (len); - buf->buf = bson_malloc (buf->n_bytes); - } -} - - -static void -_bson_json_buf_set (bson_json_buf_t *buf, const void *from, size_t len) -{ - _bson_json_buf_ensure (buf, len + 1); - memcpy (buf->buf, from, len); - buf->buf[len] = '\0'; - buf->len = len; -} - - -static void -_bson_json_buf_append (bson_json_buf_t *buf, const void *from, size_t len) -{ - size_t len_with_null = len + 1; - - if (buf->len == 0) { - _bson_json_buf_ensure (buf, len_with_null); - } else if (buf->n_bytes < buf->len + len_with_null) { - buf->n_bytes = bson_next_power_of_two (buf->len + len_with_null); - buf->buf = bson_realloc (buf->buf, buf->n_bytes); - } - - memcpy (buf->buf + buf->len, from, len); - buf->len += len; - buf->buf[buf->len] = '\0'; -} - - -static const char * -_bson_json_type_name (bson_type_t type) -{ - switch (type) { - case BSON_TYPE_EOD: - return "end of document"; - case BSON_TYPE_DOUBLE: - return "double"; - case BSON_TYPE_UTF8: - return "utf-8"; - case BSON_TYPE_DOCUMENT: - return "document"; - case BSON_TYPE_ARRAY: - return "array"; - case BSON_TYPE_BINARY: - return "binary"; - case BSON_TYPE_UNDEFINED: - return "undefined"; - case BSON_TYPE_OID: - return "objectid"; - case BSON_TYPE_BOOL: - return "bool"; - case BSON_TYPE_DATE_TIME: - return "datetime"; - case BSON_TYPE_NULL: - return "null"; - case BSON_TYPE_REGEX: - return "regex"; - case BSON_TYPE_DBPOINTER: - return "dbpointer"; - case BSON_TYPE_CODE: - return "code"; - case BSON_TYPE_SYMBOL: - return "symbol"; - case BSON_TYPE_CODEWSCOPE: - return "code with scope"; - case BSON_TYPE_INT32: - return "int32"; - case BSON_TYPE_TIMESTAMP: - return "timestamp"; - case BSON_TYPE_INT64: - return "int64"; - case BSON_TYPE_DECIMAL128: - return "decimal128"; - case BSON_TYPE_MAXKEY: - return "maxkey"; - case BSON_TYPE_MINKEY: - return "minkey"; - default: - return ""; - } -} - - -static void -_bson_json_read_fixup_key (bson_json_reader_bson_t *bson) /* IN */ -{ - bson_json_read_state_t rs = bson->read_state; - - if (bson->n >= 0 && STACK_IS_ARRAY && rs == BSON_JSON_REGULAR) { - _bson_json_buf_ensure (&bson->key_buf, 12); - bson->key_buf.len = bson_uint32_to_string ( - STACK_I, &bson->key, (char *) bson->key_buf.buf, 12); - STACK_I++; - } -} - - -static void -_bson_json_read_null (bson_json_reader_t *reader) -{ - BASIC_CB_PREAMBLE; - BASIC_CB_BAIL_IF_NOT_NORMAL ("null"); - - bson_append_null (STACK_BSON_CHILD, key, (int) len); -} - - -static void -_bson_json_read_boolean (bson_json_reader_t *reader, /* IN */ - int val) /* IN */ -{ - BASIC_CB_PREAMBLE; - - if (bson->read_state == BSON_JSON_IN_BSON_TYPE && - bson->bson_state == BSON_JSON_LF_UNDEFINED) { - bson->bson_type_data.undefined.has_undefined = true; - return; - } - - BASIC_CB_BAIL_IF_NOT_NORMAL ("boolean"); - - bson_append_bool (STACK_BSON_CHILD, key, (int) len, val); -} - - -/* sign is -1 or 1 */ -static void -_bson_json_read_integer (bson_json_reader_t *reader, uint64_t val, int64_t sign) -{ - bson_json_read_state_t rs; - bson_json_read_bson_state_t bs; - - BASIC_CB_PREAMBLE; - - if (sign == 1 && val > INT64_MAX) { - _bson_json_read_set_error ( - reader, "Number \"%" PRIu64 "\" is out of range", val); - - return; - } else if (sign == -1 && val > ((uint64_t) INT64_MAX + 1)) { - _bson_json_read_set_error ( - reader, "Number \"-%" PRIu64 "\" is out of range", val); - - return; - } - - rs = bson->read_state; - bs = bson->bson_state; - - if (rs == BSON_JSON_REGULAR) { - BASIC_CB_BAIL_IF_NOT_NORMAL ("integer"); - - if (val <= INT32_MAX || (sign == -1 && val <= (uint64_t) INT32_MAX + 1)) { - bson_append_int32 ( - STACK_BSON_CHILD, key, (int) len, (int) (val * sign)); - } else if (sign == -1) { - bson_append_int64 (STACK_BSON_CHILD, key, (int) len, (int64_t) -val); - } else { - bson_append_int64 (STACK_BSON_CHILD, key, (int) len, (int64_t) val); - } - } else if (rs == BSON_JSON_IN_BSON_TYPE || - rs == BSON_JSON_IN_BSON_TYPE_TIMESTAMP_VALUES) { - switch (bs) { - case BSON_JSON_LF_DATE: - bson->bson_type_data.date.has_date = true; - bson->bson_type_data.date.date = sign * val; - break; - case BSON_JSON_LF_TIMESTAMP_T: - if (sign == -1) { - _bson_json_read_set_error ( - reader, "Invalid timestamp value: \"-%" PRIu64 "\"", val); - return; - } - - bson->bson_type_data.timestamp.has_t = true; - bson->bson_type_data.timestamp.t = (uint32_t) val; - break; - case BSON_JSON_LF_TIMESTAMP_I: - if (sign == -1) { - _bson_json_read_set_error ( - reader, "Invalid timestamp value: \"-%" PRIu64 "\"", val); - return; - } - - bson->bson_type_data.timestamp.has_i = true; - bson->bson_type_data.timestamp.i = (uint32_t) val; - break; - case BSON_JSON_LF_MINKEY: - if (sign == -1) { - _bson_json_read_set_error ( - reader, "Invalid MinKey value: \"-%" PRIu64 "\"", val); - return; - } else if (val != 1) { - _bson_json_read_set_error ( - reader, "Invalid MinKey value: \"%" PRIu64 "\"", val); - } - - bson->bson_type_data.minkey.has_minkey = true; - break; - case BSON_JSON_LF_MAXKEY: - if (sign == -1) { - _bson_json_read_set_error ( - reader, "Invalid MinKey value: \"-%" PRIu64 "\"", val); - return; - } else if (val != 1) { - _bson_json_read_set_error ( - reader, "Invalid MinKey value: \"%" PRIu64 "\"", val); - } - - bson->bson_type_data.maxkey.has_maxkey = true; - break; - case BSON_JSON_LF_INT32: - case BSON_JSON_LF_INT64: - _bson_json_read_set_error ( - reader, - "Invalid state for integer read: %s, " - "expected number as quoted string like \"123\"", - bson_state_names[bs]); - break; - case BSON_JSON_LF_REGEX: - case BSON_JSON_LF_OPTIONS: - case BSON_JSON_LF_REGULAR_EXPRESSION_PATTERN: - case BSON_JSON_LF_REGULAR_EXPRESSION_OPTIONS: - case BSON_JSON_LF_CODE: - case BSON_JSON_LF_SCOPE: - case BSON_JSON_LF_OID: - case BSON_JSON_LF_BINARY: - case BSON_JSON_LF_TYPE: - case BSON_JSON_LF_UNDEFINED: - case BSON_JSON_LF_DOUBLE: - case BSON_JSON_LF_DECIMAL128: - case BSON_JSON_LF_DBPOINTER: - case BSON_JSON_LF_SYMBOL: - case BSON_JSON_LF_DBREF: - default: - _bson_json_read_set_error (reader, - "Unexpected integer %s%" PRIu64 - " in type \"%s\"", - sign == -1 ? "-" : "", - val, - _bson_json_type_name (bson->bson_type)); - } - } else { - _bson_json_read_set_error (reader, - "Unexpected integer %s%" PRIu64 - " in state \"%s\"", - sign == -1 ? "-" : "", - val, - read_state_names[rs]); - } -} - - -static bool -_bson_json_parse_double (bson_json_reader_t *reader, - const char *val, - size_t vlen, - double *d) -{ - errno = 0; - *d = strtod (val, NULL); - -#ifdef _MSC_VER - /* Microsoft's strtod parses "NaN", "Infinity", "-Infinity" as 0 */ - if (*d == 0.0) { - if (!_strnicmp (val, "nan", vlen)) { -#ifdef NAN - *d = NAN; -#else - /* Visual Studio 2010 doesn't define NAN or INFINITY - * https://msdn.microsoft.com/en-us/library/w22adx1s(v=vs.100).aspx */ - unsigned long nan[2] = {0xffffffff, 0x7fffffff}; - *d = *(double *) nan; -#endif - return true; - } else if (!_strnicmp (val, "infinity", vlen)) { -#ifdef INFINITY - *d = INFINITY; -#else - unsigned long inf[2] = {0x00000000, 0x7ff00000}; - *d = *(double *) inf; -#endif - return true; - } else if (!_strnicmp (val, "-infinity", vlen)) { -#ifdef INFINITY - *d = -INFINITY; -#else - unsigned long inf[2] = {0x00000000, 0xfff00000}; - *d = *(double *) inf; -#endif - return true; - } - } - - if ((*d == HUGE_VAL || *d == -HUGE_VAL) && errno == ERANGE) { - _bson_json_read_set_error ( - reader, "Number \"%.*s\" is out of range", (int) vlen, val); - - return false; - } -#else - /* not MSVC - set err on overflow, but avoid err for infinity */ - if ((*d == HUGE_VAL || *d == -HUGE_VAL) && errno == ERANGE && - strncasecmp (val, "infinity", vlen) && - strncasecmp (val, "-infinity", vlen)) { - _bson_json_read_set_error ( - reader, "Number \"%.*s\" is out of range", (int) vlen, val); - - return false; - } - -#endif /* _MSC_VER */ - return true; -} - - -static void -_bson_json_read_double (bson_json_reader_t *reader, /* IN */ - double val) /* IN */ -{ - BASIC_CB_PREAMBLE; - BASIC_CB_BAIL_IF_NOT_NORMAL ("double"); - - if (!bson_append_double (STACK_BSON_CHILD, key, (int) len, val)) { - _bson_json_read_set_error (reader, "Cannot append double value %g", val); - } -} - - -static bool -_bson_json_read_int64_or_set_error (bson_json_reader_t *reader, /* IN */ - const unsigned char *val, /* IN */ - size_t vlen, /* IN */ - int64_t *v64) /* OUT */ -{ - bson_json_reader_bson_t *bson = &reader->bson; - char *endptr = NULL; - - _bson_json_read_fixup_key (bson); - errno = 0; - *v64 = bson_ascii_strtoll ((const char *) val, &endptr, 10); - - if (((*v64 == INT64_MIN) || (*v64 == INT64_MAX)) && (errno == ERANGE)) { - _bson_json_read_set_error (reader, "Number \"%s\" is out of range", val); - return false; - } - - if (endptr != ((const char *) val + vlen)) { - _bson_json_read_set_error (reader, "Number \"%s\" is invalid", val); - return false; - } - - return true; -} - - -/* parse a value for "base64", "subType" or legacy "$binary" or "$type" */ -static void -_bson_json_parse_binary_elem (bson_json_reader_t *reader, - const char *val_w_null, - size_t vlen) -{ - bson_json_read_bson_state_t bs; - bson_json_bson_data_t *data; - int binary_len; - - BASIC_CB_PREAMBLE; - - bs = bson->bson_state; - data = &bson->bson_type_data; - - if (bs == BSON_JSON_LF_BINARY) { - data->binary.has_binary = true; - binary_len = bson_b64_pton (val_w_null, NULL, 0); - if (binary_len < 0) { - _bson_json_read_set_error ( - reader, - "Invalid input string \"%s\", looking for base64-encoded binary", - val_w_null); - } - - _bson_json_buf_ensure (&bson->bson_type_buf[0], (size_t) binary_len + 1); - if (bson_b64_pton (val_w_null, - bson->bson_type_buf[0].buf, - (size_t) binary_len + 1) < 0) { - _bson_json_read_set_error ( - reader, - "Invalid input string \"%s\", looking for base64-encoded binary", - val_w_null); - } - - bson->bson_type_buf[0].len = (size_t) binary_len; - } else if (bs == BSON_JSON_LF_TYPE) { - data->binary.has_subtype = true; - - if (SSCANF (val_w_null, "%02x", &data->binary.type) != 1) { - if (!data->binary.is_legacy || data->binary.has_binary) { - /* misformatted subtype, like {$binary: {base64: "", subType: "x"}}, - * or legacy {$binary: "", $type: "x"} */ - _bson_json_read_set_error ( - reader, - "Invalid input string \"%s\", looking for binary subtype", - val_w_null); - } else { - /* actually a query operator: {x: {$type: "array"}}*/ - bson->read_state = BSON_JSON_REGULAR; - STACK_PUSH_DOC (bson_append_document_begin ( - STACK_BSON_PARENT, key, (int) len, STACK_BSON_CHILD)); - - bson_append_utf8 (STACK_BSON_CHILD, - "$type", - 5, - (const char *) val_w_null, - (int) vlen); - } - } - } -} - - -static void -_bson_json_read_string (bson_json_reader_t *reader, /* IN */ - const unsigned char *val, /* IN */ - size_t vlen) /* IN */ -{ - bson_json_read_state_t rs; - bson_json_read_bson_state_t bs; - - BASIC_CB_PREAMBLE; - - rs = bson->read_state; - bs = bson->bson_state; - - if (!bson_utf8_validate ((const char *) val, vlen, true /*allow null*/)) { - _bson_json_read_corrupt (reader, "invalid bytes in UTF8 string"); - return; - } - - if (rs == BSON_JSON_REGULAR) { - BASIC_CB_BAIL_IF_NOT_NORMAL ("string"); - bson_append_utf8 ( - STACK_BSON_CHILD, key, (int) len, (const char *) val, (int) vlen); - } else if (rs == BSON_JSON_IN_BSON_TYPE_SCOPE_STARTMAP || - rs == BSON_JSON_IN_BSON_TYPE_DBPOINTER_STARTMAP) { - _bson_json_read_set_error (reader, - "Invalid read of \"%s\" in state \"%s\"", - val, - read_state_names[rs]); - } else if (rs == BSON_JSON_IN_BSON_TYPE_BINARY_VALUES) { - const char *val_w_null; - _bson_json_buf_set (&bson->bson_type_buf[2], val, vlen); - val_w_null = (const char *) bson->bson_type_buf[2].buf; - - _bson_json_parse_binary_elem (reader, val_w_null, vlen); - } else if (rs == BSON_JSON_IN_BSON_TYPE || - rs == BSON_JSON_IN_BSON_TYPE_TIMESTAMP_VALUES || - rs == BSON_JSON_IN_BSON_TYPE_REGEX_VALUES || - rs == BSON_JSON_IN_BSON_TYPE_DATE_NUMBERLONG) { - const char *val_w_null; - _bson_json_buf_set (&bson->bson_type_buf[2], val, vlen); - val_w_null = (const char *) bson->bson_type_buf[2].buf; - - switch (bs) { - case BSON_JSON_LF_REGEX: - bson->bson_type_data.regex.is_legacy = true; - /* FALL THROUGH */ - case BSON_JSON_LF_REGULAR_EXPRESSION_PATTERN: - bson->bson_type_data.regex.has_pattern = true; - _bson_json_buf_set (&bson->bson_type_buf[0], val, vlen); - break; - case BSON_JSON_LF_OPTIONS: - bson->bson_type_data.regex.is_legacy = true; - /* FALL THROUGH */ - case BSON_JSON_LF_REGULAR_EXPRESSION_OPTIONS: - bson->bson_type_data.regex.has_options = true; - _bson_json_buf_set (&bson->bson_type_buf[1], val, vlen); - break; - case BSON_JSON_LF_OID: - - if (vlen != 24) { - goto BAD_PARSE; - } - - bson->bson_type_data.oid.has_oid = true; - bson_oid_init_from_string (&bson->bson_type_data.oid.oid, val_w_null); - break; - case BSON_JSON_LF_BINARY: - case BSON_JSON_LF_TYPE: - bson->bson_type_data.binary.is_legacy = true; - _bson_json_parse_binary_elem (reader, val_w_null, vlen); - break; - case BSON_JSON_LF_INT32: { - int64_t v64; - if (!_bson_json_read_int64_or_set_error (reader, val, vlen, &v64)) { - /* the error is set, return and let the reader exit */ - return; - } - - if (v64 < INT32_MIN || v64 > INT32_MAX) { - goto BAD_PARSE; - } - - if (bson->read_state == BSON_JSON_IN_BSON_TYPE) { - bson->bson_type_data.v_int32.value = (int32_t) v64; - } else { - goto BAD_PARSE; - } - } break; - case BSON_JSON_LF_INT64: { - int64_t v64; - if (!_bson_json_read_int64_or_set_error (reader, val, vlen, &v64)) { - /* the error is set, return and let the reader exit */ - return; - } - - if (bson->read_state == BSON_JSON_IN_BSON_TYPE) { - bson->bson_type_data.v_int64.value = v64; - } else if (bson->read_state == - BSON_JSON_IN_BSON_TYPE_DATE_NUMBERLONG) { - bson->bson_type_data.date.has_date = true; - bson->bson_type_data.date.date = v64; - } else { - goto BAD_PARSE; - } - } break; - case BSON_JSON_LF_DOUBLE: { - if (!_bson_json_parse_double (reader, - (const char *) val, - vlen, - &bson->bson_type_data.v_double.value)) { - /* the error is set, return and let the reader exit */ - return; - } - } break; - case BSON_JSON_LF_DATE: { - int64_t v64; - - if (!_bson_iso8601_date_parse ( - (char *) val, (int) vlen, &v64, reader->error)) { - jsonsl_stop (reader->json); - } else { - bson->bson_type_data.date.has_date = true; - bson->bson_type_data.date.date = v64; - } - } break; - case BSON_JSON_LF_DECIMAL128: { - bson_decimal128_t decimal128; - bson_decimal128_from_string (val_w_null, &decimal128); - - if (bson->read_state == BSON_JSON_IN_BSON_TYPE) { - bson->bson_type_data.v_decimal128.value = decimal128; - } else { - goto BAD_PARSE; - } - } break; - case BSON_JSON_LF_CODE: - _bson_json_buf_set (&bson->code_data.code_buf, val, vlen); - break; - case BSON_JSON_LF_SYMBOL: - bson_append_symbol ( - STACK_BSON_CHILD, key, (int) len, (const char *) val, (int) vlen); - break; - case BSON_JSON_LF_DBREF: - /* the "$ref" of a {$ref: "...", $id: ... }, append normally */ - bson_append_utf8 ( - STACK_BSON_CHILD, key, (int) len, (const char *) val, (int) vlen); - bson->read_state = BSON_JSON_REGULAR; - break; - case BSON_JSON_LF_SCOPE: - case BSON_JSON_LF_TIMESTAMP_T: - case BSON_JSON_LF_TIMESTAMP_I: - case BSON_JSON_LF_UNDEFINED: - case BSON_JSON_LF_MINKEY: - case BSON_JSON_LF_MAXKEY: - case BSON_JSON_LF_DBPOINTER: - default: - goto BAD_PARSE; - } - - return; - BAD_PARSE: - _bson_json_read_set_error (reader, - "Invalid input string \"%s\", looking for %s", - val_w_null, - bson_state_names[bs]); - } else { - _bson_json_read_set_error ( - reader, "Invalid state to look for string: %s", read_state_names[rs]); - } -} - - -static void -_bson_json_read_start_map (bson_json_reader_t *reader) /* IN */ -{ - BASIC_CB_PREAMBLE; - - if (bson->read_state == BSON_JSON_IN_BSON_TYPE) { - if (bson->bson_state == BSON_JSON_LF_DATE) { - bson->read_state = BSON_JSON_IN_BSON_TYPE_DATE_NUMBERLONG; - } else if (bson->bson_state == BSON_JSON_LF_BINARY) { - bson->read_state = BSON_JSON_IN_BSON_TYPE_BINARY_VALUES; - } else if (bson->bson_state == BSON_JSON_LF_TYPE) { - /* special case, we started parsing {$type: {$numberInt: "2"}} and we - * expected a legacy Binary format. now we see the second "{", so - * backtrack and parse $type query operator. */ - bson->read_state = BSON_JSON_IN_START_MAP; - STACK_PUSH_DOC (bson_append_document_begin ( - STACK_BSON_PARENT, key, len, STACK_BSON_CHILD)); - _bson_json_save_map_key (bson, (const uint8_t *) "$type", 5); - } - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_TIMESTAMP_STARTMAP) { - bson->read_state = BSON_JSON_IN_BSON_TYPE_TIMESTAMP_VALUES; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_SCOPE_STARTMAP) { - bson->read_state = BSON_JSON_IN_SCOPE; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_DBPOINTER_STARTMAP) { - bson->read_state = BSON_JSON_IN_DBPOINTER; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_REGEX_STARTMAP) { - bson->read_state = BSON_JSON_IN_BSON_TYPE_REGEX_VALUES; - } else { - bson->read_state = BSON_JSON_IN_START_MAP; - } - - /* silence some warnings */ - (void) len; - (void) key; -} - - -static bool -_is_known_key (const char *key, size_t len) -{ - bool ret; - -#define IS_KEY(k) (len == strlen (k) && (0 == memcmp (k, key, len))) - - ret = (IS_KEY ("$regularExpression") || IS_KEY ("$regex") || - IS_KEY ("$options") || IS_KEY ("$code") || IS_KEY ("$scope") || - IS_KEY ("$oid") || IS_KEY ("$binary") || IS_KEY ("$type") || - IS_KEY ("$date") || IS_KEY ("$undefined") || IS_KEY ("$maxKey") || - IS_KEY ("$minKey") || IS_KEY ("$timestamp") || - IS_KEY ("$numberInt") || IS_KEY ("$numberLong") || - IS_KEY ("$numberDouble") || IS_KEY ("$numberDecimal") || - IS_KEY ("$numberInt") || IS_KEY ("$numberLong") || - IS_KEY ("$numberDouble") || IS_KEY ("$numberDecimal") || - IS_KEY ("$dbPointer") || IS_KEY ("$symbol")); - -#undef IS_KEY - - return ret; -} - -static void -_bson_json_save_map_key (bson_json_reader_bson_t *bson, - const uint8_t *val, - size_t len) -{ - _bson_json_buf_set (&bson->key_buf, val, len); - bson->key = (const char *) bson->key_buf.buf; -} - - -static void -_bson_json_read_code_or_scope_key (bson_json_reader_bson_t *bson, - bool is_scope, - const uint8_t *val, - size_t len) -{ - bson_json_code_t *code = &bson->code_data; - - if (code->in_scope) { - /* we're reading something weirdly nested, e.g. we just read "$code" in - * "$scope: {x: {$code: {}}}". just create the subdoc within the scope. */ - bson->read_state = BSON_JSON_REGULAR; - STACK_PUSH_DOC (bson_append_document_begin (STACK_BSON_PARENT, - bson->key, - (int) bson->key_buf.len, - STACK_BSON_CHILD)); - _bson_json_save_map_key (bson, val, len); - } else { - if (!bson->code_data.key_buf.len) { - /* save the key, e.g. {"key": {"$code": "return x", "$scope":{"x":1}}}, - * in case it is overwritten while parsing scope sub-object */ - _bson_json_buf_set ( - &bson->code_data.key_buf, bson->key_buf.buf, bson->key_buf.len); - } - - if (is_scope) { - bson->bson_type = BSON_TYPE_CODEWSCOPE; - bson->read_state = BSON_JSON_IN_BSON_TYPE_SCOPE_STARTMAP; - bson->bson_state = BSON_JSON_LF_SCOPE; - bson->code_data.has_scope = true; - } else { - bson->bson_type = BSON_TYPE_CODE; - bson->bson_state = BSON_JSON_LF_CODE; - bson->code_data.has_code = true; - } - } -} - - -static void -_bson_json_bad_key_in_type (bson_json_reader_t *reader, /* IN */ - const uint8_t *val) /* IN */ -{ - bson_json_reader_bson_t *bson = &reader->bson; - - _bson_json_read_set_error ( - reader, - "Invalid key \"%s\". Looking for values for type \"%s\"", - val, - _bson_json_type_name (bson->bson_type)); -} - - -static void -_bson_json_read_map_key (bson_json_reader_t *reader, /* IN */ - const uint8_t *val, /* IN */ - size_t len) /* IN */ -{ - bson_json_reader_bson_t *bson = &reader->bson; - - if (!bson_utf8_validate ((const char *) val, len, true /* allow null */)) { - _bson_json_read_corrupt (reader, "invalid bytes in UTF8 string"); - return; - } - - if (bson->read_state == BSON_JSON_IN_START_MAP) { - if (len > 0 && val[0] == '$' && _is_known_key ((const char *) val, len) && - bson->n >= 0 /* key is in subdocument */) { - bson->read_state = BSON_JSON_IN_BSON_TYPE; - bson->bson_type = (bson_type_t) 0; - memset (&bson->bson_type_data, 0, sizeof bson->bson_type_data); - } else { - bson->read_state = BSON_JSON_REGULAR; - STACK_PUSH_DOC (bson_append_document_begin (STACK_BSON_PARENT, - bson->key, - (int) bson->key_buf.len, - STACK_BSON_CHILD)); - } - } else if (bson->read_state == BSON_JSON_IN_SCOPE) { - /* we've read "key" in {$code: "", $scope: {key: ""}}*/ - bson->read_state = BSON_JSON_REGULAR; - STACK_PUSH_SCOPE; - _bson_json_save_map_key (bson, val, len); - } else if (bson->read_state == BSON_JSON_IN_DBPOINTER) { - /* we've read "$ref" or "$id" in {$dbPointer: {$ref: ..., $id: ...}} */ - bson->read_state = BSON_JSON_REGULAR; - STACK_PUSH_DBPOINTER; - _bson_json_save_map_key (bson, val, len); - } - - if (bson->read_state == BSON_JSON_IN_BSON_TYPE) { - if - HANDLE_OPTION ("$regex", BSON_TYPE_REGEX, BSON_JSON_LF_REGEX) - else if - HANDLE_OPTION ("$options", BSON_TYPE_REGEX, BSON_JSON_LF_OPTIONS) - else if - HANDLE_OPTION ("$oid", BSON_TYPE_OID, BSON_JSON_LF_OID) - else if - HANDLE_OPTION ("$binary", BSON_TYPE_BINARY, BSON_JSON_LF_BINARY) - else if - HANDLE_OPTION ("$type", BSON_TYPE_BINARY, BSON_JSON_LF_TYPE) - else if - HANDLE_OPTION ("$date", BSON_TYPE_DATE_TIME, BSON_JSON_LF_DATE) - else if - HANDLE_OPTION ( - "$undefined", BSON_TYPE_UNDEFINED, BSON_JSON_LF_UNDEFINED) - else if - HANDLE_OPTION ("$minKey", BSON_TYPE_MINKEY, BSON_JSON_LF_MINKEY) - else if - HANDLE_OPTION ("$maxKey", BSON_TYPE_MAXKEY, BSON_JSON_LF_MAXKEY) - else if - HANDLE_OPTION ("$numberInt", BSON_TYPE_INT32, BSON_JSON_LF_INT32) - else if - HANDLE_OPTION ("$numberLong", BSON_TYPE_INT64, BSON_JSON_LF_INT64) - else if - HANDLE_OPTION ("$numberDouble", BSON_TYPE_DOUBLE, BSON_JSON_LF_DOUBLE) - else if - HANDLE_OPTION ("$symbol", BSON_TYPE_SYMBOL, BSON_JSON_LF_SYMBOL) - else if - HANDLE_OPTION ( - "$numberDecimal", BSON_TYPE_DECIMAL128, BSON_JSON_LF_DECIMAL128) - else if (!strcmp ("$timestamp", (const char *) val)) { - bson->bson_type = BSON_TYPE_TIMESTAMP; - bson->read_state = BSON_JSON_IN_BSON_TYPE_TIMESTAMP_STARTMAP; - } else if (!strcmp ("$regularExpression", (const char *) val)) { - bson->bson_type = BSON_TYPE_REGEX; - bson->read_state = BSON_JSON_IN_BSON_TYPE_REGEX_STARTMAP; - } else if (!strcmp ("$dbPointer", (const char *) val)) { - /* start parsing "key": {"$dbPointer": {...}}, save "key" for later */ - _bson_json_buf_set ( - &bson->dbpointer_key, bson->key_buf.buf, bson->key_buf.len); - - bson->bson_type = BSON_TYPE_DBPOINTER; - bson->read_state = BSON_JSON_IN_BSON_TYPE_DBPOINTER_STARTMAP; - } else if (!strcmp ("$code", (const char *) val)) { - _bson_json_read_code_or_scope_key ( - bson, false /* is_scope */, val, len); - } else if (!strcmp ("$scope", (const char *) val)) { - _bson_json_read_code_or_scope_key ( - bson, true /* is_scope */, val, len); - } else { - _bson_json_bad_key_in_type (reader, val); - } - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_DATE_NUMBERLONG) { - if - HANDLE_OPTION ("$numberLong", BSON_TYPE_DATE_TIME, BSON_JSON_LF_INT64) - else { - _bson_json_bad_key_in_type (reader, val); - } - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_TIMESTAMP_VALUES) { - if - HANDLE_OPTION ("t", BSON_TYPE_TIMESTAMP, BSON_JSON_LF_TIMESTAMP_T) - else if - HANDLE_OPTION ("i", BSON_TYPE_TIMESTAMP, BSON_JSON_LF_TIMESTAMP_I) - else { - _bson_json_bad_key_in_type (reader, val); - } - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_REGEX_VALUES) { - if - HANDLE_OPTION ( - "pattern", BSON_TYPE_REGEX, BSON_JSON_LF_REGULAR_EXPRESSION_PATTERN) - else if - HANDLE_OPTION ( - "options", BSON_TYPE_REGEX, BSON_JSON_LF_REGULAR_EXPRESSION_OPTIONS) - else { - _bson_json_bad_key_in_type (reader, val); - } - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_BINARY_VALUES) { - if - HANDLE_OPTION ("base64", BSON_TYPE_BINARY, BSON_JSON_LF_BINARY) - else if - HANDLE_OPTION ("subType", BSON_TYPE_BINARY, BSON_JSON_LF_TYPE) - else { - _bson_json_bad_key_in_type (reader, val); - } - } else { - _bson_json_save_map_key (bson, val, len); - - /* in x: {$ref: "collection", $id: {$oid: "..."}, $db: "..." } */ - if (bson->n > 0) { - if (!strcmp ("$ref", (const char *) val)) { - STACK_HAS_REF = true; - bson->read_state = BSON_JSON_IN_BSON_TYPE; - bson->bson_state = BSON_JSON_LF_DBREF; - } else if (!strcmp ("$id", (const char *) val)) { - STACK_HAS_ID = true; - } else if (!strcmp ("$db", (const char *) val)) { - bson->read_state = BSON_JSON_IN_BSON_TYPE; - bson->bson_state = BSON_JSON_LF_DBREF; - } - } - } -} - - -static void -_bson_json_read_append_binary (bson_json_reader_t *reader, /* IN */ - bson_json_reader_bson_t *bson) /* IN */ -{ - bson_json_bson_data_t *data = &bson->bson_type_data; - - if (data->binary.is_legacy) { - if (!data->binary.has_binary) { - _bson_json_read_set_error ( - reader, - "Missing \"$binary\" after \"$type\" reading type \"binary\""); - return; - } else if (!data->binary.has_subtype) { - _bson_json_read_set_error ( - reader, - "Missing \"$type\" after \"$binary\" reading type \"binary\""); - return; - } - } else { - if (!data->binary.has_binary) { - _bson_json_read_set_error ( - reader, - "Missing \"base64\" after \"subType\" reading type \"binary\""); - return; - } else if (!data->binary.has_subtype) { - _bson_json_read_set_error ( - reader, - "Missing \"subType\" after \"base64\" reading type \"binary\""); - return; - } - } - - if (!bson_append_binary (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - data->binary.type, - bson->bson_type_buf[0].buf, - (uint32_t) bson->bson_type_buf[0].len)) { - _bson_json_read_set_error (reader, "Error storing binary data"); - } -} - - -static void -_bson_json_read_append_regex (bson_json_reader_t *reader, /* IN */ - bson_json_reader_bson_t *bson) /* IN */ -{ - bson_json_bson_data_t *data = &bson->bson_type_data; - if (data->regex.is_legacy) { - if (!data->regex.has_pattern) { - _bson_json_read_set_error (reader, - "Missing \"$regex\" after \"$options\""); - return; - } - if (!data->regex.has_options) { - _bson_json_read_set_error (reader, - "Missing \"$options\" after \"$regex\""); - return; - } - } else if (!data->regex.has_pattern) { - _bson_json_read_set_error ( - reader, "Missing \"pattern\" after \"options\" in regular expression"); - return; - } else if (!data->regex.has_options) { - _bson_json_read_set_error ( - reader, "Missing \"options\" after \"pattern\" in regular expression"); - return; - } - - if (!bson_append_regex (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - (char *) bson->bson_type_buf[0].buf, - (char *) bson->bson_type_buf[1].buf)) { - _bson_json_read_set_error (reader, "Error storing regex"); - } -} - - -static void -_bson_json_read_append_code (bson_json_reader_t *reader, /* IN */ - bson_json_reader_bson_t *bson) /* IN */ -{ - bson_json_code_t *code_data; - char *code = NULL; - bson_t *scope = NULL; - bool r; - - code_data = &bson->code_data; - - BSON_ASSERT (!code_data->in_scope); - - if (!code_data->has_code) { - _bson_json_read_set_error (reader, "Missing $code after $scope"); - return; - } - - code = (char *) code_data->code_buf.buf; - - if (code_data->has_scope) { - scope = STACK_BSON (1); - } - - /* creates BSON "code" elem, or "code with scope" if scope is not NULL */ - r = bson_append_code_with_scope (STACK_BSON_CHILD, - (const char *) code_data->key_buf.buf, - (int) code_data->key_buf.len, - code, - scope); - - if (!r) { - _bson_json_read_set_error (reader, "Error storing Javascript code"); - } - - /* keep the buffer but truncate it */ - code_data->key_buf.len = 0; - code_data->has_code = code_data->has_scope = false; -} - - -static void -_bson_json_read_append_dbpointer (bson_json_reader_t *reader, /* IN */ - bson_json_reader_bson_t *bson) /* IN */ -{ - bson_t *db_pointer; - bson_iter_t iter; - const char *ns = NULL; - const bson_oid_t *oid = NULL; - bool r; - - BSON_ASSERT (reader->bson.dbpointer_key.buf); - - db_pointer = STACK_BSON (1); - if (!bson_iter_init (&iter, db_pointer)) { - _bson_json_read_set_error (reader, "Error storing DBPointer"); - return; - } - - while (bson_iter_next (&iter)) { - if (!strcmp (bson_iter_key (&iter), "$id")) { - if (!BSON_ITER_HOLDS_OID (&iter)) { - _bson_json_read_set_error ( - reader, "$dbPointer.$id must be like {\"$oid\": ...\"}"); - return; - } - - oid = bson_iter_oid (&iter); - } else if (!strcmp (bson_iter_key (&iter), "$ref")) { - if (!BSON_ITER_HOLDS_UTF8 (&iter)) { - _bson_json_read_set_error ( - reader, - "$dbPointer.$ref must be a string like \"db.collection\""); - return; - } - - ns = bson_iter_utf8 (&iter, NULL); - } else { - _bson_json_read_set_error (reader, - "$dbPointer contains invalid key: \"%s\"", - bson_iter_key (&iter)); - return; - } - } - - if (!oid || !ns) { - _bson_json_read_set_error (reader, - "$dbPointer requires both $id and $ref"); - return; - } - - r = bson_append_dbpointer (STACK_BSON_CHILD, - (char *) reader->bson.dbpointer_key.buf, - (int) reader->bson.dbpointer_key.len, - ns, - oid); - - if (!r) { - _bson_json_read_set_error (reader, "Error storing DBPointer"); - } -} - - -static void -_bson_json_read_append_oid (bson_json_reader_t *reader, /* IN */ - bson_json_reader_bson_t *bson) /* IN */ -{ - if (!bson_append_oid (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - &bson->bson_type_data.oid.oid)) { - _bson_json_read_set_error (reader, "Error storing ObjectId"); - } -} - - -static void -_bson_json_read_append_date_time (bson_json_reader_t *reader, /* IN */ - bson_json_reader_bson_t *bson) /* IN */ -{ - if (!bson_append_date_time (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - bson->bson_type_data.date.date)) { - _bson_json_read_set_error (reader, "Error storing datetime"); - } -} - - -static void -_bson_json_read_append_timestamp (bson_json_reader_t *reader, /* IN */ - bson_json_reader_bson_t *bson) /* IN */ -{ - if (!bson->bson_type_data.timestamp.has_t) { - _bson_json_read_set_error ( - reader, "Missing t after $timestamp in BSON_TYPE_TIMESTAMP"); - return; - } else if (!bson->bson_type_data.timestamp.has_i) { - _bson_json_read_set_error ( - reader, "Missing i after $timestamp in BSON_TYPE_TIMESTAMP"); - return; - } - - bson_append_timestamp (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - bson->bson_type_data.timestamp.t, - bson->bson_type_data.timestamp.i); -} - - -static void -_bad_extended_json (bson_json_reader_t *reader) -{ - _bson_json_read_corrupt (reader, "Invalid MongoDB extended JSON"); -} - - -static void -_bson_json_read_end_map (bson_json_reader_t *reader) /* IN */ -{ - bson_json_reader_bson_t *bson = &reader->bson; - bool r = true; - - if (bson->read_state == BSON_JSON_IN_START_MAP) { - bson->read_state = BSON_JSON_REGULAR; - STACK_PUSH_DOC (bson_append_document_begin (STACK_BSON_PARENT, - bson->key, - (int) bson->key_buf.len, - STACK_BSON_CHILD)); - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_SCOPE_STARTMAP) { - bson->read_state = BSON_JSON_REGULAR; - STACK_PUSH_SCOPE; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_DBPOINTER_STARTMAP) { - /* we've read last "}" in "{$dbPointer: {$id: ..., $ref: ...}}" */ - _bson_json_read_append_dbpointer (reader, bson); - bson->read_state = BSON_JSON_REGULAR; - return; - } - - if (bson->read_state == BSON_JSON_IN_BSON_TYPE) { - if (!bson->key) { - /* invalid, like {$numberLong: "1"} at the document top level */ - _bad_extended_json (reader); - return; - } - - bson->read_state = BSON_JSON_REGULAR; - switch (bson->bson_type) { - case BSON_TYPE_REGEX: - _bson_json_read_append_regex (reader, bson); - break; - case BSON_TYPE_CODE: - case BSON_TYPE_CODEWSCOPE: - /* we've read the closing "}" in "{$code: ..., $scope: ...}" */ - _bson_json_read_append_code (reader, bson); - break; - case BSON_TYPE_OID: - _bson_json_read_append_oid (reader, bson); - break; - case BSON_TYPE_BINARY: - _bson_json_read_append_binary (reader, bson); - break; - case BSON_TYPE_DATE_TIME: - _bson_json_read_append_date_time (reader, bson); - break; - case BSON_TYPE_UNDEFINED: - r = bson_append_undefined ( - STACK_BSON_CHILD, bson->key, (int) bson->key_buf.len); - break; - case BSON_TYPE_MINKEY: - r = bson_append_minkey ( - STACK_BSON_CHILD, bson->key, (int) bson->key_buf.len); - break; - case BSON_TYPE_MAXKEY: - r = bson_append_maxkey ( - STACK_BSON_CHILD, bson->key, (int) bson->key_buf.len); - break; - case BSON_TYPE_INT32: - r = bson_append_int32 (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - bson->bson_type_data.v_int32.value); - break; - case BSON_TYPE_INT64: - r = bson_append_int64 (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - bson->bson_type_data.v_int64.value); - break; - case BSON_TYPE_DOUBLE: - r = bson_append_double (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - bson->bson_type_data.v_double.value); - break; - case BSON_TYPE_DECIMAL128: - r = bson_append_decimal128 (STACK_BSON_CHILD, - bson->key, - (int) bson->key_buf.len, - &bson->bson_type_data.v_decimal128.value); - break; - case BSON_TYPE_DBPOINTER: - /* shouldn't set type to DBPointer unless inside $dbPointer: {...} */ - _bson_json_read_set_error ( - reader, - "Internal error: shouldn't be in state BSON_TYPE_DBPOINTER"); - break; - case BSON_TYPE_SYMBOL: - break; - case BSON_TYPE_EOD: - case BSON_TYPE_UTF8: - case BSON_TYPE_DOCUMENT: - case BSON_TYPE_ARRAY: - case BSON_TYPE_BOOL: - case BSON_TYPE_NULL: - case BSON_TYPE_TIMESTAMP: - default: - _bson_json_read_set_error ( - reader, - "Internal error: can't parse JSON wrapper for type \"%s\"", - _bson_json_type_name (bson->bson_type)); - break; - } - - if (!r) { - _bson_json_read_set_error ( - reader, - "Cannot append value at end of JSON object for key %s", - bson->key); - } - - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_TIMESTAMP_VALUES) { - if (!bson->key) { - _bad_extended_json (reader); - return; - } - - bson->read_state = BSON_JSON_IN_BSON_TYPE_TIMESTAMP_ENDMAP; - _bson_json_read_append_timestamp (reader, bson); - return; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_REGEX_VALUES) { - if (!bson->key) { - _bad_extended_json (reader); - return; - } - - bson->read_state = BSON_JSON_IN_BSON_TYPE_REGEX_ENDMAP; - _bson_json_read_append_regex (reader, bson); - return; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_BINARY_VALUES) { - if (!bson->key) { - _bad_extended_json (reader); - return; - } - - bson->read_state = BSON_JSON_IN_BSON_TYPE_BINARY_ENDMAP; - _bson_json_read_append_binary (reader, bson); - return; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_TIMESTAMP_ENDMAP) { - bson->read_state = BSON_JSON_REGULAR; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_REGEX_ENDMAP) { - bson->read_state = BSON_JSON_REGULAR; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_BINARY_ENDMAP) { - bson->read_state = BSON_JSON_REGULAR; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_DATE_NUMBERLONG) { - if (!bson->key) { - _bad_extended_json (reader); - return; - } - - bson->read_state = BSON_JSON_IN_BSON_TYPE_DATE_ENDMAP; - - _bson_json_read_append_date_time (reader, bson); - return; - } else if (bson->read_state == BSON_JSON_IN_BSON_TYPE_DATE_ENDMAP) { - bson->read_state = BSON_JSON_REGULAR; - } else if (bson->read_state == BSON_JSON_REGULAR) { - if (STACK_IS_SCOPE) { - bson->read_state = BSON_JSON_IN_BSON_TYPE; - bson->bson_type = BSON_TYPE_CODE; - STACK_POP_SCOPE; - } else if (STACK_IS_DBPOINTER) { - bson->read_state = BSON_JSON_IN_BSON_TYPE_DBPOINTER_STARTMAP; - STACK_POP_DBPOINTER; - } else { - if (STACK_HAS_ID != STACK_HAS_REF) { - _bson_json_read_set_error ( - reader, "%s", "DBRef object must have both $ref and $id keys"); - } - - STACK_POP_DOC ( - bson_append_document_end (STACK_BSON_PARENT, STACK_BSON_CHILD)); - } - - if (bson->n == -1) { - bson->read_state = BSON_JSON_DONE; - } - } else if (bson->read_state == BSON_JSON_IN_SCOPE) { - /* empty $scope */ - BSON_ASSERT (bson->code_data.has_scope); - STACK_PUSH_SCOPE; - STACK_POP_SCOPE; - bson->read_state = BSON_JSON_IN_BSON_TYPE; - bson->bson_type = BSON_TYPE_CODE; - } else if (bson->read_state == BSON_JSON_IN_DBPOINTER) { - /* empty $dbPointer??? */ - _bson_json_read_set_error (reader, "Empty $dbPointer"); - } else { - _bson_json_read_set_error ( - reader, "Invalid state \"%s\"", read_state_names[bson->read_state]); - } -} - - -static void -_bson_json_read_start_array (bson_json_reader_t *reader) /* IN */ -{ - const char *key; - size_t len; - bson_json_reader_bson_t *bson = &reader->bson; - - if (bson->read_state != BSON_JSON_REGULAR) { - _bson_json_read_set_error (reader, - "Invalid read of \"[\" in state \"%s\"", - read_state_names[bson->read_state]); - return; - } - - if (bson->n == -1) { - STACK_PUSH_ARRAY (_noop ()); - } else { - _bson_json_read_fixup_key (bson); - key = bson->key; - len = bson->key_buf.len; - - STACK_PUSH_ARRAY (bson_append_array_begin ( - STACK_BSON_PARENT, key, (int) len, STACK_BSON_CHILD)); - } -} - - -static void -_bson_json_read_end_array (bson_json_reader_t *reader) /* IN */ -{ - bson_json_reader_bson_t *bson = &reader->bson; - - if (bson->read_state != BSON_JSON_REGULAR) { - _bson_json_read_set_error (reader, - "Invalid read of \"]\" in state \"%s\"", - read_state_names[bson->read_state]); - return; - } - - STACK_POP_ARRAY ( - bson_append_array_end (STACK_BSON_PARENT, STACK_BSON_CHILD)); - if (bson->n == -1) { - bson->read_state = BSON_JSON_DONE; - } -} - - -/* put unescaped text in reader->bson.unescaped, or set reader->error. - * json_text has length len and it is not null-terminated. */ -static bool -_bson_json_unescape (bson_json_reader_t *reader, - struct jsonsl_state_st *state, - const char *json_text, - ssize_t len) -{ - bson_json_reader_bson_t *reader_bson; - jsonsl_error_t err; - - reader_bson = &reader->bson; - - /* add 1 for NULL */ - _bson_json_buf_ensure (&reader_bson->unescaped, (size_t) len + 1); - - /* length of unescaped str is always <= len */ - reader_bson->unescaped.len = jsonsl_util_unescape ( - json_text, (char *) reader_bson->unescaped.buf, (size_t) len, NULL, &err); - - if (err != JSONSL_ERROR_SUCCESS) { - bson_set_error (reader->error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "error near position %d: \"%s\"", - (int) state->pos_begin, - jsonsl_strerror (err)); - return false; - } - - reader_bson->unescaped.buf[reader_bson->unescaped.len] = '\0'; - - return true; -} - - -/* read the buffered JSON plus new data, and fill out @len with its length */ -static const char * -_get_json_text (jsonsl_t json, /* IN */ - struct jsonsl_state_st *state, /* IN */ - const char *buf /* IN */, - ssize_t *len /* OUT */) -{ - bson_json_reader_t *reader; - ssize_t bytes_available; - - reader = (bson_json_reader_t *) json->data; - - BSON_ASSERT (state->pos_cur > state->pos_begin); - - *len = (ssize_t) (state->pos_cur - state->pos_begin); - - bytes_available = buf - json->base; - - if (*len <= bytes_available) { - /* read directly from stream, not from saved JSON */ - return buf - (size_t) *len; - } else { - /* combine saved text with new data from the jsonsl_t */ - ssize_t append = buf - json->base; - - if (append > 0) { - _bson_json_buf_append ( - &reader->tok_accumulator, buf - append, (size_t) append); - } - - return (const char *) reader->tok_accumulator.buf; - } -} - - -static void -_push_callback (jsonsl_t json, - jsonsl_action_t action, - struct jsonsl_state_st *state, - const char *buf) -{ - bson_json_reader_t *reader = (bson_json_reader_t *) json->data; - - switch (state->type) { - case JSONSL_T_STRING: - case JSONSL_T_HKEY: - case JSONSL_T_SPECIAL: - case JSONSL_T_UESCAPE: - reader->json_text_pos = state->pos_begin; - break; - case JSONSL_T_OBJECT: - _bson_json_read_start_map (reader); - break; - case JSONSL_T_LIST: - _bson_json_read_start_array (reader); - break; - default: - break; - } -} - - -static void -_pop_callback (jsonsl_t json, - jsonsl_action_t action, - struct jsonsl_state_st *state, - const char *buf) -{ - bson_json_reader_t *reader; - bson_json_reader_bson_t *reader_bson; - ssize_t len; - double d; - const char *obj_text; - - reader = (bson_json_reader_t *) json->data; - reader_bson = &reader->bson; - - switch (state->type) { - case JSONSL_T_HKEY: - case JSONSL_T_STRING: - obj_text = _get_json_text (json, state, buf, &len); - BSON_ASSERT (obj_text[0] == '"'); - - /* remove start/end quotes, replace backslash-escapes, null-terminate */ - /* you'd think it would be faster to check if state->nescapes > 0 first, - * but tests show no improvement */ - if (!_bson_json_unescape (reader, state, obj_text + 1, len - 1)) { - /* reader->error is set */ - jsonsl_stop (json); - break; - } - - if (state->type == JSONSL_T_HKEY) { - _bson_json_read_map_key ( - reader, reader_bson->unescaped.buf, reader_bson->unescaped.len); - } else { - _bson_json_read_string ( - reader, reader_bson->unescaped.buf, reader_bson->unescaped.len); - } - break; - case JSONSL_T_OBJECT: - _bson_json_read_end_map (reader); - break; - case JSONSL_T_LIST: - _bson_json_read_end_array (reader); - break; - case JSONSL_T_SPECIAL: - obj_text = _get_json_text (json, state, buf, &len); - if (state->special_flags & JSONSL_SPECIALf_NUMNOINT) { - if (_bson_json_parse_double (reader, obj_text, (size_t) len, &d)) { - _bson_json_read_double (reader, d); - } - } else if (state->special_flags & JSONSL_SPECIALf_NUMERIC) { - /* jsonsl puts the unsigned value in state->nelem */ - _bson_json_read_integer ( - reader, - state->nelem, - state->special_flags & JSONSL_SPECIALf_SIGNED ? -1 : 1); - } else if (state->special_flags & JSONSL_SPECIALf_BOOLEAN) { - _bson_json_read_boolean (reader, obj_text[0] == 't' ? 1 : 0); - } else if (state->special_flags & JSONSL_SPECIALf_NULL) { - _bson_json_read_null (reader); - } - break; - default: - break; - } - - reader->json_text_pos = -1; - reader->tok_accumulator.len = 0; -} - - -static int -_error_callback (jsonsl_t json, - jsonsl_error_t err, - struct jsonsl_state_st *state, - char *errat) -{ - bson_json_reader_t *reader = (bson_json_reader_t *) json->data; - - if (err == JSONSL_ERROR_CANT_INSERT && *errat == '{') { - /* start the next document */ - reader->should_reset = true; - reader->advance = errat - json->base; - return 0; - } - - bson_set_error (reader->error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "Got parse error at \"%c\", position %d: \"%s\"", - *errat, - (int) json->pos, - jsonsl_strerror (err)); - - return 0; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_json_reader_read -- - * - * Read the next json document from @reader and write its value - * into @bson. @bson will be allocated as part of this process. - * - * @bson MUST be initialized before calling this function as it - * will not be initialized automatically. The reasoning for this - * is so that you can chain together bson_json_reader_t with - * other components like bson_writer_t. - * - * Returns: - * 1 if successful and data was read. - * 0 if successful and no data was read. - * -1 if there was an error and @error is set. - * - * Side effects: - * @error may be set. - * - *-------------------------------------------------------------------------- - */ - -int -bson_json_reader_read (bson_json_reader_t *reader, /* IN */ - bson_t *bson, /* IN */ - bson_error_t *error) /* OUT */ -{ - bson_json_reader_producer_t *p; - ssize_t start_pos; - ssize_t r; - ssize_t buf_offset; - ssize_t accum; - bson_error_t error_tmp; - int ret = 0; - - BSON_ASSERT (reader); - BSON_ASSERT (bson); - - p = &reader->producer; - - reader->bson.bson = bson; - reader->bson.n = -1; - reader->bson.read_state = BSON_JSON_REGULAR; - reader->error = error ? error : &error_tmp; - memset (reader->error, 0, sizeof (bson_error_t)); - - for (;;) { - start_pos = reader->json->pos; - - if (p->bytes_read > 0) { - /* leftover data from previous JSON doc in the stream */ - r = p->bytes_read; - } else { - /* read a chunk of bytes by executing the callback */ - r = p->cb (p->data, p->buf, p->buf_size); - } - - if (r < 0) { - if (error) { - bson_set_error (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CB_FAILURE, - "reader cb failed"); - } - ret = -1; - goto cleanup; - } else if (r == 0) { - break; - } else { - ret = 1; - p->bytes_read = (size_t) r; - - jsonsl_feed (reader->json, (const jsonsl_char_t *) p->buf, (size_t) r); - - if (reader->should_reset) { - /* end of a document */ - jsonsl_reset (reader->json); - reader->should_reset = false; - - /* advance past already-parsed data */ - memmove (p->buf, p->buf + reader->advance, r - reader->advance); - p->bytes_read -= reader->advance; - ret = 1; - goto cleanup; - } - - if (reader->error->domain) { - ret = -1; - goto cleanup; - } - - /* accumulate a key or string value */ - if (reader->json_text_pos != -1) { - if (reader->json_text_pos < reader->json->pos) { - accum = BSON_MIN (reader->json->pos - reader->json_text_pos, r); - /* if this chunk stopped mid-token, buf_offset is how far into - * our current chunk the token begins. */ - buf_offset = AT_LEAST_0 (reader->json_text_pos - start_pos); - _bson_json_buf_append (&reader->tok_accumulator, - p->buf + buf_offset, - (size_t) accum); - } - } - - p->bytes_read = 0; - } - } - -cleanup: - if (ret == 1 && reader->bson.read_state != BSON_JSON_DONE) { - /* data ended in the middle */ - _bson_json_read_corrupt (reader, "%s", "Incomplete JSON"); - return -1; - } - - return ret; -} - - -bson_json_reader_t * -bson_json_reader_new (void *data, /* IN */ - bson_json_reader_cb cb, /* IN */ - bson_json_destroy_cb dcb, /* IN */ - bool allow_multiple, /* unused */ - size_t buf_size) /* IN */ -{ - bson_json_reader_t *r; - bson_json_reader_producer_t *p; - - r = bson_malloc0 (sizeof *r); - r->json = jsonsl_new (STACK_MAX); - r->json->error_callback = _error_callback; - r->json->action_callback_PUSH = _push_callback; - r->json->action_callback_POP = _pop_callback; - r->json->data = r; - r->json_text_pos = -1; - jsonsl_enable_all_callbacks (r->json); - - p = &r->producer; - - p->data = data; - p->cb = cb; - p->dcb = dcb; - p->buf_size = buf_size ? buf_size : BSON_JSON_DEFAULT_BUF_SIZE; - p->buf = bson_malloc (p->buf_size); - - return r; -} - - -void -bson_json_reader_destroy (bson_json_reader_t *reader) /* IN */ -{ - int i; - bson_json_reader_producer_t *p; - bson_json_reader_bson_t *b; - - if (!reader) { - return; - } - - p = &reader->producer; - b = &reader->bson; - - if (reader->producer.dcb) { - reader->producer.dcb (reader->producer.data); - } - - bson_free (p->buf); - bson_free (b->key_buf.buf); - bson_free (b->unescaped.buf); - bson_free (b->dbpointer_key.buf); - - /* destroy each bson_t initialized in parser stack frames */ - for (i = 1; i < STACK_MAX; i++) { - if (b->stack[i].type == BSON_JSON_FRAME_INITIAL) { - /* highest the stack grew */ - break; - } - - if (FRAME_TYPE_HAS_BSON (b->stack[i].type)) { - bson_destroy (&b->stack[i].bson); - } - } - - for (i = 0; i < 3; i++) { - bson_free (b->bson_type_buf[i].buf); - } - - _bson_json_code_cleanup (&b->code_data); - - jsonsl_destroy (reader->json); - bson_free (reader->tok_accumulator.buf); - bson_free (reader); -} - - -typedef struct { - const uint8_t *data; - size_t len; - size_t bytes_parsed; -} bson_json_data_reader_t; - - -static ssize_t -_bson_json_data_reader_cb (void *_ctx, uint8_t *buf, size_t len) -{ - size_t bytes; - bson_json_data_reader_t *ctx = (bson_json_data_reader_t *) _ctx; - - if (!ctx->data) { - return -1; - } - - bytes = BSON_MIN (len, ctx->len - ctx->bytes_parsed); - - memcpy (buf, ctx->data + ctx->bytes_parsed, bytes); - - ctx->bytes_parsed += bytes; - - return bytes; -} - - -bson_json_reader_t * -bson_json_data_reader_new (bool allow_multiple, /* IN */ - size_t size) /* IN */ -{ - bson_json_data_reader_t *dr = bson_malloc0 (sizeof *dr); - - return bson_json_reader_new ( - dr, &_bson_json_data_reader_cb, &bson_free, allow_multiple, size); -} - - -void -bson_json_data_reader_ingest (bson_json_reader_t *reader, /* IN */ - const uint8_t *data, /* IN */ - size_t len) /* IN */ -{ - bson_json_data_reader_t *ctx = - (bson_json_data_reader_t *) reader->producer.data; - - ctx->data = data; - ctx->len = len; - ctx->bytes_parsed = 0; -} - - -bson_t * -bson_new_from_json (const uint8_t *data, /* IN */ - ssize_t len, /* IN */ - bson_error_t *error) /* OUT */ -{ - bson_json_reader_t *reader; - bson_t *bson; - int r; - - BSON_ASSERT (data); - - if (len < 0) { - len = (ssize_t) strlen ((const char *) data); - } - - bson = bson_new (); - reader = bson_json_data_reader_new (false, BSON_JSON_DEFAULT_BUF_SIZE); - bson_json_data_reader_ingest (reader, data, len); - r = bson_json_reader_read (reader, bson, error); - bson_json_reader_destroy (reader); - - if (r == 0) { - bson_set_error (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Empty JSON string"); - } - - if (r != 1) { - bson_destroy (bson); - return NULL; - } - - return bson; -} - - -bool -bson_init_from_json (bson_t *bson, /* OUT */ - const char *data, /* IN */ - ssize_t len, /* IN */ - bson_error_t *error) /* OUT */ -{ - bson_json_reader_t *reader; - int r; - - BSON_ASSERT (bson); - BSON_ASSERT (data); - - if (len < 0) { - len = strlen (data); - } - - bson_init (bson); - - reader = bson_json_data_reader_new (false, BSON_JSON_DEFAULT_BUF_SIZE); - bson_json_data_reader_ingest (reader, (const uint8_t *) data, len); - r = bson_json_reader_read (reader, bson, error); - bson_json_reader_destroy (reader); - - if (r == 0) { - bson_set_error (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Empty JSON string"); - } - - if (r != 1) { - bson_destroy (bson); - return false; - } - - return true; -} - - -static void -_bson_json_reader_handle_fd_destroy (void *handle) /* IN */ -{ - bson_json_reader_handle_fd_t *fd = handle; - - if (fd) { - if ((fd->fd != -1) && fd->do_close) { -#ifdef _WIN32 - _close (fd->fd); -#else - close (fd->fd); -#endif - } - bson_free (fd); - } -} - - -static ssize_t -_bson_json_reader_handle_fd_read (void *handle, /* IN */ - uint8_t *buf, /* IN */ - size_t len) /* IN */ -{ - bson_json_reader_handle_fd_t *fd = handle; - ssize_t ret = -1; - - if (fd && (fd->fd != -1)) { - again: -#ifdef BSON_OS_WIN32 - ret = _read (fd->fd, buf, (unsigned int) len); -#else - ret = read (fd->fd, buf, len); -#endif - if ((ret == -1) && (errno == EAGAIN)) { - goto again; - } - } - - return ret; -} - - -bson_json_reader_t * -bson_json_reader_new_from_fd (int fd, /* IN */ - bool close_on_destroy) /* IN */ -{ - bson_json_reader_handle_fd_t *handle; - - BSON_ASSERT (fd != -1); - - handle = bson_malloc0 (sizeof *handle); - handle->fd = fd; - handle->do_close = close_on_destroy; - - return bson_json_reader_new (handle, - _bson_json_reader_handle_fd_read, - _bson_json_reader_handle_fd_destroy, - true, - BSON_JSON_DEFAULT_BUF_SIZE); -} - - -bson_json_reader_t * -bson_json_reader_new_from_file (const char *path, /* IN */ - bson_error_t *error) /* OUT */ -{ - char errmsg_buf[BSON_ERROR_BUFFER_SIZE]; - char *errmsg; - int fd = -1; - - BSON_ASSERT (path); - -#ifdef BSON_OS_WIN32 - _sopen_s (&fd, path, (_O_RDONLY | _O_BINARY), _SH_DENYNO, _S_IREAD); -#else - fd = open (path, O_RDONLY); -#endif - - if (fd == -1) { - errmsg = bson_strerror_r (errno, errmsg_buf, sizeof errmsg_buf); - bson_set_error ( - error, BSON_ERROR_READER, BSON_ERROR_READER_BADFD, "%s", errmsg); - return NULL; - } - - return bson_json_reader_new_from_fd (fd, true); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.h deleted file mode 100644 index 838be0e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-json.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_JSON_H -#define BSON_JSON_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson.h" - - -BSON_BEGIN_DECLS - - -typedef struct _bson_json_reader_t bson_json_reader_t; - - -typedef enum { - BSON_JSON_ERROR_READ_CORRUPT_JS = 1, - BSON_JSON_ERROR_READ_INVALID_PARAM, - BSON_JSON_ERROR_READ_CB_FAILURE, -} bson_json_error_code_t; - - -typedef ssize_t (*bson_json_reader_cb) (void *handle, - uint8_t *buf, - size_t count); -typedef void (*bson_json_destroy_cb) (void *handle); - - -BSON_EXPORT (bson_json_reader_t *) -bson_json_reader_new (void *data, - bson_json_reader_cb cb, - bson_json_destroy_cb dcb, - bool allow_multiple, - size_t buf_size); -BSON_EXPORT (bson_json_reader_t *) -bson_json_reader_new_from_fd (int fd, bool close_on_destroy); -BSON_EXPORT (bson_json_reader_t *) -bson_json_reader_new_from_file (const char *filename, bson_error_t *error); -BSON_EXPORT (void) -bson_json_reader_destroy (bson_json_reader_t *reader); -BSON_EXPORT (int) -bson_json_reader_read (bson_json_reader_t *reader, - bson_t *bson, - bson_error_t *error); -BSON_EXPORT (bson_json_reader_t *) -bson_json_data_reader_new (bool allow_multiple, size_t size); -BSON_EXPORT (void) -bson_json_data_reader_ingest (bson_json_reader_t *reader, - const uint8_t *data, - size_t len); - - -BSON_END_DECLS - - -#endif /* BSON_JSON_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.c deleted file mode 100644 index 8c11c9a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "bson/bson-keys.h" -#include "bson/bson-string.h" - - -static const char *gUint32Strs[] = { - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", - "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", - "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", - "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", - "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", - "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", - "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", - "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", - "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", - "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", - "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", - "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", - "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", - "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", - "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", - "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", - "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", - "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", - "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", - "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", - "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", "230", - "231", "232", "233", "234", "235", "236", "237", "238", "239", "240", "241", - "242", "243", "244", "245", "246", "247", "248", "249", "250", "251", "252", - "253", "254", "255", "256", "257", "258", "259", "260", "261", "262", "263", - "264", "265", "266", "267", "268", "269", "270", "271", "272", "273", "274", - "275", "276", "277", "278", "279", "280", "281", "282", "283", "284", "285", - "286", "287", "288", "289", "290", "291", "292", "293", "294", "295", "296", - "297", "298", "299", "300", "301", "302", "303", "304", "305", "306", "307", - "308", "309", "310", "311", "312", "313", "314", "315", "316", "317", "318", - "319", "320", "321", "322", "323", "324", "325", "326", "327", "328", "329", - "330", "331", "332", "333", "334", "335", "336", "337", "338", "339", "340", - "341", "342", "343", "344", "345", "346", "347", "348", "349", "350", "351", - "352", "353", "354", "355", "356", "357", "358", "359", "360", "361", "362", - "363", "364", "365", "366", "367", "368", "369", "370", "371", "372", "373", - "374", "375", "376", "377", "378", "379", "380", "381", "382", "383", "384", - "385", "386", "387", "388", "389", "390", "391", "392", "393", "394", "395", - "396", "397", "398", "399", "400", "401", "402", "403", "404", "405", "406", - "407", "408", "409", "410", "411", "412", "413", "414", "415", "416", "417", - "418", "419", "420", "421", "422", "423", "424", "425", "426", "427", "428", - "429", "430", "431", "432", "433", "434", "435", "436", "437", "438", "439", - "440", "441", "442", "443", "444", "445", "446", "447", "448", "449", "450", - "451", "452", "453", "454", "455", "456", "457", "458", "459", "460", "461", - "462", "463", "464", "465", "466", "467", "468", "469", "470", "471", "472", - "473", "474", "475", "476", "477", "478", "479", "480", "481", "482", "483", - "484", "485", "486", "487", "488", "489", "490", "491", "492", "493", "494", - "495", "496", "497", "498", "499", "500", "501", "502", "503", "504", "505", - "506", "507", "508", "509", "510", "511", "512", "513", "514", "515", "516", - "517", "518", "519", "520", "521", "522", "523", "524", "525", "526", "527", - "528", "529", "530", "531", "532", "533", "534", "535", "536", "537", "538", - "539", "540", "541", "542", "543", "544", "545", "546", "547", "548", "549", - "550", "551", "552", "553", "554", "555", "556", "557", "558", "559", "560", - "561", "562", "563", "564", "565", "566", "567", "568", "569", "570", "571", - "572", "573", "574", "575", "576", "577", "578", "579", "580", "581", "582", - "583", "584", "585", "586", "587", "588", "589", "590", "591", "592", "593", - "594", "595", "596", "597", "598", "599", "600", "601", "602", "603", "604", - "605", "606", "607", "608", "609", "610", "611", "612", "613", "614", "615", - "616", "617", "618", "619", "620", "621", "622", "623", "624", "625", "626", - "627", "628", "629", "630", "631", "632", "633", "634", "635", "636", "637", - "638", "639", "640", "641", "642", "643", "644", "645", "646", "647", "648", - "649", "650", "651", "652", "653", "654", "655", "656", "657", "658", "659", - "660", "661", "662", "663", "664", "665", "666", "667", "668", "669", "670", - "671", "672", "673", "674", "675", "676", "677", "678", "679", "680", "681", - "682", "683", "684", "685", "686", "687", "688", "689", "690", "691", "692", - "693", "694", "695", "696", "697", "698", "699", "700", "701", "702", "703", - "704", "705", "706", "707", "708", "709", "710", "711", "712", "713", "714", - "715", "716", "717", "718", "719", "720", "721", "722", "723", "724", "725", - "726", "727", "728", "729", "730", "731", "732", "733", "734", "735", "736", - "737", "738", "739", "740", "741", "742", "743", "744", "745", "746", "747", - "748", "749", "750", "751", "752", "753", "754", "755", "756", "757", "758", - "759", "760", "761", "762", "763", "764", "765", "766", "767", "768", "769", - "770", "771", "772", "773", "774", "775", "776", "777", "778", "779", "780", - "781", "782", "783", "784", "785", "786", "787", "788", "789", "790", "791", - "792", "793", "794", "795", "796", "797", "798", "799", "800", "801", "802", - "803", "804", "805", "806", "807", "808", "809", "810", "811", "812", "813", - "814", "815", "816", "817", "818", "819", "820", "821", "822", "823", "824", - "825", "826", "827", "828", "829", "830", "831", "832", "833", "834", "835", - "836", "837", "838", "839", "840", "841", "842", "843", "844", "845", "846", - "847", "848", "849", "850", "851", "852", "853", "854", "855", "856", "857", - "858", "859", "860", "861", "862", "863", "864", "865", "866", "867", "868", - "869", "870", "871", "872", "873", "874", "875", "876", "877", "878", "879", - "880", "881", "882", "883", "884", "885", "886", "887", "888", "889", "890", - "891", "892", "893", "894", "895", "896", "897", "898", "899", "900", "901", - "902", "903", "904", "905", "906", "907", "908", "909", "910", "911", "912", - "913", "914", "915", "916", "917", "918", "919", "920", "921", "922", "923", - "924", "925", "926", "927", "928", "929", "930", "931", "932", "933", "934", - "935", "936", "937", "938", "939", "940", "941", "942", "943", "944", "945", - "946", "947", "948", "949", "950", "951", "952", "953", "954", "955", "956", - "957", "958", "959", "960", "961", "962", "963", "964", "965", "966", "967", - "968", "969", "970", "971", "972", "973", "974", "975", "976", "977", "978", - "979", "980", "981", "982", "983", "984", "985", "986", "987", "988", "989", - "990", "991", "992", "993", "994", "995", "996", "997", "998", "999"}; - - -/* - *-------------------------------------------------------------------------- - * - * bson_uint32_to_string -- - * - * Converts @value to a string. - * - * If @value is from 0 to 1000, it will use a constant string in the - * data section of the library. - * - * If not, a string will be formatted using @str and snprintf(). This - * is much slower, of course and therefore we try to optimize it out. - * - * @strptr will always be set. It will either point to @str or a - * constant string. You will want to use this as your key. - * - * Parameters: - * @value: A #uint32_t to convert to string. - * @strptr: (out): A pointer to the resulting string. - * @str: (out): Storage for a string made with snprintf. - * @size: Size of @str. - * - * Returns: - * The number of bytes in the resulting string. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -size_t -bson_uint32_to_string (uint32_t value, /* IN */ - const char **strptr, /* OUT */ - char *str, /* OUT */ - size_t size) /* IN */ -{ - if (value < 1000) { - *strptr = gUint32Strs[value]; - - if (value < 10) { - return 1; - } else if (value < 100) { - return 2; - } else { - return 3; - } - } - - *strptr = str; - - return bson_snprintf (str, size, "%u", value); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.h deleted file mode 100644 index 61a895f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-keys.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_KEYS_H -#define BSON_KEYS_H - - -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -BSON_EXPORT (size_t) -bson_uint32_to_string (uint32_t value, - const char **strptr, - char *str, - size_t size); - - -BSON_END_DECLS - - -#endif /* BSON_KEYS_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-macros.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-macros.h deleted file mode 100644 index 3618e1c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-macros.h +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_MACROS_H -#define BSON_MACROS_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include - -#ifdef __cplusplus -#include -#endif - -#include "bson/bson-config.h" - - -#if BSON_OS == 1 -#define BSON_OS_UNIX -#elif BSON_OS == 2 -#define BSON_OS_WIN32 -#else -#error "Unknown operating system." -#endif - - -#ifdef __cplusplus -#define BSON_BEGIN_DECLS extern "C" { -#define BSON_END_DECLS } -#else -#define BSON_BEGIN_DECLS -#define BSON_END_DECLS -#endif - - -#if defined(__GNUC__) -#define BSON_GNUC_CHECK_VERSION(major, minor) \ - ((__GNUC__ > (major)) || \ - ((__GNUC__ == (major)) && (__GNUC_MINOR__ >= (minor)))) -#else -#define BSON_GNUC_CHECK_VERSION(major, minor) 0 -#endif - - -#if defined(__GNUC__) -#define BSON_GNUC_IS_VERSION(major, minor) \ - ((__GNUC__ == (major)) && (__GNUC_MINOR__ == (minor))) -#else -#define BSON_GNUC_IS_VERSION(major, minor) 0 -#endif - - -/* Decorate public functions: - * - if BSON_STATIC, we're compiling a program that uses libbson as a static - * library, don't decorate functions - * - else if BSON_COMPILATION, we're compiling a static or shared libbson, mark - * public functions for export from the shared lib (which has no effect on - * the static lib) - * - else, we're compiling a program that uses libbson as a shared library, - * mark public functions as DLL imports for Microsoft Visual C - */ - -#ifdef _MSC_VER -/* - * Microsoft Visual C - */ -#ifdef BSON_STATIC -#define BSON_API -#elif defined(BSON_COMPILATION) -#define BSON_API __declspec(dllexport) -#else -#define BSON_API __declspec(dllimport) -#endif -#define BSON_CALL __cdecl - -#elif defined(__GNUC__) -/* - * GCC - */ -#ifdef BSON_STATIC -#define BSON_API -#elif defined(BSON_COMPILATION) -#define BSON_API __attribute__ ((visibility ("default"))) -#else -#define BSON_API -#endif -#define BSON_CALL - -#else -/* - * Other compilers - */ -#define BSON_API -#define BSON_CALL - -#endif - -#define BSON_EXPORT(type) BSON_API type BSON_CALL - - -#ifdef MIN -#define BSON_MIN MIN -#elif defined(__cplusplus) -#define BSON_MIN(a, b) ((std::min) (a, b)) -#elif defined(_MSC_VER) -#define BSON_MIN(a, b) ((a) < (b) ? (a) : (b)) -#else -#define BSON_MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif - - -#ifdef MAX -#define BSON_MAX MAX -#elif defined(__cplusplus) -#define BSON_MAX(a, b) ((std::max) (a, b)) -#elif defined(_MSC_VER) -#define BSON_MAX(a, b) ((a) > (b) ? (a) : (b)) -#else -#define BSON_MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif - - -#ifdef ABS -#define BSON_ABS ABS -#else -#define BSON_ABS(a) (((a) < 0) ? ((a) * -1) : (a)) -#endif - -#ifdef _MSC_VER -#ifdef _WIN64 -#define BSON_ALIGN_OF_PTR 8 -#else -#define BSON_ALIGN_OF_PTR 4 -#endif -#else -#define BSON_ALIGN_OF_PTR (sizeof (void *)) -#endif - -#ifdef BSON_EXTRA_ALIGN -#if defined(_MSC_VER) -#define BSON_ALIGNED_BEGIN(_N) __declspec(align (_N)) -#define BSON_ALIGNED_END(_N) -#else -#define BSON_ALIGNED_BEGIN(_N) -#define BSON_ALIGNED_END(_N) __attribute__ ((aligned (_N))) -#endif -#else -#if defined(_MSC_VER) -#define BSON_ALIGNED_BEGIN(_N) __declspec(align (BSON_ALIGN_OF_PTR)) -#define BSON_ALIGNED_END(_N) -#else -#define BSON_ALIGNED_BEGIN(_N) -#define BSON_ALIGNED_END(_N) \ - __attribute__ ( \ - (aligned ((_N) > BSON_ALIGN_OF_PTR ? BSON_ALIGN_OF_PTR : (_N)))) -#endif -#endif - - -#define bson_str_empty(s) (!s[0]) -#define bson_str_empty0(s) (!s || !s[0]) - - -#if defined(_WIN32) -#define BSON_FUNC __FUNCTION__ -#elif defined(__STDC_VERSION__) && __STDC_VERSION__ < 199901L -#define BSON_FUNC __FUNCTION__ -#else -#define BSON_FUNC __func__ -#endif - -#define BSON_ASSERT(test) \ - do { \ - if (!(BSON_LIKELY (test))) { \ - fprintf (stderr, \ - "%s:%d %s(): precondition failed: %s\n", \ - __FILE__, \ - __LINE__, \ - BSON_FUNC, \ - #test); \ - abort (); \ - } \ - } while (0) - -/* obsolete macros, preserved for compatibility */ -#define BSON_STATIC_ASSERT(s) BSON_STATIC_ASSERT_ (s, __LINE__) -#define BSON_STATIC_ASSERT_JOIN(a, b) BSON_STATIC_ASSERT_JOIN2 (a, b) -#define BSON_STATIC_ASSERT_JOIN2(a, b) a##b -#define BSON_STATIC_ASSERT_(s, l) \ - typedef char BSON_STATIC_ASSERT_JOIN (static_assert_test_, \ - __LINE__)[(s) ? 1 : -1] - -/* modern macros */ -#define BSON_STATIC_ASSERT2(_name, _s) \ - BSON_STATIC_ASSERT2_ (_s, __LINE__, _name) -#define BSON_STATIC_ASSERT_JOIN3(_a, _b, _name) \ - BSON_STATIC_ASSERT_JOIN4 (_a, _b, _name) -#define BSON_STATIC_ASSERT_JOIN4(_a, _b, _name) _a##_b##_name -#define BSON_STATIC_ASSERT2_(_s, _l, _name) \ - typedef char BSON_STATIC_ASSERT_JOIN3 ( \ - static_assert_test_, __LINE__, _name)[(_s) ? 1 : -1] - - -#if defined(__GNUC__) -#define BSON_GNUC_PURE __attribute__ ((pure)) -#define BSON_GNUC_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) -#else -#define BSON_GNUC_PURE -#define BSON_GNUC_WARN_UNUSED_RESULT -#endif - - -#if BSON_GNUC_CHECK_VERSION(4, 0) && !defined(_WIN32) -#define BSON_GNUC_NULL_TERMINATED __attribute__ ((sentinel)) -#define BSON_GNUC_INTERNAL __attribute__ ((visibility ("hidden"))) -#else -#define BSON_GNUC_NULL_TERMINATED -#define BSON_GNUC_INTERNAL -#endif - - -#if defined(__GNUC__) -#define BSON_LIKELY(x) __builtin_expect (!!(x), 1) -#define BSON_UNLIKELY(x) __builtin_expect (!!(x), 0) -#else -#define BSON_LIKELY(v) v -#define BSON_UNLIKELY(v) v -#endif - - -#if defined(__clang__) -#define BSON_GNUC_PRINTF(f, v) __attribute__ ((format (printf, f, v))) -#elif BSON_GNUC_CHECK_VERSION(4, 4) -#define BSON_GNUC_PRINTF(f, v) __attribute__ ((format (gnu_printf, f, v))) -#else -#define BSON_GNUC_PRINTF(f, v) -#endif - - -#if defined(__LP64__) || defined(_LP64) -#define BSON_WORD_SIZE 64 -#else -#define BSON_WORD_SIZE 32 -#endif - - -#if defined(_MSC_VER) -#define BSON_INLINE __inline -#else -#define BSON_INLINE __inline__ -#endif - - -#ifdef _MSC_VER -#define BSON_ENSURE_ARRAY_PARAM_SIZE(_n) -#define BSON_TYPEOF decltype -#else -#define BSON_ENSURE_ARRAY_PARAM_SIZE(_n) static(_n) -#define BSON_TYPEOF typeof -#endif - - -#if BSON_GNUC_CHECK_VERSION(3, 1) -#define BSON_GNUC_DEPRECATED __attribute__ ((__deprecated__)) -#else -#define BSON_GNUC_DEPRECATED -#endif - - -#if BSON_GNUC_CHECK_VERSION(4, 5) -#define BSON_GNUC_DEPRECATED_FOR(f) \ - __attribute__ ((deprecated ("Use " #f " instead"))) -#else -#define BSON_GNUC_DEPRECATED_FOR(f) BSON_GNUC_DEPRECATED -#endif - - -#endif /* BSON_MACROS_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.c deleted file mode 100644 index 8e5a6e8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "bson/bson-compat.h" - -#include "bson/bson-md5.h" -#include "common-md5-private.h" - - -void -bson_md5_init (bson_md5_t *pms) -{ - _bson_md5_init (pms); -} - - -void -bson_md5_append (bson_md5_t *pms, const uint8_t *data, uint32_t nbytes) -{ - _bson_md5_append (pms, data, nbytes); -} - -void -bson_md5_finish (bson_md5_t *pms, uint8_t digest[16]) -{ - _bson_md5_finish (pms, digest); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.h deleted file mode 100644 index fb7f01e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-md5.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgement in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - L. Peter Deutsch - ghost@aladdin.com - - */ -/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ -/* - Independent implementation of MD5 (RFC 1321). - - This code implements the MD5 Algorithm defined in RFC 1321, whose - text is available at - http://www.ietf.org/rfc/rfc1321.txt - The code is derived from the text of the RFC, including the test suite - (section A.5) but excluding the rest of Appendix A. It does not include - any code or documentation that is identified in the RFC as being - copyrighted. - - The original and principal author of md5.h is L. Peter Deutsch - . Other authors are noted in the change history - that follows (in reverse chronological order): - - 2002-04-13 lpd Removed support for non-ANSI compilers; removed - references to Ghostscript; clarified derivation from RFC 1321; - now handles byte order either statically or dynamically. - 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. - 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); - added conditionalization for C++ compilation from Martin - Purschke . - 1999-05-03 lpd Original version. - */ - - -/* - * The following MD5 implementation has been modified to use types as - * specified in libbson. - */ - - -#ifndef BSON_MD5_H -#define BSON_MD5_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson-endian.h" - - -BSON_BEGIN_DECLS - - -typedef struct { - uint32_t count[2]; /* message length in bits, lsw first */ - uint32_t abcd[4]; /* digest buffer */ - uint8_t buf[64]; /* accumulate block */ -} bson_md5_t; - - -BSON_EXPORT (void) -bson_md5_init (bson_md5_t *pms) BSON_GNUC_DEPRECATED; -BSON_EXPORT (void) -bson_md5_append (bson_md5_t *pms, - const uint8_t *data, - uint32_t nbytes) BSON_GNUC_DEPRECATED; -BSON_EXPORT (void) -bson_md5_finish (bson_md5_t *pms, uint8_t digest[16]) BSON_GNUC_DEPRECATED; - - -BSON_END_DECLS - - -#endif /* BSON_MD5_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.c deleted file mode 100644 index 87ad39c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include -#include -#include - -#include "bson/bson-atomic.h" -#include "bson/bson-config.h" -#include "bson/bson-memory.h" - - -static bson_mem_vtable_t gMemVtable = { - malloc, - calloc, -#ifdef BSON_HAVE_REALLOCF - reallocf, -#else - realloc, -#endif - free, -}; - - -/* - *-------------------------------------------------------------------------- - * - * bson_malloc -- - * - * Allocates @num_bytes of memory and returns a pointer to it. If - * malloc failed to allocate the memory, abort() is called. - * - * Libbson does not try to handle OOM conditions as it is beyond the - * scope of this library to handle so appropriately. - * - * Parameters: - * @num_bytes: The number of bytes to allocate. - * - * Returns: - * A pointer if successful; otherwise abort() is called and this - * function will never return. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void * -bson_malloc (size_t num_bytes) /* IN */ -{ - void *mem = NULL; - - if (BSON_LIKELY (num_bytes)) { - if (BSON_UNLIKELY (!(mem = gMemVtable.malloc (num_bytes)))) { - fprintf (stderr, "Failure to allocate memory in bson_malloc(). errno: %d.\n", errno); - abort (); - } - } - - return mem; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_malloc0 -- - * - * Like bson_malloc() except the memory is zeroed first. This is - * similar to calloc() except that abort() is called in case of - * failure to allocate memory. - * - * Parameters: - * @num_bytes: The number of bytes to allocate. - * - * Returns: - * A pointer if successful; otherwise abort() is called and this - * function will never return. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void * -bson_malloc0 (size_t num_bytes) /* IN */ -{ - void *mem = NULL; - - if (BSON_LIKELY (num_bytes)) { - if (BSON_UNLIKELY (!(mem = gMemVtable.calloc (1, num_bytes)))) { - fprintf (stderr, "Failure to allocate memory in bson_malloc0(). errno: %d.\n", errno); - abort (); - } - } - - return mem; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_realloc -- - * - * This function behaves similar to realloc() except that if there is - * a failure abort() is called. - * - * Parameters: - * @mem: The memory to realloc, or NULL. - * @num_bytes: The size of the new allocation or 0 to free. - * - * Returns: - * The new allocation if successful; otherwise abort() is called and - * this function never returns. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void * -bson_realloc (void *mem, /* IN */ - size_t num_bytes) /* IN */ -{ - /* - * Not all platforms are guaranteed to free() the memory if a call to - * realloc() with a size of zero occurs. Windows, Linux, and FreeBSD do, - * however, OS X does not. - */ - if (BSON_UNLIKELY (num_bytes == 0)) { - gMemVtable.free (mem); - return NULL; - } - - mem = gMemVtable.realloc (mem, num_bytes); - - if (BSON_UNLIKELY (!mem)) { - fprintf (stderr, "Failure to re-allocate memory in bson_realloc(). errno: %d.\n", errno); - abort (); - } - - return mem; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_realloc_ctx -- - * - * This wraps bson_realloc and provides a compatible api for similar - * functions with a context - * - * Parameters: - * @mem: The memory to realloc, or NULL. - * @num_bytes: The size of the new allocation or 0 to free. - * @ctx: Ignored - * - * Returns: - * The new allocation if successful; otherwise abort() is called and - * this function never returns. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - - -void * -bson_realloc_ctx (void *mem, /* IN */ - size_t num_bytes, /* IN */ - void *ctx) /* IN */ -{ - return bson_realloc (mem, num_bytes); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_free -- - * - * Frees @mem using the underlying allocator. - * - * Currently, this only calls free() directly, but that is subject to - * change. - * - * Parameters: - * @mem: An allocation to free. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_free (void *mem) /* IN */ -{ - gMemVtable.free (mem); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_zero_free -- - * - * Frees @mem using the underlying allocator. @size bytes of @mem will - * be zeroed before freeing the memory. This is useful in scenarios - * where @mem contains passwords or other sensitive information. - * - * Parameters: - * @mem: An allocation to free. - * @size: The number of bytes in @mem. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_zero_free (void *mem, /* IN */ - size_t size) /* IN */ -{ - if (BSON_LIKELY (mem)) { - memset (mem, 0, size); - gMemVtable.free (mem); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_mem_set_vtable -- - * - * This function will change our allocation vtable. - * - * It is imperative that this is called at the beginning of the - * process before any memory has been allocated by the default - * allocator. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_mem_set_vtable (const bson_mem_vtable_t *vtable) -{ - BSON_ASSERT (vtable); - - if (!vtable->malloc || !vtable->calloc || !vtable->realloc || - !vtable->free) { - fprintf (stderr, - "Failure to install BSON vtable, " - "missing functions.\n"); - return; - } - - gMemVtable = *vtable; -} - -void -bson_mem_restore_vtable (void) -{ - bson_mem_vtable_t vtable = { - malloc, - calloc, -#ifdef BSON_HAVE_REALLOCF - reallocf, -#else - realloc, -#endif - free, - }; - - bson_mem_set_vtable (&vtable); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.h deleted file mode 100644 index 363804f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-memory.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_MEMORY_H -#define BSON_MEMORY_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -typedef void *(*bson_realloc_func) (void *mem, size_t num_bytes, void *ctx); - - -typedef struct _bson_mem_vtable_t { - void *(*malloc) (size_t num_bytes); - void *(*calloc) (size_t n_members, size_t num_bytes); - void *(*realloc) (void *mem, size_t num_bytes); - void (*free) (void *mem); - void *padding[4]; -} bson_mem_vtable_t; - - -BSON_EXPORT (void) -bson_mem_set_vtable (const bson_mem_vtable_t *vtable); -BSON_EXPORT (void) -bson_mem_restore_vtable (void); -BSON_EXPORT (void *) -bson_malloc (size_t num_bytes); -BSON_EXPORT (void *) -bson_malloc0 (size_t num_bytes); -BSON_EXPORT (void *) -bson_realloc (void *mem, size_t num_bytes); -BSON_EXPORT (void *) -bson_realloc_ctx (void *mem, size_t num_bytes, void *ctx); -BSON_EXPORT (void) -bson_free (void *mem); -BSON_EXPORT (void) -bson_zero_free (void *mem, size_t size); - - -BSON_END_DECLS - - -#endif /* BSON_MEMORY_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.c deleted file mode 100644 index f77225a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.c +++ /dev/null @@ -1,516 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "bson/bson-compat.h" - -#include -#include -#include -#include - -#include "bson/bson-context-private.h" -#include "bson/bson-oid.h" -#include "bson/bson-string.h" - - -/* - * This table contains an array of two character pairs for every possible - * uint8_t. It is used as a lookup table when encoding a bson_oid_t - * to hex formatted ASCII. Performing two characters at a time roughly - * reduces the number of operations by one-half. - */ -static const uint16_t gHexCharPairs[] = { -#if BSON_BYTE_ORDER == BSON_BIG_ENDIAN - 12336, 12337, 12338, 12339, 12340, 12341, 12342, 12343, 12344, 12345, 12385, - 12386, 12387, 12388, 12389, 12390, 12592, 12593, 12594, 12595, 12596, 12597, - 12598, 12599, 12600, 12601, 12641, 12642, 12643, 12644, 12645, 12646, 12848, - 12849, 12850, 12851, 12852, 12853, 12854, 12855, 12856, 12857, 12897, 12898, - 12899, 12900, 12901, 12902, 13104, 13105, 13106, 13107, 13108, 13109, 13110, - 13111, 13112, 13113, 13153, 13154, 13155, 13156, 13157, 13158, 13360, 13361, - 13362, 13363, 13364, 13365, 13366, 13367, 13368, 13369, 13409, 13410, 13411, - 13412, 13413, 13414, 13616, 13617, 13618, 13619, 13620, 13621, 13622, 13623, - 13624, 13625, 13665, 13666, 13667, 13668, 13669, 13670, 13872, 13873, 13874, - 13875, 13876, 13877, 13878, 13879, 13880, 13881, 13921, 13922, 13923, 13924, - 13925, 13926, 14128, 14129, 14130, 14131, 14132, 14133, 14134, 14135, 14136, - 14137, 14177, 14178, 14179, 14180, 14181, 14182, 14384, 14385, 14386, 14387, - 14388, 14389, 14390, 14391, 14392, 14393, 14433, 14434, 14435, 14436, 14437, - 14438, 14640, 14641, 14642, 14643, 14644, 14645, 14646, 14647, 14648, 14649, - 14689, 14690, 14691, 14692, 14693, 14694, 24880, 24881, 24882, 24883, 24884, - 24885, 24886, 24887, 24888, 24889, 24929, 24930, 24931, 24932, 24933, 24934, - 25136, 25137, 25138, 25139, 25140, 25141, 25142, 25143, 25144, 25145, 25185, - 25186, 25187, 25188, 25189, 25190, 25392, 25393, 25394, 25395, 25396, 25397, - 25398, 25399, 25400, 25401, 25441, 25442, 25443, 25444, 25445, 25446, 25648, - 25649, 25650, 25651, 25652, 25653, 25654, 25655, 25656, 25657, 25697, 25698, - 25699, 25700, 25701, 25702, 25904, 25905, 25906, 25907, 25908, 25909, 25910, - 25911, 25912, 25913, 25953, 25954, 25955, 25956, 25957, 25958, 26160, 26161, - 26162, 26163, 26164, 26165, 26166, 26167, 26168, 26169, 26209, 26210, 26211, - 26212, 26213, 26214 -#else - 12336, 12592, 12848, 13104, 13360, 13616, 13872, 14128, 14384, 14640, 24880, - 25136, 25392, 25648, 25904, 26160, 12337, 12593, 12849, 13105, 13361, 13617, - 13873, 14129, 14385, 14641, 24881, 25137, 25393, 25649, 25905, 26161, 12338, - 12594, 12850, 13106, 13362, 13618, 13874, 14130, 14386, 14642, 24882, 25138, - 25394, 25650, 25906, 26162, 12339, 12595, 12851, 13107, 13363, 13619, 13875, - 14131, 14387, 14643, 24883, 25139, 25395, 25651, 25907, 26163, 12340, 12596, - 12852, 13108, 13364, 13620, 13876, 14132, 14388, 14644, 24884, 25140, 25396, - 25652, 25908, 26164, 12341, 12597, 12853, 13109, 13365, 13621, 13877, 14133, - 14389, 14645, 24885, 25141, 25397, 25653, 25909, 26165, 12342, 12598, 12854, - 13110, 13366, 13622, 13878, 14134, 14390, 14646, 24886, 25142, 25398, 25654, - 25910, 26166, 12343, 12599, 12855, 13111, 13367, 13623, 13879, 14135, 14391, - 14647, 24887, 25143, 25399, 25655, 25911, 26167, 12344, 12600, 12856, 13112, - 13368, 13624, 13880, 14136, 14392, 14648, 24888, 25144, 25400, 25656, 25912, - 26168, 12345, 12601, 12857, 13113, 13369, 13625, 13881, 14137, 14393, 14649, - 24889, 25145, 25401, 25657, 25913, 26169, 12385, 12641, 12897, 13153, 13409, - 13665, 13921, 14177, 14433, 14689, 24929, 25185, 25441, 25697, 25953, 26209, - 12386, 12642, 12898, 13154, 13410, 13666, 13922, 14178, 14434, 14690, 24930, - 25186, 25442, 25698, 25954, 26210, 12387, 12643, 12899, 13155, 13411, 13667, - 13923, 14179, 14435, 14691, 24931, 25187, 25443, 25699, 25955, 26211, 12388, - 12644, 12900, 13156, 13412, 13668, 13924, 14180, 14436, 14692, 24932, 25188, - 25444, 25700, 25956, 26212, 12389, 12645, 12901, 13157, 13413, 13669, 13925, - 14181, 14437, 14693, 24933, 25189, 25445, 25701, 25957, 26213, 12390, 12646, - 12902, 13158, 13414, 13670, 13926, 14182, 14438, 14694, 24934, 25190, 25446, - 25702, 25958, 26214 -#endif -}; - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_init_sequence -- - * - * Initializes @oid with the next oid in the sequence. The first 4 - * bytes contain the current time and the following 8 contain a 64-bit - * integer in big-endian format. - * - * The bson_oid_t generated by this function is not guaranteed to be - * globally unique. Only unique within this context. It is however, - * guaranteed to be sequential. - * - * Returns: - * None. - * - * Side effects: - * @oid is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_oid_init_sequence (bson_oid_t *oid, /* OUT */ - bson_context_t *context) /* IN */ -{ - uint32_t now = (uint32_t) (time (NULL)); - - if (!context) { - context = bson_context_get_default (); - } - - now = BSON_UINT32_TO_BE (now); - - memcpy (&oid->bytes[0], &now, sizeof (now)); - context->oid_get_seq64 (context, oid); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_init -- - * - * Generates bytes for a new bson_oid_t and stores them in @oid. The - * bytes will be generated according to the specification and includes - * the current time, a 3 byte hash of the hostname, pid (or tid), and - * monotonic counter. - * - * The bson_oid_t generated by this function is not guaranteed to be - * globally unique. Only unique within this context. It is however, - * guaranteed to be sequential. - * - * Returns: - * None. - * - * Side effects: - * @oid is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_oid_init (bson_oid_t *oid, /* OUT */ - bson_context_t *context) /* IN */ -{ - uint32_t now = (uint32_t) (time (NULL)); - - BSON_ASSERT (oid); - - if (!context) { - context = bson_context_get_default (); - } - - now = BSON_UINT32_TO_BE (now); - memcpy (&oid->bytes[0], &now, sizeof (now)); - - context->oid_get_host (context, oid); - context->oid_get_pid (context, oid); - context->oid_get_seq32 (context, oid); -} - - -/** - * bson_oid_init_from_data: - * @oid: A bson_oid_t to initialize. - * @bytes: A 12-byte buffer to copy into @oid. - * - */ -/* - *-------------------------------------------------------------------------- - * - * bson_oid_init_from_data -- - * - * Initializes an @oid from @data. @data MUST be a buffer of at least - * 12 bytes. This method is analogous to memcpy()'ing data into @oid. - * - * Returns: - * None. - * - * Side effects: - * @oid is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_oid_init_from_data (bson_oid_t *oid, /* OUT */ - const uint8_t *data) /* IN */ -{ - BSON_ASSERT (oid); - BSON_ASSERT (data); - - memcpy (oid, data, 12); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_init_from_string -- - * - * Parses @str containing hex formatted bytes of an object id and - * places the bytes in @oid. - * - * Parameters: - * @oid: A bson_oid_t - * @str: A string containing at least 24 characters. - * - * Returns: - * None. - * - * Side effects: - * @oid is initialized. - * - *-------------------------------------------------------------------------- - */ - -void -bson_oid_init_from_string (bson_oid_t *oid, /* OUT */ - const char *str) /* IN */ -{ - BSON_ASSERT (oid); - BSON_ASSERT (str); - - bson_oid_init_from_string_unsafe (oid, str); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_get_time_t -- - * - * Fetches the time for which @oid was created. - * - * Returns: - * A time_t. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -time_t -bson_oid_get_time_t (const bson_oid_t *oid) /* IN */ -{ - BSON_ASSERT (oid); - - return bson_oid_get_time_t_unsafe (oid); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_to_string -- - * - * Formats a bson_oid_t into a string. @str must contain enough bytes - * for the resulting string which is 25 bytes with a terminating - * NUL-byte. - * - * Parameters: - * @oid: A bson_oid_t. - * @str: A location to store the resulting string. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_oid_to_string (const bson_oid_t *oid, /* IN */ - char str[BSON_ENSURE_ARRAY_PARAM_SIZE (25)]) /* OUT */ -{ -#if !defined(__i386__) && !defined(__x86_64__) && !defined(_M_IX86) && \ - !defined(_M_X64) - BSON_ASSERT (oid); - BSON_ASSERT (str); - - bson_snprintf (str, - 25, - "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", - oid->bytes[0], - oid->bytes[1], - oid->bytes[2], - oid->bytes[3], - oid->bytes[4], - oid->bytes[5], - oid->bytes[6], - oid->bytes[7], - oid->bytes[8], - oid->bytes[9], - oid->bytes[10], - oid->bytes[11]); -#else - uint16_t *dst; - uint8_t *id = (uint8_t *) oid; - - BSON_ASSERT (oid); - BSON_ASSERT (str); - - dst = (uint16_t *) (void *) str; - dst[0] = gHexCharPairs[id[0]]; - dst[1] = gHexCharPairs[id[1]]; - dst[2] = gHexCharPairs[id[2]]; - dst[3] = gHexCharPairs[id[3]]; - dst[4] = gHexCharPairs[id[4]]; - dst[5] = gHexCharPairs[id[5]]; - dst[6] = gHexCharPairs[id[6]]; - dst[7] = gHexCharPairs[id[7]]; - dst[8] = gHexCharPairs[id[8]]; - dst[9] = gHexCharPairs[id[9]]; - dst[10] = gHexCharPairs[id[10]]; - dst[11] = gHexCharPairs[id[11]]; - str[24] = '\0'; -#endif -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_hash -- - * - * Hashes the bytes of the provided bson_oid_t using DJB hash. This - * allows bson_oid_t to be used as keys in a hash table. - * - * Returns: - * A hash value corresponding to @oid. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -uint32_t -bson_oid_hash (const bson_oid_t *oid) /* IN */ -{ - BSON_ASSERT (oid); - - return bson_oid_hash_unsafe (oid); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_compare -- - * - * A qsort() style compare function that will return less than zero if - * @oid1 is less than @oid2, zero if they are the same, and greater - * than zero if @oid2 is greater than @oid1. - * - * Returns: - * A qsort() style compare integer. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -int -bson_oid_compare (const bson_oid_t *oid1, /* IN */ - const bson_oid_t *oid2) /* IN */ -{ - BSON_ASSERT (oid1); - BSON_ASSERT (oid2); - - return bson_oid_compare_unsafe (oid1, oid2); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_equal -- - * - * Compares for equality of @oid1 and @oid2. If they are equal, then - * true is returned, otherwise false. - * - * Returns: - * A boolean indicating the equality of @oid1 and @oid2. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_oid_equal (const bson_oid_t *oid1, /* IN */ - const bson_oid_t *oid2) /* IN */ -{ - BSON_ASSERT (oid1); - BSON_ASSERT (oid2); - - return bson_oid_equal_unsafe (oid1, oid2); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_copy -- - * - * Copies the contents of @src to @dst. - * - * Parameters: - * @src: A bson_oid_t to copy from. - * @dst: A bson_oid_t to copy to. - * - * Returns: - * None. - * - * Side effects: - * @dst will contain a copy of the data in @src. - * - *-------------------------------------------------------------------------- - */ - -void -bson_oid_copy (const bson_oid_t *src, /* IN */ - bson_oid_t *dst) /* OUT */ -{ - BSON_ASSERT (src); - BSON_ASSERT (dst); - - bson_oid_copy_unsafe (src, dst); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_oid_is_valid -- - * - * Validates that @str is a valid OID string. @length MUST be 24, but - * is provided as a parameter to simplify calling code. - * - * Parameters: - * @str: A string to validate. - * @length: The length of @str. - * - * Returns: - * true if @str can be passed to bson_oid_init_from_string(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_oid_is_valid (const char *str, /* IN */ - size_t length) /* IN */ -{ - size_t i; - - BSON_ASSERT (str); - - if ((length == 25) && (str[24] == '\0')) { - length = 24; - } - - if (length == 24) { - for (i = 0; i < length; i++) { - switch (str[i]) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - break; - default: - return false; - } - } - return true; - } - - return false; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.h deleted file mode 100644 index 4a4f85f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-oid.h +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_OID_H -#define BSON_OID_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include - -#include "bson/bson-context.h" -#include "bson/bson-macros.h" -#include "bson/bson-types.h" -#include "bson/bson-endian.h" - - -BSON_BEGIN_DECLS - - -BSON_EXPORT (int) -bson_oid_compare (const bson_oid_t *oid1, const bson_oid_t *oid2); -BSON_EXPORT (void) -bson_oid_copy (const bson_oid_t *src, bson_oid_t *dst); -BSON_EXPORT (bool) -bson_oid_equal (const bson_oid_t *oid1, const bson_oid_t *oid2); -BSON_EXPORT (bool) -bson_oid_is_valid (const char *str, size_t length); -BSON_EXPORT (time_t) -bson_oid_get_time_t (const bson_oid_t *oid); -BSON_EXPORT (uint32_t) -bson_oid_hash (const bson_oid_t *oid); -BSON_EXPORT (void) -bson_oid_init (bson_oid_t *oid, bson_context_t *context); -BSON_EXPORT (void) -bson_oid_init_from_data (bson_oid_t *oid, const uint8_t *data); -BSON_EXPORT (void) -bson_oid_init_from_string (bson_oid_t *oid, const char *str); -BSON_EXPORT (void) -bson_oid_init_sequence (bson_oid_t *oid, bson_context_t *context); -BSON_EXPORT (void) -bson_oid_to_string (const bson_oid_t *oid, char str[25]); - - -/** - * bson_oid_compare_unsafe: - * @oid1: A bson_oid_t. - * @oid2: A bson_oid_t. - * - * Performs a qsort() style comparison between @oid1 and @oid2. - * - * This function is meant to be as fast as possible and therefore performs - * no argument validation. That is the callers responsibility. - * - * Returns: An integer < 0 if @oid1 is less than @oid2. Zero if they are equal. - * An integer > 0 if @oid1 is greater than @oid2. - */ -static BSON_INLINE int -bson_oid_compare_unsafe (const bson_oid_t *oid1, const bson_oid_t *oid2) -{ - return memcmp (oid1, oid2, sizeof *oid1); -} - - -/** - * bson_oid_equal_unsafe: - * @oid1: A bson_oid_t. - * @oid2: A bson_oid_t. - * - * Checks the equality of @oid1 and @oid2. - * - * This function is meant to be as fast as possible and therefore performs - * no checks for argument validity. That is the callers responsibility. - * - * Returns: true if @oid1 and @oid2 are equal; otherwise false. - */ -static BSON_INLINE bool -bson_oid_equal_unsafe (const bson_oid_t *oid1, const bson_oid_t *oid2) -{ - return !memcmp (oid1, oid2, sizeof *oid1); -} - -/** - * bson_oid_hash_unsafe: - * @oid: A bson_oid_t. - * - * This function performs a DJB style hash upon the bytes contained in @oid. - * The result is a hash key suitable for use in a hashtable. - * - * This function is meant to be as fast as possible and therefore performs no - * validation of arguments. The caller is responsible to ensure they are - * passing valid arguments. - * - * Returns: A uint32_t containing a hash code. - */ -static BSON_INLINE uint32_t -bson_oid_hash_unsafe (const bson_oid_t *oid) -{ - uint32_t hash = 5381; - uint32_t i; - - for (i = 0; i < sizeof oid->bytes; i++) { - hash = ((hash << 5) + hash) + oid->bytes[i]; - } - - return hash; -} - - -/** - * bson_oid_copy_unsafe: - * @src: A bson_oid_t to copy from. - * @dst: A bson_oid_t to copy into. - * - * Copies the contents of @src into @dst. This function is meant to be as - * fast as possible and therefore performs no argument checking. It is the - * callers responsibility to ensure they are passing valid data into the - * function. - */ -static BSON_INLINE void -bson_oid_copy_unsafe (const bson_oid_t *src, bson_oid_t *dst) -{ - memcpy (dst, src, sizeof *src); -} - - -/** - * bson_oid_parse_hex_char: - * @hex: A character to parse to its integer value. - * - * This function contains a jump table to return the integer value for a - * character containing a hexadecimal value (0-9, a-f, A-F). If the character - * is not a hexadecimal character then zero is returned. - * - * Returns: An integer between 0 and 15. - */ -static BSON_INLINE uint8_t -bson_oid_parse_hex_char (char hex) -{ - switch (hex) { - case '0': - return 0; - case '1': - return 1; - case '2': - return 2; - case '3': - return 3; - case '4': - return 4; - case '5': - return 5; - case '6': - return 6; - case '7': - return 7; - case '8': - return 8; - case '9': - return 9; - case 'a': - case 'A': - return 0xa; - case 'b': - case 'B': - return 0xb; - case 'c': - case 'C': - return 0xc; - case 'd': - case 'D': - return 0xd; - case 'e': - case 'E': - return 0xe; - case 'f': - case 'F': - return 0xf; - default: - return 0; - } -} - - -/** - * bson_oid_init_from_string_unsafe: - * @oid: A bson_oid_t to store the result. - * @str: A 24-character hexadecimal encoded string. - * - * Parses a string containing 24 hexadecimal encoded bytes into a bson_oid_t. - * This function is meant to be as fast as possible and inlined into your - * code. For that purpose, the function does not perform any sort of bounds - * checking and it is the callers responsibility to ensure they are passing - * valid input to the function. - */ -static BSON_INLINE void -bson_oid_init_from_string_unsafe (bson_oid_t *oid, const char *str) -{ - int i; - - for (i = 0; i < 12; i++) { - oid->bytes[i] = ((bson_oid_parse_hex_char (str[2 * i]) << 4) | - (bson_oid_parse_hex_char (str[2 * i + 1]))); - } -} - - -/** - * bson_oid_get_time_t_unsafe: - * @oid: A bson_oid_t. - * - * Fetches the time @oid was generated. - * - * Returns: A time_t containing the UNIX timestamp of generation. - */ -static BSON_INLINE time_t -bson_oid_get_time_t_unsafe (const bson_oid_t *oid) -{ - uint32_t t; - - memcpy (&t, oid, sizeof (t)); - return BSON_UINT32_FROM_BE (t); -} - - -BSON_END_DECLS - - -#endif /* BSON_OID_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-private.h deleted file mode 100644 index 6ffcf20..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-private.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_PRIVATE_H -#define BSON_PRIVATE_H - - -#include "bson/bson-macros.h" -#include "bson/bson-memory.h" -#include "bson/bson-types.h" - - -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) -#define BEGIN_IGNORE_DEPRECATIONS \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -#define END_IGNORE_DEPRECATIONS _Pragma ("GCC diagnostic pop") -#elif defined(__clang__) -#define BEGIN_IGNORE_DEPRECATIONS \ - _Pragma ("clang diagnostic push") \ - _Pragma ("clang diagnostic ignored \"-Wdeprecated-declarations\"") -#define END_IGNORE_DEPRECATIONS _Pragma ("clang diagnostic pop") -#else -#define BEGIN_IGNORE_DEPRECATIONS -#define END_IGNORE_DEPRECATIONS -#endif - - -BSON_BEGIN_DECLS - - -typedef enum { - BSON_FLAG_NONE = 0, - BSON_FLAG_INLINE = (1 << 0), - BSON_FLAG_STATIC = (1 << 1), - BSON_FLAG_RDONLY = (1 << 2), - BSON_FLAG_CHILD = (1 << 3), - BSON_FLAG_IN_CHILD = (1 << 4), - BSON_FLAG_NO_FREE = (1 << 5), -} bson_flags_t; - - -#ifdef BSON_MEMCHECK -#define BSON_INLINE_DATA_SIZE (120 - sizeof (char*)) -#else -#define BSON_INLINE_DATA_SIZE 120 -#endif - - -BSON_ALIGNED_BEGIN (128) -typedef struct { - bson_flags_t flags; - uint32_t len; -#ifdef BSON_MEMCHECK - char *canary; -#endif - uint8_t data[BSON_INLINE_DATA_SIZE]; -} bson_impl_inline_t BSON_ALIGNED_END (128); - - -BSON_STATIC_ASSERT2 (impl_inline_t, sizeof (bson_impl_inline_t) == 128); - - -BSON_ALIGNED_BEGIN (128) -typedef struct { - bson_flags_t flags; /* flags describing the bson_t */ - uint32_t len; /* length of bson document in bytes */ - bson_t *parent; /* parent bson if a child */ - uint32_t depth; /* Subdocument depth. */ - uint8_t **buf; /* pointer to buffer pointer */ - size_t *buflen; /* pointer to buffer length */ - size_t offset; /* our offset inside *buf */ - uint8_t *alloc; /* buffer that we own. */ - size_t alloclen; /* length of buffer that we own. */ - bson_realloc_func realloc; /* our realloc implementation */ - void *realloc_func_ctx; /* context for our realloc func */ -} bson_impl_alloc_t BSON_ALIGNED_END (128); - - -BSON_STATIC_ASSERT2 (impl_alloc_t, sizeof (bson_impl_alloc_t) <= 128); - - -#define BSON_REGEX_OPTIONS_SORTED "ilmsux" - -BSON_END_DECLS - - -#endif /* BSON_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.c deleted file mode 100644 index d8534be..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.c +++ /dev/null @@ -1,834 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "bson/bson.h" - -#include -#include -#ifdef BSON_OS_WIN32 -#include -#include -#endif -#include -#include -#include -#include - -#include "bson/bson-reader.h" -#include "bson/bson-memory.h" - - -typedef enum { - BSON_READER_HANDLE = 1, - BSON_READER_DATA = 2, -} bson_reader_type_t; - - -typedef struct { - bson_reader_type_t type; - void *handle; - bool done : 1; - bool failed : 1; - size_t end; - size_t len; - size_t offset; - size_t bytes_read; - bson_t inline_bson; - uint8_t *data; - bson_reader_read_func_t read_func; - bson_reader_destroy_func_t destroy_func; -} bson_reader_handle_t; - - -typedef struct { - int fd; - bool do_close; -} bson_reader_handle_fd_t; - - -typedef struct { - bson_reader_type_t type; - const uint8_t *data; - size_t length; - size_t offset; - bson_t inline_bson; -} bson_reader_data_t; - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_handle_fill_buffer -- - * - * Attempt to read as much as possible until the underlying buffer - * in @reader is filled or we have reached end-of-stream or - * read failure. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_reader_handle_fill_buffer (bson_reader_handle_t *reader) /* IN */ -{ - ssize_t ret; - - /* - * Handle first read specially. - */ - if ((!reader->done) && (!reader->offset) && (!reader->end)) { - ret = reader->read_func (reader->handle, &reader->data[0], reader->len); - - if (ret <= 0) { - reader->done = true; - return; - } - reader->bytes_read += ret; - - reader->end = ret; - return; - } - - /* - * Move valid data to head. - */ - memmove (&reader->data[0], - &reader->data[reader->offset], - reader->end - reader->offset); - reader->end = reader->end - reader->offset; - reader->offset = 0; - - /* - * Read in data to fill the buffer. - */ - ret = reader->read_func ( - reader->handle, &reader->data[reader->end], reader->len - reader->end); - - if (ret <= 0) { - reader->done = true; - reader->failed = (ret < 0); - } else { - reader->bytes_read += ret; - reader->end += ret; - } - - BSON_ASSERT (reader->offset == 0); - BSON_ASSERT (reader->end <= reader->len); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_new_from_handle -- - * - * Allocates and initializes a new bson_reader_t using the opaque - * handle provided. - * - * Parameters: - * @handle: an opaque handle to use to read data. - * @rf: a function to perform reads on @handle. - * @df: a function to release @handle, or NULL. - * - * Returns: - * A newly allocated bson_reader_t if successful, otherwise NULL. - * Free the successful result with bson_reader_destroy(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_reader_t * -bson_reader_new_from_handle (void *handle, - bson_reader_read_func_t rf, - bson_reader_destroy_func_t df) -{ - bson_reader_handle_t *real; - - BSON_ASSERT (handle); - BSON_ASSERT (rf); - - real = bson_malloc0 (sizeof *real); - real->type = BSON_READER_HANDLE; - real->data = bson_malloc0 (1024); - real->handle = handle; - real->len = 1024; - real->offset = 0; - - bson_reader_set_read_func ((bson_reader_t *) real, rf); - - if (df) { - bson_reader_set_destroy_func ((bson_reader_t *) real, df); - } - - _bson_reader_handle_fill_buffer (real); - - return (bson_reader_t *) real; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_handle_fd_destroy -- - * - * Cleanup allocations associated with state created in - * bson_reader_new_from_fd(). - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_reader_handle_fd_destroy (void *handle) /* IN */ -{ - bson_reader_handle_fd_t *fd = handle; - - if (fd) { - if ((fd->fd != -1) && fd->do_close) { -#ifdef _WIN32 - _close (fd->fd); -#else - close (fd->fd); -#endif - } - bson_free (fd); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_handle_fd_read -- - * - * Perform read on opaque handle created in - * bson_reader_new_from_fd(). - * - * The underlying file descriptor is read from the current position - * using the bson_reader_handle_fd_t allocated. - * - * Returns: - * -1 on failure. - * 0 on end of stream. - * Greater than zero on success. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static ssize_t -_bson_reader_handle_fd_read (void *handle, /* IN */ - void *buf, /* IN */ - size_t len) /* IN */ -{ - bson_reader_handle_fd_t *fd = handle; - ssize_t ret = -1; - - if (fd && (fd->fd != -1)) { - again: -#ifdef BSON_OS_WIN32 - ret = _read (fd->fd, buf, (unsigned int) len); -#else - ret = read (fd->fd, buf, len); -#endif - if ((ret == -1) && (errno == EAGAIN)) { - goto again; - } - } - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_new_from_fd -- - * - * Create a new bson_reader_t using the file-descriptor provided. - * - * Parameters: - * @fd: a libc style file-descriptor. - * @close_on_destroy: if close() should be called on @fd when - * bson_reader_destroy() is called. - * - * Returns: - * A newly allocated bson_reader_t on success; otherwise NULL. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_reader_t * -bson_reader_new_from_fd (int fd, /* IN */ - bool close_on_destroy) /* IN */ -{ - bson_reader_handle_fd_t *handle; - - BSON_ASSERT (fd != -1); - - handle = bson_malloc0 (sizeof *handle); - handle->fd = fd; - handle->do_close = close_on_destroy; - - return bson_reader_new_from_handle ( - handle, _bson_reader_handle_fd_read, _bson_reader_handle_fd_destroy); -} - - -/** - * bson_reader_set_read_func: - * @reader: A bson_reader_t. - * - * Note that @reader must be initialized by bson_reader_init_from_handle(), or - * data - * will be destroyed. - */ -/* - *-------------------------------------------------------------------------- - * - * bson_reader_set_read_func -- - * - * Set the read func to be provided for @reader. - * - * You probably want to use bson_reader_new_from_handle() or - * bson_reader_new_from_fd() instead. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_reader_set_read_func (bson_reader_t *reader, /* IN */ - bson_reader_read_func_t func) /* IN */ -{ - bson_reader_handle_t *real = (bson_reader_handle_t *) reader; - - BSON_ASSERT (reader->type == BSON_READER_HANDLE); - - real->read_func = func; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_set_destroy_func -- - * - * Set the function to cleanup state when @reader is destroyed. - * - * You probably want bson_reader_new_from_fd() or - * bson_reader_new_from_handle() instead. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_reader_set_destroy_func (bson_reader_t *reader, /* IN */ - bson_reader_destroy_func_t func) /* IN */ -{ - bson_reader_handle_t *real = (bson_reader_handle_t *) reader; - - BSON_ASSERT (reader->type == BSON_READER_HANDLE); - - real->destroy_func = func; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_handle_grow_buffer -- - * - * Grow the buffer to the next power of two. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static void -_bson_reader_handle_grow_buffer (bson_reader_handle_t *reader) /* IN */ -{ - size_t size; - - size = reader->len * 2; - reader->data = bson_realloc (reader->data, size); - reader->len = size; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_handle_tell -- - * - * Tell the current position within the underlying file-descriptor. - * - * Returns: - * An off_t containing the current offset. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static off_t -_bson_reader_handle_tell (bson_reader_handle_t *reader) /* IN */ -{ - off_t off; - - off = (off_t) reader->bytes_read; - off -= (off_t) reader->end; - off += (off_t) reader->offset; - - return off; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_handle_read -- - * - * Read the next chunk of data from the underlying file descriptor - * and return a bson_t which should not be modified. - * - * There was a failure if NULL is returned and @reached_eof is - * not set to true. - * - * Returns: - * NULL on failure or end of stream. - * - * Side effects: - * @reached_eof is set if non-NULL. - * - *-------------------------------------------------------------------------- - */ - -static const bson_t * -_bson_reader_handle_read (bson_reader_handle_t *reader, /* IN */ - bool *reached_eof) /* IN */ -{ - int32_t blen; - - if (reached_eof) { - *reached_eof = false; - } - - while (!reader->done) { - if ((reader->end - reader->offset) < 4) { - _bson_reader_handle_fill_buffer (reader); - continue; - } - - memcpy (&blen, &reader->data[reader->offset], sizeof blen); - blen = BSON_UINT32_FROM_LE (blen); - - if (blen < 5) { - return NULL; - } - - if (blen > (int32_t) (reader->end - reader->offset)) { - if (blen > (int32_t) reader->len) { - _bson_reader_handle_grow_buffer (reader); - } - - _bson_reader_handle_fill_buffer (reader); - continue; - } - - if (!bson_init_static (&reader->inline_bson, - &reader->data[reader->offset], - (uint32_t) blen)) { - return NULL; - } - - reader->offset += blen; - - return &reader->inline_bson; - } - - if (reached_eof) { - *reached_eof = reader->done && !reader->failed; - } - - return NULL; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_new_from_data -- - * - * Allocates and initializes a new bson_reader_t that reads the memory - * provided as a stream of BSON documents. - * - * Parameters: - * @data: A buffer to read BSON documents from. - * @length: The length of @data. - * - * Returns: - * A newly allocated bson_reader_t that should be freed with - * bson_reader_destroy(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_reader_t * -bson_reader_new_from_data (const uint8_t *data, /* IN */ - size_t length) /* IN */ -{ - bson_reader_data_t *real; - - BSON_ASSERT (data); - - real = (bson_reader_data_t *) bson_malloc0 (sizeof *real); - real->type = BSON_READER_DATA; - real->data = data; - real->length = length; - real->offset = 0; - - return (bson_reader_t *) real; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_data_read -- - * - * Read the next document from the underlying buffer. - * - * Returns: - * NULL on failure or end of stream. - * a bson_t which should not be modified. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static const bson_t * -_bson_reader_data_read (bson_reader_data_t *reader, /* IN */ - bool *reached_eof) /* IN */ -{ - int32_t blen; - - if (reached_eof) { - *reached_eof = false; - } - - if ((reader->offset + 4) < reader->length) { - memcpy (&blen, &reader->data[reader->offset], sizeof blen); - blen = BSON_UINT32_FROM_LE (blen); - - if (blen < 5) { - return NULL; - } - - if (blen > (int32_t) (reader->length - reader->offset)) { - return NULL; - } - - if (!bson_init_static (&reader->inline_bson, - &reader->data[reader->offset], - (uint32_t) blen)) { - return NULL; - } - - reader->offset += blen; - - return &reader->inline_bson; - } - - if (reached_eof) { - *reached_eof = (reader->offset == reader->length); - } - - return NULL; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_reader_data_tell -- - * - * Tell the current position in the underlying buffer. - * - * Returns: - * An off_t of the current offset. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static off_t -_bson_reader_data_tell (bson_reader_data_t *reader) /* IN */ -{ - return (off_t) reader->offset; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_destroy -- - * - * Release a bson_reader_t created with bson_reader_new_from_data(), - * bson_reader_new_from_fd(), or bson_reader_new_from_handle(). - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_reader_destroy (bson_reader_t *reader) /* IN */ -{ - if (!reader) { - return; - } - - switch (reader->type) { - case 0: - break; - case BSON_READER_HANDLE: { - bson_reader_handle_t *handle = (bson_reader_handle_t *) reader; - - if (handle->destroy_func) { - handle->destroy_func (handle->handle); - } - - bson_free (handle->data); - } break; - case BSON_READER_DATA: - break; - default: - fprintf (stderr, "No such reader type: %02x\n", reader->type); - break; - } - - reader->type = 0; - - bson_free (reader); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_read -- - * - * Reads the next bson_t in the underlying memory or storage. The - * resulting bson_t should not be modified or freed. You may copy it - * and iterate over it. Functions that take a const bson_t* are safe - * to use. - * - * This structure does not survive calls to bson_reader_read() or - * bson_reader_destroy() as it uses memory allocated by the reader or - * underlying storage/memory. - * - * If NULL is returned then @reached_eof will be set to true if the - * end of the file or buffer was reached. This indicates if there was - * an error parsing the document stream. - * - * Returns: - * A const bson_t that should not be modified or freed. - * NULL on failure or end of stream. - * - * Side effects: - * @reached_eof is set if non-NULL. - * - *-------------------------------------------------------------------------- - */ - -const bson_t * -bson_reader_read (bson_reader_t *reader, /* IN */ - bool *reached_eof) /* OUT */ -{ - BSON_ASSERT (reader); - - switch (reader->type) { - case BSON_READER_HANDLE: - return _bson_reader_handle_read ((bson_reader_handle_t *) reader, - reached_eof); - - case BSON_READER_DATA: - return _bson_reader_data_read ((bson_reader_data_t *) reader, - reached_eof); - - default: - fprintf (stderr, "No such reader type: %02x\n", reader->type); - break; - } - - return NULL; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_tell -- - * - * Return the current position in the underlying reader. This will - * always be at the beginning of a bson document or end of file. - * - * Returns: - * An off_t containing the current offset. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -off_t -bson_reader_tell (bson_reader_t *reader) /* IN */ -{ - BSON_ASSERT (reader); - - switch (reader->type) { - case BSON_READER_HANDLE: - return _bson_reader_handle_tell ((bson_reader_handle_t *) reader); - - case BSON_READER_DATA: - return _bson_reader_data_tell ((bson_reader_data_t *) reader); - - default: - fprintf (stderr, "No such reader type: %02x\n", reader->type); - return -1; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_new_from_file -- - * - * A convenience function to open a file containing sequential - * bson documents and read them using bson_reader_t. - * - * Returns: - * A new bson_reader_t if successful, otherwise NULL and - * @error is set. Free the non-NULL result with - * bson_reader_destroy(). - * - * Side effects: - * @error may be set. - * - *-------------------------------------------------------------------------- - */ - -bson_reader_t * -bson_reader_new_from_file (const char *path, /* IN */ - bson_error_t *error) /* OUT */ -{ - char errmsg_buf[BSON_ERROR_BUFFER_SIZE]; - char *errmsg; - int fd; - - BSON_ASSERT (path); - -#ifdef BSON_OS_WIN32 - if (_sopen_s (&fd, path, (_O_RDONLY | _O_BINARY), _SH_DENYNO, 0) != 0) { - fd = -1; - } -#else - fd = open (path, O_RDONLY); -#endif - - if (fd == -1) { - errmsg = bson_strerror_r (errno, errmsg_buf, sizeof errmsg_buf); - bson_set_error ( - error, BSON_ERROR_READER, BSON_ERROR_READER_BADFD, "%s", errmsg); - return NULL; - } - - return bson_reader_new_from_fd (fd, true); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_reset -- - * - * Restore the reader to its initial state. Valid only for readers - * created with bson_reader_new_from_data. - * - *-------------------------------------------------------------------------- - */ - -void -bson_reader_reset (bson_reader_t *reader) -{ - bson_reader_data_t *real = (bson_reader_data_t *) reader; - - if (real->type != BSON_READER_DATA) { - fprintf (stderr, "Reader type cannot be reset\n"); - return; - } - - real->offset = 0; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.h deleted file mode 100644 index 3b7e19b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-reader.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_READER_H -#define BSON_READER_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson-compat.h" -#include "bson/bson-oid.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -#define BSON_ERROR_READER_BADFD 1 - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_read_func_t -- - * - * This function is a callback used by bson_reader_t to read the - * next chunk of data from the underlying opaque file descriptor. - * - * This function is meant to operate similar to the read() function - * as part of libc on UNIX-like systems. - * - * Parameters: - * @handle: The handle to read from. - * @buf: The buffer to read into. - * @count: The number of bytes to read. - * - * Returns: - * 0 for end of stream. - * -1 for read failure. - * Greater than zero for number of bytes read into @buf. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -typedef ssize_t (*bson_reader_read_func_t) (void *handle, /* IN */ - void *buf, /* IN */ - size_t count); /* IN */ - - -/* - *-------------------------------------------------------------------------- - * - * bson_reader_destroy_func_t -- - * - * Destroy callback to release any resources associated with the - * opaque handle. - * - * Parameters: - * @handle: the handle provided to bson_reader_new_from_handle(). - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -typedef void (*bson_reader_destroy_func_t) (void *handle); /* IN */ - - -BSON_EXPORT (bson_reader_t *) -bson_reader_new_from_handle (void *handle, - bson_reader_read_func_t rf, - bson_reader_destroy_func_t df); -BSON_EXPORT (bson_reader_t *) -bson_reader_new_from_fd (int fd, bool close_on_destroy); -BSON_EXPORT (bson_reader_t *) -bson_reader_new_from_file (const char *path, bson_error_t *error); -BSON_EXPORT (bson_reader_t *) -bson_reader_new_from_data (const uint8_t *data, size_t length); -BSON_EXPORT (void) -bson_reader_destroy (bson_reader_t *reader); -BSON_EXPORT (void) -bson_reader_set_read_func (bson_reader_t *reader, bson_reader_read_func_t func); -BSON_EXPORT (void) -bson_reader_set_destroy_func (bson_reader_t *reader, - bson_reader_destroy_func_t func); -BSON_EXPORT (const bson_t *) -bson_reader_read (bson_reader_t *reader, bool *reached_eof); -BSON_EXPORT (off_t) -bson_reader_tell (bson_reader_t *reader); -BSON_EXPORT (void) -bson_reader_reset (bson_reader_t *reader); - -BSON_END_DECLS - - -#endif /* BSON_READER_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.c deleted file mode 100644 index d30204e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.c +++ /dev/null @@ -1,829 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include - -#include "bson/bson-compat.h" -#include "bson/bson-string.h" -#include "bson/bson-memory.h" -#include "bson/bson-utf8.h" - -#ifdef BSON_HAVE_STRINGS_H -#include -#else -#include -#endif - -/* - *-------------------------------------------------------------------------- - * - * bson_string_new -- - * - * Create a new bson_string_t. - * - * bson_string_t is a power-of-2 allocation growing string. Every - * time data is appended the next power of two size is chosen for - * the allocation. Pretty standard stuff. - * - * It is UTF-8 aware through the use of bson_string_append_unichar(). - * The proper UTF-8 character sequence will be used. - * - * Parameters: - * @str: a string to copy or NULL. - * - * Returns: - * A newly allocated bson_string_t that should be freed with - * bson_string_free(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_string_t * -bson_string_new (const char *str) /* IN */ -{ - bson_string_t *ret; - - ret = bson_malloc0 (sizeof *ret); - ret->len = str ? (int) strlen (str) : 0; - ret->alloc = ret->len + 1; - - if (!bson_is_power_of_two (ret->alloc)) { - ret->alloc = (uint32_t) bson_next_power_of_two ((size_t) ret->alloc); - } - - BSON_ASSERT (ret->alloc >= 1); - - ret->str = bson_malloc (ret->alloc); - - if (str) { - memcpy (ret->str, str, ret->len); - } - ret->str[ret->len] = '\0'; - - ret->str[ret->len] = '\0'; - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_string_free -- - * - * Free the bson_string_t @string and related allocations. - * - * If @free_segment is false, then the strings buffer will be - * returned and is not freed. Otherwise, NULL is returned. - * - * Returns: - * The string->str if free_segment is false. - * Otherwise NULL. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_string_free (bson_string_t *string, /* IN */ - bool free_segment) /* IN */ -{ - char *ret = NULL; - - BSON_ASSERT (string); - - if (!free_segment) { - ret = string->str; - } else { - bson_free (string->str); - } - - bson_free (string); - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_string_append -- - * - * Append the UTF-8 string @str to @string. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_string_append (bson_string_t *string, /* IN */ - const char *str) /* IN */ -{ - uint32_t len; - - BSON_ASSERT (string); - BSON_ASSERT (str); - - len = (uint32_t) strlen (str); - - if ((string->alloc - string->len - 1) < len) { - string->alloc += len; - if (!bson_is_power_of_two (string->alloc)) { - string->alloc = - (uint32_t) bson_next_power_of_two ((size_t) string->alloc); - } - string->str = bson_realloc (string->str, string->alloc); - } - - memcpy (string->str + string->len, str, len); - string->len += len; - string->str[string->len] = '\0'; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_string_append_c -- - * - * Append the ASCII character @c to @string. - * - * Do not use this if you are working with UTF-8 sequences, - * use bson_string_append_unichar(). - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_string_append_c (bson_string_t *string, /* IN */ - char c) /* IN */ -{ - char cc[2]; - - BSON_ASSERT (string); - - if (BSON_UNLIKELY (string->alloc == (string->len + 1))) { - cc[0] = c; - cc[1] = '\0'; - bson_string_append (string, cc); - return; - } - - string->str[string->len++] = c; - string->str[string->len] = '\0'; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_string_append_unichar -- - * - * Append the bson_unichar_t @unichar to the string @string. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_string_append_unichar (bson_string_t *string, /* IN */ - bson_unichar_t unichar) /* IN */ -{ - uint32_t len; - char str[8]; - - BSON_ASSERT (string); - BSON_ASSERT (unichar); - - bson_utf8_from_unichar (unichar, str, &len); - - if (len <= 6) { - str[len] = '\0'; - bson_string_append (string, str); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_string_append_printf -- - * - * Format a string according to @format and append it to @string. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_string_append_printf (bson_string_t *string, const char *format, ...) -{ - va_list args; - char *ret; - - BSON_ASSERT (string); - BSON_ASSERT (format); - - va_start (args, format); - ret = bson_strdupv_printf (format, args); - va_end (args); - bson_string_append (string, ret); - bson_free (ret); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_string_truncate -- - * - * Truncate the string @string to @len bytes. - * - * The underlying memory will be released via realloc() down to - * the minimum required size specified by @len. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_string_truncate (bson_string_t *string, /* IN */ - uint32_t len) /* IN */ -{ - uint32_t alloc; - - BSON_ASSERT (string); - BSON_ASSERT (len < INT_MAX); - - alloc = len + 1; - - if (alloc < 16) { - alloc = 16; - } - - if (!bson_is_power_of_two (alloc)) { - alloc = (uint32_t) bson_next_power_of_two ((size_t) alloc); - } - - string->str = bson_realloc (string->str, alloc); - string->alloc = alloc; - string->len = len; - - string->str[string->len] = '\0'; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strdup -- - * - * Portable strdup(). - * - * Returns: - * A newly allocated string that should be freed with bson_free(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_strdup (const char *str) /* IN */ -{ - long len; - char *out; - - if (!str) { - return NULL; - } - - len = (long) strlen (str); - out = bson_malloc (len + 1); - - if (!out) { - return NULL; - } - - memcpy (out, str, len + 1); - - return out; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strdupv_printf -- - * - * Like bson_strdup_printf() but takes a va_list. - * - * Returns: - * A newly allocated string that should be freed with bson_free(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_strdupv_printf (const char *format, /* IN */ - va_list args) /* IN */ -{ - va_list my_args; - char *buf; - int len = 32; - int n; - - BSON_ASSERT (format); - - buf = bson_malloc0 (len); - - while (true) { - va_copy (my_args, args); - n = bson_vsnprintf (buf, len, format, my_args); - va_end (my_args); - - if (n > -1 && n < len) { - return buf; - } - - if (n > -1) { - len = n + 1; - } else { - len *= 2; - } - - buf = bson_realloc (buf, len); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strdup_printf -- - * - * Convenience function that formats a string according to @format - * and returns a copy of it. - * - * Returns: - * A newly created string that should be freed with bson_free(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_strdup_printf (const char *format, /* IN */ - ...) /* IN */ -{ - va_list args; - char *ret; - - BSON_ASSERT (format); - - va_start (args, format); - ret = bson_strdupv_printf (format, args); - va_end (args); - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strndup -- - * - * A portable strndup(). - * - * Returns: - * A newly allocated string that should be freed with bson_free(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_strndup (const char *str, /* IN */ - size_t n_bytes) /* IN */ -{ - char *ret; - - BSON_ASSERT (str); - - ret = bson_malloc (n_bytes + 1); - bson_strncpy (ret, str, n_bytes + 1); - - return ret; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strfreev -- - * - * Frees each string in a NULL terminated array of strings. - * This also frees the underlying array. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_strfreev (char **str) /* IN */ -{ - int i; - - if (str) { - for (i = 0; str[i]; i++) - bson_free (str[i]); - bson_free (str); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strnlen -- - * - * A portable strnlen(). - * - * Returns: - * The length of @s up to @maxlen. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -size_t -bson_strnlen (const char *s, /* IN */ - size_t maxlen) /* IN */ -{ -#ifdef BSON_HAVE_STRNLEN - return strnlen (s, maxlen); -#else - size_t i; - - for (i = 0; i < maxlen; i++) { - if (s[i] == '\0') { - return i; - } - } - - return maxlen; -#endif -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_strncpy -- - * - * A portable strncpy. - * - * Copies @src into @dst, which must be @size bytes or larger. - * The result is guaranteed to be \0 terminated. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_strncpy (char *dst, /* IN */ - const char *src, /* IN */ - size_t size) /* IN */ -{ - if (size == 0) { - return; - } - -#ifdef _MSC_VER - strncpy_s (dst, size, src, _TRUNCATE); -#else - strncpy (dst, src, size); - dst[size - 1] = '\0'; -#endif -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_vsnprintf -- - * - * A portable vsnprintf. - * - * If more than @size bytes are required (exluding the null byte), - * then @size bytes will be written to @string and the return value - * is the number of bytes required. - * - * This function will always return a NULL terminated string. - * - * Returns: - * The number of bytes required for @format excluding the null byte. - * - * Side effects: - * @str is initialized with the formatted string. - * - *-------------------------------------------------------------------------- - */ - -int -bson_vsnprintf (char *str, /* IN */ - size_t size, /* IN */ - const char *format, /* IN */ - va_list ap) /* IN */ -{ -#ifdef _MSC_VER - int r = -1; - - BSON_ASSERT (str); - - if (size == 0) { - return 0; - } - - r = _vsnprintf_s (str, size, _TRUNCATE, format, ap); - if (r == -1) { - r = _vscprintf (format, ap); - } - - str[size - 1] = '\0'; - - return r; -#else - int r; - - BSON_ASSERT (str); - - if (size == 0) { - return 0; - } - - r = vsnprintf (str, size, format, ap); - str[size - 1] = '\0'; - return r; -#endif -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_snprintf -- - * - * A portable snprintf. - * - * If @format requires more than @size bytes, then @size bytes are - * written and the result is the number of bytes required (excluding - * the null byte). - * - * This function will always return a NULL terminated string. - * - * Returns: - * The number of bytes required for @format. - * - * Side effects: - * @str is initialized. - * - *-------------------------------------------------------------------------- - */ - -int -bson_snprintf (char *str, /* IN */ - size_t size, /* IN */ - const char *format, /* IN */ - ...) -{ - int r; - va_list ap; - - BSON_ASSERT (str); - - va_start (ap, format); - r = bson_vsnprintf (str, size, format, ap); - va_end (ap); - - return r; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_ascii_strtoll -- - * - * A portable strtoll. - * - * Convert a string to a 64-bit signed integer according to the given - * @base, which must be 16, 10, or 8. Leading whitespace will be ignored. - * - * If base is 0 is passed in, the base is inferred from the string's - * leading characters. Base-16 numbers start with "0x" or "0X", base-8 - * numbers start with "0", base-10 numbers start with a digit from 1 to 9. - * - * If @e is not NULL, it will be assigned the address of the first invalid - * character of @s, or its null terminating byte if the entire string was - * valid. - * - * If an invalid value is encountered, errno will be set to EINVAL and - * zero will be returned. If the number is out of range, errno is set to - * ERANGE and LLONG_MAX or LLONG_MIN is returned. - * - * Returns: - * The result of the conversion. - * - * Side effects: - * errno will be set on error. - * - *-------------------------------------------------------------------------- - */ - -int64_t -bson_ascii_strtoll (const char *s, char **e, int base) -{ - char *tok = (char *) s; - char *digits_start; - char c; - int64_t number = 0; - int64_t sign = 1; - int64_t cutoff; - int64_t cutlim; - - errno = 0; - - if (!s) { - errno = EINVAL; - return 0; - } - - c = *tok; - - while (isspace (c)) { - c = *++tok; - } - - if (c == '-') { - sign = -1; - c = *++tok; - } else if (c == '+') { - c = *++tok; - } else if (!isdigit (c)) { - errno = EINVAL; - return 0; - } - - /* from here down, inspired by NetBSD's strtoll */ - if ((base == 0 || base == 16) && c == '0' && - (tok[1] == 'x' || tok[1] == 'X')) { - tok += 2; - c = *tok; - base = 16; - } - - if (base == 0) { - base = c == '0' ? 8 : 10; - } - - /* Cutoff is the greatest magnitude we'll be able to multiply by base without - * range error. If the current number is past cutoff and we see valid digit, - * fail. If the number is *equal* to cutoff, then the next digit must be less - * than cutlim, otherwise fail. - */ - cutoff = sign == -1 ? INT64_MIN : INT64_MAX; - cutlim = (int) (cutoff % base); - cutoff /= base; - if (sign == -1) { - if (cutlim > 0) { - cutlim -= base; - cutoff += 1; - } - cutlim = -cutlim; - } - - digits_start = tok; - - while ((c = *tok)) { - if (isdigit (c)) { - c -= '0'; - } else if (isalpha (c)) { - c -= isupper (c) ? 'A' - 10 : 'a' - 10; - } else { - /* end of number string */ - break; - } - - if (c >= base) { - break; - } - - if (sign == -1) { - if (number < cutoff || (number == cutoff && c > cutlim)) { - number = INT64_MIN; - errno = ERANGE; - break; - } else { - number *= base; - number -= c; - } - } else { - if (number > cutoff || (number == cutoff && c > cutlim)) { - number = INT64_MAX; - errno = ERANGE; - break; - } else { - number *= base; - number += c; - } - } - - tok++; - } - - /* did we parse any digits at all? */ - if (e != NULL && tok > digits_start) { - *e = tok; - } - - return number; -} - - -int -bson_strcasecmp (const char *s1, const char *s2) -{ -#ifdef BSON_OS_WIN32 - return _stricmp (s1, s2); -#else - return strcasecmp (s1, s2); -#endif -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.h deleted file mode 100644 index 690a6b7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-string.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_STRING_H -#define BSON_STRING_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include - -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -typedef struct { - char *str; - uint32_t len; - uint32_t alloc; -} bson_string_t; - - -BSON_EXPORT (bson_string_t *) -bson_string_new (const char *str); -BSON_EXPORT (char *) -bson_string_free (bson_string_t *string, bool free_segment); -BSON_EXPORT (void) -bson_string_append (bson_string_t *string, const char *str); -BSON_EXPORT (void) -bson_string_append_c (bson_string_t *string, char str); -BSON_EXPORT (void) -bson_string_append_unichar (bson_string_t *string, bson_unichar_t unichar); -BSON_EXPORT (void) -bson_string_append_printf (bson_string_t *string, const char *format, ...) - BSON_GNUC_PRINTF (2, 3); -BSON_EXPORT (void) -bson_string_truncate (bson_string_t *string, uint32_t len); -BSON_EXPORT (char *) -bson_strdup (const char *str); -BSON_EXPORT (char *) -bson_strdup_printf (const char *format, ...) BSON_GNUC_PRINTF (1, 2); -BSON_EXPORT (char *) -bson_strdupv_printf (const char *format, va_list args) BSON_GNUC_PRINTF (1, 0); -BSON_EXPORT (char *) -bson_strndup (const char *str, size_t n_bytes); -BSON_EXPORT (void) -bson_strncpy (char *dst, const char *src, size_t size); -BSON_EXPORT (int) -bson_vsnprintf (char *str, size_t size, const char *format, va_list ap) - BSON_GNUC_PRINTF (3, 0); -BSON_EXPORT (int) -bson_snprintf (char *str, size_t size, const char *format, ...) - BSON_GNUC_PRINTF (3, 4); -BSON_EXPORT (void) -bson_strfreev (char **strv); -BSON_EXPORT (size_t) -bson_strnlen (const char *s, size_t maxlen); -BSON_EXPORT (int64_t) -bson_ascii_strtoll (const char *str, char **endptr, int base); -BSON_EXPORT (int) -bson_strcasecmp (const char *s1, const char *s2); - - -BSON_END_DECLS - - -#endif /* BSON_STRING_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm-private.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm-private.h deleted file mode 100644 index 5e86b20..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm-private.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_TIMEGM_PRIVATE_H -#define BSON_TIMEGM_PRIVATE_H - - -#include "bson/bson-compat.h" -#include "bson/bson-macros.h" - - -BSON_BEGIN_DECLS - -/* avoid system-dependent struct tm definitions */ -struct bson_tm { - int64_t tm_sec; /* seconds after the minute [0-60] */ - int64_t tm_min; /* minutes after the hour [0-59] */ - int64_t tm_hour; /* hours since midnight [0-23] */ - int64_t tm_mday; /* day of the month [1-31] */ - int64_t tm_mon; /* months since January [0-11] */ - int64_t tm_year; /* years since 1900 */ - int64_t tm_wday; /* days since Sunday [0-6] */ - int64_t tm_yday; /* days since January 1 [0-365] */ - int64_t tm_isdst; /* Daylight Savings Time flag */ - int64_t tm_gmtoff; /* offset from CUT in seconds */ - char *tm_zone; /* timezone abbreviation */ -}; - -int64_t -_bson_timegm (struct bson_tm *const tmp); - -BSON_END_DECLS - - -#endif /* BSON_TIMEGM_PRIVATE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm.c deleted file mode 100644 index 20b0011..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-timegm.c +++ /dev/null @@ -1,795 +0,0 @@ -/* -** The original version of this file is in the public domain, so clarified as of -** 1996-06-05 by Arthur David Olson. -*/ - -/* -** Leap second handling from Bradley White. -** POSIX-style TZ environment variable handling from Guy Harris. -** Updated to use int64_t's instead of system-dependent definitions of int64_t -** and struct tm by A. Jesse Jiryu Davis for MongoDB, Inc. -*/ - -#include "bson/bson-compat.h" -#include "bson/bson-macros.h" -#include "bson/bson-timegm-private.h" - -#include "errno.h" -#include "string.h" -#include /* for INT64_MAX and INT64_MIN */ - -/* Unlike 's isdigit, this also works if c < 0 | c > UCHAR_MAX. */ -#define is_digit(c) ((unsigned) (c) - '0' <= 9) - -#if 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -#define ATTRIBUTE_CONST __attribute__ ((const)) -#define ATTRIBUTE_PURE __attribute__ ((__pure__)) -#define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) -#else -#define ATTRIBUTE_CONST /* empty */ -#define ATTRIBUTE_PURE /* empty */ -#define ATTRIBUTE_FORMAT(spec) /* empty */ -#endif - -#if !defined _Noreturn && \ - (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112) -#if 2 < __GNUC__ + (8 <= __GNUC_MINOR__) -#define _Noreturn __attribute__((__noreturn__)) -#else -#define _Noreturn -#endif -#endif - -#if (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901) && \ - !defined restrict -#define restrict /* empty */ -#endif - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunknown-pragmas" -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wshift-negative-value" -#endif - -/* The minimum and maximum finite time values. */ -static int64_t const time_t_min = INT64_MIN; -static int64_t const time_t_max = INT64_MAX; - -#ifdef __clang__ -#pragma clang diagnostic pop -#pragma clang diagnostic pop -#endif - -#ifndef TZ_MAX_TIMES -#define TZ_MAX_TIMES 2000 -#endif /* !defined TZ_MAX_TIMES */ - -#ifndef TZ_MAX_TYPES -/* This must be at least 17 for Europe/Samara and Europe/Vilnius. */ -#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ -#endif /* !defined TZ_MAX_TYPES */ - -#ifndef TZ_MAX_CHARS -#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ - /* (limited by what unsigned chars can hold) */ -#endif /* !defined TZ_MAX_CHARS */ - -#ifndef TZ_MAX_LEAPS -#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ -#endif /* !defined TZ_MAX_LEAPS */ - -#define SECSPERMIN 60 -#define MINSPERHOUR 60 -#define HOURSPERDAY 24 -#define DAYSPERWEEK 7 -#define DAYSPERNYEAR 365 -#define DAYSPERLYEAR 366 -#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) -#define SECSPERDAY ((int_fast32_t) SECSPERHOUR * HOURSPERDAY) -#define MONSPERYEAR 12 - -#define TM_SUNDAY 0 -#define TM_MONDAY 1 -#define TM_TUESDAY 2 -#define TM_WEDNESDAY 3 -#define TM_THURSDAY 4 -#define TM_FRIDAY 5 -#define TM_SATURDAY 6 - -#define TM_JANUARY 0 -#define TM_FEBRUARY 1 -#define TM_MARCH 2 -#define TM_APRIL 3 -#define TM_MAY 4 -#define TM_JUNE 5 -#define TM_JULY 6 -#define TM_AUGUST 7 -#define TM_SEPTEMBER 8 -#define TM_OCTOBER 9 -#define TM_NOVEMBER 10 -#define TM_DECEMBER 11 - -#define TM_YEAR_BASE 1900 - -#define EPOCH_YEAR 1970 -#define EPOCH_WDAY TM_THURSDAY - -#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) - -/* -** Since everything in isleap is modulo 400 (or a factor of 400), we know that -** isleap(y) == isleap(y % 400) -** and so -** isleap(a + b) == isleap((a + b) % 400) -** or -** isleap(a + b) == isleap(a % 400 + b % 400) -** This is true even if % means modulo rather than Fortran remainder -** (which is allowed by C89 but not C99). -** We use this to avoid addition overflow problems. -*/ - -#define isleap_sum(a, b) isleap ((a) % 400 + (b) % 400) - -#ifndef TZ_ABBR_MAX_LEN -#define TZ_ABBR_MAX_LEN 16 -#endif /* !defined TZ_ABBR_MAX_LEN */ - -#ifndef TZ_ABBR_CHAR_SET -#define TZ_ABBR_CHAR_SET \ - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 :+-._" -#endif /* !defined TZ_ABBR_CHAR_SET */ - -#ifndef TZ_ABBR_ERR_CHAR -#define TZ_ABBR_ERR_CHAR '_' -#endif /* !defined TZ_ABBR_ERR_CHAR */ - -#ifndef WILDABBR -/* -** Someone might make incorrect use of a time zone abbreviation: -** 1. They might reference tzname[0] before calling tzset (explicitly -** or implicitly). -** 2. They might reference tzname[1] before calling tzset (explicitly -** or implicitly). -** 3. They might reference tzname[1] after setting to a time zone -** in which Daylight Saving Time is never observed. -** 4. They might reference tzname[0] after setting to a time zone -** in which Standard Time is never observed. -** 5. They might reference tm.TM_ZONE after calling offtime. -** What's best to do in the above cases is open to debate; -** for now, we just set things up so that in any of the five cases -** WILDABBR is used. Another possibility: initialize tzname[0] to the -** string "tzname[0] used before set", and similarly for the other cases. -** And another: initialize tzname[0] to "ERA", with an explanation in the -** manual page of what this "time zone abbreviation" means (doing this so -** that tzname[0] has the "normal" length of three characters). -*/ -#define WILDABBR " " -#endif /* !defined WILDABBR */ - -#ifdef TM_ZONE -static const char wildabbr[] = WILDABBR; -static const char gmt[] = "GMT"; -#endif - -struct ttinfo { /* time type information */ - int_fast32_t tt_gmtoff; /* UT offset in seconds */ - int tt_isdst; /* used to set tm_isdst */ - int tt_abbrind; /* abbreviation list index */ - int tt_ttisstd; /* true if transition is std time */ - int tt_ttisgmt; /* true if transition is UT */ -}; - -struct lsinfo { /* leap second information */ - int64_t ls_trans; /* transition time */ - int_fast64_t ls_corr; /* correction to apply */ -}; - -#define BIGGEST(a, b) (((a) > (b)) ? (a) : (b)) - -#ifdef TZNAME_MAX -#define MY_TZNAME_MAX TZNAME_MAX -#endif /* defined TZNAME_MAX */ -#ifndef TZNAME_MAX -#define MY_TZNAME_MAX 255 -#endif /* !defined TZNAME_MAX */ - -struct state { - int leapcnt; - int timecnt; - int typecnt; - int charcnt; - int goback; - int goahead; - int64_t ats[TZ_MAX_TIMES]; - unsigned char types[TZ_MAX_TIMES]; - struct ttinfo ttis[TZ_MAX_TYPES]; - char chars[BIGGEST (TZ_MAX_CHARS + 1, (2 * (MY_TZNAME_MAX + 1)))]; - struct lsinfo lsis[TZ_MAX_LEAPS]; - int defaulttype; /* for early times or if no transitions */ -}; - -struct rule { - int r_type; /* type of rule--see below */ - int r_day; /* day number of rule */ - int r_week; /* week number of rule */ - int r_mon; /* month number of rule */ - int_fast32_t r_time; /* transition time of rule */ -}; - -#define JULIAN_DAY 0 /* Jn - Julian day */ -#define DAY_OF_YEAR 1 /* n - day of year */ -#define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */ - -/* -** Prototypes for static functions. -*/ - -static void -gmtload (struct state *sp); -static struct bson_tm * -gmtsub (const int64_t *timep, int_fast32_t offset, struct bson_tm *tmp); -static int64_t -increment_overflow (int64_t *number, int64_t delta); -static int64_t -leaps_thru_end_of (int64_t y) ATTRIBUTE_PURE; -static int64_t -increment_overflow32 (int_fast32_t *number, int64_t delta); -static int64_t -normalize_overflow32 (int_fast32_t *tensptr, int64_t *unitsptr, int64_t base); -static int64_t -normalize_overflow (int64_t *tensptr, int64_t *unitsptr, int64_t base); -static int64_t -time1 (struct bson_tm *tmp, - struct bson_tm *(*funcp) (const int64_t *, int_fast32_t, struct bson_tm *), - int_fast32_t offset); -static int64_t -time2 (struct bson_tm *tmp, - struct bson_tm *(*funcp) (const int64_t *, int_fast32_t, struct bson_tm *), - int_fast32_t offset, - int64_t *okayp); -static int64_t -time2sub (struct bson_tm *tmp, - struct bson_tm *(*funcp) (const int64_t *, int_fast32_t, struct bson_tm *), - int_fast32_t offset, - int64_t *okayp, - int64_t do_norm_secs); -static struct bson_tm * -timesub (const int64_t *timep, - int_fast32_t offset, - const struct state *sp, - struct bson_tm *tmp); -static int64_t -tmcomp (const struct bson_tm *atmp, const struct bson_tm *btmp); - -static struct state gmtmem; -#define gmtptr (&gmtmem) - -static int gmt_is_set; - -static const int mon_lengths[2][MONSPERYEAR] = { - {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, - {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; - -static const int year_lengths[2] = {DAYSPERNYEAR, DAYSPERLYEAR}; - -static void -gmtload (struct state *const sp) -{ - memset (sp, 0, sizeof (struct state)); - sp->typecnt = 1; - sp->charcnt = 4; - sp->chars[0] = 'G'; - sp->chars[1] = 'M'; - sp->chars[2] = 'T'; -} - -/* -** gmtsub is to gmtime as localsub is to localtime. -*/ - -static struct bson_tm * -gmtsub (const int64_t *const timep, - const int_fast32_t offset, - struct bson_tm *const tmp) -{ - register struct bson_tm *result; - - if (!gmt_is_set) { - gmt_is_set = true; - gmtload (gmtptr); - } - result = timesub (timep, offset, gmtptr, tmp); -#ifdef TM_ZONE - /* - ** Could get fancy here and deliver something such as - ** "UT+xxxx" or "UT-xxxx" if offset is non-zero, - ** but this is no time for a treasure hunt. - */ - tmp->TM_ZONE = offset ? wildabbr : gmtptr ? gmtptr->chars : gmt; -#endif /* defined TM_ZONE */ - return result; -} - -/* -** Return the number of leap years through the end of the given year -** where, to make the math easy, the answer for year zero is defined as zero. -*/ - -static int64_t -leaps_thru_end_of (register const int64_t y) -{ - return (y >= 0) ? (y / 4 - y / 100 + y / 400) - : -(leaps_thru_end_of (-(y + 1)) + 1); -} - -static struct bson_tm * -timesub (const int64_t *const timep, - const int_fast32_t offset, - register const struct state *const sp, - register struct bson_tm *const tmp) -{ - register const struct lsinfo *lp; - register int64_t tdays; - register int64_t idays; /* unsigned would be so 2003 */ - register int_fast64_t rem; - int64_t y; - register const int *ip; - register int_fast64_t corr; - register int64_t hit; - register int64_t i; - - corr = 0; - hit = 0; - i = (sp == NULL) ? 0 : sp->leapcnt; - while (--i >= 0) { - lp = &sp->lsis[i]; - if (*timep >= lp->ls_trans) { - if (*timep == lp->ls_trans) { - hit = ((i == 0 && lp->ls_corr > 0) || - lp->ls_corr > sp->lsis[i - 1].ls_corr); - if (hit) - while (i > 0 && - sp->lsis[i].ls_trans == sp->lsis[i - 1].ls_trans + 1 && - sp->lsis[i].ls_corr == sp->lsis[i - 1].ls_corr + 1) { - ++hit; - --i; - } - } - corr = lp->ls_corr; - break; - } - } - y = EPOCH_YEAR; - tdays = *timep / SECSPERDAY; - rem = *timep - tdays * SECSPERDAY; - while (tdays < 0 || tdays >= year_lengths[isleap (y)]) { - int64_t newy; - register int64_t tdelta; - register int64_t idelta; - register int64_t leapdays; - - tdelta = tdays / DAYSPERLYEAR; - idelta = tdelta; - if (idelta == 0) - idelta = (tdays < 0) ? -1 : 1; - newy = y; - if (increment_overflow (&newy, idelta)) - return NULL; - leapdays = leaps_thru_end_of (newy - 1) - leaps_thru_end_of (y - 1); - tdays -= ((int64_t) newy - y) * DAYSPERNYEAR; - tdays -= leapdays; - y = newy; - } - { - register int_fast32_t seconds; - - seconds = (int_fast32_t) (tdays * SECSPERDAY); - tdays = seconds / SECSPERDAY; - rem += seconds - tdays * SECSPERDAY; - } - /* - ** Given the range, we can now fearlessly cast... - */ - idays = (int64_t) tdays; - rem += offset - corr; - while (rem < 0) { - rem += SECSPERDAY; - --idays; - } - while (rem >= SECSPERDAY) { - rem -= SECSPERDAY; - ++idays; - } - while (idays < 0) { - if (increment_overflow (&y, -1)) - return NULL; - idays += year_lengths[isleap (y)]; - } - while (idays >= year_lengths[isleap (y)]) { - idays -= year_lengths[isleap (y)]; - if (increment_overflow (&y, 1)) - return NULL; - } - tmp->tm_year = y; - if (increment_overflow (&tmp->tm_year, -TM_YEAR_BASE)) - return NULL; - tmp->tm_yday = idays; - /* - ** The "extra" mods below avoid overflow problems. - */ - tmp->tm_wday = - EPOCH_WDAY + - ((y - EPOCH_YEAR) % DAYSPERWEEK) * (DAYSPERNYEAR % DAYSPERWEEK) + - leaps_thru_end_of (y - 1) - leaps_thru_end_of (EPOCH_YEAR - 1) + idays; - tmp->tm_wday %= DAYSPERWEEK; - if (tmp->tm_wday < 0) - tmp->tm_wday += DAYSPERWEEK; - tmp->tm_hour = (int64_t) (rem / SECSPERHOUR); - rem %= SECSPERHOUR; - tmp->tm_min = (int64_t) (rem / SECSPERMIN); - /* - ** A positive leap second requires a special - ** representation. This uses "... ??:59:60" et seq. - */ - tmp->tm_sec = (int64_t) (rem % SECSPERMIN) + hit; - ip = mon_lengths[isleap (y)]; - for (tmp->tm_mon = 0; idays >= ip[tmp->tm_mon]; ++(tmp->tm_mon)) - idays -= ip[tmp->tm_mon]; - tmp->tm_mday = (int64_t) (idays + 1); - tmp->tm_isdst = 0; -#ifdef TM_GMTOFF - tmp->TM_GMTOFF = offset; -#endif /* defined TM_GMTOFF */ - return tmp; -} - -/* -** Adapted from code provided by Robert Elz, who writes: -** The "best" way to do mktime I think is based on an idea of Bob -** Kridle's (so its said...) from a long time ago. -** It does a binary search of the int64_t space. Since int64_t's are -** just 32 bits, its a max of 32 iterations (even at 64 bits it -** would still be very reasonable). -*/ - -#ifndef WRONG -#define WRONG (-1) -#endif /* !defined WRONG */ - -/* -** Normalize logic courtesy Paul Eggert. -*/ - -static int64_t -increment_overflow (int64_t *const ip, int64_t j) -{ - register int64_t const i = *ip; - - /* - ** If i >= 0 there can only be overflow if i + j > INT_MAX - ** or if j > INT_MAX - i; given i >= 0, INT_MAX - i cannot overflow. - ** If i < 0 there can only be overflow if i + j < INT_MIN - ** or if j < INT_MIN - i; given i < 0, INT_MIN - i cannot overflow. - */ - if ((i >= 0) ? (j > INT_MAX - i) : (j < INT_MIN - i)) - return true; - *ip += j; - return false; -} - -static int64_t -increment_overflow32 (int_fast32_t *const lp, int64_t const m) -{ - register int_fast32_t const l = *lp; - - if ((l >= 0) ? (m > INT_FAST32_MAX - l) : (m < INT_FAST32_MIN - l)) - return true; - *lp += m; - return false; -} - -static int64_t -normalize_overflow (int64_t *const tensptr, int64_t *const unitsptr, const int64_t base) -{ - register int64_t tensdelta; - - tensdelta = - (*unitsptr >= 0) ? (*unitsptr / base) : (-1 - (-1 - *unitsptr) / base); - *unitsptr -= tensdelta * base; - return increment_overflow (tensptr, tensdelta); -} - -static int64_t -normalize_overflow32 (int_fast32_t *const tensptr, - int64_t *const unitsptr, - const int64_t base) -{ - register int64_t tensdelta; - - tensdelta = - (*unitsptr >= 0) ? (*unitsptr / base) : (-1 - (-1 - *unitsptr) / base); - *unitsptr -= tensdelta * base; - return increment_overflow32 (tensptr, tensdelta); -} - -static int64_t -tmcomp (register const struct bson_tm *const atmp, - register const struct bson_tm *const btmp) -{ - register int64_t result; - - if (atmp->tm_year != btmp->tm_year) - return atmp->tm_year < btmp->tm_year ? -1 : 1; - if ((result = (atmp->tm_mon - btmp->tm_mon)) == 0 && - (result = (atmp->tm_mday - btmp->tm_mday)) == 0 && - (result = (atmp->tm_hour - btmp->tm_hour)) == 0 && - (result = (atmp->tm_min - btmp->tm_min)) == 0) - result = atmp->tm_sec - btmp->tm_sec; - return result; -} - -static int64_t -time2sub (struct bson_tm *const tmp, - struct bson_tm *(*const funcp) (const int64_t *, int_fast32_t, struct bson_tm *), - const int_fast32_t offset, - int64_t *const okayp, - const int64_t do_norm_secs) -{ - register const struct state *sp; - register int64_t dir; - register int64_t i, j; - register int64_t saved_seconds; - register int_fast32_t li; - register int64_t lo; - register int64_t hi; - int_fast32_t y; - int64_t newt; - int64_t t; - struct bson_tm yourtm, mytm; - - *okayp = false; - yourtm = *tmp; - if (do_norm_secs) { - if (normalize_overflow (&yourtm.tm_min, &yourtm.tm_sec, SECSPERMIN)) - return WRONG; - } - if (normalize_overflow (&yourtm.tm_hour, &yourtm.tm_min, MINSPERHOUR)) - return WRONG; - if (normalize_overflow (&yourtm.tm_mday, &yourtm.tm_hour, HOURSPERDAY)) - return WRONG; - y = (int_fast32_t) yourtm.tm_year; - if (normalize_overflow32 (&y, &yourtm.tm_mon, MONSPERYEAR)) - return WRONG; - /* - ** Turn y into an actual year number for now. - ** It is converted back to an offset from TM_YEAR_BASE later. - */ - if (increment_overflow32 (&y, TM_YEAR_BASE)) - return WRONG; - while (yourtm.tm_mday <= 0) { - if (increment_overflow32 (&y, -1)) - return WRONG; - li = y + (1 < yourtm.tm_mon); - yourtm.tm_mday += year_lengths[isleap (li)]; - } - while (yourtm.tm_mday > DAYSPERLYEAR) { - li = y + (1 < yourtm.tm_mon); - yourtm.tm_mday -= year_lengths[isleap (li)]; - if (increment_overflow32 (&y, 1)) - return WRONG; - } - for (;;) { - i = mon_lengths[isleap (y)][yourtm.tm_mon]; - if (yourtm.tm_mday <= i) - break; - yourtm.tm_mday -= i; - if (++yourtm.tm_mon >= MONSPERYEAR) { - yourtm.tm_mon = 0; - if (increment_overflow32 (&y, 1)) - return WRONG; - } - } - if (increment_overflow32 (&y, -TM_YEAR_BASE)) - return WRONG; - yourtm.tm_year = y; - if (yourtm.tm_year != y) - return WRONG; - if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN) - saved_seconds = 0; - else if (y + TM_YEAR_BASE < EPOCH_YEAR) { - /* - ** We can't set tm_sec to 0, because that might push the - ** time below the minimum representable time. - ** Set tm_sec to 59 instead. - ** This assumes that the minimum representable time is - ** not in the same minute that a leap second was deleted from, - ** which is a safer assumption than using 58 would be. - */ - if (increment_overflow (&yourtm.tm_sec, 1 - SECSPERMIN)) - return WRONG; - saved_seconds = yourtm.tm_sec; - yourtm.tm_sec = SECSPERMIN - 1; - } else { - saved_seconds = yourtm.tm_sec; - yourtm.tm_sec = 0; - } - /* - ** Do a binary search. - */ - lo = INT64_MIN; - hi = INT64_MAX; - - for (;;) { - t = lo / 2 + hi / 2; - if (t < lo) - t = lo; - else if (t > hi) - t = hi; - if ((*funcp) (&t, offset, &mytm) == NULL) { - /* - ** Assume that t is too extreme to be represented in - ** a struct bson_tm; arrange things so that it is less - ** extreme on the next pass. - */ - dir = (t > 0) ? 1 : -1; - } else - dir = tmcomp (&mytm, &yourtm); - if (dir != 0) { - if (t == lo) { - if (t == time_t_max) - return WRONG; - ++t; - ++lo; - } else if (t == hi) { - if (t == time_t_min) - return WRONG; - --t; - --hi; - } - if (lo > hi) - return WRONG; - if (dir > 0) - hi = t; - else - lo = t; - continue; - } - if (yourtm.tm_isdst < 0 || mytm.tm_isdst == yourtm.tm_isdst) - break; - /* - ** Right time, wrong type. - ** Hunt for right time, right type. - ** It's okay to guess wrong since the guess - ** gets checked. - */ - sp = (const struct state *) gmtptr; - if (sp == NULL) - return WRONG; - for (i = sp->typecnt - 1; i >= 0; --i) { - if (sp->ttis[i].tt_isdst != yourtm.tm_isdst) - continue; - for (j = sp->typecnt - 1; j >= 0; --j) { - if (sp->ttis[j].tt_isdst == yourtm.tm_isdst) - continue; - newt = t + sp->ttis[j].tt_gmtoff - sp->ttis[i].tt_gmtoff; - if ((*funcp) (&newt, offset, &mytm) == NULL) - continue; - if (tmcomp (&mytm, &yourtm) != 0) - continue; - if (mytm.tm_isdst != yourtm.tm_isdst) - continue; - /* - ** We have a match. - */ - t = newt; - goto label; - } - } - return WRONG; - } -label: - newt = t + saved_seconds; - if ((newt < t) != (saved_seconds < 0)) - return WRONG; - t = newt; - if ((*funcp) (&t, offset, tmp)) - *okayp = true; - return t; -} - -static int64_t -time2 (struct bson_tm *const tmp, - struct bson_tm *(*const funcp) (const int64_t *, int_fast32_t, struct bson_tm *), - const int_fast32_t offset, - int64_t *const okayp) -{ - int64_t t; - - /* - ** First try without normalization of seconds - ** (in case tm_sec contains a value associated with a leap second). - ** If that fails, try with normalization of seconds. - */ - t = time2sub (tmp, funcp, offset, okayp, false); - return *okayp ? t : time2sub (tmp, funcp, offset, okayp, true); -} - -static int64_t -time1 (struct bson_tm *const tmp, - struct bson_tm *(*const funcp) (const int64_t *, int_fast32_t, struct bson_tm *), - const int_fast32_t offset) -{ - register int64_t t; - register const struct state *sp; - register int64_t samei, otheri; - register int64_t sameind, otherind; - register int64_t i; - register int64_t nseen; - int64_t seen[TZ_MAX_TYPES]; - int64_t types[TZ_MAX_TYPES]; - int64_t okay; - - if (tmp == NULL) { - errno = EINVAL; - return WRONG; - } - if (tmp->tm_isdst > 1) - tmp->tm_isdst = 1; - t = time2 (tmp, funcp, offset, &okay); - if (okay) - return t; - if (tmp->tm_isdst < 0) -#ifdef PCTS - /* - ** POSIX Conformance Test Suite code courtesy Grant Sullivan. - */ - tmp->tm_isdst = 0; /* reset to std and try again */ -#else - return t; -#endif /* !defined PCTS */ - /* - ** We're supposed to assume that somebody took a time of one type - ** and did some math on it that yielded a "struct tm" that's bad. - ** We try to divine the type they started from and adjust to the - ** type they need. - */ - sp = (const struct state *) gmtptr; - if (sp == NULL) - return WRONG; - for (i = 0; i < sp->typecnt; ++i) - seen[i] = false; - nseen = 0; - for (i = sp->timecnt - 1; i >= 0; --i) - if (!seen[sp->types[i]]) { - seen[sp->types[i]] = true; - types[nseen++] = sp->types[i]; - } - for (sameind = 0; sameind < nseen; ++sameind) { - samei = types[sameind]; - if (sp->ttis[samei].tt_isdst != tmp->tm_isdst) - continue; - for (otherind = 0; otherind < nseen; ++otherind) { - otheri = types[otherind]; - if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst) - continue; - tmp->tm_sec += sp->ttis[otheri].tt_gmtoff - sp->ttis[samei].tt_gmtoff; - tmp->tm_isdst = !tmp->tm_isdst; - t = time2 (tmp, funcp, offset, &okay); - if (okay) - return t; - tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff - sp->ttis[samei].tt_gmtoff; - tmp->tm_isdst = !tmp->tm_isdst; - } - } - return WRONG; -} - -int64_t -_bson_timegm (struct bson_tm *const tmp) -{ - if (tmp != NULL) - tmp->tm_isdst = 0; - return time1 (tmp, gmtsub, 0L); -} - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-types.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-types.h deleted file mode 100644 index 7582421..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-types.h +++ /dev/null @@ -1,567 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_TYPES_H -#define BSON_TYPES_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include -#include - -#include "bson/bson-macros.h" -#include "bson/bson-config.h" -#include "bson/bson-compat.h" -#include "bson/bson-endian.h" - -BSON_BEGIN_DECLS - - -/* - *-------------------------------------------------------------------------- - * - * bson_unichar_t -- - * - * bson_unichar_t provides an unsigned 32-bit type for containing - * unicode characters. When iterating UTF-8 sequences, this should - * be used to avoid losing the high-bits of non-ascii characters. - * - * See also: - * bson_string_append_unichar() - * - *-------------------------------------------------------------------------- - */ - -typedef uint32_t bson_unichar_t; - - -/** - * bson_context_flags_t: - * - * This enumeration is used to configure a bson_context_t. - * - * %BSON_CONTEXT_NONE: Use default options. - * %BSON_CONTEXT_THREAD_SAFE: Context will be called from multiple threads. - * %BSON_CONTEXT_DISABLE_PID_CACHE: Call getpid() instead of caching the - * result of getpid() when initializing the context. - * %BSON_CONTEXT_DISABLE_HOST_CACHE: Call gethostname() instead of caching the - * result of gethostname() when initializing the context. - */ -typedef enum { - BSON_CONTEXT_NONE = 0, - BSON_CONTEXT_THREAD_SAFE = (1 << 0), - BSON_CONTEXT_DISABLE_HOST_CACHE = (1 << 1), - BSON_CONTEXT_DISABLE_PID_CACHE = (1 << 2), -#ifdef BSON_HAVE_SYSCALL_TID - BSON_CONTEXT_USE_TASK_ID = (1 << 3), -#endif -} bson_context_flags_t; - - -/** - * bson_context_t: - * - * This structure manages context for the bson library. It handles - * configuration for thread-safety and other performance related requirements. - * Consumers will create a context and may use multiple under a variety of - * situations. - * - * If your program calls fork(), you should initialize a new bson_context_t - * using bson_context_init(). - * - * If you are using threading, it is suggested that you use a bson_context_t - * per thread for best performance. Alternatively, you can initialize the - * bson_context_t with BSON_CONTEXT_THREAD_SAFE, although a performance penalty - * will be incurred. - * - * Many functions will require that you provide a bson_context_t such as OID - * generation. - * - * This structure is opaque in that you cannot see the contents of the - * structure. However, it is stack allocatable in that enough padding is - * provided in _bson_context_t to hold the structure. - */ -typedef struct _bson_context_t bson_context_t; - - -/** - * bson_t: - * - * This structure manages a buffer whose contents are a properly formatted - * BSON document. You may perform various transforms on the BSON documents. - * Additionally, it can be iterated over using bson_iter_t. - * - * See bson_iter_init() for iterating the contents of a bson_t. - * - * When building a bson_t structure using the various append functions, - * memory allocations may occur. That is performed using power of two - * allocations and realloc(). - * - * See http://bsonspec.org for the BSON document spec. - * - * This structure is meant to fit in two sequential 64-byte cachelines. - */ -#ifdef BSON_MEMCHECK -BSON_ALIGNED_BEGIN (128) -typedef struct _bson_t { - uint32_t flags; /* Internal flags for the bson_t. */ - uint32_t len; /* Length of BSON data. */ - char *canary; /* For valgrind check */ - uint8_t padding[120 - sizeof (char*)]; -} bson_t BSON_ALIGNED_END (128); -#else -BSON_ALIGNED_BEGIN (128) -typedef struct _bson_t { - uint32_t flags; /* Internal flags for the bson_t. */ - uint32_t len; /* Length of BSON data. */ - uint8_t padding[120]; /* Padding for stack allocation. */ -} bson_t BSON_ALIGNED_END (128); -#endif - - -/** - * BSON_INITIALIZER: - * - * This macro can be used to initialize a #bson_t structure on the stack - * without calling bson_init(). - * - * |[ - * bson_t b = BSON_INITIALIZER; - * ]| - */ -#ifdef BSON_MEMCHECK -#define BSON_INITIALIZER \ - { \ - 3, 5, \ - bson_malloc (1), \ - { \ - 5 \ - }, \ - } -#else -#define BSON_INITIALIZER \ - { \ - 3, 5, \ - { \ - 5 \ - } \ - } -#endif - - -BSON_STATIC_ASSERT2 (bson_t, sizeof (bson_t) == 128); - - -/** - * bson_oid_t: - * - * This structure contains the binary form of a BSON Object Id as specified - * on http://bsonspec.org. If you would like the bson_oid_t in string form - * see bson_oid_to_string() or bson_oid_to_string_r(). - */ -typedef struct { - uint8_t bytes[12]; -} bson_oid_t; - -BSON_STATIC_ASSERT2 (oid_t, sizeof (bson_oid_t) == 12); - -/** - * bson_decimal128_t: - * - * @high The high-order bytes of the decimal128. This field contains sign, - * combination bits, exponent, and part of the coefficient continuation. - * @low The low-order bytes of the decimal128. This field contains the second - * part of the coefficient continuation. - * - * This structure is a boxed type containing the value for the BSON decimal128 - * type. The structure stores the 128 bits such that they correspond to the - * native format for the IEEE decimal128 type, if it is implemented. - **/ -typedef struct { -#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN - uint64_t low; - uint64_t high; -#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN - uint64_t high; - uint64_t low; -#endif -} bson_decimal128_t; - - -/** - * bson_validate_flags_t: - * - * This enumeration is used for validation of BSON documents. It allows - * selective control on what you wish to validate. - * - * %BSON_VALIDATE_NONE: No additional validation occurs. - * %BSON_VALIDATE_UTF8: Check that strings are valid UTF-8. - * %BSON_VALIDATE_DOLLAR_KEYS: Check that keys do not start with $. - * %BSON_VALIDATE_DOT_KEYS: Check that keys do not contain a period. - * %BSON_VALIDATE_UTF8_ALLOW_NULL: Allow NUL bytes in UTF-8 text. - * %BSON_VALIDATE_EMPTY_KEYS: Prohibit zero-length field names - */ -typedef enum { - BSON_VALIDATE_NONE = 0, - BSON_VALIDATE_UTF8 = (1 << 0), - BSON_VALIDATE_DOLLAR_KEYS = (1 << 1), - BSON_VALIDATE_DOT_KEYS = (1 << 2), - BSON_VALIDATE_UTF8_ALLOW_NULL = (1 << 3), - BSON_VALIDATE_EMPTY_KEYS = (1 << 4), -} bson_validate_flags_t; - - -/** - * bson_type_t: - * - * This enumeration contains all of the possible types within a BSON document. - * Use bson_iter_type() to fetch the type of a field while iterating over it. - */ -typedef enum { - BSON_TYPE_EOD = 0x00, - BSON_TYPE_DOUBLE = 0x01, - BSON_TYPE_UTF8 = 0x02, - BSON_TYPE_DOCUMENT = 0x03, - BSON_TYPE_ARRAY = 0x04, - BSON_TYPE_BINARY = 0x05, - BSON_TYPE_UNDEFINED = 0x06, - BSON_TYPE_OID = 0x07, - BSON_TYPE_BOOL = 0x08, - BSON_TYPE_DATE_TIME = 0x09, - BSON_TYPE_NULL = 0x0A, - BSON_TYPE_REGEX = 0x0B, - BSON_TYPE_DBPOINTER = 0x0C, - BSON_TYPE_CODE = 0x0D, - BSON_TYPE_SYMBOL = 0x0E, - BSON_TYPE_CODEWSCOPE = 0x0F, - BSON_TYPE_INT32 = 0x10, - BSON_TYPE_TIMESTAMP = 0x11, - BSON_TYPE_INT64 = 0x12, - BSON_TYPE_DECIMAL128 = 0x13, - BSON_TYPE_MAXKEY = 0x7F, - BSON_TYPE_MINKEY = 0xFF, -} bson_type_t; - - -/** - * bson_subtype_t: - * - * This enumeration contains the various subtypes that may be used in a binary - * field. See http://bsonspec.org for more information. - */ -typedef enum { - BSON_SUBTYPE_BINARY = 0x00, - BSON_SUBTYPE_FUNCTION = 0x01, - BSON_SUBTYPE_BINARY_DEPRECATED = 0x02, - BSON_SUBTYPE_UUID_DEPRECATED = 0x03, - BSON_SUBTYPE_UUID = 0x04, - BSON_SUBTYPE_MD5 = 0x05, - BSON_SUBTYPE_USER = 0x80, -} bson_subtype_t; - - -/* - *-------------------------------------------------------------------------- - * - * bson_value_t -- - * - * A boxed type to contain various bson_type_t types. - * - * See also: - * bson_value_copy() - * bson_value_destroy() - * - *-------------------------------------------------------------------------- - */ - -BSON_ALIGNED_BEGIN (8) -typedef struct _bson_value_t { - bson_type_t value_type; - int32_t padding; - union { - bson_oid_t v_oid; - int64_t v_int64; - int32_t v_int32; - int8_t v_int8; - double v_double; - bool v_bool; - int64_t v_datetime; - struct { - uint32_t timestamp; - uint32_t increment; - } v_timestamp; - struct { - char *str; - uint32_t len; - } v_utf8; - struct { - uint8_t *data; - uint32_t data_len; - } v_doc; - struct { - uint8_t *data; - uint32_t data_len; - bson_subtype_t subtype; - } v_binary; - struct { - char *regex; - char *options; - } v_regex; - struct { - char *collection; - uint32_t collection_len; - bson_oid_t oid; - } v_dbpointer; - struct { - char *code; - uint32_t code_len; - } v_code; - struct { - char *code; - uint8_t *scope_data; - uint32_t code_len; - uint32_t scope_len; - } v_codewscope; - struct { - char *symbol; - uint32_t len; - } v_symbol; - bson_decimal128_t v_decimal128; - } value; -} bson_value_t BSON_ALIGNED_END (8); - - -/** - * bson_iter_t: - * - * This structure manages iteration over a bson_t structure. It keeps track - * of the location of the current key and value within the buffer. Using the - * various functions to get the value of the iter will read from these - * locations. - * - * This structure is safe to discard on the stack. No cleanup is necessary - * after using it. - */ -BSON_ALIGNED_BEGIN (128) -typedef struct { - const uint8_t *raw; /* The raw buffer being iterated. */ - uint32_t len; /* The length of raw. */ - uint32_t off; /* The offset within the buffer. */ - uint32_t type; /* The offset of the type byte. */ - uint32_t key; /* The offset of the key byte. */ - uint32_t d1; /* The offset of the first data byte. */ - uint32_t d2; /* The offset of the second data byte. */ - uint32_t d3; /* The offset of the third data byte. */ - uint32_t d4; /* The offset of the fourth data byte. */ - uint32_t next_off; /* The offset of the next field. */ - uint32_t err_off; /* The offset of the error. */ - bson_value_t value; /* Internal value for various state. */ -} bson_iter_t BSON_ALIGNED_END (128); - - -/** - * bson_reader_t: - * - * This structure is used to iterate over a sequence of BSON documents. It - * allows for them to be iterated with the possibility of no additional - * memory allocations under certain circumstances such as reading from an - * incoming mongo packet. - */ - -BSON_ALIGNED_BEGIN (BSON_ALIGN_OF_PTR) -typedef struct { - uint32_t type; - /*< private >*/ -} bson_reader_t BSON_ALIGNED_END (BSON_ALIGN_OF_PTR); - - -/** - * bson_visitor_t: - * - * This structure contains a series of pointers that can be executed for - * each field of a BSON document based on the field type. - * - * For example, if an int32 field is found, visit_int32 will be called. - * - * When visiting each field using bson_iter_visit_all(), you may provide a - * data pointer that will be provided with each callback. This might be useful - * if you are marshaling to another language. - * - * You may pre-maturely stop the visitation of fields by returning true in your - * visitor. Returning false will continue visitation to further fields. - */ -BSON_ALIGNED_BEGIN (8) -typedef struct { - /* run before / after descending into a document */ - bool (*visit_before) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_after) (const bson_iter_t *iter, const char *key, void *data); - /* corrupt BSON, or unsupported type and visit_unsupported_type not set */ - void (*visit_corrupt) (const bson_iter_t *iter, void *data); - /* normal bson field callbacks */ - bool (*visit_double) (const bson_iter_t *iter, - const char *key, - double v_double, - void *data); - bool (*visit_utf8) (const bson_iter_t *iter, - const char *key, - size_t v_utf8_len, - const char *v_utf8, - void *data); - bool (*visit_document) (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data); - bool (*visit_array) (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data); - bool (*visit_binary) (const bson_iter_t *iter, - const char *key, - bson_subtype_t v_subtype, - size_t v_binary_len, - const uint8_t *v_binary, - void *data); - /* normal field with deprecated "Undefined" BSON type */ - bool (*visit_undefined) (const bson_iter_t *iter, - const char *key, - void *data); - bool (*visit_oid) (const bson_iter_t *iter, - const char *key, - const bson_oid_t *v_oid, - void *data); - bool (*visit_bool) (const bson_iter_t *iter, - const char *key, - bool v_bool, - void *data); - bool (*visit_date_time) (const bson_iter_t *iter, - const char *key, - int64_t msec_since_epoch, - void *data); - bool (*visit_null) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_regex) (const bson_iter_t *iter, - const char *key, - const char *v_regex, - const char *v_options, - void *data); - bool (*visit_dbpointer) (const bson_iter_t *iter, - const char *key, - size_t v_collection_len, - const char *v_collection, - const bson_oid_t *v_oid, - void *data); - bool (*visit_code) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - void *data); - bool (*visit_symbol) (const bson_iter_t *iter, - const char *key, - size_t v_symbol_len, - const char *v_symbol, - void *data); - bool (*visit_codewscope) (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - const bson_t *v_scope, - void *data); - bool (*visit_int32) (const bson_iter_t *iter, - const char *key, - int32_t v_int32, - void *data); - bool (*visit_timestamp) (const bson_iter_t *iter, - const char *key, - uint32_t v_timestamp, - uint32_t v_increment, - void *data); - bool (*visit_int64) (const bson_iter_t *iter, - const char *key, - int64_t v_int64, - void *data); - bool (*visit_maxkey) (const bson_iter_t *iter, const char *key, void *data); - bool (*visit_minkey) (const bson_iter_t *iter, const char *key, void *data); - /* if set, called instead of visit_corrupt when an apparently valid BSON - * includes an unrecognized field type (reading future version of BSON) */ - void (*visit_unsupported_type) (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data); - bool (*visit_decimal128) (const bson_iter_t *iter, - const char *key, - const bson_decimal128_t *v_decimal128, - void *data); - - void *padding[7]; -} bson_visitor_t BSON_ALIGNED_END (8); - -#define BSON_ERROR_BUFFER_SIZE 504 - -BSON_ALIGNED_BEGIN (8) -typedef struct _bson_error_t { - uint32_t domain; - uint32_t code; - char message[BSON_ERROR_BUFFER_SIZE]; -} bson_error_t BSON_ALIGNED_END (8); - - -BSON_STATIC_ASSERT2 (error_t, sizeof (bson_error_t) == 512); - - -/** - * bson_next_power_of_two: - * @v: A 32-bit unsigned integer of required bytes. - * - * Determines the next larger power of two for the value of @v - * in a constant number of operations. - * - * It is up to the caller to guarantee this will not overflow. - * - * Returns: The next power of 2 from @v. - */ -static BSON_INLINE size_t -bson_next_power_of_two (size_t v) -{ - v--; - v |= v >> 1; - v |= v >> 2; - v |= v >> 4; - v |= v >> 8; - v |= v >> 16; -#if BSON_WORD_SIZE == 64 - v |= v >> 32; -#endif - v++; - - return v; -} - - -static BSON_INLINE bool -bson_is_power_of_two (uint32_t v) -{ - return ((v != 0) && ((v & (v - 1)) == 0)); -} - - -BSON_END_DECLS - - -#endif /* BSON_TYPES_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.c deleted file mode 100644 index b9ace45..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.c +++ /dev/null @@ -1,459 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "bson/bson-memory.h" -#include "bson/bson-string.h" -#include "bson/bson-utf8.h" - - -/* - *-------------------------------------------------------------------------- - * - * _bson_utf8_get_sequence -- - * - * Determine the sequence length of the first UTF-8 character in - * @utf8. The sequence length is stored in @seq_length and the mask - * for the first character is stored in @first_mask. - * - * Returns: - * None. - * - * Side effects: - * @seq_length is set. - * @first_mask is set. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE void -_bson_utf8_get_sequence (const char *utf8, /* IN */ - uint8_t *seq_length, /* OUT */ - uint8_t *first_mask) /* OUT */ -{ - unsigned char c = *(const unsigned char *) utf8; - uint8_t m; - uint8_t n; - - /* - * See the following[1] for a description of what the given multi-byte - * sequences will be based on the bits set of the first byte. We also need - * to mask the first byte based on that. All subsequent bytes are masked - * against 0x3F. - * - * [1] http://www.joelonsoftware.com/articles/Unicode.html - */ - - if ((c & 0x80) == 0) { - n = 1; - m = 0x7F; - } else if ((c & 0xE0) == 0xC0) { - n = 2; - m = 0x1F; - } else if ((c & 0xF0) == 0xE0) { - n = 3; - m = 0x0F; - } else if ((c & 0xF8) == 0xF0) { - n = 4; - m = 0x07; - } else { - n = 0; - m = 0; - } - - *seq_length = n; - *first_mask = m; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_utf8_validate -- - * - * Validates that @utf8 is a valid UTF-8 string. Note that we only - * support UTF-8 characters which have sequence length less than or equal - * to 4 bytes (RFC 3629). - * - * If @allow_null is true, then \0 is allowed within @utf8_len bytes - * of @utf8. Generally, this is bad practice since the main point of - * UTF-8 strings is that they can be used with strlen() and friends. - * However, some languages such as Python can send UTF-8 encoded - * strings with NUL's in them. - * - * Parameters: - * @utf8: A UTF-8 encoded string. - * @utf8_len: The length of @utf8 in bytes. - * @allow_null: If \0 is allowed within @utf8, exclusing trailing \0. - * - * Returns: - * true if @utf8 is valid UTF-8. otherwise false. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_utf8_validate (const char *utf8, /* IN */ - size_t utf8_len, /* IN */ - bool allow_null) /* IN */ -{ - bson_unichar_t c; - uint8_t first_mask; - uint8_t seq_length; - unsigned i; - unsigned j; - - BSON_ASSERT (utf8); - - for (i = 0; i < utf8_len; i += seq_length) { - _bson_utf8_get_sequence (&utf8[i], &seq_length, &first_mask); - - /* - * Ensure we have a valid multi-byte sequence length. - */ - if (!seq_length) { - return false; - } - - /* - * Ensure we have enough bytes left. - */ - if ((utf8_len - i) < seq_length) { - return false; - } - - /* - * Also calculate the next char as a unichar so we can - * check code ranges for non-shortest form. - */ - c = utf8[i] & first_mask; - - /* - * Check the high-bits for each additional sequence byte. - */ - for (j = i + 1; j < (i + seq_length); j++) { - c = (c << 6) | (utf8[j] & 0x3F); - if ((utf8[j] & 0xC0) != 0x80) { - return false; - } - } - - /* - * Check for NULL bytes afterwards. - * - * Hint: if you want to optimize this function, starting here to do - * this in the same pass as the data above would probably be a good - * idea. You would add a branch into the inner loop, but save possibly - * on cache-line bouncing on larger strings. Just a thought. - */ - if (!allow_null) { - for (j = 0; j < seq_length; j++) { - if (((i + j) > utf8_len) || !utf8[i + j]) { - return false; - } - } - } - - /* - * Code point won't fit in utf-16, not allowed. - */ - if (c > 0x0010FFFF) { - return false; - } - - /* - * Byte is in reserved range for UTF-16 high-marks - * for surrogate pairs. - */ - if ((c & 0xFFFFF800) == 0xD800) { - return false; - } - - /* - * Check non-shortest form unicode. - */ - switch (seq_length) { - case 1: - if (c <= 0x007F) { - continue; - } - return false; - - case 2: - if ((c >= 0x0080) && (c <= 0x07FF)) { - continue; - } else if (c == 0) { - /* Two-byte representation for NULL. */ - if (!allow_null) { - return false; - } - continue; - } - return false; - - case 3: - if (((c >= 0x0800) && (c <= 0x0FFF)) || - ((c >= 0x1000) && (c <= 0xFFFF))) { - continue; - } - return false; - - case 4: - if (((c >= 0x10000) && (c <= 0x3FFFF)) || - ((c >= 0x40000) && (c <= 0xFFFFF)) || - ((c >= 0x100000) && (c <= 0x10FFFF))) { - continue; - } - return false; - - default: - return false; - } - } - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_utf8_escape_for_json -- - * - * Allocates a new string matching @utf8 except that special - * characters in JSON will be escaped. The resulting string is also - * UTF-8 encoded. - * - * Both " and \ characters will be escaped. Additionally, if a NUL - * byte is found before @utf8_len bytes, it will be converted to the - * two byte UTF-8 sequence. - * - * Parameters: - * @utf8: A UTF-8 encoded string. - * @utf8_len: The length of @utf8 in bytes or -1 if NUL terminated. - * - * Returns: - * A newly allocated string that should be freed with bson_free(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -char * -bson_utf8_escape_for_json (const char *utf8, /* IN */ - ssize_t utf8_len) /* IN */ -{ - bson_unichar_t c; - bson_string_t *str; - bool length_provided = true; - const char *end; - - BSON_ASSERT (utf8); - - str = bson_string_new (NULL); - - if (utf8_len < 0) { - length_provided = false; - utf8_len = strlen (utf8); - } - - end = utf8 + utf8_len; - - while (utf8 < end) { - c = bson_utf8_get_char (utf8); - - switch (c) { - case '\\': - case '"': - bson_string_append_c (str, '\\'); - bson_string_append_unichar (str, c); - break; - case '\b': - bson_string_append (str, "\\b"); - break; - case '\f': - bson_string_append (str, "\\f"); - break; - case '\n': - bson_string_append (str, "\\n"); - break; - case '\r': - bson_string_append (str, "\\r"); - break; - case '\t': - bson_string_append (str, "\\t"); - break; - default: - if (c < ' ') { - bson_string_append_printf (str, "\\u%04x", (unsigned) c); - } else { - bson_string_append_unichar (str, c); - } - break; - } - - if (c) { - utf8 = bson_utf8_next_char (utf8); - } else { - if (length_provided && !*utf8) { - /* we escaped nil as '\u0000', now advance past it */ - utf8++; - } else { - /* invalid UTF-8 */ - bson_string_free (str, true); - return NULL; - } - } - } - - return bson_string_free (str, false); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_utf8_get_char -- - * - * Fetches the next UTF-8 character from the UTF-8 sequence. - * - * Parameters: - * @utf8: A string containing validated UTF-8. - * - * Returns: - * A 32-bit bson_unichar_t reprsenting the multi-byte sequence. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_unichar_t -bson_utf8_get_char (const char *utf8) /* IN */ -{ - bson_unichar_t c; - uint8_t mask; - uint8_t num; - int i; - - BSON_ASSERT (utf8); - - _bson_utf8_get_sequence (utf8, &num, &mask); - c = (*utf8) & mask; - - for (i = 1; i < num; i++) { - c = (c << 6) | (utf8[i] & 0x3F); - } - - return c; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_utf8_next_char -- - * - * Returns an incremented pointer to the beginning of the next - * multi-byte sequence in @utf8. - * - * Parameters: - * @utf8: A string containing validated UTF-8. - * - * Returns: - * An incremented pointer in @utf8. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -const char * -bson_utf8_next_char (const char *utf8) /* IN */ -{ - uint8_t mask; - uint8_t num; - - BSON_ASSERT (utf8); - - _bson_utf8_get_sequence (utf8, &num, &mask); - - return utf8 + num; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_utf8_from_unichar -- - * - * Converts the unichar to a sequence of utf8 bytes and stores those - * in @utf8. The number of bytes in the sequence are stored in @len. - * - * Parameters: - * @unichar: A bson_unichar_t. - * @utf8: A location for the multi-byte sequence. - * @len: A location for number of bytes stored in @utf8. - * - * Returns: - * None. - * - * Side effects: - * @utf8 is set. - * @len is set. - * - *-------------------------------------------------------------------------- - */ - -void -bson_utf8_from_unichar (bson_unichar_t unichar, /* IN */ - char utf8[BSON_ENSURE_ARRAY_PARAM_SIZE (6)], /* OUT */ - uint32_t *len) /* OUT */ -{ - BSON_ASSERT (utf8); - BSON_ASSERT (len); - - if (unichar <= 0x7F) { - utf8[0] = unichar; - *len = 1; - } else if (unichar <= 0x7FF) { - *len = 2; - utf8[0] = 0xC0 | ((unichar >> 6) & 0x3F); - utf8[1] = 0x80 | ((unichar) &0x3F); - } else if (unichar <= 0xFFFF) { - *len = 3; - utf8[0] = 0xE0 | ((unichar >> 12) & 0xF); - utf8[1] = 0x80 | ((unichar >> 6) & 0x3F); - utf8[2] = 0x80 | ((unichar) &0x3F); - } else if (unichar <= 0x1FFFFF) { - *len = 4; - utf8[0] = 0xF0 | ((unichar >> 18) & 0x7); - utf8[1] = 0x80 | ((unichar >> 12) & 0x3F); - utf8[2] = 0x80 | ((unichar >> 6) & 0x3F); - utf8[3] = 0x80 | ((unichar) &0x3F); - } else { - *len = 0; - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.h deleted file mode 100644 index ac2dd84..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-utf8.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_UTF8_H -#define BSON_UTF8_H - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -BSON_EXPORT (bool) -bson_utf8_validate (const char *utf8, size_t utf8_len, bool allow_null); -BSON_EXPORT (char *) -bson_utf8_escape_for_json (const char *utf8, ssize_t utf8_len); -BSON_EXPORT (bson_unichar_t) -bson_utf8_get_char (const char *utf8); -BSON_EXPORT (const char *) -bson_utf8_next_char (const char *utf8); -BSON_EXPORT (void) -bson_utf8_from_unichar (bson_unichar_t unichar, char utf8[6], uint32_t *len); - - -BSON_END_DECLS - - -#endif /* BSON_UTF8_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.c deleted file mode 100644 index d0d0667..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.c +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "bson/bson-memory.h" -#include "bson/bson-string.h" -#include "bson/bson-value.h" -#include "bson/bson-oid.h" - - -void -bson_value_copy (const bson_value_t *src, /* IN */ - bson_value_t *dst) /* OUT */ -{ - BSON_ASSERT (src); - BSON_ASSERT (dst); - - dst->value_type = src->value_type; - - switch (src->value_type) { - case BSON_TYPE_DOUBLE: - dst->value.v_double = src->value.v_double; - break; - case BSON_TYPE_UTF8: - dst->value.v_utf8.len = src->value.v_utf8.len; - dst->value.v_utf8.str = bson_malloc (src->value.v_utf8.len + 1); - memcpy ( - dst->value.v_utf8.str, src->value.v_utf8.str, dst->value.v_utf8.len); - dst->value.v_utf8.str[dst->value.v_utf8.len] = '\0'; - break; - case BSON_TYPE_DOCUMENT: - case BSON_TYPE_ARRAY: - dst->value.v_doc.data_len = src->value.v_doc.data_len; - dst->value.v_doc.data = bson_malloc (src->value.v_doc.data_len); - memcpy (dst->value.v_doc.data, - src->value.v_doc.data, - dst->value.v_doc.data_len); - break; - case BSON_TYPE_BINARY: - dst->value.v_binary.subtype = src->value.v_binary.subtype; - dst->value.v_binary.data_len = src->value.v_binary.data_len; - dst->value.v_binary.data = bson_malloc (src->value.v_binary.data_len); - if (dst->value.v_binary.data_len) { - memcpy (dst->value.v_binary.data, src->value.v_binary.data, - dst->value.v_binary.data_len); - } - break; - case BSON_TYPE_OID: - bson_oid_copy (&src->value.v_oid, &dst->value.v_oid); - break; - case BSON_TYPE_BOOL: - dst->value.v_bool = src->value.v_bool; - break; - case BSON_TYPE_DATE_TIME: - dst->value.v_datetime = src->value.v_datetime; - break; - case BSON_TYPE_REGEX: - dst->value.v_regex.regex = bson_strdup (src->value.v_regex.regex); - dst->value.v_regex.options = bson_strdup (src->value.v_regex.options); - break; - case BSON_TYPE_DBPOINTER: - dst->value.v_dbpointer.collection_len = - src->value.v_dbpointer.collection_len; - dst->value.v_dbpointer.collection = - bson_malloc (src->value.v_dbpointer.collection_len + 1); - memcpy (dst->value.v_dbpointer.collection, - src->value.v_dbpointer.collection, - dst->value.v_dbpointer.collection_len); - dst->value.v_dbpointer.collection[dst->value.v_dbpointer.collection_len] = - '\0'; - bson_oid_copy (&src->value.v_dbpointer.oid, &dst->value.v_dbpointer.oid); - break; - case BSON_TYPE_CODE: - dst->value.v_code.code_len = src->value.v_code.code_len; - dst->value.v_code.code = bson_malloc (src->value.v_code.code_len + 1); - memcpy (dst->value.v_code.code, - src->value.v_code.code, - dst->value.v_code.code_len); - dst->value.v_code.code[dst->value.v_code.code_len] = '\0'; - break; - case BSON_TYPE_SYMBOL: - dst->value.v_symbol.len = src->value.v_symbol.len; - dst->value.v_symbol.symbol = bson_malloc (src->value.v_symbol.len + 1); - memcpy (dst->value.v_symbol.symbol, - src->value.v_symbol.symbol, - dst->value.v_symbol.len); - dst->value.v_symbol.symbol[dst->value.v_symbol.len] = '\0'; - break; - case BSON_TYPE_CODEWSCOPE: - dst->value.v_codewscope.code_len = src->value.v_codewscope.code_len; - dst->value.v_codewscope.code = - bson_malloc (src->value.v_codewscope.code_len + 1); - memcpy (dst->value.v_codewscope.code, - src->value.v_codewscope.code, - dst->value.v_codewscope.code_len); - dst->value.v_codewscope.code[dst->value.v_codewscope.code_len] = '\0'; - dst->value.v_codewscope.scope_len = src->value.v_codewscope.scope_len; - dst->value.v_codewscope.scope_data = - bson_malloc (src->value.v_codewscope.scope_len); - memcpy (dst->value.v_codewscope.scope_data, - src->value.v_codewscope.scope_data, - dst->value.v_codewscope.scope_len); - break; - case BSON_TYPE_INT32: - dst->value.v_int32 = src->value.v_int32; - break; - case BSON_TYPE_TIMESTAMP: - dst->value.v_timestamp.timestamp = src->value.v_timestamp.timestamp; - dst->value.v_timestamp.increment = src->value.v_timestamp.increment; - break; - case BSON_TYPE_INT64: - dst->value.v_int64 = src->value.v_int64; - break; - case BSON_TYPE_DECIMAL128: - dst->value.v_decimal128 = src->value.v_decimal128; - break; - case BSON_TYPE_UNDEFINED: - case BSON_TYPE_NULL: - case BSON_TYPE_MAXKEY: - case BSON_TYPE_MINKEY: - break; - case BSON_TYPE_EOD: - default: - BSON_ASSERT (false); - return; - } -} - - -void -bson_value_destroy (bson_value_t *value) /* IN */ -{ - if (!value) { - return; - } - - switch (value->value_type) { - case BSON_TYPE_UTF8: - bson_free (value->value.v_utf8.str); - break; - case BSON_TYPE_DOCUMENT: - case BSON_TYPE_ARRAY: - bson_free (value->value.v_doc.data); - break; - case BSON_TYPE_BINARY: - bson_free (value->value.v_binary.data); - break; - case BSON_TYPE_REGEX: - bson_free (value->value.v_regex.regex); - bson_free (value->value.v_regex.options); - break; - case BSON_TYPE_DBPOINTER: - bson_free (value->value.v_dbpointer.collection); - break; - case BSON_TYPE_CODE: - bson_free (value->value.v_code.code); - break; - case BSON_TYPE_SYMBOL: - bson_free (value->value.v_symbol.symbol); - break; - case BSON_TYPE_CODEWSCOPE: - bson_free (value->value.v_codewscope.code); - bson_free (value->value.v_codewscope.scope_data); - break; - case BSON_TYPE_DOUBLE: - case BSON_TYPE_UNDEFINED: - case BSON_TYPE_OID: - case BSON_TYPE_BOOL: - case BSON_TYPE_DATE_TIME: - case BSON_TYPE_NULL: - case BSON_TYPE_INT32: - case BSON_TYPE_TIMESTAMP: - case BSON_TYPE_INT64: - case BSON_TYPE_DECIMAL128: - case BSON_TYPE_MAXKEY: - case BSON_TYPE_MINKEY: - case BSON_TYPE_EOD: - default: - break; - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.h deleted file mode 100644 index 7930e3c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-value.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_VALUE_H -#define BSON_VALUE_H - - -#include "bson/bson-macros.h" -#include "bson/bson-types.h" - - -BSON_BEGIN_DECLS - - -BSON_EXPORT (void) -bson_value_copy (const bson_value_t *src, bson_value_t *dst); -BSON_EXPORT (void) -bson_value_destroy (bson_value_t *value); - - -BSON_END_DECLS - - -#endif /* BSON_VALUE_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.c deleted file mode 100644 index 6a6e133..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "bson/bson-version.h" -#include "bson/bson-version-functions.h" - - -/** - * bson_get_major_version: - * - * Helper function to return the runtime major version of the library. - */ -int -bson_get_major_version (void) -{ - return BSON_MAJOR_VERSION; -} - - -/** - * bson_get_minor_version: - * - * Helper function to return the runtime minor version of the library. - */ -int -bson_get_minor_version (void) -{ - return BSON_MINOR_VERSION; -} - -/** - * bson_get_micro_version: - * - * Helper function to return the runtime micro version of the library. - */ -int -bson_get_micro_version (void) -{ - return BSON_MICRO_VERSION; -} - -/** - * bson_get_version: - * - * Helper function to return the runtime string version of the library. - */ -const char * -bson_get_version (void) -{ - return BSON_VERSION_S; -} - -/** - * bson_check_version: - * - * True if libmongoc's version is greater than or equal to the required - * version. - */ -bool -bson_check_version (int required_major, int required_minor, int required_micro) -{ - return BSON_CHECK_VERSION (required_major, required_minor, required_micro); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.h deleted file mode 100644 index 97bcb96..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version-functions.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#ifndef BSON_VERSION_FUNCTIONS_H -#define BSON_VERSION_FUNCTIONS_H - -#include "bson/bson-types.h" - -BSON_BEGIN_DECLS - -BSON_EXPORT (int) -bson_get_major_version (void); -BSON_EXPORT (int) -bson_get_minor_version (void); -BSON_EXPORT (int) -bson_get_micro_version (void); -BSON_EXPORT (const char *) -bson_get_version (void); -BSON_EXPORT (bool) -bson_check_version (int required_major, int required_minor, int required_micro); - -BSON_END_DECLS - -#endif /* BSON_VERSION_FUNCTIONS_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h deleted file mode 100644 index 3c744c3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#if !defined (BSON_INSIDE) && !defined (BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#ifndef BSON_VERSION_H -#define BSON_VERSION_H - - -/** - * BSON_MAJOR_VERSION: - * - * BSON major version component (e.g. 1 if %BSON_VERSION is 1.2.3) - */ -#define BSON_MAJOR_VERSION (1) - - -/** - * BSON_MINOR_VERSION: - * - * BSON minor version component (e.g. 2 if %BSON_VERSION is 1.2.3) - */ -#define BSON_MINOR_VERSION (13) - - -/** - * BSON_MICRO_VERSION: - * - * BSON micro version component (e.g. 3 if %BSON_VERSION is 1.2.3) - */ -#define BSON_MICRO_VERSION (1) - - -/** - * BSON_PRERELEASE_VERSION: - * - * BSON prerelease version component (e.g. rc0 if %BSON_VERSION is 1.2.3-rc0) - */ -#define BSON_PRERELEASE_VERSION () - -/** - * BSON_VERSION: - * - * BSON version. - */ -#define BSON_VERSION (1.13.1) - - -/** - * BSON_VERSION_S: - * - * BSON version, encoded as a string, useful for printing and - * concatenation. - */ -#define BSON_VERSION_S "1.13.1" - - -/** - * BSON_VERSION_HEX: - * - * BSON version, encoded as an hexadecimal number, useful for - * integer comparisons. - */ -#define BSON_VERSION_HEX (BSON_MAJOR_VERSION << 24 | \ - BSON_MINOR_VERSION << 16 | \ - BSON_MICRO_VERSION << 8) - - -/** - * BSON_CHECK_VERSION: - * @major: required major version - * @minor: required minor version - * @micro: required micro version - * - * Compile-time version checking. Evaluates to %TRUE if the version - * of BSON is greater than the required one. - */ -#define BSON_CHECK_VERSION(major,minor,micro) \ - (BSON_MAJOR_VERSION > (major) || \ - (BSON_MAJOR_VERSION == (major) && BSON_MINOR_VERSION > (minor)) || \ - (BSON_MAJOR_VERSION == (major) && BSON_MINOR_VERSION == (minor) && \ - BSON_MICRO_VERSION >= (micro))) - -#endif /* BSON_VERSION_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h.in b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h.in deleted file mode 100644 index 4637412..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-version.h.in +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#if !defined (BSON_INSIDE) && !defined (BSON_COMPILATION) -#error "Only can be included directly." -#endif - - -#ifndef BSON_VERSION_H -#define BSON_VERSION_H - - -/** - * BSON_MAJOR_VERSION: - * - * BSON major version component (e.g. 1 if %BSON_VERSION is 1.2.3) - */ -#define BSON_MAJOR_VERSION (@BSON_MAJOR_VERSION@) - - -/** - * BSON_MINOR_VERSION: - * - * BSON minor version component (e.g. 2 if %BSON_VERSION is 1.2.3) - */ -#define BSON_MINOR_VERSION (@BSON_MINOR_VERSION@) - - -/** - * BSON_MICRO_VERSION: - * - * BSON micro version component (e.g. 3 if %BSON_VERSION is 1.2.3) - */ -#define BSON_MICRO_VERSION (@BSON_MICRO_VERSION@) - - -/** - * BSON_PRERELEASE_VERSION: - * - * BSON prerelease version component (e.g. rc0 if %BSON_VERSION is 1.2.3-rc0) - */ -#define BSON_PRERELEASE_VERSION (@BSON_PRERELEASE_VERSION@) - -/** - * BSON_VERSION: - * - * BSON version. - */ -#define BSON_VERSION (@BSON_VERSION@) - - -/** - * BSON_VERSION_S: - * - * BSON version, encoded as a string, useful for printing and - * concatenation. - */ -#define BSON_VERSION_S "@BSON_VERSION@" - - -/** - * BSON_VERSION_HEX: - * - * BSON version, encoded as an hexadecimal number, useful for - * integer comparisons. - */ -#define BSON_VERSION_HEX (BSON_MAJOR_VERSION << 24 | \ - BSON_MINOR_VERSION << 16 | \ - BSON_MICRO_VERSION << 8) - - -/** - * BSON_CHECK_VERSION: - * @major: required major version - * @minor: required minor version - * @micro: required micro version - * - * Compile-time version checking. Evaluates to %TRUE if the version - * of BSON is greater than the required one. - */ -#define BSON_CHECK_VERSION(major,minor,micro) \ - (BSON_MAJOR_VERSION > (major) || \ - (BSON_MAJOR_VERSION == (major) && BSON_MINOR_VERSION > (minor)) || \ - (BSON_MAJOR_VERSION == (major) && BSON_MINOR_VERSION == (minor) && \ - BSON_MICRO_VERSION >= (micro))) - -#endif /* BSON_VERSION_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.c deleted file mode 100644 index cef849b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.c +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "bson/bson-private.h" -#include "bson/bson-writer.h" - - -struct _bson_writer_t { - bool ready; - uint8_t **buf; - size_t *buflen; - size_t offset; - bson_realloc_func realloc_func; - void *realloc_func_ctx; - bson_t b; -}; - - -/* - *-------------------------------------------------------------------------- - * - * bson_writer_new -- - * - * Creates a new instance of bson_writer_t using the buffer, length, - * offset, and realloc() function supplied. - * - * The caller is expected to clean up the structure when finished - * using bson_writer_destroy(). - * - * Parameters: - * @buf: (inout): A pointer to a target buffer. - * @buflen: (inout): A pointer to the buffer length. - * @offset: The offset in the target buffer to start from. - * @realloc_func: A realloc() style function or NULL. - * - * Returns: - * A newly allocated bson_writer_t that should be freed with - * bson_writer_destroy(). - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bson_writer_t * -bson_writer_new (uint8_t **buf, /* IN */ - size_t *buflen, /* IN */ - size_t offset, /* IN */ - bson_realloc_func realloc_func, /* IN */ - void *realloc_func_ctx) /* IN */ -{ - bson_writer_t *writer; - - writer = bson_malloc0 (sizeof *writer); - writer->buf = buf; - writer->buflen = buflen; - writer->offset = offset; - writer->realloc_func = realloc_func; - writer->realloc_func_ctx = realloc_func_ctx; - writer->ready = true; - - return writer; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_writer_destroy -- - * - * Cleanup after @writer and release any allocated memory. Note that - * the buffer supplied to bson_writer_new() is NOT freed from this - * method. The caller is responsible for that. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_writer_destroy (bson_writer_t *writer) /* IN */ -{ - bson_free (writer); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_writer_get_length -- - * - * Fetches the current length of the content written by the buffer - * (including the initial offset). This includes a partly written - * document currently being written. - * - * This is useful if you want to check to see if you've passed a given - * memory boundary that cannot be sent in a packet. See - * bson_writer_rollback() to abort the current document being written. - * - * Returns: - * The number of bytes written plus initial offset. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -size_t -bson_writer_get_length (bson_writer_t *writer) /* IN */ -{ - return writer->offset + writer->b.len; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_writer_begin -- - * - * Begins writing a new document. The caller may use the bson - * structure to write out a new BSON document. When completed, the - * caller must call either bson_writer_end() or - * bson_writer_rollback(). - * - * Parameters: - * @writer: A bson_writer_t. - * @bson: (out): A location for a bson_t*. - * - * Returns: - * true if the underlying realloc was successful; otherwise false. - * - * Side effects: - * @bson is initialized if true is returned. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_writer_begin (bson_writer_t *writer, /* IN */ - bson_t **bson) /* OUT */ -{ - bson_impl_alloc_t *b; - bool grown = false; - - BSON_ASSERT (writer); - BSON_ASSERT (writer->ready); - BSON_ASSERT (bson); - - writer->ready = false; - - memset (&writer->b, 0, sizeof (bson_t)); - - b = (bson_impl_alloc_t *) &writer->b; - b->flags = BSON_FLAG_STATIC | BSON_FLAG_NO_FREE; - b->len = 5; - b->parent = NULL; - b->buf = writer->buf; - b->buflen = writer->buflen; - b->offset = writer->offset; - b->alloc = NULL; - b->alloclen = 0; - b->realloc = writer->realloc_func; - b->realloc_func_ctx = writer->realloc_func_ctx; - - while ((writer->offset + writer->b.len) > *writer->buflen) { - if (!writer->realloc_func) { - memset (&writer->b, 0, sizeof (bson_t)); - writer->ready = true; - return false; - } - grown = true; - - if (!*writer->buflen) { - *writer->buflen = 64; - } else { - (*writer->buflen) *= 2; - } - } - - if (grown) { - *writer->buf = writer->realloc_func ( - *writer->buf, *writer->buflen, writer->realloc_func_ctx); - } - - memset ((*writer->buf) + writer->offset + 1, 0, 5); - (*writer->buf)[writer->offset] = 5; - - *bson = &writer->b; - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_writer_end -- - * - * Complete writing of a bson_writer_t to the buffer supplied. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_writer_end (bson_writer_t *writer) /* IN */ -{ - BSON_ASSERT (writer); - BSON_ASSERT (!writer->ready); - - writer->offset += writer->b.len; - memset (&writer->b, 0, sizeof (bson_t)); - writer->ready = true; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_writer_rollback -- - * - * Abort the appending of the current bson_t to the memory region - * managed by @writer. This is useful if you detected that you went - * past a particular memory limit. For example, MongoDB has 48MB - * message limits. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -void -bson_writer_rollback (bson_writer_t *writer) /* IN */ -{ - BSON_ASSERT (writer); - - if (writer->b.len) { - memset (&writer->b, 0, sizeof (bson_t)); - } - - writer->ready = true; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.h deleted file mode 100644 index 9719c0c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson-writer.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_WRITER_H -#define BSON_WRITER_H - - -#include "bson/bson.h" - - -BSON_BEGIN_DECLS - - -/** - * bson_writer_t: - * - * The bson_writer_t structure is a helper for writing a series of BSON - * documents to a single malloc() buffer. You can provide a realloc() style - * function to grow the buffer as you go. - * - * This is useful if you want to build a series of BSON documents right into - * the target buffer for an outgoing packet. The offset parameter allows you to - * start at an offset of the target buffer. - */ -typedef struct _bson_writer_t bson_writer_t; - - -BSON_EXPORT (bson_writer_t *) -bson_writer_new (uint8_t **buf, - size_t *buflen, - size_t offset, - bson_realloc_func realloc_func, - void *realloc_func_ctx); -BSON_EXPORT (void) -bson_writer_destroy (bson_writer_t *writer); -BSON_EXPORT (size_t) -bson_writer_get_length (bson_writer_t *writer); -BSON_EXPORT (bool) -bson_writer_begin (bson_writer_t *writer, bson_t **bson); -BSON_EXPORT (void) -bson_writer_end (bson_writer_t *writer); -BSON_EXPORT (void) -bson_writer_rollback (bson_writer_t *writer); - - -BSON_END_DECLS - - -#endif /* BSON_WRITER_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.c deleted file mode 100644 index 59aee48..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.c +++ /dev/null @@ -1,3513 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "bson/bson.h" -#include "bson/bson-config.h" -#include "bson/bson-private.h" -#include "bson/bson-string.h" -#include "bson/bson-iso8601-private.h" - -#include "common-b64-private.h" - -#include -#include - - -#ifndef BSON_MAX_RECURSION -#define BSON_MAX_RECURSION 200 -#endif - - -typedef enum { - BSON_VALIDATE_PHASE_START, - BSON_VALIDATE_PHASE_TOP, - BSON_VALIDATE_PHASE_LF_REF_KEY, - BSON_VALIDATE_PHASE_LF_REF_UTF8, - BSON_VALIDATE_PHASE_LF_ID_KEY, - BSON_VALIDATE_PHASE_LF_DB_KEY, - BSON_VALIDATE_PHASE_LF_DB_UTF8, - BSON_VALIDATE_PHASE_NOT_DBREF, -} bson_validate_phase_t; - - -typedef enum { - BSON_JSON_MODE_LEGACY, - BSON_JSON_MODE_CANONICAL, - BSON_JSON_MODE_RELAXED, -} bson_json_mode_t; - - -/* - * Structures. - */ -typedef struct { - bson_validate_flags_t flags; - ssize_t err_offset; - bson_validate_phase_t phase; - bson_error_t error; -} bson_validate_state_t; - - -typedef struct { - uint32_t count; - bool keys; - ssize_t *err_offset; - uint32_t depth; - bson_string_t *str; - bson_json_mode_t mode; -} bson_json_state_t; - - -/* - * Forward declarations. - */ -static bool -_bson_as_json_visit_array (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data); -static bool -_bson_as_json_visit_document (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data); -static char * -_bson_as_json_visit_all (const bson_t *bson, - size_t *length, - bson_json_mode_t mode); - -/* - * Globals. - */ -static const uint8_t gZero; - -/* - *-------------------------------------------------------------------------- - * - * _bson_impl_inline_grow -- - * - * Document growth implementation for documents that currently - * contain stack based buffers. The document may be switched to - * a malloc based buffer. - * - * Returns: - * true if successful; otherwise false indicating INT_MAX overflow. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static bool -_bson_impl_inline_grow (bson_impl_inline_t *impl, /* IN */ - size_t size) /* IN */ -{ - bson_impl_alloc_t *alloc = (bson_impl_alloc_t *) impl; - uint8_t *data; - size_t req; - - if (((size_t) impl->len + size) <= sizeof impl->data) { - return true; - } - - req = bson_next_power_of_two (impl->len + size); - - if (req <= INT32_MAX) { - data = bson_malloc (req); - - memcpy (data, impl->data, impl->len); -#ifdef BSON_MEMCHECK - bson_free (impl->canary); -#endif - alloc->flags &= ~BSON_FLAG_INLINE; - alloc->parent = NULL; - alloc->depth = 0; - alloc->buf = &alloc->alloc; - alloc->buflen = &alloc->alloclen; - alloc->offset = 0; - alloc->alloc = data; - alloc->alloclen = req; - alloc->realloc = bson_realloc_ctx; - alloc->realloc_func_ctx = NULL; - - return true; - } - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_impl_alloc_grow -- - * - * Document growth implementation for documents containing malloc - * based buffers. - * - * Returns: - * true if successful; otherwise false indicating INT_MAX overflow. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static bool -_bson_impl_alloc_grow (bson_impl_alloc_t *impl, /* IN */ - size_t size) /* IN */ -{ - size_t req; - - /* - * Determine how many bytes we need for this document in the buffer - * including necessary trailing bytes for parent documents. - */ - req = (impl->offset + impl->len + size + impl->depth); - - if (req <= *impl->buflen) { - return true; - } - - req = bson_next_power_of_two (req); - - if ((req <= INT32_MAX) && impl->realloc) { - *impl->buf = impl->realloc (*impl->buf, req, impl->realloc_func_ctx); - *impl->buflen = req; - return true; - } - - return false; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_grow -- - * - * Grows the bson_t structure to be large enough to contain @size - * bytes. - * - * Returns: - * true if successful, false if the size would overflow. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static bool -_bson_grow (bson_t *bson, /* IN */ - uint32_t size) /* IN */ -{ - if ((bson->flags & BSON_FLAG_INLINE)) { - return _bson_impl_inline_grow ((bson_impl_inline_t *) bson, size); - } - - return _bson_impl_alloc_grow ((bson_impl_alloc_t *) bson, size); -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_data -- - * - * A helper function to return the contents of the bson document - * taking into account the polymorphic nature of bson_t. - * - * Returns: - * A buffer which should not be modified or freed. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE uint8_t * -_bson_data (const bson_t *bson) /* IN */ -{ - if ((bson->flags & BSON_FLAG_INLINE)) { - return ((bson_impl_inline_t *) bson)->data; - } else { - bson_impl_alloc_t *impl = (bson_impl_alloc_t *) bson; - return (*impl->buf) + impl->offset; - } -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_encode_length -- - * - * Helper to encode the length of the bson_t in the first 4 bytes - * of the bson document. Little endian format is used as specified - * by bsonspec. - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE void -_bson_encode_length (bson_t *bson) /* IN */ -{ -#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN - memcpy (_bson_data (bson), &bson->len, sizeof (bson->len)); -#else - uint32_t length_le = BSON_UINT32_TO_LE (bson->len); - memcpy (_bson_data (bson), &length_le, sizeof (length_le)); -#endif -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_append_va -- - * - * Appends the length,buffer pairs to the bson_t. @n_bytes is an - * optimization to perform one array growth rather than many small - * growths. - * - * @bson: A bson_t - * @n_bytes: The number of bytes to append to the document. - * @n_pairs: The number of length,buffer pairs. - * @first_len: Length of first buffer. - * @first_data: First buffer. - * @args: va_list of additional tuples. - * - * Returns: - * true if the bytes were appended successfully. - * false if it bson would overflow INT_MAX. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE bool -_bson_append_va (bson_t *bson, /* IN */ - uint32_t n_bytes, /* IN */ - uint32_t n_pairs, /* IN */ - uint32_t first_len, /* IN */ - const uint8_t *first_data, /* IN */ - va_list args) /* IN */ -{ - const uint8_t *data; - uint32_t data_len; - uint8_t *buf; - - BSON_ASSERT (!(bson->flags & BSON_FLAG_IN_CHILD)); - BSON_ASSERT (!(bson->flags & BSON_FLAG_RDONLY)); - - if (BSON_UNLIKELY (!_bson_grow (bson, n_bytes))) { - return false; - } - - data = first_data; - data_len = first_len; - - buf = _bson_data (bson) + bson->len - 1; - - do { - n_pairs--; - memcpy (buf, data, data_len); - bson->len += data_len; - buf += data_len; - - if (n_pairs) { - data_len = va_arg (args, uint32_t); - data = va_arg (args, const uint8_t *); - } - } while (n_pairs); - - _bson_encode_length (bson); - - *buf = '\0'; - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_append -- - * - * Variadic function to append length,buffer pairs to a bson_t. If the - * append would cause the bson_t to overflow a 32-bit length, it will - * return false and no append will have occurred. - * - * Parameters: - * @bson: A bson_t. - * @n_pairs: Number of length,buffer pairs. - * @n_bytes: the total number of bytes being appended. - * @first_len: Length of first buffer. - * @first_data: First buffer. - * - * Returns: - * true if successful; otherwise false indicating INT_MAX overflow. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static bool -_bson_append (bson_t *bson, /* IN */ - uint32_t n_pairs, /* IN */ - uint32_t n_bytes, /* IN */ - uint32_t first_len, /* IN */ - const uint8_t *first_data, /* IN */ - ...) -{ - va_list args; - bool ok; - - BSON_ASSERT (n_pairs); - BSON_ASSERT (first_len); - BSON_ASSERT (first_data); - - /* - * Check to see if this append would overflow 32-bit signed integer. I know - * what you're thinking. BSON uses a signed 32-bit length field? Yeah. It - * does. - */ - if (BSON_UNLIKELY (n_bytes > (BSON_MAX_SIZE - bson->len))) { - return false; - } - - va_start (args, first_data); - ok = _bson_append_va (bson, n_bytes, n_pairs, first_len, first_data, args); - va_end (args); - - return ok; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_append_bson_begin -- - * - * Begin appending a subdocument or subarray to the document using - * the key provided by @key. - * - * If @key_length is < 0, then strlen() will be called on @key - * to determine the length. - * - * @key_type MUST be either BSON_TYPE_DOCUMENT or BSON_TYPE_ARRAY. - * - * Returns: - * true if successful; otherwise false indicating INT_MAX overflow. - * - * Side effects: - * @child is initialized if true is returned. - * - *-------------------------------------------------------------------------- - */ - -static bool -_bson_append_bson_begin (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - bson_type_t child_type, /* IN */ - bson_t *child) /* OUT */ -{ - const uint8_t type = child_type; - const uint8_t empty[5] = {5}; - bson_impl_alloc_t *aparent = (bson_impl_alloc_t *) bson; - bson_impl_alloc_t *achild = (bson_impl_alloc_t *) child; - - BSON_ASSERT (!(bson->flags & BSON_FLAG_RDONLY)); - BSON_ASSERT (!(bson->flags & BSON_FLAG_IN_CHILD)); - BSON_ASSERT (key); - BSON_ASSERT ((child_type == BSON_TYPE_DOCUMENT) || - (child_type == BSON_TYPE_ARRAY)); - BSON_ASSERT (child); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - /* - * If the parent is an inline bson_t, then we need to convert - * it to a heap allocated buffer. This makes extending buffers - * of child bson documents much simpler logic, as they can just - * realloc the *buf pointer. - */ - if ((bson->flags & BSON_FLAG_INLINE)) { - BSON_ASSERT (bson->len <= 120); - if (!_bson_grow (bson, 128 - bson->len)) { - return false; - } - BSON_ASSERT (!(bson->flags & BSON_FLAG_INLINE)); - } - - /* - * Append the type and key for the field. - */ - if (!_bson_append (bson, - 4, - (1 + key_length + 1 + 5), - 1, - &type, - key_length, - key, - 1, - &gZero, - 5, - empty)) { - return false; - } - - /* - * Mark the document as working on a child document so that no - * further modifications can happen until the caller has called - * bson_append_{document,array}_end(). - */ - bson->flags |= BSON_FLAG_IN_CHILD; - - /* - * Initialize the child bson_t structure and point it at the parents - * buffers. This allows us to realloc directly from the child without - * walking up to the parent bson_t. - */ - achild->flags = (BSON_FLAG_CHILD | BSON_FLAG_NO_FREE | BSON_FLAG_STATIC); - - if ((bson->flags & BSON_FLAG_CHILD)) { - achild->depth = ((bson_impl_alloc_t *) bson)->depth + 1; - } else { - achild->depth = 1; - } - - achild->parent = bson; - achild->buf = aparent->buf; - achild->buflen = aparent->buflen; - achild->offset = aparent->offset + aparent->len - 1 - 5; - achild->len = 5; - achild->alloc = NULL; - achild->alloclen = 0; - achild->realloc = aparent->realloc; - achild->realloc_func_ctx = aparent->realloc_func_ctx; - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_append_bson_end -- - * - * Complete a call to _bson_append_bson_begin. - * - * Returns: - * true if successful. - * - * Side effects: - * @child is destroyed and no longer valid after calling this - * function. - * - *-------------------------------------------------------------------------- - */ - -static bool -_bson_append_bson_end (bson_t *bson, /* IN */ - bson_t *child) /* IN */ -{ - BSON_ASSERT (bson); - BSON_ASSERT ((bson->flags & BSON_FLAG_IN_CHILD)); - BSON_ASSERT (!(child->flags & BSON_FLAG_IN_CHILD)); - - /* - * Unmark the IN_CHILD flag. - */ - bson->flags &= ~BSON_FLAG_IN_CHILD; - - /* - * Now that we are done building the sub-document, add the size to the - * parent, not including the default 5 byte empty document already added. - */ - bson->len = (bson->len + child->len - 5); - - /* - * Ensure we have a \0 byte at the end and proper length encoded at - * the beginning of the document. - */ - _bson_data (bson)[bson->len - 1] = '\0'; - _bson_encode_length (bson); - - return true; -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_array_begin -- - * - * Start appending a new array. - * - * Use @child to append to the data area for the given field. - * - * It is a programming error to call any other bson function on - * @bson until bson_append_array_end() has been called. It is - * valid to call bson_append*() functions on @child. - * - * This function is useful to allow building nested documents using - * a single buffer owned by the top-level bson document. - * - * Returns: - * true if successful; otherwise false and @child is invalid. - * - * Side effects: - * @child is initialized if true is returned. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_array_begin (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - bson_t *child) /* IN */ -{ - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (child); - - return _bson_append_bson_begin ( - bson, key, key_length, BSON_TYPE_ARRAY, child); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_array_end -- - * - * Complete a call to bson_append_array_begin(). - * - * It is safe to append other fields to @bson after calling this - * function. - * - * Returns: - * true if successful. - * - * Side effects: - * @child is invalid after calling this function. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_array_end (bson_t *bson, /* IN */ - bson_t *child) /* IN */ -{ - BSON_ASSERT (bson); - BSON_ASSERT (child); - - return _bson_append_bson_end (bson, child); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_document_begin -- - * - * Start appending a new document. - * - * Use @child to append to the data area for the given field. - * - * It is a programming error to call any other bson function on - * @bson until bson_append_document_end() has been called. It is - * valid to call bson_append*() functions on @child. - * - * This function is useful to allow building nested documents using - * a single buffer owned by the top-level bson document. - * - * Returns: - * true if successful; otherwise false and @child is invalid. - * - * Side effects: - * @child is initialized if true is returned. - * - *-------------------------------------------------------------------------- - */ -bool -bson_append_document_begin (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - bson_t *child) /* IN */ -{ - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (child); - - return _bson_append_bson_begin ( - bson, key, key_length, BSON_TYPE_DOCUMENT, child); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_document_end -- - * - * Complete a call to bson_append_document_begin(). - * - * It is safe to append new fields to @bson after calling this - * function, if true is returned. - * - * Returns: - * true if successful; otherwise false indicating INT_MAX overflow. - * - * Side effects: - * @child is destroyed and invalid after calling this function. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_document_end (bson_t *bson, /* IN */ - bson_t *child) /* IN */ -{ - BSON_ASSERT (bson); - BSON_ASSERT (child); - - return _bson_append_bson_end (bson, child); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_array -- - * - * Append an array to @bson. - * - * Generally, bson_append_array_begin() will result in faster code - * since few buffers need to be malloced. - * - * Returns: - * true if successful; otherwise false indicating INT_MAX overflow. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_array (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - const bson_t *array) /* IN */ -{ - static const uint8_t type = BSON_TYPE_ARRAY; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (array); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - /* - * Let's be a bit pedantic and ensure the array has properly formatted key - * names. We will verify this simply by checking the first element for "0" - * if the array is non-empty. - */ - if (array && !bson_empty (array)) { - bson_iter_t iter; - - if (bson_iter_init (&iter, array) && bson_iter_next (&iter)) { - if (0 != strcmp ("0", bson_iter_key (&iter))) { - fprintf (stderr, - "%s(): invalid array detected. first element of array " - "parameter is not \"0\".\n", - BSON_FUNC); - } - } - } - - return _bson_append (bson, - 4, - (1 + key_length + 1 + array->len), - 1, - &type, - key_length, - key, - 1, - &gZero, - array->len, - _bson_data (array)); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_binary -- - * - * Append binary data to @bson. The field will have the - * BSON_TYPE_BINARY type. - * - * Parameters: - * @subtype: the BSON Binary Subtype. See bsonspec.org for more - * information. - * @binary: a pointer to the raw binary data. - * @length: the size of @binary in bytes. - * - * Returns: - * true if successful; otherwise false. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_binary (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - bson_subtype_t subtype, /* IN */ - const uint8_t *binary, /* IN */ - uint32_t length) /* IN */ -{ - static const uint8_t type = BSON_TYPE_BINARY; - uint32_t length_le; - uint32_t deprecated_length_le; - uint8_t subtype8 = 0; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (binary); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - subtype8 = subtype; - - if (subtype == BSON_SUBTYPE_BINARY_DEPRECATED) { - length_le = BSON_UINT32_TO_LE (length + 4); - deprecated_length_le = BSON_UINT32_TO_LE (length); - - return _bson_append (bson, - 7, - (1 + key_length + 1 + 4 + 1 + 4 + length), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &length_le, - 1, - &subtype8, - 4, - &deprecated_length_le, - length, - binary); - } else { - length_le = BSON_UINT32_TO_LE (length); - - return _bson_append (bson, - 6, - (1 + key_length + 1 + 4 + 1 + length), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &length_le, - 1, - &subtype8, - length, - binary); - } -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_bool -- - * - * Append a new field to @bson with the name @key. The value is - * a boolean indicated by @value. - * - * Returns: - * true if successful; otherwise false. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_bool (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - bool value) /* IN */ -{ - static const uint8_t type = BSON_TYPE_BOOL; - uint8_t abyte = !!value; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 1), - 1, - &type, - key_length, - key, - 1, - &gZero, - 1, - &abyte); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_code -- - * - * Append a new field to @bson containing javascript code. - * - * @javascript MUST be a zero terminated UTF-8 string. It MUST NOT - * containing embedded \0 characters. - * - * Returns: - * true if successful; otherwise false. - * - * Side effects: - * None. - * - * See also: - * bson_append_code_with_scope(). - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_code (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - const char *javascript) /* IN */ -{ - static const uint8_t type = BSON_TYPE_CODE; - uint32_t length; - uint32_t length_le; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (javascript); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - length = (int) strlen (javascript) + 1; - length_le = BSON_UINT32_TO_LE (length); - - return _bson_append (bson, - 5, - (1 + key_length + 1 + 4 + length), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &length_le, - length, - javascript); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_code_with_scope -- - * - * Append a new field to @bson containing javascript code with - * supplied scope. - * - * Returns: - * true if successful; otherwise false. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_code_with_scope (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - const char *javascript, /* IN */ - const bson_t *scope) /* IN */ -{ - static const uint8_t type = BSON_TYPE_CODEWSCOPE; - uint32_t codews_length_le; - uint32_t codews_length; - uint32_t js_length_le; - uint32_t js_length; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (javascript); - - if (scope == NULL) { - return bson_append_code (bson, key, key_length, javascript); - } - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - js_length = (int) strlen (javascript) + 1; - js_length_le = BSON_UINT32_TO_LE (js_length); - - codews_length = 4 + 4 + js_length + scope->len; - codews_length_le = BSON_UINT32_TO_LE (codews_length); - - return _bson_append (bson, - 7, - (1 + key_length + 1 + 4 + 4 + js_length + scope->len), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &codews_length_le, - 4, - &js_length_le, - js_length, - javascript, - scope->len, - _bson_data (scope)); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_dbpointer -- - * - * This BSON data type is DEPRECATED. - * - * Append a BSON dbpointer field to @bson. - * - * Returns: - * true if successful; otherwise false. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_dbpointer (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - const char *collection, /* IN */ - const bson_oid_t *oid) -{ - static const uint8_t type = BSON_TYPE_DBPOINTER; - uint32_t length; - uint32_t length_le; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (collection); - BSON_ASSERT (oid); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - length = (int) strlen (collection) + 1; - length_le = BSON_UINT32_TO_LE (length); - - return _bson_append (bson, - 6, - (1 + key_length + 1 + 4 + length + 12), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &length_le, - length, - collection, - 12, - oid); -} - - -/* - *-------------------------------------------------------------------------- - * - * bson_append_document -- - * - * Append a new field to @bson containing a BSON document. - * - * In general, using bson_append_document_begin() results in faster - * code and less memory fragmentation. - * - * Returns: - * true if successful; otherwise false. - * - * Side effects: - * None. - * - * See also: - * bson_append_document_begin(). - * - *-------------------------------------------------------------------------- - */ - -bool -bson_append_document (bson_t *bson, /* IN */ - const char *key, /* IN */ - int key_length, /* IN */ - const bson_t *value) /* IN */ -{ - static const uint8_t type = BSON_TYPE_DOCUMENT; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (value); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - return _bson_append (bson, - 4, - (1 + key_length + 1 + value->len), - 1, - &type, - key_length, - key, - 1, - &gZero, - value->len, - _bson_data (value)); -} - - -bool -bson_append_double (bson_t *bson, const char *key, int key_length, double value) -{ - static const uint8_t type = BSON_TYPE_DOUBLE; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - -#if BSON_BYTE_ORDER == BSON_BIG_ENDIAN - value = BSON_DOUBLE_TO_LE (value); -#endif - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 8), - 1, - &type, - key_length, - key, - 1, - &gZero, - 8, - &value); -} - - -bool -bson_append_int32 (bson_t *bson, const char *key, int key_length, int32_t value) -{ - static const uint8_t type = BSON_TYPE_INT32; - uint32_t value_le; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - value_le = BSON_UINT32_TO_LE (value); - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 4), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &value_le); -} - - -bool -bson_append_int64 (bson_t *bson, const char *key, int key_length, int64_t value) -{ - static const uint8_t type = BSON_TYPE_INT64; - uint64_t value_le; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - value_le = BSON_UINT64_TO_LE (value); - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 8), - 1, - &type, - key_length, - key, - 1, - &gZero, - 8, - &value_le); -} - - -bool -bson_append_decimal128 (bson_t *bson, - const char *key, - int key_length, - const bson_decimal128_t *value) -{ - static const uint8_t type = BSON_TYPE_DECIMAL128; - uint64_t value_le[2]; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (value); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - value_le[0] = BSON_UINT64_TO_LE (value->low); - value_le[1] = BSON_UINT64_TO_LE (value->high); - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 16), - 1, - &type, - key_length, - key, - 1, - &gZero, - 16, - value_le); -} - - -bool -bson_append_iter (bson_t *bson, - const char *key, - int key_length, - const bson_iter_t *iter) -{ - bool ret = false; - - BSON_ASSERT (bson); - BSON_ASSERT (iter); - - if (!key) { - key = bson_iter_key (iter); - key_length = -1; - } - - switch (bson_iter_type_unsafe (iter)) { - case BSON_TYPE_EOD: - return false; - case BSON_TYPE_DOUBLE: - ret = bson_append_double (bson, key, key_length, bson_iter_double (iter)); - break; - case BSON_TYPE_UTF8: { - uint32_t len = 0; - const char *str; - - str = bson_iter_utf8 (iter, &len); - ret = bson_append_utf8 (bson, key, key_length, str, len); - } break; - case BSON_TYPE_DOCUMENT: { - const uint8_t *buf = NULL; - uint32_t len = 0; - bson_t doc; - - bson_iter_document (iter, &len, &buf); - - if (bson_init_static (&doc, buf, len)) { - ret = bson_append_document (bson, key, key_length, &doc); - bson_destroy (&doc); - } - } break; - case BSON_TYPE_ARRAY: { - const uint8_t *buf = NULL; - uint32_t len = 0; - bson_t doc; - - bson_iter_array (iter, &len, &buf); - - if (bson_init_static (&doc, buf, len)) { - ret = bson_append_array (bson, key, key_length, &doc); - bson_destroy (&doc); - } - } break; - case BSON_TYPE_BINARY: { - const uint8_t *binary = NULL; - bson_subtype_t subtype = BSON_SUBTYPE_BINARY; - uint32_t len = 0; - - bson_iter_binary (iter, &subtype, &len, &binary); - ret = bson_append_binary (bson, key, key_length, subtype, binary, len); - } break; - case BSON_TYPE_UNDEFINED: - ret = bson_append_undefined (bson, key, key_length); - break; - case BSON_TYPE_OID: - ret = bson_append_oid (bson, key, key_length, bson_iter_oid (iter)); - break; - case BSON_TYPE_BOOL: - ret = bson_append_bool (bson, key, key_length, bson_iter_bool (iter)); - break; - case BSON_TYPE_DATE_TIME: - ret = bson_append_date_time ( - bson, key, key_length, bson_iter_date_time (iter)); - break; - case BSON_TYPE_NULL: - ret = bson_append_null (bson, key, key_length); - break; - case BSON_TYPE_REGEX: { - const char *regex; - const char *options; - - regex = bson_iter_regex (iter, &options); - ret = bson_append_regex (bson, key, key_length, regex, options); - } break; - case BSON_TYPE_DBPOINTER: { - const bson_oid_t *oid; - uint32_t len; - const char *collection; - - bson_iter_dbpointer (iter, &len, &collection, &oid); - ret = bson_append_dbpointer (bson, key, key_length, collection, oid); - } break; - case BSON_TYPE_CODE: { - uint32_t len; - const char *code; - - code = bson_iter_code (iter, &len); - ret = bson_append_code (bson, key, key_length, code); - } break; - case BSON_TYPE_SYMBOL: { - uint32_t len; - const char *symbol; - - symbol = bson_iter_symbol (iter, &len); - ret = bson_append_symbol (bson, key, key_length, symbol, len); - } break; - case BSON_TYPE_CODEWSCOPE: { - const uint8_t *scope = NULL; - uint32_t scope_len = 0; - uint32_t len = 0; - const char *javascript = NULL; - bson_t doc; - - javascript = bson_iter_codewscope (iter, &len, &scope_len, &scope); - - if (bson_init_static (&doc, scope, scope_len)) { - ret = bson_append_code_with_scope ( - bson, key, key_length, javascript, &doc); - bson_destroy (&doc); - } - } break; - case BSON_TYPE_INT32: - ret = bson_append_int32 (bson, key, key_length, bson_iter_int32 (iter)); - break; - case BSON_TYPE_TIMESTAMP: { - uint32_t ts; - uint32_t inc; - - bson_iter_timestamp (iter, &ts, &inc); - ret = bson_append_timestamp (bson, key, key_length, ts, inc); - } break; - case BSON_TYPE_INT64: - ret = bson_append_int64 (bson, key, key_length, bson_iter_int64 (iter)); - break; - case BSON_TYPE_DECIMAL128: { - bson_decimal128_t dec; - - if (!bson_iter_decimal128 (iter, &dec)) { - return false; - } - - ret = bson_append_decimal128 (bson, key, key_length, &dec); - } break; - case BSON_TYPE_MAXKEY: - ret = bson_append_maxkey (bson, key, key_length); - break; - case BSON_TYPE_MINKEY: - ret = bson_append_minkey (bson, key, key_length); - break; - default: - break; - } - - return ret; -} - - -bool -bson_append_maxkey (bson_t *bson, const char *key, int key_length) -{ - static const uint8_t type = BSON_TYPE_MAXKEY; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - return _bson_append ( - bson, 3, (1 + key_length + 1), 1, &type, key_length, key, 1, &gZero); -} - - -bool -bson_append_minkey (bson_t *bson, const char *key, int key_length) -{ - static const uint8_t type = BSON_TYPE_MINKEY; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - return _bson_append ( - bson, 3, (1 + key_length + 1), 1, &type, key_length, key, 1, &gZero); -} - - -bool -bson_append_null (bson_t *bson, const char *key, int key_length) -{ - static const uint8_t type = BSON_TYPE_NULL; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - return _bson_append ( - bson, 3, (1 + key_length + 1), 1, &type, key_length, key, 1, &gZero); -} - - -bool -bson_append_oid (bson_t *bson, - const char *key, - int key_length, - const bson_oid_t *value) -{ - static const uint8_t type = BSON_TYPE_OID; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (value); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 12), - 1, - &type, - key_length, - key, - 1, - &gZero, - 12, - value); -} - - -/* - *-------------------------------------------------------------------------- - * - * _bson_append_regex_options_sorted -- - * - * Helper to append regex options to a buffer in a sorted order. - * Any duplicate or unsupported options will be ignored. - * - * Parameters: - * @buffer: Buffer to which sorted options will be appended - * @options: Regex options - * - * Returns: - * None. - * - * Side effects: - * None. - * - *-------------------------------------------------------------------------- - */ - -static BSON_INLINE void -_bson_append_regex_options_sorted (bson_string_t *buffer, /* IN */ - const char *options) /* IN */ -{ - const char *c; - - for (c = BSON_REGEX_OPTIONS_SORTED; *c; c++) { - if (strchr (options, *c)) { - bson_string_append_c (buffer, *c); - } - } -} - - -bool -bson_append_regex (bson_t *bson, - const char *key, - int key_length, - const char *regex, - const char *options) -{ - return bson_append_regex_w_len (bson, key, key_length, regex, -1, options); -} - - -bool -bson_append_regex_w_len (bson_t *bson, - const char *key, - int key_length, - const char *regex, - int regex_length, - const char *options) -{ - static const uint8_t type = BSON_TYPE_REGEX; - bson_string_t *options_sorted; - bool r; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - if (regex_length < 0) { - regex_length = (int) strlen (regex); - } - - if (!regex) { - regex = ""; - } - - if (!options) { - options = ""; - } - - options_sorted = bson_string_new (NULL); - - _bson_append_regex_options_sorted (options_sorted, options); - - r = _bson_append ( - bson, - 6, - (1 + key_length + 1 + regex_length + 1 + options_sorted->len + 1), - 1, - &type, - key_length, - key, - 1, - &gZero, - regex_length, - regex, - 1, - &gZero, - options_sorted->len + 1, - options_sorted->str); - - bson_string_free (options_sorted, true); - - return r; -} - - -bool -bson_append_utf8 ( - bson_t *bson, const char *key, int key_length, const char *value, int length) -{ - static const uint8_t type = BSON_TYPE_UTF8; - uint32_t length_le; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (BSON_UNLIKELY (!value)) { - return bson_append_null (bson, key, key_length); - } - - if (BSON_UNLIKELY (key_length < 0)) { - key_length = (int) strlen (key); - } - - if (BSON_UNLIKELY (length < 0)) { - length = (int) strlen (value); - } - - length_le = BSON_UINT32_TO_LE (length + 1); - - return _bson_append (bson, - 6, - (1 + key_length + 1 + 4 + length + 1), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &length_le, - length, - value, - 1, - &gZero); -} - - -bool -bson_append_symbol ( - bson_t *bson, const char *key, int key_length, const char *value, int length) -{ - static const uint8_t type = BSON_TYPE_SYMBOL; - uint32_t length_le; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (!value) { - return bson_append_null (bson, key, key_length); - } - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - if (length < 0) { - length = (int) strlen (value); - } - - length_le = BSON_UINT32_TO_LE (length + 1); - - return _bson_append (bson, - 6, - (1 + key_length + 1 + 4 + length + 1), - 1, - &type, - key_length, - key, - 1, - &gZero, - 4, - &length_le, - length, - value, - 1, - &gZero); -} - - -bool -bson_append_time_t (bson_t *bson, const char *key, int key_length, time_t value) -{ -#ifdef BSON_OS_WIN32 - struct timeval tv = {(long) value, 0}; -#else - struct timeval tv = {value, 0}; -#endif - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - return bson_append_timeval (bson, key, key_length, &tv); -} - - -bool -bson_append_timestamp (bson_t *bson, - const char *key, - int key_length, - uint32_t timestamp, - uint32_t increment) -{ - static const uint8_t type = BSON_TYPE_TIMESTAMP; - uint64_t value; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - value = ((((uint64_t) timestamp) << 32) | ((uint64_t) increment)); - value = BSON_UINT64_TO_LE (value); - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 8), - 1, - &type, - key_length, - key, - 1, - &gZero, - 8, - &value); -} - - -bool -bson_append_now_utc (bson_t *bson, const char *key, int key_length) -{ - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (key_length >= -1); - - return bson_append_time_t (bson, key, key_length, time (NULL)); -} - - -bool -bson_append_date_time (bson_t *bson, - const char *key, - int key_length, - int64_t value) -{ - static const uint8_t type = BSON_TYPE_DATE_TIME; - uint64_t value_le; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - value_le = BSON_UINT64_TO_LE (value); - - return _bson_append (bson, - 4, - (1 + key_length + 1 + 8), - 1, - &type, - key_length, - key, - 1, - &gZero, - 8, - &value_le); -} - - -bool -bson_append_timeval (bson_t *bson, - const char *key, - int key_length, - struct timeval *value) -{ - uint64_t unix_msec; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (value); - - unix_msec = - (((uint64_t) value->tv_sec) * 1000UL) + (value->tv_usec / 1000UL); - return bson_append_date_time (bson, key, key_length, unix_msec); -} - - -bool -bson_append_undefined (bson_t *bson, const char *key, int key_length) -{ - static const uint8_t type = BSON_TYPE_UNDEFINED; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (key_length < 0) { - key_length = (int) strlen (key); - } - - return _bson_append ( - bson, 3, (1 + key_length + 1), 1, &type, key_length, key, 1, &gZero); -} - - -bool -bson_append_value (bson_t *bson, - const char *key, - int key_length, - const bson_value_t *value) -{ - bson_t local; - bool ret = false; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - BSON_ASSERT (value); - - switch (value->value_type) { - case BSON_TYPE_DOUBLE: - ret = bson_append_double (bson, key, key_length, value->value.v_double); - break; - case BSON_TYPE_UTF8: - ret = bson_append_utf8 (bson, - key, - key_length, - value->value.v_utf8.str, - value->value.v_utf8.len); - break; - case BSON_TYPE_DOCUMENT: - if (bson_init_static ( - &local, value->value.v_doc.data, value->value.v_doc.data_len)) { - ret = bson_append_document (bson, key, key_length, &local); - bson_destroy (&local); - } - break; - case BSON_TYPE_ARRAY: - if (bson_init_static ( - &local, value->value.v_doc.data, value->value.v_doc.data_len)) { - ret = bson_append_array (bson, key, key_length, &local); - bson_destroy (&local); - } - break; - case BSON_TYPE_BINARY: - ret = bson_append_binary (bson, - key, - key_length, - value->value.v_binary.subtype, - value->value.v_binary.data, - value->value.v_binary.data_len); - break; - case BSON_TYPE_UNDEFINED: - ret = bson_append_undefined (bson, key, key_length); - break; - case BSON_TYPE_OID: - ret = bson_append_oid (bson, key, key_length, &value->value.v_oid); - break; - case BSON_TYPE_BOOL: - ret = bson_append_bool (bson, key, key_length, value->value.v_bool); - break; - case BSON_TYPE_DATE_TIME: - ret = - bson_append_date_time (bson, key, key_length, value->value.v_datetime); - break; - case BSON_TYPE_NULL: - ret = bson_append_null (bson, key, key_length); - break; - case BSON_TYPE_REGEX: - ret = bson_append_regex (bson, - key, - key_length, - value->value.v_regex.regex, - value->value.v_regex.options); - break; - case BSON_TYPE_DBPOINTER: - ret = bson_append_dbpointer (bson, - key, - key_length, - value->value.v_dbpointer.collection, - &value->value.v_dbpointer.oid); - break; - case BSON_TYPE_CODE: - ret = bson_append_code (bson, key, key_length, value->value.v_code.code); - break; - case BSON_TYPE_SYMBOL: - ret = bson_append_symbol (bson, - key, - key_length, - value->value.v_symbol.symbol, - value->value.v_symbol.len); - break; - case BSON_TYPE_CODEWSCOPE: - if (bson_init_static (&local, - value->value.v_codewscope.scope_data, - value->value.v_codewscope.scope_len)) { - ret = bson_append_code_with_scope ( - bson, key, key_length, value->value.v_codewscope.code, &local); - bson_destroy (&local); - } - break; - case BSON_TYPE_INT32: - ret = bson_append_int32 (bson, key, key_length, value->value.v_int32); - break; - case BSON_TYPE_TIMESTAMP: - ret = bson_append_timestamp (bson, - key, - key_length, - value->value.v_timestamp.timestamp, - value->value.v_timestamp.increment); - break; - case BSON_TYPE_INT64: - ret = bson_append_int64 (bson, key, key_length, value->value.v_int64); - break; - case BSON_TYPE_DECIMAL128: - ret = bson_append_decimal128 ( - bson, key, key_length, &(value->value.v_decimal128)); - break; - case BSON_TYPE_MAXKEY: - ret = bson_append_maxkey (bson, key, key_length); - break; - case BSON_TYPE_MINKEY: - ret = bson_append_minkey (bson, key, key_length); - break; - case BSON_TYPE_EOD: - default: - break; - } - - return ret; -} - - -void -bson_init (bson_t *bson) -{ - bson_impl_inline_t *impl = (bson_impl_inline_t *) bson; - - BSON_ASSERT (bson); - -#ifdef BSON_MEMCHECK - impl->canary = bson_malloc (1); -#endif - impl->flags = BSON_FLAG_INLINE | BSON_FLAG_STATIC; - impl->len = 5; - impl->data[0] = 5; - impl->data[1] = 0; - impl->data[2] = 0; - impl->data[3] = 0; - impl->data[4] = 0; -} - - -void -bson_reinit (bson_t *bson) -{ - uint8_t *data; - - BSON_ASSERT (bson); - - data = _bson_data (bson); - - bson->len = 5; - - data[0] = 5; - data[1] = 0; - data[2] = 0; - data[3] = 0; - data[4] = 0; -} - - -bool -bson_init_static (bson_t *bson, const uint8_t *data, size_t length) -{ - bson_impl_alloc_t *impl = (bson_impl_alloc_t *) bson; - uint32_t len_le; - - BSON_ASSERT (bson); - BSON_ASSERT (data); - - if ((length < 5) || (length > INT_MAX)) { - return false; - } - - memcpy (&len_le, data, sizeof (len_le)); - - if ((size_t) BSON_UINT32_FROM_LE (len_le) != length) { - return false; - } - - if (data[length - 1]) { - return false; - } - - impl->flags = BSON_FLAG_STATIC | BSON_FLAG_RDONLY; - impl->len = (uint32_t) length; - impl->parent = NULL; - impl->depth = 0; - impl->buf = &impl->alloc; - impl->buflen = &impl->alloclen; - impl->offset = 0; - impl->alloc = (uint8_t *) data; - impl->alloclen = length; - impl->realloc = NULL; - impl->realloc_func_ctx = NULL; - - return true; -} - - -bson_t * -bson_new (void) -{ - bson_impl_inline_t *impl; - bson_t *bson; - - bson = bson_malloc (sizeof *bson); - - impl = (bson_impl_inline_t *) bson; - impl->flags = BSON_FLAG_INLINE; - impl->len = 5; -#ifdef BSON_MEMCHECK - impl->canary = bson_malloc (1); -#endif - impl->data[0] = 5; - impl->data[1] = 0; - impl->data[2] = 0; - impl->data[3] = 0; - impl->data[4] = 0; - - return bson; -} - - -bson_t * -bson_sized_new (size_t size) -{ - bson_impl_alloc_t *impl_a; - bson_t *b; - - BSON_ASSERT (size <= INT32_MAX); - - b = bson_malloc (sizeof *b); - impl_a = (bson_impl_alloc_t *) b; - - if (size <= BSON_INLINE_DATA_SIZE) { - bson_init (b); - b->flags &= ~BSON_FLAG_STATIC; - } else { - impl_a->flags = BSON_FLAG_NONE; - impl_a->len = 5; - impl_a->parent = NULL; - impl_a->depth = 0; - impl_a->buf = &impl_a->alloc; - impl_a->buflen = &impl_a->alloclen; - impl_a->offset = 0; - impl_a->alloclen = BSON_MAX (5, size); - impl_a->alloc = bson_malloc (impl_a->alloclen); - impl_a->alloc[0] = 5; - impl_a->alloc[1] = 0; - impl_a->alloc[2] = 0; - impl_a->alloc[3] = 0; - impl_a->alloc[4] = 0; - impl_a->realloc = bson_realloc_ctx; - impl_a->realloc_func_ctx = NULL; - } - - return b; -} - - -bson_t * -bson_new_from_data (const uint8_t *data, size_t length) -{ - uint32_t len_le; - bson_t *bson; - - BSON_ASSERT (data); - - if ((length < 5) || (length > INT_MAX) || data[length - 1]) { - return NULL; - } - - memcpy (&len_le, data, sizeof (len_le)); - - if (length != (size_t) BSON_UINT32_FROM_LE (len_le)) { - return NULL; - } - - bson = bson_sized_new (length); - memcpy (_bson_data (bson), data, length); - bson->len = (uint32_t) length; - - return bson; -} - - -bson_t * -bson_new_from_buffer (uint8_t **buf, - size_t *buf_len, - bson_realloc_func realloc_func, - void *realloc_func_ctx) -{ - bson_impl_alloc_t *impl; - uint32_t len_le; - uint32_t length; - bson_t *bson; - - BSON_ASSERT (buf); - BSON_ASSERT (buf_len); - - if (!realloc_func) { - realloc_func = bson_realloc_ctx; - } - - bson = bson_malloc0 (sizeof *bson); - impl = (bson_impl_alloc_t *) bson; - - if (!*buf) { - length = 5; - len_le = BSON_UINT32_TO_LE (length); - *buf_len = 5; - *buf = realloc_func (*buf, *buf_len, realloc_func_ctx); - memcpy (*buf, &len_le, sizeof (len_le)); - (*buf)[4] = '\0'; - } else { - if ((*buf_len < 5) || (*buf_len > INT_MAX)) { - bson_free (bson); - return NULL; - } - - memcpy (&len_le, *buf, sizeof (len_le)); - length = BSON_UINT32_FROM_LE (len_le); - } - - if ((*buf)[length - 1]) { - bson_free (bson); - return NULL; - } - - impl->flags = BSON_FLAG_NO_FREE; - impl->len = length; - impl->buf = buf; - impl->buflen = buf_len; - impl->realloc = realloc_func; - impl->realloc_func_ctx = realloc_func_ctx; - - return bson; -} - - -bson_t * -bson_copy (const bson_t *bson) -{ - const uint8_t *data; - - BSON_ASSERT (bson); - - data = _bson_data (bson); - return bson_new_from_data (data, bson->len); -} - - -void -bson_copy_to (const bson_t *src, bson_t *dst) -{ - const uint8_t *data; - bson_impl_alloc_t *adst; - size_t len; - - BSON_ASSERT (src); - BSON_ASSERT (dst); - - if ((src->flags & BSON_FLAG_INLINE)) { -#ifdef BSON_MEMCHECK - dst->len = src->len; - dst->canary = malloc (1); - memcpy (dst->padding, src->padding, sizeof dst->padding); -#else - memcpy (dst, src, sizeof *dst); -#endif - dst->flags = (BSON_FLAG_STATIC | BSON_FLAG_INLINE); - return; - } - - data = _bson_data (src); - len = bson_next_power_of_two ((size_t) src->len); - - adst = (bson_impl_alloc_t *) dst; - adst->flags = BSON_FLAG_STATIC; - adst->len = src->len; - adst->parent = NULL; - adst->depth = 0; - adst->buf = &adst->alloc; - adst->buflen = &adst->alloclen; - adst->offset = 0; - adst->alloc = bson_malloc (len); - adst->alloclen = len; - adst->realloc = bson_realloc_ctx; - adst->realloc_func_ctx = NULL; - memcpy (adst->alloc, data, src->len); -} - - -static bool -should_ignore (const char *first_exclude, va_list args, const char *name) -{ - bool ret = false; - const char *exclude = first_exclude; - va_list args_copy; - - va_copy (args_copy, args); - - do { - if (!strcmp (name, exclude)) { - ret = true; - break; - } - } while ((exclude = va_arg (args_copy, const char *))); - - va_end (args_copy); - - return ret; -} - - -static void -_bson_copy_to_excluding_va (const bson_t *src, - bson_t *dst, - const char *first_exclude, - va_list args) -{ - bson_iter_t iter; - - if (bson_iter_init (&iter, src)) { - while (bson_iter_next (&iter)) { - if (!should_ignore (first_exclude, args, bson_iter_key (&iter))) { - if (!bson_append_iter (dst, NULL, 0, &iter)) { - /* - * This should not be able to happen since we are copying - * from within a valid bson_t. - */ - BSON_ASSERT (false); - return; - } - } - } - } -} - - -void -bson_copy_to_excluding (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) -{ - va_list args; - - BSON_ASSERT (src); - BSON_ASSERT (dst); - BSON_ASSERT (first_exclude); - - bson_init (dst); - - va_start (args, first_exclude); - _bson_copy_to_excluding_va (src, dst, first_exclude, args); - va_end (args); -} - -void -bson_copy_to_excluding_noinit (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) -{ - va_list args; - - BSON_ASSERT (src); - BSON_ASSERT (dst); - BSON_ASSERT (first_exclude); - - va_start (args, first_exclude); - _bson_copy_to_excluding_va (src, dst, first_exclude, args); - va_end (args); -} - - -void -bson_destroy (bson_t *bson) -{ - if (!bson) { - return; - } - - if (!(bson->flags & - (BSON_FLAG_RDONLY | BSON_FLAG_INLINE | BSON_FLAG_NO_FREE))) { - bson_free (*((bson_impl_alloc_t *) bson)->buf); - } - -#ifdef BSON_MEMCHECK - if (bson->flags & BSON_FLAG_INLINE) { - bson_free (bson->canary); - } -#endif - - if (!(bson->flags & BSON_FLAG_STATIC)) { - bson_free (bson); - } -} - - -uint8_t * -bson_reserve_buffer (bson_t *bson, uint32_t size) -{ - if (bson->flags & - (BSON_FLAG_CHILD | BSON_FLAG_IN_CHILD | BSON_FLAG_RDONLY)) { - return NULL; - } - - if (!_bson_grow (bson, size)) { - return NULL; - } - - if (bson->flags & BSON_FLAG_INLINE) { - /* bson_grow didn't spill over */ - ((bson_impl_inline_t *) bson)->len = size; - } else { - ((bson_impl_alloc_t *) bson)->len = size; - } - - return _bson_data (bson); -} - - -bool -bson_steal (bson_t *dst, bson_t *src) -{ - bson_impl_inline_t *src_inline; - bson_impl_inline_t *dst_inline; - bson_impl_alloc_t *alloc; - - BSON_ASSERT (dst); - BSON_ASSERT (src); - - bson_init (dst); - - if (src->flags & (BSON_FLAG_CHILD | BSON_FLAG_IN_CHILD | BSON_FLAG_RDONLY)) { - return false; - } - - if (src->flags & BSON_FLAG_INLINE) { - src_inline = (bson_impl_inline_t *) src; - dst_inline = (bson_impl_inline_t *) dst; - dst_inline->len = src_inline->len; - memcpy (dst_inline->data, src_inline->data, sizeof src_inline->data); - - /* for consistency, src is always invalid after steal, even if inline */ - src->len = 0; -#ifdef BSON_MEMCHECK - bson_free (src->canary); -#endif - } else { -#ifdef BSON_MEMCHECK - bson_free (dst->canary); -#endif - memcpy (dst, src, sizeof (bson_t)); - alloc = (bson_impl_alloc_t *) dst; - alloc->flags |= BSON_FLAG_STATIC; - alloc->buf = &alloc->alloc; - alloc->buflen = &alloc->alloclen; - } - - if (!(src->flags & BSON_FLAG_STATIC)) { - bson_free (src); - } else { - /* src is invalid after steal */ - src->len = 0; - } - - return true; -} - - -uint8_t * -bson_destroy_with_steal (bson_t *bson, bool steal, uint32_t *length) -{ - uint8_t *ret = NULL; - - BSON_ASSERT (bson); - - if (length) { - *length = bson->len; - } - - if (!steal) { - bson_destroy (bson); - return NULL; - } - - if ((bson->flags & - (BSON_FLAG_CHILD | BSON_FLAG_IN_CHILD | BSON_FLAG_RDONLY))) { - /* Do nothing */ - } else if ((bson->flags & BSON_FLAG_INLINE)) { - bson_impl_inline_t *inl; - - inl = (bson_impl_inline_t *) bson; - ret = bson_malloc (bson->len); - memcpy (ret, inl->data, bson->len); - } else { - bson_impl_alloc_t *alloc; - - alloc = (bson_impl_alloc_t *) bson; - ret = *alloc->buf; - *alloc->buf = NULL; - } - - bson_destroy (bson); - - return ret; -} - - -const uint8_t * -bson_get_data (const bson_t *bson) -{ - BSON_ASSERT (bson); - - return _bson_data (bson); -} - - -uint32_t -bson_count_keys (const bson_t *bson) -{ - uint32_t count = 0; - bson_iter_t iter; - - BSON_ASSERT (bson); - - if (bson_iter_init (&iter, bson)) { - while (bson_iter_next (&iter)) { - count++; - } - } - - return count; -} - - -bool -bson_has_field (const bson_t *bson, const char *key) -{ - bson_iter_t iter; - bson_iter_t child; - - BSON_ASSERT (bson); - BSON_ASSERT (key); - - if (NULL != strchr (key, '.')) { - return (bson_iter_init (&iter, bson) && - bson_iter_find_descendant (&iter, key, &child)); - } - - return bson_iter_init_find (&iter, bson, key); -} - - -int -bson_compare (const bson_t *bson, const bson_t *other) -{ - const uint8_t *data1; - const uint8_t *data2; - size_t len1; - size_t len2; - int64_t ret; - - data1 = _bson_data (bson) + 4; - len1 = bson->len - 4; - - data2 = _bson_data (other) + 4; - len2 = other->len - 4; - - if (len1 == len2) { - return memcmp (data1, data2, len1); - } - - ret = memcmp (data1, data2, BSON_MIN (len1, len2)); - - if (ret == 0) { - ret = (int64_t) (len1 - len2); - } - - return (ret < 0) ? -1 : (ret > 0); -} - - -bool -bson_equal (const bson_t *bson, const bson_t *other) -{ - return !bson_compare (bson, other); -} - - -static bool -_bson_as_json_visit_utf8 (const bson_iter_t *iter, - const char *key, - size_t v_utf8_len, - const char *v_utf8, - void *data) -{ - bson_json_state_t *state = data; - char *escaped; - - escaped = bson_utf8_escape_for_json (v_utf8, v_utf8_len); - - if (escaped) { - bson_string_append (state->str, "\""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\""); - bson_free (escaped); - return false; - } - - return true; -} - - -static bool -_bson_as_json_visit_int32 (const bson_iter_t *iter, - const char *key, - int32_t v_int32, - void *data) -{ - bson_json_state_t *state = data; - - if (state->mode == BSON_JSON_MODE_CANONICAL) { - bson_string_append_printf ( - state->str, "{ \"$numberInt\" : \"%" PRId32 "\" }", v_int32); - } else { - bson_string_append_printf (state->str, "%" PRId32, v_int32); - } - - return false; -} - - -static bool -_bson_as_json_visit_int64 (const bson_iter_t *iter, - const char *key, - int64_t v_int64, - void *data) -{ - bson_json_state_t *state = data; - - if (state->mode == BSON_JSON_MODE_CANONICAL) { - bson_string_append_printf ( - state->str, "{ \"$numberLong\" : \"%" PRId64 "\"}", v_int64); - } else { - bson_string_append_printf (state->str, "%" PRId64, v_int64); - } - - return false; -} - - -static bool -_bson_as_json_visit_decimal128 (const bson_iter_t *iter, - const char *key, - const bson_decimal128_t *value, - void *data) -{ - bson_json_state_t *state = data; - char decimal128_string[BSON_DECIMAL128_STRING]; - bson_decimal128_to_string (value, decimal128_string); - - bson_string_append (state->str, "{ \"$numberDecimal\" : \""); - bson_string_append (state->str, decimal128_string); - bson_string_append (state->str, "\" }"); - - return false; -} - - -static bool -_bson_as_json_visit_double (const bson_iter_t *iter, - const char *key, - double v_double, - void *data) -{ - bson_json_state_t *state = data; - bson_string_t *str = state->str; - uint32_t start_len; - bool legacy; - - /* Determine if legacy (i.e. unwrapped) output should be used. Relaxed mode - * will use this for nan and inf values, which we check manually since old - * platforms may not have isinf or isnan. */ - legacy = state->mode == BSON_JSON_MODE_LEGACY || - (state->mode == BSON_JSON_MODE_RELAXED && - !(v_double != v_double || v_double * 0 != 0)); - - if (!legacy) { - bson_string_append (state->str, "{ \"$numberDouble\" : \""); - } - - if (!legacy && v_double != v_double) { - bson_string_append (str, "NaN"); - } else if (!legacy && v_double * 0 != 0) { - if (v_double > 0) { - bson_string_append (str, "Infinity"); - } else { - bson_string_append (str, "-Infinity"); - } - } else { - start_len = str->len; - bson_string_append_printf (str, "%.20g", v_double); - - /* ensure trailing ".0" to distinguish "3" from "3.0" */ - if (strspn (&str->str[start_len], "0123456789-") == - str->len - start_len) { - bson_string_append (str, ".0"); - } - } - - if (!legacy) { - bson_string_append (state->str, "\" }"); - } - - return false; -} - - -static bool -_bson_as_json_visit_undefined (const bson_iter_t *iter, - const char *key, - void *data) -{ - bson_json_state_t *state = data; - - bson_string_append (state->str, "{ \"$undefined\" : true }"); - - return false; -} - - -static bool -_bson_as_json_visit_null (const bson_iter_t *iter, const char *key, void *data) -{ - bson_json_state_t *state = data; - - bson_string_append (state->str, "null"); - - return false; -} - - -static bool -_bson_as_json_visit_oid (const bson_iter_t *iter, - const char *key, - const bson_oid_t *oid, - void *data) -{ - bson_json_state_t *state = data; - char str[25]; - - bson_oid_to_string (oid, str); - bson_string_append (state->str, "{ \"$oid\" : \""); - bson_string_append (state->str, str); - bson_string_append (state->str, "\" }"); - - return false; -} - - -static bool -_bson_as_json_visit_binary (const bson_iter_t *iter, - const char *key, - bson_subtype_t v_subtype, - size_t v_binary_len, - const uint8_t *v_binary, - void *data) -{ - bson_json_state_t *state = data; - size_t b64_len; - char *b64; - - b64_len = (v_binary_len / 3 + 1) * 4 + 1; - b64 = bson_malloc0 (b64_len); - BSON_ASSERT (bson_b64_ntop (v_binary, v_binary_len, b64, b64_len) != -1); - - if (state->mode == BSON_JSON_MODE_CANONICAL || - state->mode == BSON_JSON_MODE_RELAXED) { - bson_string_append (state->str, "{ \"$binary\" : { \"base64\": \""); - bson_string_append (state->str, b64); - bson_string_append (state->str, "\", \"subType\" : \""); - bson_string_append_printf (state->str, "%02x", v_subtype); - bson_string_append (state->str, "\" } }"); - } else { - bson_string_append (state->str, "{ \"$binary\" : \""); - bson_string_append (state->str, b64); - bson_string_append (state->str, "\", \"$type\" : \""); - bson_string_append_printf (state->str, "%02x", v_subtype); - bson_string_append (state->str, "\" }"); - } - - bson_free (b64); - - return false; -} - - -static bool -_bson_as_json_visit_bool (const bson_iter_t *iter, - const char *key, - bool v_bool, - void *data) -{ - bson_json_state_t *state = data; - - bson_string_append (state->str, v_bool ? "true" : "false"); - - return false; -} - - -static bool -_bson_as_json_visit_date_time (const bson_iter_t *iter, - const char *key, - int64_t msec_since_epoch, - void *data) -{ - bson_json_state_t *state = data; - - if (state->mode == BSON_JSON_MODE_CANONICAL || - (state->mode == BSON_JSON_MODE_RELAXED && msec_since_epoch < 0)) { - bson_string_append (state->str, "{ \"$date\" : { \"$numberLong\" : \""); - bson_string_append_printf (state->str, "%" PRId64, msec_since_epoch); - bson_string_append (state->str, "\" } }"); - } else if (state->mode == BSON_JSON_MODE_RELAXED) { - bson_string_append (state->str, "{ \"$date\" : \""); - _bson_iso8601_date_format (msec_since_epoch, state->str); - bson_string_append (state->str, "\" }"); - } else { - bson_string_append (state->str, "{ \"$date\" : "); - bson_string_append_printf (state->str, "%" PRId64, msec_since_epoch); - bson_string_append (state->str, " }"); - } - - return false; -} - - -static bool -_bson_as_json_visit_regex (const bson_iter_t *iter, - const char *key, - const char *v_regex, - const char *v_options, - void *data) -{ - bson_json_state_t *state = data; - char *escaped; - - escaped = bson_utf8_escape_for_json (v_regex, -1); - if (!escaped) { - return true; - } - - if (state->mode == BSON_JSON_MODE_CANONICAL || - state->mode == BSON_JSON_MODE_RELAXED) { - bson_string_append (state->str, - "{ \"$regularExpression\" : { \"pattern\" : \""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\", \"options\" : \""); - _bson_append_regex_options_sorted (state->str, v_options); - bson_string_append (state->str, "\" } }"); - } else { - bson_string_append (state->str, "{ \"$regex\" : \""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\", \"$options\" : \""); - _bson_append_regex_options_sorted (state->str, v_options); - bson_string_append (state->str, "\" }"); - } - - bson_free (escaped); - - return false; -} - - -static bool -_bson_as_json_visit_timestamp (const bson_iter_t *iter, - const char *key, - uint32_t v_timestamp, - uint32_t v_increment, - void *data) -{ - bson_json_state_t *state = data; - - bson_string_append (state->str, "{ \"$timestamp\" : { \"t\" : "); - bson_string_append_printf (state->str, "%u", v_timestamp); - bson_string_append (state->str, ", \"i\" : "); - bson_string_append_printf (state->str, "%u", v_increment); - bson_string_append (state->str, " } }"); - - return false; -} - - -static bool -_bson_as_json_visit_dbpointer (const bson_iter_t *iter, - const char *key, - size_t v_collection_len, - const char *v_collection, - const bson_oid_t *v_oid, - void *data) -{ - bson_json_state_t *state = data; - char *escaped; - char str[25]; - - escaped = bson_utf8_escape_for_json (v_collection, -1); - if (!escaped) { - return true; - } - - if (state->mode == BSON_JSON_MODE_CANONICAL || - state->mode == BSON_JSON_MODE_RELAXED) { - bson_string_append (state->str, "{ \"$dbPointer\" : { \"$ref\" : \""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\""); - - if (v_oid) { - bson_oid_to_string (v_oid, str); - bson_string_append (state->str, ", \"$id\" : { \"$oid\" : \""); - bson_string_append (state->str, str); - bson_string_append (state->str, "\" }"); - } - - bson_string_append (state->str, " } }"); - } else { - bson_string_append (state->str, "{ \"$ref\" : \""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\""); - - if (v_oid) { - bson_oid_to_string (v_oid, str); - bson_string_append (state->str, ", \"$id\" : \""); - bson_string_append (state->str, str); - bson_string_append (state->str, "\""); - } - - bson_string_append (state->str, " }"); - } - - bson_free (escaped); - - return false; -} - - -static bool -_bson_as_json_visit_minkey (const bson_iter_t *iter, - const char *key, - void *data) -{ - bson_json_state_t *state = data; - - bson_string_append (state->str, "{ \"$minKey\" : 1 }"); - - return false; -} - - -static bool -_bson_as_json_visit_maxkey (const bson_iter_t *iter, - const char *key, - void *data) -{ - bson_json_state_t *state = data; - - bson_string_append (state->str, "{ \"$maxKey\" : 1 }"); - - return false; -} - - -static bool -_bson_as_json_visit_before (const bson_iter_t *iter, - const char *key, - void *data) -{ - bson_json_state_t *state = data; - char *escaped; - - if (state->count) { - bson_string_append (state->str, ", "); - } - - if (state->keys) { - escaped = bson_utf8_escape_for_json (key, -1); - if (escaped) { - bson_string_append (state->str, "\""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\" : "); - bson_free (escaped); - } else { - return true; - } - } - - state->count++; - - return false; -} - - -static void -_bson_as_json_visit_corrupt (const bson_iter_t *iter, void *data) -{ - *(((bson_json_state_t *) data)->err_offset) = iter->off; -} - - -static bool -_bson_as_json_visit_code (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - void *data) -{ - bson_json_state_t *state = data; - char *escaped; - - escaped = bson_utf8_escape_for_json (v_code, v_code_len); - if (!escaped) { - return true; - } - - bson_string_append (state->str, "{ \"$code\" : \""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\" }"); - bson_free (escaped); - - return false; -} - - -static bool -_bson_as_json_visit_symbol (const bson_iter_t *iter, - const char *key, - size_t v_symbol_len, - const char *v_symbol, - void *data) -{ - bson_json_state_t *state = data; - char *escaped; - - escaped = bson_utf8_escape_for_json (v_symbol, v_symbol_len); - if (!escaped) { - return true; - } - - if (state->mode == BSON_JSON_MODE_CANONICAL || - state->mode == BSON_JSON_MODE_RELAXED) { - bson_string_append (state->str, "{ \"$symbol\" : \""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\" }"); - } else { - bson_string_append (state->str, "\""); - bson_string_append (state->str, escaped); - bson_string_append (state->str, "\""); - } - - bson_free (escaped); - - return false; -} - - -static bool -_bson_as_json_visit_codewscope (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - const bson_t *v_scope, - void *data) -{ - bson_json_state_t *state = data; - char *code_escaped; - char *scope; - - code_escaped = bson_utf8_escape_for_json (v_code, v_code_len); - if (!code_escaped) { - return true; - } - - /* Encode scope with the same mode */ - scope = _bson_as_json_visit_all (v_scope, NULL, state->mode); - - if (!scope) { - bson_free (code_escaped); - return true; - } - - bson_string_append (state->str, "{ \"$code\" : \""); - bson_string_append (state->str, code_escaped); - bson_string_append (state->str, "\", \"$scope\" : "); - bson_string_append (state->str, scope); - bson_string_append (state->str, " }"); - - bson_free (code_escaped); - bson_free (scope); - - return false; -} - - -static const bson_visitor_t bson_as_json_visitors = { - _bson_as_json_visit_before, NULL, /* visit_after */ - _bson_as_json_visit_corrupt, _bson_as_json_visit_double, - _bson_as_json_visit_utf8, _bson_as_json_visit_document, - _bson_as_json_visit_array, _bson_as_json_visit_binary, - _bson_as_json_visit_undefined, _bson_as_json_visit_oid, - _bson_as_json_visit_bool, _bson_as_json_visit_date_time, - _bson_as_json_visit_null, _bson_as_json_visit_regex, - _bson_as_json_visit_dbpointer, _bson_as_json_visit_code, - _bson_as_json_visit_symbol, _bson_as_json_visit_codewscope, - _bson_as_json_visit_int32, _bson_as_json_visit_timestamp, - _bson_as_json_visit_int64, _bson_as_json_visit_maxkey, - _bson_as_json_visit_minkey, NULL, /* visit_unsupported_type */ - _bson_as_json_visit_decimal128, -}; - - -static bool -_bson_as_json_visit_document (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data) -{ - bson_json_state_t *state = data; - bson_json_state_t child_state = {0, true, state->err_offset}; - bson_iter_t child; - - if (state->depth >= BSON_MAX_RECURSION) { - bson_string_append (state->str, "{ ... }"); - return false; - } - - if (bson_iter_init (&child, v_document)) { - child_state.str = bson_string_new ("{ "); - child_state.depth = state->depth + 1; - child_state.mode = state->mode; - if (bson_iter_visit_all (&child, &bson_as_json_visitors, &child_state)) { - bson_string_free (child_state.str, true); - return true; - } - - bson_string_append (child_state.str, " }"); - bson_string_append (state->str, child_state.str->str); - bson_string_free (child_state.str, true); - } - - return false; -} - - -static bool -_bson_as_json_visit_array (const bson_iter_t *iter, - const char *key, - const bson_t *v_array, - void *data) -{ - bson_json_state_t *state = data; - bson_json_state_t child_state = {0, false, state->err_offset}; - bson_iter_t child; - - if (state->depth >= BSON_MAX_RECURSION) { - bson_string_append (state->str, "{ ... }"); - return false; - } - - if (bson_iter_init (&child, v_array)) { - child_state.str = bson_string_new ("[ "); - child_state.depth = state->depth + 1; - child_state.mode = state->mode; - if (bson_iter_visit_all (&child, &bson_as_json_visitors, &child_state)) { - bson_string_free (child_state.str, true); - return true; - } - - bson_string_append (child_state.str, " ]"); - bson_string_append (state->str, child_state.str->str); - bson_string_free (child_state.str, true); - } - - return false; -} - - -static char * -_bson_as_json_visit_all (const bson_t *bson, - size_t *length, - bson_json_mode_t mode) -{ - bson_json_state_t state; - bson_iter_t iter; - ssize_t err_offset = -1; - - BSON_ASSERT (bson); - - if (length) { - *length = 0; - } - - if (bson_empty0 (bson)) { - if (length) { - *length = 3; - } - - return bson_strdup ("{ }"); - } - - if (!bson_iter_init (&iter, bson)) { - return NULL; - } - - state.count = 0; - state.keys = true; - state.str = bson_string_new ("{ "); - state.depth = 0; - state.err_offset = &err_offset; - state.mode = mode; - - if (bson_iter_visit_all (&iter, &bson_as_json_visitors, &state) || - err_offset != -1) { - /* - * We were prematurely exited due to corruption or failed visitor. - */ - bson_string_free (state.str, true); - if (length) { - *length = 0; - } - return NULL; - } - - bson_string_append (state.str, " }"); - - if (length) { - *length = state.str->len; - } - - return bson_string_free (state.str, false); -} - - -char * -bson_as_canonical_extended_json (const bson_t *bson, size_t *length) -{ - return _bson_as_json_visit_all (bson, length, BSON_JSON_MODE_CANONICAL); -} - - -char * -bson_as_json (const bson_t *bson, size_t *length) -{ - return _bson_as_json_visit_all (bson, length, BSON_JSON_MODE_LEGACY); -} - - -char * -bson_as_relaxed_extended_json (const bson_t *bson, size_t *length) -{ - return _bson_as_json_visit_all (bson, length, BSON_JSON_MODE_RELAXED); -} - - -char * -bson_array_as_json (const bson_t *bson, size_t *length) -{ - bson_json_state_t state; - bson_iter_t iter; - ssize_t err_offset = -1; - - BSON_ASSERT (bson); - - if (length) { - *length = 0; - } - - if (bson_empty0 (bson)) { - if (length) { - *length = 3; - } - - return bson_strdup ("[ ]"); - } - - if (!bson_iter_init (&iter, bson)) { - return NULL; - } - - state.count = 0; - state.keys = false; - state.str = bson_string_new ("[ "); - state.depth = 0; - state.err_offset = &err_offset; - state.mode = BSON_JSON_MODE_LEGACY; - - if (bson_iter_visit_all (&iter, &bson_as_json_visitors, &state) || - err_offset != -1) { - /* - * We were prematurely exited due to corruption or failed visitor. - */ - bson_string_free (state.str, true); - if (length) { - *length = 0; - } - return NULL; - } - - bson_string_append (state.str, " ]"); - - if (length) { - *length = state.str->len; - } - - return bson_string_free (state.str, false); -} - - -#define VALIDATION_ERR(_flag, _msg, ...) \ - bson_set_error (&state->error, BSON_ERROR_INVALID, _flag, _msg, __VA_ARGS__) - -static bool -_bson_iter_validate_utf8 (const bson_iter_t *iter, - const char *key, - size_t v_utf8_len, - const char *v_utf8, - void *data) -{ - bson_validate_state_t *state = data; - bool allow_null; - - if ((state->flags & BSON_VALIDATE_UTF8)) { - allow_null = !!(state->flags & BSON_VALIDATE_UTF8_ALLOW_NULL); - - if (!bson_utf8_validate (v_utf8, v_utf8_len, allow_null)) { - state->err_offset = iter->off; - VALIDATION_ERR ( - BSON_VALIDATE_UTF8, "invalid utf8 string for key \"%s\"", key); - return true; - } - } - - if ((state->flags & BSON_VALIDATE_DOLLAR_KEYS)) { - if (state->phase == BSON_VALIDATE_PHASE_LF_REF_UTF8) { - state->phase = BSON_VALIDATE_PHASE_LF_ID_KEY; - } else if (state->phase == BSON_VALIDATE_PHASE_LF_DB_UTF8) { - state->phase = BSON_VALIDATE_PHASE_NOT_DBREF; - } - } - - return false; -} - - -static void -_bson_iter_validate_corrupt (const bson_iter_t *iter, void *data) -{ - bson_validate_state_t *state = data; - - state->err_offset = iter->err_off; - VALIDATION_ERR (BSON_VALIDATE_NONE, "%s", "corrupt BSON"); -} - - -static bool -_bson_iter_validate_before (const bson_iter_t *iter, - const char *key, - void *data) -{ - bson_validate_state_t *state = data; - - if ((state->flags & BSON_VALIDATE_EMPTY_KEYS)) { - if (key[0] == '\0') { - state->err_offset = iter->off; - VALIDATION_ERR (BSON_VALIDATE_EMPTY_KEYS, "%s", "empty key"); - return true; - } - } - - if ((state->flags & BSON_VALIDATE_DOLLAR_KEYS)) { - if (key[0] == '$') { - if (state->phase == BSON_VALIDATE_PHASE_LF_REF_KEY && - strcmp (key, "$ref") == 0) { - state->phase = BSON_VALIDATE_PHASE_LF_REF_UTF8; - } else if (state->phase == BSON_VALIDATE_PHASE_LF_ID_KEY && - strcmp (key, "$id") == 0) { - state->phase = BSON_VALIDATE_PHASE_LF_DB_KEY; - } else if (state->phase == BSON_VALIDATE_PHASE_LF_DB_KEY && - strcmp (key, "$db") == 0) { - state->phase = BSON_VALIDATE_PHASE_LF_DB_UTF8; - } else { - state->err_offset = iter->off; - VALIDATION_ERR (BSON_VALIDATE_DOLLAR_KEYS, - "keys cannot begin with \"$\": \"%s\"", - key); - return true; - } - } else if (state->phase == BSON_VALIDATE_PHASE_LF_ID_KEY || - state->phase == BSON_VALIDATE_PHASE_LF_REF_UTF8 || - state->phase == BSON_VALIDATE_PHASE_LF_DB_UTF8) { - state->err_offset = iter->off; - VALIDATION_ERR (BSON_VALIDATE_DOLLAR_KEYS, - "invalid key within DBRef subdocument: \"%s\"", - key); - return true; - } else { - state->phase = BSON_VALIDATE_PHASE_NOT_DBREF; - } - } - - if ((state->flags & BSON_VALIDATE_DOT_KEYS)) { - if (strstr (key, ".")) { - state->err_offset = iter->off; - VALIDATION_ERR ( - BSON_VALIDATE_DOT_KEYS, "keys cannot contain \".\": \"%s\"", key); - return true; - } - } - - return false; -} - - -static bool -_bson_iter_validate_codewscope (const bson_iter_t *iter, - const char *key, - size_t v_code_len, - const char *v_code, - const bson_t *v_scope, - void *data) -{ - bson_validate_state_t *state = data; - size_t offset = 0; - - if (!bson_validate (v_scope, state->flags, &offset)) { - state->err_offset = iter->off + offset; - VALIDATION_ERR (BSON_VALIDATE_NONE, "%s", "corrupt code-with-scope"); - return false; - } - - return true; -} - - -static bool -_bson_iter_validate_document (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data); - - -static const bson_visitor_t bson_validate_funcs = { - _bson_iter_validate_before, - NULL, /* visit_after */ - _bson_iter_validate_corrupt, - NULL, /* visit_double */ - _bson_iter_validate_utf8, - _bson_iter_validate_document, - _bson_iter_validate_document, /* visit_array */ - NULL, /* visit_binary */ - NULL, /* visit_undefined */ - NULL, /* visit_oid */ - NULL, /* visit_bool */ - NULL, /* visit_date_time */ - NULL, /* visit_null */ - NULL, /* visit_regex */ - NULL, /* visit_dbpoint */ - NULL, /* visit_code */ - NULL, /* visit_symbol */ - _bson_iter_validate_codewscope, -}; - - -static bool -_bson_iter_validate_document (const bson_iter_t *iter, - const char *key, - const bson_t *v_document, - void *data) -{ - bson_validate_state_t *state = data; - bson_iter_t child; - bson_validate_phase_t phase = state->phase; - - if (!bson_iter_init (&child, v_document)) { - state->err_offset = iter->off; - return true; - } - - if (state->phase == BSON_VALIDATE_PHASE_START) { - state->phase = BSON_VALIDATE_PHASE_TOP; - } else { - state->phase = BSON_VALIDATE_PHASE_LF_REF_KEY; - } - - (void) bson_iter_visit_all (&child, &bson_validate_funcs, state); - - if (state->phase == BSON_VALIDATE_PHASE_LF_ID_KEY || - state->phase == BSON_VALIDATE_PHASE_LF_REF_UTF8 || - state->phase == BSON_VALIDATE_PHASE_LF_DB_UTF8) { - if (state->err_offset <= 0) { - state->err_offset = iter->off; - } - - return true; - } - - state->phase = phase; - - return false; -} - - -static void -_bson_validate_internal (const bson_t *bson, bson_validate_state_t *state) -{ - bson_iter_t iter; - - state->err_offset = -1; - state->phase = BSON_VALIDATE_PHASE_START; - memset (&state->error, 0, sizeof state->error); - - if (!bson_iter_init (&iter, bson)) { - state->err_offset = 0; - VALIDATION_ERR (BSON_VALIDATE_NONE, "%s", "corrupt BSON"); - } else { - _bson_iter_validate_document (&iter, NULL, bson, state); - } -} - - -bool -bson_validate (const bson_t *bson, bson_validate_flags_t flags, size_t *offset) -{ - bson_validate_state_t state; - - state.flags = flags; - _bson_validate_internal (bson, &state); - - if (state.err_offset > 0 && offset) { - *offset = (size_t) state.err_offset; - } - - return state.err_offset < 0; -} - - -bool -bson_validate_with_error (const bson_t *bson, - bson_validate_flags_t flags, - bson_error_t *error) -{ - bson_validate_state_t state; - - state.flags = flags; - _bson_validate_internal (bson, &state); - - if (state.err_offset > 0 && error) { - memcpy (error, &state.error, sizeof *error); - } - - return state.err_offset < 0; -} - - -bool -bson_concat (bson_t *dst, const bson_t *src) -{ - BSON_ASSERT (dst); - BSON_ASSERT (src); - - if (!bson_empty (src)) { - return _bson_append ( - dst, 1, src->len - 5, src->len - 5, _bson_data (src) + 4); - } - - return true; -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.h deleted file mode 100644 index 2f4e9ef..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/bson.h +++ /dev/null @@ -1,1141 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef BSON_H -#define BSON_H - -#define BSON_INSIDE - -#include "bson/bson-compat.h" - -#include -#include - -#include "bson/bson-macros.h" -#include "bson/bson-config.h" -#include "bson/bson-atomic.h" -#include "bson/bson-context.h" -#include "bson/bson-clock.h" -#include "bson/bson-decimal128.h" -#include "bson/bson-error.h" -#include "bson/bson-iter.h" -#include "bson/bson-json.h" -#include "bson/bson-keys.h" -#include "bson/bson-md5.h" -#include "bson/bson-memory.h" -#include "bson/bson-oid.h" -#include "bson/bson-reader.h" -#include "bson/bson-string.h" -#include "bson/bson-types.h" -#include "bson/bson-utf8.h" -#include "bson/bson-value.h" -#include "bson/bson-version.h" -#include "bson/bson-version-functions.h" -#include "bson/bson-writer.h" -#include "bson/bcon.h" - -#undef BSON_INSIDE - - -BSON_BEGIN_DECLS - - -/** - * bson_empty: - * @b: a bson_t. - * - * Checks to see if @b is an empty BSON document. An empty BSON document is - * a 5 byte document which contains the length (4 bytes) and a single NUL - * byte indicating end of fields. - */ -#define bson_empty(b) (((b)->len == 5) || !bson_get_data ((b))[4]) - - -/** - * bson_empty0: - * - * Like bson_empty() but treats NULL the same as an empty bson_t document. - */ -#define bson_empty0(b) (!(b) || bson_empty (b)) - - -/** - * bson_clear: - * - * Easily free a bson document and set it to NULL. Use like: - * - * bson_t *doc = bson_new(); - * bson_clear (&doc); - * BSON_ASSERT (doc == NULL); - */ -#define bson_clear(bptr) \ - do { \ - if (*(bptr)) { \ - bson_destroy (*(bptr)); \ - *(bptr) = NULL; \ - } \ - } while (0) - - -/** - * BSON_MAX_SIZE: - * - * The maximum size in bytes of a BSON document. - */ -#define BSON_MAX_SIZE ((size_t) ((1U << 31) - 1)) - - -#define BSON_APPEND_ARRAY(b, key, val) \ - bson_append_array (b, key, (int) strlen (key), val) - -#define BSON_APPEND_ARRAY_BEGIN(b, key, child) \ - bson_append_array_begin (b, key, (int) strlen (key), child) - -#define BSON_APPEND_BINARY(b, key, subtype, val, len) \ - bson_append_binary (b, key, (int) strlen (key), subtype, val, len) - -#define BSON_APPEND_BOOL(b, key, val) \ - bson_append_bool (b, key, (int) strlen (key), val) - -#define BSON_APPEND_CODE(b, key, val) \ - bson_append_code (b, key, (int) strlen (key), val) - -#define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \ - bson_append_code_with_scope (b, key, (int) strlen (key), val, scope) - -#define BSON_APPEND_DBPOINTER(b, key, coll, oid) \ - bson_append_dbpointer (b, key, (int) strlen (key), coll, oid) - -#define BSON_APPEND_DOCUMENT_BEGIN(b, key, child) \ - bson_append_document_begin (b, key, (int) strlen (key), child) - -#define BSON_APPEND_DOUBLE(b, key, val) \ - bson_append_double (b, key, (int) strlen (key), val) - -#define BSON_APPEND_DOCUMENT(b, key, val) \ - bson_append_document (b, key, (int) strlen (key), val) - -#define BSON_APPEND_INT32(b, key, val) \ - bson_append_int32 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_INT64(b, key, val) \ - bson_append_int64 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_MINKEY(b, key) \ - bson_append_minkey (b, key, (int) strlen (key)) - -#define BSON_APPEND_DECIMAL128(b, key, val) \ - bson_append_decimal128 (b, key, (int) strlen (key), val) - -#define BSON_APPEND_MAXKEY(b, key) \ - bson_append_maxkey (b, key, (int) strlen (key)) - -#define BSON_APPEND_NULL(b, key) bson_append_null (b, key, (int) strlen (key)) - -#define BSON_APPEND_OID(b, key, val) \ - bson_append_oid (b, key, (int) strlen (key), val) - -#define BSON_APPEND_REGEX(b, key, val, opt) \ - bson_append_regex (b, key, (int) strlen (key), val, opt) - -#define BSON_APPEND_UTF8(b, key, val) \ - bson_append_utf8 (b, key, (int) strlen (key), val, (int) strlen (val)) - -#define BSON_APPEND_SYMBOL(b, key, val) \ - bson_append_symbol (b, key, (int) strlen (key), val, (int) strlen (val)) - -#define BSON_APPEND_TIME_T(b, key, val) \ - bson_append_time_t (b, key, (int) strlen (key), val) - -#define BSON_APPEND_TIMEVAL(b, key, val) \ - bson_append_timeval (b, key, (int) strlen (key), val) - -#define BSON_APPEND_DATE_TIME(b, key, val) \ - bson_append_date_time (b, key, (int) strlen (key), val) - -#define BSON_APPEND_TIMESTAMP(b, key, val, inc) \ - bson_append_timestamp (b, key, (int) strlen (key), val, inc) - -#define BSON_APPEND_UNDEFINED(b, key) \ - bson_append_undefined (b, key, (int) strlen (key)) - -#define BSON_APPEND_VALUE(b, key, val) \ - bson_append_value (b, key, (int) strlen (key), (val)) - - -/** - * bson_new: - * - * Allocates a new bson_t structure. Call the various bson_append_*() - * functions to add fields to the bson. You can iterate the bson_t at any - * time using a bson_iter_t and bson_iter_init(). - * - * Returns: A newly allocated bson_t that should be freed with bson_destroy(). - */ -BSON_EXPORT (bson_t *) -bson_new (void); - - -BSON_EXPORT (bson_t *) -bson_new_from_json (const uint8_t *data, ssize_t len, bson_error_t *error); - - -BSON_EXPORT (bool) -bson_init_from_json (bson_t *bson, - const char *data, - ssize_t len, - bson_error_t *error); - - -/** - * bson_init_static: - * @b: A pointer to a bson_t. - * @data: The data buffer to use. - * @length: The length of @data. - * - * Initializes a bson_t using @data and @length. This is ideal if you would - * like to use a stack allocation for your bson and do not need to grow the - * buffer. @data must be valid for the life of @b. - * - * Returns: true if initialized successfully; otherwise false. - */ -BSON_EXPORT (bool) -bson_init_static (bson_t *b, const uint8_t *data, size_t length); - - -/** - * bson_init: - * @b: A pointer to a bson_t. - * - * Initializes a bson_t for use. This function is useful to those that want a - * stack allocated bson_t. The usefulness of a stack allocated bson_t is - * marginal as the target buffer for content will still require heap - * allocations. It can help reduce heap fragmentation on allocators that do - * not employ SLAB/magazine semantics. - * - * You must call bson_destroy() with @b to release resources when you are done - * using @b. - */ -BSON_EXPORT (void) -bson_init (bson_t *b); - - -/** - * bson_reinit: - * @b: (inout): A bson_t. - * - * This is equivalent to calling bson_destroy() and bson_init() on a #bson_t. - * However, it will try to persist the existing malloc'd buffer if one exists. - * This is useful in cases where you want to reduce malloc overhead while - * building many documents. - */ -BSON_EXPORT (void) -bson_reinit (bson_t *b); - - -/** - * bson_new_from_data: - * @data: A buffer containing a serialized bson document. - * @length: The length of the document in bytes. - * - * Creates a new bson_t structure using the data provided. @data should contain - * at least @length bytes that can be copied into the new bson_t structure. - * - * Returns: A newly allocated bson_t that should be freed with bson_destroy(). - * If the first four bytes (little-endian) of data do not match @length, - * then NULL will be returned. - */ -BSON_EXPORT (bson_t *) -bson_new_from_data (const uint8_t *data, size_t length); - - -/** - * bson_new_from_buffer: - * @buf: A pointer to a buffer containing a serialized bson document. - * @buf_len: The length of the buffer in bytes. - * @realloc_fun: a realloc like function - * @realloc_fun_ctx: a context for the realloc function - * - * Creates a new bson_t structure using the data provided. @buf should contain - * a bson document, or null pointer should be passed for new allocations. - * - * Returns: A newly allocated bson_t that should be freed with bson_destroy(). - * The underlying buffer will be used and not be freed in destroy. - */ -BSON_EXPORT (bson_t *) -bson_new_from_buffer (uint8_t **buf, - size_t *buf_len, - bson_realloc_func realloc_func, - void *realloc_func_ctx); - - -/** - * bson_sized_new: - * @size: A size_t containing the number of bytes to allocate. - * - * This will allocate a new bson_t with enough bytes to hold a buffer - * sized @size. @size must be smaller than INT_MAX bytes. - * - * Returns: A newly allocated bson_t that should be freed with bson_destroy(). - */ -BSON_EXPORT (bson_t *) -bson_sized_new (size_t size); - - -/** - * bson_copy: - * @bson: A bson_t. - * - * Copies @bson into a newly allocated bson_t. You must call bson_destroy() - * when you are done with the resulting value to free its resources. - * - * Returns: A newly allocated bson_t that should be free'd with bson_destroy() - */ -BSON_EXPORT (bson_t *) -bson_copy (const bson_t *bson); - - -/** - * bson_copy_to: - * @src: The source bson_t. - * @dst: The destination bson_t. - * - * Initializes @dst and copies the content from @src into @dst. - */ -BSON_EXPORT (void) -bson_copy_to (const bson_t *src, bson_t *dst); - - -/** - * bson_copy_to_excluding: - * @src: A bson_t. - * @dst: A bson_t to initialize and copy into. - * @first_exclude: First field name to exclude. - * - * Copies @src into @dst excluding any field that is provided. - * This is handy for situations when you need to remove one or - * more fields in a bson_t. Note that bson_init() will be called - * on dst. - */ -BSON_EXPORT (void) -bson_copy_to_excluding (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) BSON_GNUC_NULL_TERMINATED - BSON_GNUC_DEPRECATED_FOR (bson_copy_to_excluding_noinit); - -/** - * bson_copy_to_excluding_noinit: - * @src: A bson_t. - * @dst: A bson_t to initialize and copy into. - * @first_exclude: First field name to exclude. - * - * The same as bson_copy_to_excluding, but does not call bson_init() - * on the dst. This version should be preferred in new code, but the - * old function is left for backwards compatibility. - */ -BSON_EXPORT (void) -bson_copy_to_excluding_noinit (const bson_t *src, - bson_t *dst, - const char *first_exclude, - ...) BSON_GNUC_NULL_TERMINATED; - -/** - * bson_destroy: - * @bson: A bson_t. - * - * Frees the resources associated with @bson. - */ -BSON_EXPORT (void) -bson_destroy (bson_t *bson); - -BSON_EXPORT (uint8_t *) -bson_reserve_buffer (bson_t *bson, uint32_t size); - -BSON_EXPORT (bool) -bson_steal (bson_t *dst, bson_t *src); - - -/** - * bson_destroy_with_steal: - * @bson: A #bson_t. - * @steal: If ownership of the data buffer should be transferred to caller. - * @length: (out): location for the length of the buffer. - * - * Destroys @bson similar to calling bson_destroy() except that the underlying - * buffer will be returned and ownership transferred to the caller if @steal - * is non-zero. - * - * If length is non-NULL, the length of @bson will be stored in @length. - * - * It is a programming error to call this function with any bson that has - * been initialized static, or is being used to create a subdocument with - * functions such as bson_append_document_begin() or bson_append_array_begin(). - * - * Returns: a buffer owned by the caller if @steal is true. Otherwise NULL. - * If there was an error, NULL is returned. - */ -BSON_EXPORT (uint8_t *) -bson_destroy_with_steal (bson_t *bson, bool steal, uint32_t *length); - - -/** - * bson_get_data: - * @bson: A bson_t. - * - * Fetched the data buffer for @bson of @bson->len bytes in length. - * - * Returns: A buffer that should not be modified or freed. - */ -BSON_EXPORT (const uint8_t *) -bson_get_data (const bson_t *bson); - - -/** - * bson_count_keys: - * @bson: A bson_t. - * - * Counts the number of elements found in @bson. - */ -BSON_EXPORT (uint32_t) -bson_count_keys (const bson_t *bson); - - -/** - * bson_has_field: - * @bson: A bson_t. - * @key: The key to lookup. - * - * Checks to see if @bson contains a field named @key. - * - * This function is case-sensitive. - * - * Returns: true if @key exists in @bson; otherwise false. - */ -BSON_EXPORT (bool) -bson_has_field (const bson_t *bson, const char *key); - - -/** - * bson_compare: - * @bson: A bson_t. - * @other: A bson_t. - * - * Compares @bson to @other in a qsort() style comparison. - * See qsort() for information on how this function works. - * - * Returns: Less than zero, zero, or greater than zero. - */ -BSON_EXPORT (int) -bson_compare (const bson_t *bson, const bson_t *other); - -/* - * bson_compare: - * @bson: A bson_t. - * @other: A bson_t. - * - * Checks to see if @bson and @other are equal. - * - * Returns: true if equal; otherwise false. - */ -BSON_EXPORT (bool) -bson_equal (const bson_t *bson, const bson_t *other); - - -/** - * bson_validate: - * @bson: A bson_t. - * @offset: A location for the error offset. - * - * Validates a BSON document by walking through the document and inspecting - * the fields for valid content. - * - * Returns: true if @bson is valid; otherwise false and @offset is set. - */ -BSON_EXPORT (bool) -bson_validate (const bson_t *bson, bson_validate_flags_t flags, size_t *offset); - - -/** - * bson_validate_with_error: - * @bson: A bson_t. - * @error: A location for the error info. - * - * Validates a BSON document by walking through the document and inspecting - * the fields for valid content. - * - * Returns: true if @bson is valid; otherwise false and @error is filled out. - */ -BSON_EXPORT (bool) -bson_validate_with_error (const bson_t *bson, - bson_validate_flags_t flags, - bson_error_t *error); - - -/** - * bson_as_canonical_extended_json: - * @bson: A bson_t. - * @length: A location for the string length, or NULL. - * - * Creates a new string containing @bson in canonical extended JSON format, - * conforming to the MongoDB Extended JSON Spec: - * - * github.com/mongodb/specifications/blob/master/source/extended-json.rst - * - * The caller is responsible for freeing the resulting string. If @length is - * non-NULL, then the length of the resulting string will be placed in @length. - * - * See http://docs.mongodb.org/manual/reference/mongodb-extended-json/ for - * more information on extended JSON. - * - * Returns: A newly allocated string that should be freed with bson_free(). - */ -BSON_EXPORT (char *) -bson_as_canonical_extended_json (const bson_t *bson, size_t *length); - - -/** - * bson_as_json: - * @bson: A bson_t. - * @length: A location for the string length, or NULL. - * - * Creates a new string containing @bson in libbson's legacy JSON format. - * Superseded by bson_as_canonical_extended_json and - * bson_as_relaxed_extended_json. The caller is - * responsible for freeing the resulting string. If @length is non-NULL, then - * the length of the resulting string will be placed in @length. - * - * Returns: A newly allocated string that should be freed with bson_free(). - */ -BSON_EXPORT (char *) -bson_as_json (const bson_t *bson, size_t *length); - - -/** - * bson_as_relaxed_extended_json: - * @bson: A bson_t. - * @length: A location for the string length, or NULL. - * - * Creates a new string containing @bson in relaxed extended JSON format, - * conforming to the MongoDB Extended JSON Spec: - * - * github.com/mongodb/specifications/blob/master/source/extended-json.rst - * - * The caller is responsible for freeing the resulting string. If @length is - * non-NULL, then the length of the resulting string will be placed in @length. - * - * See http://docs.mongodb.org/manual/reference/mongodb-extended-json/ for - * more information on extended JSON. - * - * Returns: A newly allocated string that should be freed with bson_free(). - */ -BSON_EXPORT (char *) -bson_as_relaxed_extended_json (const bson_t *bson, size_t *length); - - -/* like bson_as_json() but for outermost arrays. */ -BSON_EXPORT (char *) -bson_array_as_json (const bson_t *bson, size_t *length); - - -BSON_EXPORT (bool) -bson_append_value (bson_t *bson, - const char *key, - int key_length, - const bson_value_t *value); - - -/** - * bson_append_array: - * @bson: A bson_t. - * @key: The key for the field. - * @array: A bson_t containing the array. - * - * Appends a BSON array to @bson. BSON arrays are like documents where the - * key is the string version of the index. For example, the first item of the - * array would have the key "0". The second item would have the index "1". - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_array (bson_t *bson, - const char *key, - int key_length, - const bson_t *array); - - -/** - * bson_append_binary: - * @bson: A bson_t to append. - * @key: The key for the field. - * @subtype: The bson_subtype_t of the binary. - * @binary: The binary buffer to append. - * @length: The length of @binary. - * - * Appends a binary buffer to the BSON document. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_binary (bson_t *bson, - const char *key, - int key_length, - bson_subtype_t subtype, - const uint8_t *binary, - uint32_t length); - - -/** - * bson_append_bool: - * @bson: A bson_t. - * @key: The key for the field. - * @value: The boolean value. - * - * Appends a new field to @bson of type BSON_TYPE_BOOL. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_bool (bson_t *bson, const char *key, int key_length, bool value); - - -/** - * bson_append_code: - * @bson: A bson_t. - * @key: The key for the document. - * @javascript: JavaScript code to be executed. - * - * Appends a field of type BSON_TYPE_CODE to the BSON document. @javascript - * should contain a script in javascript to be executed. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_code (bson_t *bson, - const char *key, - int key_length, - const char *javascript); - - -/** - * bson_append_code_with_scope: - * @bson: A bson_t. - * @key: The key for the document. - * @javascript: JavaScript code to be executed. - * @scope: A bson_t containing the scope for @javascript. - * - * Appends a field of type BSON_TYPE_CODEWSCOPE to the BSON document. - * @javascript should contain a script in javascript to be executed. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_code_with_scope (bson_t *bson, - const char *key, - int key_length, - const char *javascript, - const bson_t *scope); - - -/** - * bson_append_dbpointer: - * @bson: A bson_t. - * @key: The key for the field. - * @collection: The collection name. - * @oid: The oid to the reference. - * - * Appends a new field of type BSON_TYPE_DBPOINTER. This datum type is - * deprecated in the BSON spec and should not be used in new code. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_dbpointer (bson_t *bson, - const char *key, - int key_length, - const char *collection, - const bson_oid_t *oid); - - -/** - * bson_append_double: - * @bson: A bson_t. - * @key: The key for the field. - * - * Appends a new field to @bson of the type BSON_TYPE_DOUBLE. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_double (bson_t *bson, - const char *key, - int key_length, - double value); - - -/** - * bson_append_document: - * @bson: A bson_t. - * @key: The key for the field. - * @value: A bson_t containing the subdocument. - * - * Appends a new field to @bson of the type BSON_TYPE_DOCUMENT. - * The documents contents will be copied into @bson. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_document (bson_t *bson, - const char *key, - int key_length, - const bson_t *value); - - -/** - * bson_append_document_begin: - * @bson: A bson_t. - * @key: The key for the field. - * @key_length: The length of @key in bytes not including NUL or -1 - * if @key_length is NUL terminated. - * @child: A location to an uninitialized bson_t. - * - * Appends a new field named @key to @bson. The field is, however, - * incomplete. @child will be initialized so that you may add fields to the - * child document. Child will use a memory buffer owned by @bson and - * therefore grow the parent buffer as additional space is used. This allows - * a single malloc'd buffer to be used when building documents which can help - * reduce memory fragmentation. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_document_begin (bson_t *bson, - const char *key, - int key_length, - bson_t *child); - - -/** - * bson_append_document_end: - * @bson: A bson_t. - * @child: A bson_t supplied to bson_append_document_begin(). - * - * Finishes the appending of a document to a @bson. @child is considered - * disposed after this call and should not be used any further. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_document_end (bson_t *bson, bson_t *child); - - -/** - * bson_append_array_begin: - * @bson: A bson_t. - * @key: The key for the field. - * @key_length: The length of @key in bytes not including NUL or -1 - * if @key_length is NUL terminated. - * @child: A location to an uninitialized bson_t. - * - * Appends a new field named @key to @bson. The field is, however, - * incomplete. @child will be initialized so that you may add fields to the - * child array. Child will use a memory buffer owned by @bson and - * therefore grow the parent buffer as additional space is used. This allows - * a single malloc'd buffer to be used when building arrays which can help - * reduce memory fragmentation. - * - * The type of @child will be BSON_TYPE_ARRAY and therefore the keys inside - * of it MUST be "0", "1", etc. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_array_begin (bson_t *bson, - const char *key, - int key_length, - bson_t *child); - - -/** - * bson_append_array_end: - * @bson: A bson_t. - * @child: A bson_t supplied to bson_append_array_begin(). - * - * Finishes the appending of a array to a @bson. @child is considered - * disposed after this call and should not be used any further. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_array_end (bson_t *bson, bson_t *child); - - -/** - * bson_append_int32: - * @bson: A bson_t. - * @key: The key for the field. - * @value: The int32_t 32-bit integer value. - * - * Appends a new field of type BSON_TYPE_INT32 to @bson. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_int32 (bson_t *bson, - const char *key, - int key_length, - int32_t value); - - -/** - * bson_append_int64: - * @bson: A bson_t. - * @key: The key for the field. - * @value: The int64_t 64-bit integer value. - * - * Appends a new field of type BSON_TYPE_INT64 to @bson. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_int64 (bson_t *bson, - const char *key, - int key_length, - int64_t value); - - -/** - * bson_append_decimal128: - * @bson: A bson_t. - * @key: The key for the field. - * @value: The bson_decimal128_t decimal128 value. - * - * Appends a new field of type BSON_TYPE_DECIMAL128 to @bson. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_decimal128 (bson_t *bson, - const char *key, - int key_length, - const bson_decimal128_t *value); - - -/** - * bson_append_iter: - * @bson: A bson_t to append to. - * @key: The key name or %NULL to take current key from @iter. - * @key_length: The key length or -1 to use strlen(). - * @iter: The iter located on the position of the element to append. - * - * Appends a new field to @bson that is equivalent to the field currently - * pointed to by @iter. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_iter (bson_t *bson, - const char *key, - int key_length, - const bson_iter_t *iter); - - -/** - * bson_append_minkey: - * @bson: A bson_t. - * @key: The key for the field. - * - * Appends a new field of type BSON_TYPE_MINKEY to @bson. This is a special - * type that compares lower than all other possible BSON element values. - * - * See http://bsonspec.org for more information on this type. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_minkey (bson_t *bson, const char *key, int key_length); - - -/** - * bson_append_maxkey: - * @bson: A bson_t. - * @key: The key for the field. - * - * Appends a new field of type BSON_TYPE_MAXKEY to @bson. This is a special - * type that compares higher than all other possible BSON element values. - * - * See http://bsonspec.org for more information on this type. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_maxkey (bson_t *bson, const char *key, int key_length); - - -/** - * bson_append_null: - * @bson: A bson_t. - * @key: The key for the field. - * - * Appends a new field to @bson with NULL for the value. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_null (bson_t *bson, const char *key, int key_length); - - -/** - * bson_append_oid: - * @bson: A bson_t. - * @key: The key for the field. - * @oid: bson_oid_t. - * - * Appends a new field to the @bson of type BSON_TYPE_OID using the contents of - * @oid. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_oid (bson_t *bson, - const char *key, - int key_length, - const bson_oid_t *oid); - - -/** - * bson_append_regex: - * @bson: A bson_t. - * @key: The key of the field. - * @regex: The regex to append to the bson. - * @options: Options for @regex. - * - * Appends a new field to @bson of type BSON_TYPE_REGEX. @regex should - * be the regex string. @options should contain the options for the regex. - * - * Valid options for @options are: - * - * 'i' for case-insensitive. - * 'm' for multiple matching. - * 'x' for verbose mode. - * 'l' to make \w and \W locale dependent. - * 's' for dotall mode ('.' matches everything) - * 'u' to make \w and \W match unicode. - * - * For more detailed information about BSON regex elements, see bsonspec.org. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_regex (bson_t *bson, - const char *key, - int key_length, - const char *regex, - const char *options); - - -/** - * bson_append_regex: - * @bson: A bson_t. - * @key: The key of the field. - * @key_length: The length of the key string. - * @regex: The regex to append to the bson. - * @regex_length: The length of the regex string. - * @options: Options for @regex. - * - * Appends a new field to @bson of type BSON_TYPE_REGEX. @regex should - * be the regex string. @options should contain the options for the regex. - * - * Valid options for @options are: - * - * 'i' for case-insensitive. - * 'm' for multiple matching. - * 'x' for verbose mode. - * 'l' to make \w and \W locale dependent. - * 's' for dotall mode ('.' matches everything) - * 'u' to make \w and \W match unicode. - * - * For more detailed information about BSON regex elements, see bsonspec.org. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_regex_w_len (bson_t *bson, const char *key, int key_length, - const char *regex, int regex_length, - const char *options); - - -/** - * bson_append_utf8: - * @bson: A bson_t. - * @key: The key for the field. - * @value: A UTF-8 encoded string. - * @length: The length of @value or -1 if it is NUL terminated. - * - * Appends a new field to @bson using @key as the key and @value as the UTF-8 - * encoded value. - * - * It is the callers responsibility to ensure @value is valid UTF-8. You can - * use bson_utf8_validate() to perform this check. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_utf8 (bson_t *bson, - const char *key, - int key_length, - const char *value, - int length); - - -/** - * bson_append_symbol: - * @bson: A bson_t. - * @key: The key for the field. - * @value: The symbol as a string. - * @length: The length of @value or -1 if NUL-terminated. - * - * Appends a new field to @bson of type BSON_TYPE_SYMBOL. This BSON type is - * deprecated and should not be used in new code. - * - * See http://bsonspec.org for more information on this type. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_symbol (bson_t *bson, - const char *key, - int key_length, - const char *value, - int length); - - -/** - * bson_append_time_t: - * @bson: A bson_t. - * @key: The key for the field. - * @value: A time_t. - * - * Appends a BSON_TYPE_DATE_TIME field to @bson using the time_t @value for the - * number of seconds since UNIX epoch in UTC. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_time_t (bson_t *bson, - const char *key, - int key_length, - time_t value); - - -/** - * bson_append_timeval: - * @bson: A bson_t. - * @key: The key for the field. - * @value: A struct timeval containing the date and time. - * - * Appends a BSON_TYPE_DATE_TIME field to @bson using the struct timeval - * provided. The time is persisted in milliseconds since the UNIX epoch in UTC. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_timeval (bson_t *bson, - const char *key, - int key_length, - struct timeval *value); - - -/** - * bson_append_date_time: - * @bson: A bson_t. - * @key: The key for the field. - * @key_length: The length of @key in bytes or -1 if \0 terminated. - * @value: The number of milliseconds elapsed since UNIX epoch. - * - * Appends a new field to @bson of type BSON_TYPE_DATE_TIME. - * - * Returns: true if successful; otherwise false. - */ -BSON_EXPORT (bool) -bson_append_date_time (bson_t *bson, - const char *key, - int key_length, - int64_t value); - - -/** - * bson_append_now_utc: - * @bson: A bson_t. - * @key: The key for the field. - * @key_length: The length of @key or -1 if it is NULL terminated. - * - * Appends a BSON_TYPE_DATE_TIME field to @bson using the current time in UTC - * as the field value. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_now_utc (bson_t *bson, const char *key, int key_length); - -/** - * bson_append_timestamp: - * @bson: A bson_t. - * @key: The key for the field. - * @timestamp: 4 byte timestamp. - * @increment: 4 byte increment for timestamp. - * - * Appends a field of type BSON_TYPE_TIMESTAMP to @bson. This is a special type - * used by MongoDB replication and sharding. If you need generic time and date - * fields use bson_append_time_t() or bson_append_timeval(). - * - * Setting @increment and @timestamp to zero has special semantics. See - * http://bsonspec.org for more information on this field type. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_timestamp (bson_t *bson, - const char *key, - int key_length, - uint32_t timestamp, - uint32_t increment); - - -/** - * bson_append_undefined: - * @bson: A bson_t. - * @key: The key for the field. - * - * Appends a field of type BSON_TYPE_UNDEFINED. This type is deprecated in the - * spec and should not be used for new code. However, it is provided for those - * needing to interact with legacy systems. - * - * Returns: true if successful; false if append would overflow max size. - */ -BSON_EXPORT (bool) -bson_append_undefined (bson_t *bson, const char *key, int key_length); - - -BSON_EXPORT (bool) -bson_concat (bson_t *dst, const bson_t *src); - - -BSON_END_DECLS - - -#endif /* BSON_H */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/forwarding/bson.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/forwarding/bson.h deleted file mode 100644 index cfe6d06..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/forwarding/bson.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2018-present MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Including bson.h is superseded. Use bson/bson.h instead. */ -#include "bson/bson.h" \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/modules/module.modulemap.in b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/modules/module.modulemap.in deleted file mode 100644 index 7c087d2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/bson/modules/module.modulemap.in +++ /dev/null @@ -1,5 +0,0 @@ -framework module bson [system] { - umbrella header "bson.h" - - export * -} \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/CMakeLists.txt deleted file mode 100644 index ffb18a4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set (src_libbson_src_jsonsl_DIST_hs - jsonsl.h -) - -set (src_libbson_src_jsonsl_DIST_cs - jsonsl.c -) - -set_dist_list (src_libbson_src_jsonsl_DIST - CMakeLists.txt - ${src_libbson_src_jsonsl_DIST_hs} - ${src_libbson_src_jsonsl_DIST_cs} -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.c deleted file mode 100644 index ad14414..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.c +++ /dev/null @@ -1,1668 +0,0 @@ -/* Copyright (C) 2012-2015 Mark Nunberg. - * - * See included LICENSE file for license details. - */ - -#include "jsonsl.h" -#include "bson/bson-memory.h" - -#include -#include - -#ifdef JSONSL_USE_METRICS -#define XMETRICS \ - X(STRINGY_INSIGNIFICANT) \ - X(STRINGY_SLOWPATH) \ - X(ALLOWED_WHITESPACE) \ - X(QUOTE_FASTPATH) \ - X(SPECIAL_FASTPATH) \ - X(SPECIAL_WSPOP) \ - X(SPECIAL_SLOWPATH) \ - X(GENERIC) \ - X(STRUCTURAL_TOKEN) \ - X(SPECIAL_SWITCHFIRST) \ - X(STRINGY_CATCH) \ - X(NUMBER_FASTPATH) \ - X(ESCAPES) \ - X(TOTAL) \ - -struct jsonsl_metrics_st { -#define X(m) \ - unsigned long metric_##m; - XMETRICS -#undef X -}; - -static struct jsonsl_metrics_st GlobalMetrics = { 0 }; -static unsigned long GenericCounter[0x100] = { 0 }; -static unsigned long StringyCatchCounter[0x100] = { 0 }; - -#define INCR_METRIC(m) \ - GlobalMetrics.metric_##m++; - -#define INCR_GENERIC(c) \ - INCR_METRIC(GENERIC); \ - GenericCounter[c]++; \ - -#define INCR_STRINGY_CATCH(c) \ - INCR_METRIC(STRINGY_CATCH); \ - StringyCatchCounter[c]++; - -JSONSL_API -void jsonsl_dump_global_metrics(void) -{ - int ii; - printf("JSONSL Metrics:\n"); -#define X(m) \ - printf("\t%-30s %20lu (%0.2f%%)\n", #m, GlobalMetrics.metric_##m, \ - (float)((float)(GlobalMetrics.metric_##m/(float)GlobalMetrics.metric_TOTAL)) * 100); - XMETRICS -#undef X - printf("Generic Characters:\n"); - for (ii = 0; ii < 0xff; ii++) { - if (GenericCounter[ii]) { - printf("\t[ %c ] %lu\n", ii, GenericCounter[ii]); - } - } - printf("Weird string loop\n"); - for (ii = 0; ii < 0xff; ii++) { - if (StringyCatchCounter[ii]) { - printf("\t[ %c ] %lu\n", ii, StringyCatchCounter[ii]); - } - } -} - -#else -#define INCR_METRIC(m) -#define INCR_GENERIC(c) -#define INCR_STRINGY_CATCH(c) -JSONSL_API -void jsonsl_dump_global_metrics(void) { } -#endif /* JSONSL_USE_METRICS */ - -#define CASE_DIGITS \ -case '1': \ -case '2': \ -case '3': \ -case '4': \ -case '5': \ -case '6': \ -case '7': \ -case '8': \ -case '9': \ -case '0': - -static unsigned extract_special(unsigned); -static int is_special_end(unsigned); -static int is_allowed_whitespace(unsigned); -static int is_allowed_escape(unsigned); -static int is_simple_char(unsigned); -static char get_escape_equiv(unsigned); - -JSONSL_API -jsonsl_t jsonsl_new(int nlevels) -{ - unsigned int ii; - struct jsonsl_st * jsn; - - if (nlevels < 2) { - return NULL; - } - - jsn = (struct jsonsl_st *) - bson_malloc0(sizeof (*jsn) + - ( (nlevels-1) * sizeof (struct jsonsl_state_st) ) - ); - - jsn->levels_max = (unsigned int) nlevels; - jsn->max_callback_level = UINT_MAX; - jsonsl_reset(jsn); - for (ii = 0; ii < jsn->levels_max; ii++) { - jsn->stack[ii].level = ii; - } - return jsn; -} - -JSONSL_API -void jsonsl_reset(jsonsl_t jsn) -{ - jsn->tok_last = 0; - jsn->can_insert = 1; - jsn->pos = 0; - jsn->level = 0; - jsn->stopfl = 0; - jsn->in_escape = 0; - jsn->expecting = 0; -} - -JSONSL_API -void jsonsl_destroy(jsonsl_t jsn) -{ - if (jsn) { - bson_free(jsn); - } -} - - -#define FASTPARSE_EXHAUSTED 1 -#define FASTPARSE_BREAK 0 - -/* - * This function is meant to accelerate string parsing, reducing the main loop's - * check if we are indeed a string. - * - * @param jsn the parser - * @param[in,out] bytes_p A pointer to the current buffer (i.e. current position) - * @param[in,out] nbytes_p A pointer to the current size of the buffer - * @return true if all bytes have been exhausted (and thus the main loop can - * return), false if a special character was examined which requires greater - * examination. - */ -static int -jsonsl__str_fastparse(jsonsl_t jsn, - const jsonsl_uchar_t **bytes_p, size_t *nbytes_p) -{ - const jsonsl_uchar_t *bytes = *bytes_p; - const jsonsl_uchar_t *end; - for (end = bytes + *nbytes_p; bytes != end; bytes++) { - if ( -#ifdef JSONSL_USE_WCHAR - *bytes >= 0x100 || -#endif /* JSONSL_USE_WCHAR */ - (is_simple_char(*bytes))) { - INCR_METRIC(TOTAL); - INCR_METRIC(STRINGY_INSIGNIFICANT); - } else { - /* Once we're done here, re-calculate the position variables */ - jsn->pos += (bytes - *bytes_p); - *nbytes_p -= (bytes - *bytes_p); - *bytes_p = bytes; - return FASTPARSE_BREAK; - } - } - - /* Once we're done here, re-calculate the position variables */ - jsn->pos += (bytes - *bytes_p); - return FASTPARSE_EXHAUSTED; -} - -/* Functions exactly like str_fastparse, except it also accepts a 'state' - * argument, since the number's value is updated in the state. */ -static int -jsonsl__num_fastparse(jsonsl_t jsn, - const jsonsl_uchar_t **bytes_p, size_t *nbytes_p, - struct jsonsl_state_st *state) -{ - int exhausted = 1; - size_t nbytes = *nbytes_p; - const jsonsl_uchar_t *bytes = *bytes_p; - - for (; nbytes; nbytes--, bytes++) { - jsonsl_uchar_t c = *bytes; - if (isdigit(c)) { - INCR_METRIC(TOTAL); - INCR_METRIC(NUMBER_FASTPATH); - state->nelem = (state->nelem * 10) + (c - 0x30); - } else { - exhausted = 0; - break; - } - } - jsn->pos += (*nbytes_p - nbytes); - if (exhausted) { - return FASTPARSE_EXHAUSTED; - } - *nbytes_p = nbytes; - *bytes_p = bytes; - return FASTPARSE_BREAK; -} - -JSONSL_API -void -jsonsl_feed(jsonsl_t jsn, const jsonsl_char_t *bytes, size_t nbytes) -{ - -#define INVOKE_ERROR(eb) \ - if (jsn->error_callback(jsn, JSONSL_ERROR_##eb, state, (char*)c)) { \ - goto GT_AGAIN; \ - } \ - return; - -#define STACK_PUSH \ - if (jsn->level >= (levels_max-1)) { \ - jsn->error_callback(jsn, JSONSL_ERROR_LEVELS_EXCEEDED, state, (char*)c); \ - return; \ - } \ - state = jsn->stack + (++jsn->level); \ - state->ignore_callback = jsn->stack[jsn->level-1].ignore_callback; \ - state->pos_begin = jsn->pos; - -#define STACK_POP_NOPOS \ - state->pos_cur = jsn->pos; \ - state = jsn->stack + (--jsn->level); - - -#define STACK_POP \ - STACK_POP_NOPOS; \ - state->pos_cur = jsn->pos; - -#define CALLBACK_AND_POP_NOPOS(T) \ - state->pos_cur = jsn->pos; \ - DO_CALLBACK(T, POP); \ - state->nescapes = 0; \ - state = jsn->stack + (--jsn->level); - -#define CALLBACK_AND_POP(T) \ - CALLBACK_AND_POP_NOPOS(T); \ - state->pos_cur = jsn->pos; - -#define SPECIAL_POP \ - CALLBACK_AND_POP(SPECIAL); \ - jsn->expecting = 0; \ - jsn->tok_last = 0; \ - -#define CUR_CHAR (*(jsonsl_uchar_t*)c) - -#define DO_CALLBACK(T, action) \ - if (jsn->call_##T && \ - jsn->max_callback_level > state->level && \ - state->ignore_callback == 0) { \ - \ - if (jsn->action_callback_##action) { \ - jsn->action_callback_##action(jsn, JSONSL_ACTION_##action, state, (jsonsl_char_t*)c); \ - } else if (jsn->action_callback) { \ - jsn->action_callback(jsn, JSONSL_ACTION_##action, state, (jsonsl_char_t*)c); \ - } \ - if (jsn->stopfl) { return; } \ - } - - /** - * Verifies that we are able to insert the (non-string) item into a hash. - */ -#define ENSURE_HVAL \ - if (state->nelem % 2 == 0 && state->type == JSONSL_T_OBJECT) { \ - INVOKE_ERROR(HKEY_EXPECTED); \ - } - -#define VERIFY_SPECIAL(lit) \ - if (CUR_CHAR != (lit)[jsn->pos - state->pos_begin]) { \ - INVOKE_ERROR(SPECIAL_EXPECTED); \ - } - -#define VERIFY_SPECIAL_CI(lit) \ - if (tolower(CUR_CHAR) != (lit)[jsn->pos - state->pos_begin]) { \ - INVOKE_ERROR(SPECIAL_EXPECTED); \ - } - -#define STATE_SPECIAL_LENGTH \ - (state)->nescapes - -#define IS_NORMAL_NUMBER \ - ((state)->special_flags == JSONSL_SPECIALf_UNSIGNED || \ - (state)->special_flags == JSONSL_SPECIALf_SIGNED) - -#define STATE_NUM_LAST jsn->tok_last - -#define CONTINUE_NEXT_CHAR() continue - - const jsonsl_uchar_t *c = (jsonsl_uchar_t*)bytes; - size_t levels_max = jsn->levels_max; - struct jsonsl_state_st *state = jsn->stack + jsn->level; - jsn->base = bytes; - - for (; nbytes; nbytes--, jsn->pos++, c++) { - unsigned state_type; - INCR_METRIC(TOTAL); - - GT_AGAIN: - state_type = state->type; - /* Most common type is typically a string: */ - if (state_type & JSONSL_Tf_STRINGY) { - /* Special escape handling for some stuff */ - if (jsn->in_escape) { - jsn->in_escape = 0; - if (!is_allowed_escape(CUR_CHAR)) { - INVOKE_ERROR(ESCAPE_INVALID); - } else if (CUR_CHAR == 'u') { - DO_CALLBACK(UESCAPE, UESCAPE); - if (jsn->return_UESCAPE) { - return; - } - } - CONTINUE_NEXT_CHAR(); - } - - if (jsonsl__str_fastparse(jsn, &c, &nbytes) == - FASTPARSE_EXHAUSTED) { - /* No need to readjust variables as we've exhausted the iterator */ - return; - } else { - if (CUR_CHAR == '"') { - goto GT_QUOTE; - } else if (CUR_CHAR == '\\') { - goto GT_ESCAPE; - } else { - INVOKE_ERROR(WEIRD_WHITESPACE); - } - } - INCR_METRIC(STRINGY_SLOWPATH); - - } else if (state_type == JSONSL_T_SPECIAL) { - /* Fast track for signed/unsigned */ - if (IS_NORMAL_NUMBER) { - if (jsonsl__num_fastparse(jsn, &c, &nbytes, state) == - FASTPARSE_EXHAUSTED) { - return; - } else { - goto GT_SPECIAL_NUMERIC; - } - } else if (state->special_flags == JSONSL_SPECIALf_DASH) { -#ifdef JSONSL_PARSE_NAN - if (CUR_CHAR == 'I' || CUR_CHAR == 'i') { - /* parsing -Infinity? */ - state->special_flags = JSONSL_SPECIALf_NEG_INF; - CONTINUE_NEXT_CHAR(); - } -#endif - - if (!isdigit(CUR_CHAR)) { - INVOKE_ERROR(INVALID_NUMBER); - } - - if (CUR_CHAR == '0') { - state->special_flags = JSONSL_SPECIALf_ZERO|JSONSL_SPECIALf_SIGNED; - } else if (isdigit(CUR_CHAR)) { - state->special_flags = JSONSL_SPECIALf_SIGNED; - state->nelem = CUR_CHAR - 0x30; - } else { - INVOKE_ERROR(INVALID_NUMBER); - } - CONTINUE_NEXT_CHAR(); - - } else if (state->special_flags == JSONSL_SPECIALf_ZERO) { - if (isdigit(CUR_CHAR)) { - /* Following a zero! */ - INVOKE_ERROR(INVALID_NUMBER); - } - /* Unset the 'zero' flag: */ - if (state->special_flags & JSONSL_SPECIALf_SIGNED) { - state->special_flags = JSONSL_SPECIALf_SIGNED; - } else { - state->special_flags = JSONSL_SPECIALf_UNSIGNED; - } - goto GT_SPECIAL_NUMERIC; - } - - if ((state->special_flags & JSONSL_SPECIALf_NUMERIC) && - !(state->special_flags & JSONSL_SPECIALf_INF)) { - GT_SPECIAL_NUMERIC: - switch (CUR_CHAR) { - CASE_DIGITS - STATE_NUM_LAST = '1'; - CONTINUE_NEXT_CHAR(); - - case '.': - if (state->special_flags & JSONSL_SPECIALf_FLOAT) { - INVOKE_ERROR(INVALID_NUMBER); - } - state->special_flags |= JSONSL_SPECIALf_FLOAT; - STATE_NUM_LAST = '.'; - CONTINUE_NEXT_CHAR(); - - case 'e': - case 'E': - if (state->special_flags & JSONSL_SPECIALf_EXPONENT) { - INVOKE_ERROR(INVALID_NUMBER); - } - state->special_flags |= JSONSL_SPECIALf_EXPONENT; - STATE_NUM_LAST = 'e'; - CONTINUE_NEXT_CHAR(); - - case '-': - case '+': - if (STATE_NUM_LAST != 'e') { - INVOKE_ERROR(INVALID_NUMBER); - } - STATE_NUM_LAST = '-'; - CONTINUE_NEXT_CHAR(); - - default: - if (is_special_end(CUR_CHAR)) { - goto GT_SPECIAL_POP; - } - INVOKE_ERROR(INVALID_NUMBER); - break; - } - } - /* else if (!NUMERIC) */ - if (!is_special_end(CUR_CHAR)) { - STATE_SPECIAL_LENGTH++; - - /* Verify TRUE, FALSE, NULL */ - if (state->special_flags == JSONSL_SPECIALf_TRUE) { - VERIFY_SPECIAL("true"); - } else if (state->special_flags == JSONSL_SPECIALf_FALSE) { - VERIFY_SPECIAL("false"); - } else if (state->special_flags == JSONSL_SPECIALf_NULL) { - VERIFY_SPECIAL("null"); -#ifdef JSONSL_PARSE_NAN - } else if (state->special_flags == JSONSL_SPECIALf_POS_INF) { - VERIFY_SPECIAL_CI("infinity"); - } else if (state->special_flags == JSONSL_SPECIALf_NEG_INF) { - VERIFY_SPECIAL_CI("-infinity"); - } else if (state->special_flags == JSONSL_SPECIALf_NAN) { - VERIFY_SPECIAL_CI("nan"); - } else if (state->special_flags & JSONSL_SPECIALf_NULL || - state->special_flags & JSONSL_SPECIALf_NAN) { - /* previous char was "n", are we parsing null or nan? */ - if (CUR_CHAR != 'u') { - state->special_flags &= ~JSONSL_SPECIALf_NULL; - } - - if (tolower(CUR_CHAR) != 'a') { - state->special_flags &= ~JSONSL_SPECIALf_NAN; - } -#endif - } - INCR_METRIC(SPECIAL_FASTPATH); - CONTINUE_NEXT_CHAR(); - } - - GT_SPECIAL_POP: - jsn->can_insert = 0; - if (IS_NORMAL_NUMBER) { - /* Nothing */ - } else if (state->special_flags == JSONSL_SPECIALf_ZERO || - state->special_flags == (JSONSL_SPECIALf_ZERO|JSONSL_SPECIALf_SIGNED)) { - /* 0 is unsigned! */ - state->special_flags = JSONSL_SPECIALf_UNSIGNED; - } else if (state->special_flags == JSONSL_SPECIALf_DASH) { - /* Still in dash! */ - INVOKE_ERROR(INVALID_NUMBER); - } else if (state->special_flags & JSONSL_SPECIALf_INF) { - if (STATE_SPECIAL_LENGTH != 8) { - INVOKE_ERROR(SPECIAL_INCOMPLETE); - } - state->nelem = 1; - } else if (state->special_flags & JSONSL_SPECIALf_NUMERIC) { - /* Check that we're not at the end of a token */ - if (STATE_NUM_LAST != '1') { - INVOKE_ERROR(INVALID_NUMBER); - } - } else if (state->special_flags == JSONSL_SPECIALf_TRUE) { - if (STATE_SPECIAL_LENGTH != 4) { - INVOKE_ERROR(SPECIAL_INCOMPLETE); - } - state->nelem = 1; - } else if (state->special_flags == JSONSL_SPECIALf_FALSE) { - if (STATE_SPECIAL_LENGTH != 5) { - INVOKE_ERROR(SPECIAL_INCOMPLETE); - } - } else if (state->special_flags == JSONSL_SPECIALf_NULL) { - if (STATE_SPECIAL_LENGTH != 4) { - INVOKE_ERROR(SPECIAL_INCOMPLETE); - } - } - SPECIAL_POP; - jsn->expecting = ','; - if (is_allowed_whitespace(CUR_CHAR)) { - CONTINUE_NEXT_CHAR(); - } - /** - * This works because we have a non-whitespace token - * which is not a special token. If this is a structural - * character then it will be gracefully handled by the - * switch statement. Otherwise it will default to the 'special' - * state again, - */ - goto GT_STRUCTURAL_TOKEN; - } else if (is_allowed_whitespace(CUR_CHAR)) { - INCR_METRIC(ALLOWED_WHITESPACE); - /* So we're not special. Harmless insignificant whitespace - * passthrough - */ - CONTINUE_NEXT_CHAR(); - } else if (extract_special(CUR_CHAR)) { - /* not a string, whitespace, or structural token. must be special */ - goto GT_SPECIAL_BEGIN; - } - - INCR_GENERIC(CUR_CHAR); - - if (CUR_CHAR == '"') { - GT_QUOTE: - jsn->can_insert = 0; - switch (state_type) { - - /* the end of a string or hash key */ - case JSONSL_T_STRING: - CALLBACK_AND_POP(STRING); - CONTINUE_NEXT_CHAR(); - case JSONSL_T_HKEY: - CALLBACK_AND_POP(HKEY); - CONTINUE_NEXT_CHAR(); - - case JSONSL_T_OBJECT: - state->nelem++; - if ( (state->nelem-1) % 2 ) { - /* Odd, this must be a hash value */ - if (jsn->tok_last != ':') { - INVOKE_ERROR(MISSING_TOKEN); - } - jsn->expecting = ','; /* Can't figure out what to expect next */ - jsn->tok_last = 0; - - STACK_PUSH; - state->type = JSONSL_T_STRING; - DO_CALLBACK(STRING, PUSH); - - } else { - /* hash key */ - if (jsn->expecting != '"') { - INVOKE_ERROR(STRAY_TOKEN); - } - jsn->tok_last = 0; - jsn->expecting = ':'; - - STACK_PUSH; - state->type = JSONSL_T_HKEY; - DO_CALLBACK(HKEY, PUSH); - } - CONTINUE_NEXT_CHAR(); - - case JSONSL_T_LIST: - state->nelem++; - STACK_PUSH; - state->type = JSONSL_T_STRING; - jsn->expecting = ','; - jsn->tok_last = 0; - DO_CALLBACK(STRING, PUSH); - CONTINUE_NEXT_CHAR(); - - case JSONSL_T_SPECIAL: - INVOKE_ERROR(STRAY_TOKEN); - break; - - default: - INVOKE_ERROR(STRING_OUTSIDE_CONTAINER); - break; - } /* switch(state->type) */ - } else if (CUR_CHAR == '\\') { - GT_ESCAPE: - INCR_METRIC(ESCAPES); - /* Escape */ - if ( (state->type & JSONSL_Tf_STRINGY) == 0 ) { - INVOKE_ERROR(ESCAPE_OUTSIDE_STRING); - } - state->nescapes++; - jsn->in_escape = 1; - CONTINUE_NEXT_CHAR(); - } /* " or \ */ - - GT_STRUCTURAL_TOKEN: - switch (CUR_CHAR) { - case ':': - INCR_METRIC(STRUCTURAL_TOKEN); - if (jsn->expecting != CUR_CHAR) { - INVOKE_ERROR(STRAY_TOKEN); - } - jsn->tok_last = ':'; - jsn->can_insert = 1; - jsn->expecting = '"'; - CONTINUE_NEXT_CHAR(); - - case ',': - INCR_METRIC(STRUCTURAL_TOKEN); - /** - * The comma is one of the more generic tokens. - * In the context of an OBJECT, the can_insert flag - * should never be set, and no other action is - * necessary. - */ - if (jsn->expecting != CUR_CHAR) { - /* make this branch execute only when we haven't manually - * just placed the ',' in the expecting register. - */ - INVOKE_ERROR(STRAY_TOKEN); - } - - if (state->type == JSONSL_T_OBJECT) { - /* end of hash value, expect a string as a hash key */ - jsn->expecting = '"'; - } else { - jsn->can_insert = 1; - } - - jsn->tok_last = ','; - jsn->expecting = '"'; - CONTINUE_NEXT_CHAR(); - - /* new list or object */ - /* hashes are more common */ - case '{': - case '[': - INCR_METRIC(STRUCTURAL_TOKEN); - if (!jsn->can_insert) { - INVOKE_ERROR(CANT_INSERT); - } - - ENSURE_HVAL; - state->nelem++; - - STACK_PUSH; - /* because the constants match the opening delimiters, we can do this: */ - state->type = CUR_CHAR; - state->nelem = 0; - jsn->can_insert = 1; - if (CUR_CHAR == '{') { - /* If we're a hash, we expect a key first, which is quouted */ - jsn->expecting = '"'; - } - if (CUR_CHAR == JSONSL_T_OBJECT) { - DO_CALLBACK(OBJECT, PUSH); - } else { - DO_CALLBACK(LIST, PUSH); - } - jsn->tok_last = 0; - CONTINUE_NEXT_CHAR(); - - /* closing of list or object */ - case '}': - case ']': - INCR_METRIC(STRUCTURAL_TOKEN); - if (jsn->tok_last == ',' && jsn->options.allow_trailing_comma == 0) { - INVOKE_ERROR(TRAILING_COMMA); - } - - jsn->can_insert = 0; - jsn->level--; - jsn->expecting = ','; - jsn->tok_last = 0; - if (CUR_CHAR == ']') { - if (state->type != '[') { - INVOKE_ERROR(BRACKET_MISMATCH); - } - DO_CALLBACK(LIST, POP); - } else { - if (state->type != '{') { - INVOKE_ERROR(BRACKET_MISMATCH); - } else if (state->nelem && state->nelem % 2 != 0) { - INVOKE_ERROR(VALUE_EXPECTED); - } - DO_CALLBACK(OBJECT, POP); - } - state = jsn->stack + jsn->level; - state->pos_cur = jsn->pos; - CONTINUE_NEXT_CHAR(); - - default: - GT_SPECIAL_BEGIN: - /** - * Not a string, not a structural token, and not benign whitespace. - * Technically we should iterate over the character always, but since - * we are not doing full numerical/value decoding anyway (but only hinting), - * we only check upon entry. - */ - if (state->type != JSONSL_T_SPECIAL) { - int special_flags = extract_special(CUR_CHAR); - if (!special_flags) { - /** - * Try to do some heuristics here anyway to figure out what kind of - * error this is. The 'special' case is a fallback scenario anyway. - */ - if (CUR_CHAR == '\0') { - INVOKE_ERROR(FOUND_NULL_BYTE); - } else if (CUR_CHAR < 0x20) { - INVOKE_ERROR(WEIRD_WHITESPACE); - } else { - INVOKE_ERROR(SPECIAL_EXPECTED); - } - } - ENSURE_HVAL; - state->nelem++; - if (!jsn->can_insert) { - INVOKE_ERROR(CANT_INSERT); - } - STACK_PUSH; - state->type = JSONSL_T_SPECIAL; - state->special_flags = special_flags; - STATE_SPECIAL_LENGTH = 1; - - if (special_flags == JSONSL_SPECIALf_UNSIGNED) { - state->nelem = CUR_CHAR - 0x30; - STATE_NUM_LAST = '1'; - } else { - STATE_NUM_LAST = '-'; - state->nelem = 0; - } - DO_CALLBACK(SPECIAL, PUSH); - } - CONTINUE_NEXT_CHAR(); - } - } -} - -JSONSL_API -const char* jsonsl_strerror(jsonsl_error_t err) -{ - if (err == JSONSL_ERROR_SUCCESS) { - return "SUCCESS"; - } -#define X(t) \ - if (err == JSONSL_ERROR_##t) \ - return #t; - JSONSL_XERR; -#undef X - return ""; -} - -JSONSL_API -const char *jsonsl_strtype(jsonsl_type_t type) -{ -#define X(o,c) \ - if (type == JSONSL_T_##o) \ - return #o; - JSONSL_XTYPE -#undef X - return "UNKNOWN TYPE"; - -} - -/* - * - * JPR/JSONPointer functions - * - * - */ -#ifndef JSONSL_NO_JPR -static -jsonsl_jpr_type_t -populate_component(char *in, - struct jsonsl_jpr_component_st *component, - char **next, - jsonsl_error_t *errp) -{ - unsigned long pctval; - char *c = NULL, *outp = NULL, *end = NULL; - size_t input_len; - jsonsl_jpr_type_t ret = JSONSL_PATH_NONE; - - if (*next == NULL || *(*next) == '\0') { - return JSONSL_PATH_NONE; - } - - /* Replace the next / with a NULL */ - *next = strstr(in, "/"); - if (*next != NULL) { - *(*next) = '\0'; /* drop the forward slash */ - input_len = *next - in; - end = *next; - *next += 1; /* next character after the '/' */ - } else { - input_len = strlen(in); - end = in + input_len + 1; - } - - component->pstr = in; - - /* Check for special components of interest */ - if (*in == JSONSL_PATH_WILDCARD_CHAR && input_len == 1) { - /* Lone wildcard */ - ret = JSONSL_PATH_WILDCARD; - goto GT_RET; - } else if (isdigit(*in)) { - /* ASCII Numeric */ - char *endptr; - component->idx = strtoul(in, &endptr, 10); - if (endptr && *endptr == '\0') { - ret = JSONSL_PATH_NUMERIC; - goto GT_RET; - } - } - - /* Default, it's a string */ - ret = JSONSL_PATH_STRING; - for (c = outp = in; c < end; c++, outp++) { - char origc; - if (*c != '%') { - goto GT_ASSIGN; - } - /* - * c = { [+0] = '%', [+1] = 'b', [+2] = 'e', [+3] = '\0' } - */ - - /* Need %XX */ - if (c+2 >= end) { - *errp = JSONSL_ERROR_PERCENT_BADHEX; - return JSONSL_PATH_INVALID; - } - if (! (isxdigit(*(c+1)) && isxdigit(*(c+2))) ) { - *errp = JSONSL_ERROR_PERCENT_BADHEX; - return JSONSL_PATH_INVALID; - } - - /* Temporarily null-terminate the characters */ - origc = *(c+3); - *(c+3) = '\0'; - pctval = strtoul(c+1, NULL, 16); - *(c+3) = origc; - - *outp = (char) pctval; - c += 2; - continue; - - GT_ASSIGN: - *outp = *c; - } - /* Null-terminate the string */ - for (; outp < c; outp++) { - *outp = '\0'; - } - - GT_RET: - component->ptype = ret; - if (ret != JSONSL_PATH_WILDCARD) { - component->len = strlen(component->pstr); - } - return ret; -} - -JSONSL_API -jsonsl_jpr_t -jsonsl_jpr_new(const char *path, jsonsl_error_t *errp) -{ - char *my_copy = NULL; - int count, curidx; - struct jsonsl_jpr_st *ret = NULL; - struct jsonsl_jpr_component_st *components = NULL; - size_t origlen; - jsonsl_error_t errstacked; - -#define JPR_BAIL(err) *errp = err; goto GT_ERROR; - - if (errp == NULL) { - errp = &errstacked; - } - - if (path == NULL || *path != '/') { - JPR_BAIL(JSONSL_ERROR_JPR_NOROOT); - } - - count = 1; - path++; - { - const char *c = path; - for (; *c; c++) { - if (*c == '/') { - count++; - if (*(c+1) == '/') { - JPR_BAIL(JSONSL_ERROR_JPR_DUPSLASH); - } - } - } - } - if(*path) { - count++; - } - - components = (struct jsonsl_jpr_component_st *) - malloc(sizeof(*components) * count); - if (!components) { - JPR_BAIL(JSONSL_ERROR_ENOMEM); - } - - my_copy = (char *)malloc(strlen(path) + 1); - if (!my_copy) { - JPR_BAIL(JSONSL_ERROR_ENOMEM); - } - - strcpy(my_copy, path); - - components[0].ptype = JSONSL_PATH_ROOT; - - if (*my_copy) { - char *cur = my_copy; - int pathret = JSONSL_PATH_STRING; - curidx = 1; - while (curidx < count) { - pathret = populate_component(cur, components + curidx, &cur, errp); - if (pathret > 0) { - curidx++; - } else { - break; - } - } - - if (pathret == JSONSL_PATH_INVALID) { - JPR_BAIL(JSONSL_ERROR_JPR_BADPATH); - } - } else { - curidx = 1; - } - - path--; /*revert path to leading '/' */ - origlen = strlen(path) + 1; - ret = (struct jsonsl_jpr_st *)malloc(sizeof(*ret)); - if (!ret) { - JPR_BAIL(JSONSL_ERROR_ENOMEM); - } - ret->orig = (char *)malloc(origlen); - if (!ret->orig) { - JPR_BAIL(JSONSL_ERROR_ENOMEM); - } - ret->components = components; - ret->ncomponents = curidx; - ret->basestr = my_copy; - ret->norig = origlen-1; - strcpy(ret->orig, path); - - return ret; - - GT_ERROR: - free(my_copy); - free(components); - if (ret) { - free(ret->orig); - } - free(ret); - return NULL; -#undef JPR_BAIL -} - -void jsonsl_jpr_destroy(jsonsl_jpr_t jpr) -{ - free(jpr->components); - free(jpr->basestr); - free(jpr->orig); - free(jpr); -} - -/** - * Call when there is a possibility of a match, either as a final match or - * as a path within a match - * @param jpr The JPR path - * @param component Component corresponding to the current element - * @param prlevel The level of the *parent* - * @param chtype The type of the child - * @return Match status - */ -static jsonsl_jpr_match_t -jsonsl__match_continue(jsonsl_jpr_t jpr, - const struct jsonsl_jpr_component_st *component, - unsigned prlevel, unsigned chtype) -{ - const struct jsonsl_jpr_component_st *next_comp = component + 1; - if (prlevel == jpr->ncomponents - 1) { - /* This is the match. Check the expected type of the match against - * the child */ - if (jpr->match_type == 0 || jpr->match_type == chtype) { - return JSONSL_MATCH_COMPLETE; - } else { - return JSONSL_MATCH_TYPE_MISMATCH; - } - } - if (chtype == JSONSL_T_LIST) { - if (next_comp->ptype == JSONSL_PATH_NUMERIC) { - return JSONSL_MATCH_POSSIBLE; - } else { - return JSONSL_MATCH_TYPE_MISMATCH; - } - } else if (chtype == JSONSL_T_OBJECT) { - if (next_comp->ptype == JSONSL_PATH_NUMERIC) { - return JSONSL_MATCH_TYPE_MISMATCH; - } else { - return JSONSL_MATCH_POSSIBLE; - } - } else { - return JSONSL_MATCH_TYPE_MISMATCH; - } -} - -JSONSL_API -jsonsl_jpr_match_t -jsonsl_path_match(jsonsl_jpr_t jpr, - const struct jsonsl_state_st *parent, - const struct jsonsl_state_st *child, - const char *key, size_t nkey) -{ - const struct jsonsl_jpr_component_st *comp; - if (!parent) { - /* No parent. Return immediately since it's always a match */ - return jsonsl__match_continue(jpr, jpr->components, 0, child->type); - } - - comp = jpr->components + parent->level; - - /* note that we don't need to verify the type of the match, this is - * always done through the previous call to jsonsl__match_continue. - * If we are in a POSSIBLE tree then we can be certain the types (at - * least at this level) are correct */ - if (parent->type == JSONSL_T_OBJECT) { - if (comp->len != nkey || strncmp(key, comp->pstr, nkey) != 0) { - return JSONSL_MATCH_NOMATCH; - } - } else { - if (comp->idx != parent->nelem - 1) { - return JSONSL_MATCH_NOMATCH; - } - } - return jsonsl__match_continue(jpr, comp, parent->level, child->type); -} - -JSONSL_API -jsonsl_jpr_match_t -jsonsl_jpr_match(jsonsl_jpr_t jpr, - unsigned int parent_type, - unsigned int parent_level, - const char *key, - size_t nkey) -{ - /* find our current component. This is the child level */ - int cmpret; - struct jsonsl_jpr_component_st *p_component; - p_component = jpr->components + parent_level; - - if (parent_level >= jpr->ncomponents) { - return JSONSL_MATCH_NOMATCH; - } - - /* Lone query for 'root' element. Always matches */ - if (parent_level == 0) { - if (jpr->ncomponents == 1) { - return JSONSL_MATCH_COMPLETE; - } else { - return JSONSL_MATCH_POSSIBLE; - } - } - - /* Wildcard, always matches */ - if (p_component->ptype == JSONSL_PATH_WILDCARD) { - if (parent_level == jpr->ncomponents-1) { - return JSONSL_MATCH_COMPLETE; - } else { - return JSONSL_MATCH_POSSIBLE; - } - } - - /* Check numeric array index. This gets its special block so we can avoid - * string comparisons */ - if (p_component->ptype == JSONSL_PATH_NUMERIC) { - if (parent_type == JSONSL_T_LIST) { - if (p_component->idx != nkey) { - /* Wrong index */ - return JSONSL_MATCH_NOMATCH; - } else { - if (parent_level == jpr->ncomponents-1) { - /* This is the last element of the path */ - return JSONSL_MATCH_COMPLETE; - } else { - /* Intermediate element */ - return JSONSL_MATCH_POSSIBLE; - } - } - } else if (p_component->is_arridx) { - /* Numeric and an array index (set explicitly by user). But not - * a list for a parent */ - return JSONSL_MATCH_TYPE_MISMATCH; - } - } else if (parent_type == JSONSL_T_LIST) { - return JSONSL_MATCH_TYPE_MISMATCH; - } - - /* Check lengths */ - if (p_component->len != nkey) { - return JSONSL_MATCH_NOMATCH; - } - - /* Check string comparison */ - cmpret = strncmp(p_component->pstr, key, nkey); - if (cmpret == 0) { - if (parent_level == jpr->ncomponents-1) { - return JSONSL_MATCH_COMPLETE; - } else { - return JSONSL_MATCH_POSSIBLE; - } - } - - return JSONSL_MATCH_NOMATCH; -} - -JSONSL_API -void jsonsl_jpr_match_state_init(jsonsl_t jsn, - jsonsl_jpr_t *jprs, - size_t njprs) -{ - size_t ii, *firstjmp; - if (njprs == 0) { - return; - } - jsn->jprs = (jsonsl_jpr_t *)malloc(sizeof(jsonsl_jpr_t) * njprs); - jsn->jpr_count = njprs; - jsn->jpr_root = (size_t*)calloc(1, sizeof(size_t) * njprs * jsn->levels_max); - memcpy(jsn->jprs, jprs, sizeof(jsonsl_jpr_t) * njprs); - /* Set the initial jump table values */ - - firstjmp = jsn->jpr_root; - for (ii = 0; ii < njprs; ii++) { - firstjmp[ii] = ii+1; - } -} - -JSONSL_API -void jsonsl_jpr_match_state_cleanup(jsonsl_t jsn) -{ - if (jsn->jpr_count == 0) { - return; - } - - free(jsn->jpr_root); - free(jsn->jprs); - jsn->jprs = NULL; - jsn->jpr_root = NULL; - jsn->jpr_count = 0; -} - -/** - * This function should be called exactly once on each element... - * This should also be called in recursive order, since we rely - * on the parent having been initialized for a match. - * - * Since the parent is checked for a match as well, we maintain a 'serial' counter. - * Whenever we traverse an element, we expect the serial to be the same as a global - * integer. If they do not match, we re-initialize the context, and set the serial. - * - * This ensures a type of consistency without having a proactive reset by the - * main lexer itself. - * - */ -JSONSL_API -jsonsl_jpr_t jsonsl_jpr_match_state(jsonsl_t jsn, - struct jsonsl_state_st *state, - const char *key, - size_t nkey, - jsonsl_jpr_match_t *out) -{ - struct jsonsl_state_st *parent_state; - jsonsl_jpr_t ret = NULL; - - /* Jump and JPR tables for our own state and the parent state */ - size_t *jmptable, *pjmptable; - size_t jmp_cur, ii, ourjmpidx; - - if (!jsn->jpr_root) { - *out = JSONSL_MATCH_NOMATCH; - return NULL; - } - - pjmptable = jsn->jpr_root + (jsn->jpr_count * (state->level-1)); - jmptable = pjmptable + jsn->jpr_count; - - /* If the parent cannot match, then invalidate it */ - if (*pjmptable == 0) { - *jmptable = 0; - *out = JSONSL_MATCH_NOMATCH; - return NULL; - } - - parent_state = jsn->stack + state->level - 1; - - if (parent_state->type == JSONSL_T_LIST) { - nkey = (size_t) parent_state->nelem; - } - - *jmptable = 0; - ourjmpidx = 0; - memset(jmptable, 0, sizeof(int) * jsn->jpr_count); - - for (ii = 0; ii < jsn->jpr_count; ii++) { - jmp_cur = pjmptable[ii]; - if (jmp_cur) { - jsonsl_jpr_t jpr = jsn->jprs[jmp_cur-1]; - *out = jsonsl_jpr_match(jpr, - parent_state->type, - parent_state->level, - key, nkey); - if (*out == JSONSL_MATCH_COMPLETE) { - ret = jpr; - *jmptable = 0; - return ret; - } else if (*out == JSONSL_MATCH_POSSIBLE) { - jmptable[ourjmpidx] = ii+1; - ourjmpidx++; - } - } else { - break; - } - } - if (!*jmptable) { - *out = JSONSL_MATCH_NOMATCH; - } - return NULL; -} - -JSONSL_API -const char *jsonsl_strmatchtype(jsonsl_jpr_match_t match) -{ -#define X(T,v) \ - if ( match == JSONSL_MATCH_##T ) \ - return #T; - JSONSL_XMATCH -#undef X - return ""; -} - -#endif /* JSONSL_WITH_JPR */ - -static char * -jsonsl__writeutf8(uint32_t pt, char *out) -{ - #define ADD_OUTPUT(c) *out = (char)(c); out++; - - if (pt < 0x80) { - ADD_OUTPUT(pt); - } else if (pt < 0x800) { - ADD_OUTPUT((pt >> 6) | 0xC0); - ADD_OUTPUT((pt & 0x3F) | 0x80); - } else if (pt < 0x10000) { - ADD_OUTPUT((pt >> 12) | 0xE0); - ADD_OUTPUT(((pt >> 6) & 0x3F) | 0x80); - ADD_OUTPUT((pt & 0x3F) | 0x80); - } else { - ADD_OUTPUT((pt >> 18) | 0xF0); - ADD_OUTPUT(((pt >> 12) & 0x3F) | 0x80); - ADD_OUTPUT(((pt >> 6) & 0x3F) | 0x80); - ADD_OUTPUT((pt & 0x3F) | 0x80); - } - return out; - #undef ADD_OUTPUT -} - -/* Thanks snej (https://github.com/mnunberg/jsonsl/issues/9) */ -static int -jsonsl__digit2int(char ch) { - int d = ch - '0'; - if ((unsigned) d < 10) { - return d; - } - d = ch - 'a'; - if ((unsigned) d < 6) { - return d + 10; - } - d = ch - 'A'; - if ((unsigned) d < 6) { - return d + 10; - } - return -1; -} - -/* Assume 's' is at least 4 bytes long */ -static int -jsonsl__get_uescape_16(const char *s) -{ - int ret = 0; - int cur; - - #define GET_DIGIT(off) \ - cur = jsonsl__digit2int(s[off]); \ - if (cur == -1) { return -1; } \ - ret |= (cur << (12 - (off * 4))); - - GET_DIGIT(0); - GET_DIGIT(1); - GET_DIGIT(2); - GET_DIGIT(3); - #undef GET_DIGIT - return ret; -} - -/** - * Utility function to convert escape sequences - */ -JSONSL_API -size_t jsonsl_util_unescape_ex(const char *in, - char *out, - size_t len, - const int toEscape[128], - unsigned *oflags, - jsonsl_error_t *err, - const char **errat) -{ - const unsigned char *c = (const unsigned char*)in; - char *begin_p = out; - unsigned oflags_s; - uint16_t last_codepoint = 0; - - if (!oflags) { - oflags = &oflags_s; - } - *oflags = 0; - - #define UNESCAPE_BAIL(e,offset) \ - *err = JSONSL_ERROR_##e; \ - if (errat) { \ - *errat = (const char*)(c+ (ptrdiff_t)(offset)); \ - } \ - return 0; - - for (; len; len--, c++, out++) { - int uescval; - if (*c != '\\') { - /* Not an escape, so we don't care about this */ - goto GT_ASSIGN; - } - - if (len < 2) { - UNESCAPE_BAIL(ESCAPE_INVALID, 0); - } - if (!is_allowed_escape(c[1])) { - UNESCAPE_BAIL(ESCAPE_INVALID, 1) - } - if ((toEscape && toEscape[(unsigned char)c[1] & 0x7f] == 0 && - c[1] != '\\' && c[1] != '"')) { - /* if we don't want to unescape this string, write the escape sequence to the output */ - *out++ = *c++; - --len; - goto GT_ASSIGN; - } - - if (c[1] != 'u') { - /* simple skip-and-replace using pre-defined maps. - * TODO: should the maps actually reflect the desired - * replacement character in toEscape? - */ - char esctmp = get_escape_equiv(c[1]); - if (esctmp) { - /* Check if there is a corresponding replacement */ - *out = esctmp; - } else { - /* Just gobble up the 'reverse-solidus' */ - *out = c[1]; - } - len--; - c++; - /* do not assign, just continue */ - continue; - } - - /* next == 'u' */ - if (len < 6) { - /* Need at least six characters.. */ - UNESCAPE_BAIL(UESCAPE_TOOSHORT, 2); - } - - uescval = jsonsl__get_uescape_16((const char *)c + 2); - if (uescval == -1) { - UNESCAPE_BAIL(PERCENT_BADHEX, -1); - } - - if (last_codepoint) { - uint16_t w1 = last_codepoint, w2 = (uint16_t)uescval; - uint32_t cp; - - if (uescval < 0xDC00 || uescval > 0xDFFF) { - UNESCAPE_BAIL(INVALID_CODEPOINT, -1); - } - - cp = (w1 & 0x3FF) << 10; - cp |= (w2 & 0x3FF); - cp += 0x10000; - - out = jsonsl__writeutf8(cp, out) - 1; - last_codepoint = 0; - - } else if (uescval < 0xD800 || uescval > 0xDFFF) { - *oflags |= JSONSL_SPECIALf_NONASCII; - out = jsonsl__writeutf8(uescval, out) - 1; - - } else if (uescval < 0xDC00) { - *oflags |= JSONSL_SPECIALf_NONASCII; - last_codepoint = (uint16_t)uescval; - out--; - } else { - UNESCAPE_BAIL(INVALID_CODEPOINT, 2); - } - - /* Post uescape cleanup */ - len -= 5; /* Gobble up 5 chars after 'u' */ - c += 5; - continue; - - /* Only reached by previous branches */ - GT_ASSIGN: - *out = *c; - } - - if (last_codepoint) { - *err = JSONSL_ERROR_INVALID_CODEPOINT; - return 0; - } - - *err = JSONSL_ERROR_SUCCESS; - return out - begin_p; -} - -/** - * Character Table definitions. - * These were all generated via srcutil/genchartables.pl - */ - -/** - * This table contains the beginnings of non-string - * allowable (bareword) values. - */ -static unsigned short Special_Table[0x100] = { - /* 0x00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */ - /* 0x20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x2c */ - /* 0x2d */ JSONSL_SPECIALf_DASH /* <-> */, /* 0x2d */ - /* 0x2e */ 0,0, /* 0x2f */ - /* 0x30 */ JSONSL_SPECIALf_ZERO /* <0> */, /* 0x30 */ - /* 0x31 */ JSONSL_SPECIALf_UNSIGNED /* <1> */, /* 0x31 */ - /* 0x32 */ JSONSL_SPECIALf_UNSIGNED /* <2> */, /* 0x32 */ - /* 0x33 */ JSONSL_SPECIALf_UNSIGNED /* <3> */, /* 0x33 */ - /* 0x34 */ JSONSL_SPECIALf_UNSIGNED /* <4> */, /* 0x34 */ - /* 0x35 */ JSONSL_SPECIALf_UNSIGNED /* <5> */, /* 0x35 */ - /* 0x36 */ JSONSL_SPECIALf_UNSIGNED /* <6> */, /* 0x36 */ - /* 0x37 */ JSONSL_SPECIALf_UNSIGNED /* <7> */, /* 0x37 */ - /* 0x38 */ JSONSL_SPECIALf_UNSIGNED /* <8> */, /* 0x38 */ - /* 0x39 */ JSONSL_SPECIALf_UNSIGNED /* <9> */, /* 0x39 */ - /* 0x3a */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x48 */ - /* 0x49 */ JSONSL__INF_PROXY /* */, /* 0x49 */ - /* 0x4a */ 0,0,0,0, /* 0x4d */ - /* 0x4e */ JSONSL__NAN_PROXY /* */, /* 0x4e */ - /* 0x4f */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x65 */ - /* 0x66 */ JSONSL_SPECIALf_FALSE /* */, /* 0x66 */ - /* 0x67 */ 0,0, /* 0x68 */ - /* 0x69 */ JSONSL__INF_PROXY /* */, /* 0x69 */ - /* 0x6a */ 0,0,0,0, /* 0x6d */ - /* 0x6e */ JSONSL_SPECIALf_NULL|JSONSL__NAN_PROXY /* */, /* 0x6e */ - /* 0x6f */ 0,0,0,0,0, /* 0x73 */ - /* 0x74 */ JSONSL_SPECIALf_TRUE /* */, /* 0x74 */ - /* 0x75 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x94 */ - /* 0x95 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xb4 */ - /* 0xb5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xd4 */ - /* 0xd5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xf4 */ - /* 0xf5 */ 0,0,0,0,0,0,0,0,0,0, /* 0xfe */ -}; - -/** - * Contains characters which signal the termination of any of the 'special' bareword - * values. - */ -static int Special_Endings[0x100] = { - /* 0x00 */ 0,0,0,0,0,0,0,0,0, /* 0x08 */ - /* 0x09 */ 1 /* */, /* 0x09 */ - /* 0x0a */ 1 /* */, /* 0x0a */ - /* 0x0b */ 0,0, /* 0x0c */ - /* 0x0d */ 1 /* */, /* 0x0d */ - /* 0x0e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */ - /* 0x20 */ 1 /* */, /* 0x20 */ - /* 0x21 */ 0, /* 0x21 */ - /* 0x22 */ 1 /* " */, /* 0x22 */ - /* 0x23 */ 0,0,0,0,0,0,0,0,0, /* 0x2b */ - /* 0x2c */ 1 /* , */, /* 0x2c */ - /* 0x2d */ 0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x39 */ - /* 0x3a */ 1 /* : */, /* 0x3a */ - /* 0x3b */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5a */ - /* 0x5b */ 1 /* [ */, /* 0x5b */ - /* 0x5c */ 1 /* \ */, /* 0x5c */ - /* 0x5d */ 1 /* ] */, /* 0x5d */ - /* 0x5e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x7a */ - /* 0x7b */ 1 /* { */, /* 0x7b */ - /* 0x7c */ 0, /* 0x7c */ - /* 0x7d */ 1 /* } */, /* 0x7d */ - /* 0x7e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x9d */ - /* 0x9e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xbd */ - /* 0xbe */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xdd */ - /* 0xde */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xfd */ - /* 0xfe */ 0 /* 0xfe */ -}; - -/** - * This table contains entries for the allowed whitespace as per RFC 4627 - */ -static int Allowed_Whitespace[0x100] = { - /* 0x00 */ 0,0,0,0,0,0,0,0,0, /* 0x08 */ - /* 0x09 */ 1 /* */, /* 0x09 */ - /* 0x0a */ 1 /* */, /* 0x0a */ - /* 0x0b */ 0,0, /* 0x0c */ - /* 0x0d */ 1 /* */, /* 0x0d */ - /* 0x0e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */ - /* 0x20 */ 1 /* */, /* 0x20 */ - /* 0x21 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x40 */ - /* 0x41 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x60 */ - /* 0x61 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x80 */ - /* 0x81 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xa0 */ - /* 0xa1 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xc0 */ - /* 0xc1 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xe0 */ - /* 0xe1 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0xfe */ -}; - -static const int String_No_Passthrough[0x100] = { - /* 0x00 */ 1 /* */, /* 0x00 */ - /* 0x01 */ 1 /* */, /* 0x01 */ - /* 0x02 */ 1 /* */, /* 0x02 */ - /* 0x03 */ 1 /* */, /* 0x03 */ - /* 0x04 */ 1 /* */, /* 0x04 */ - /* 0x05 */ 1 /* */, /* 0x05 */ - /* 0x06 */ 1 /* */, /* 0x06 */ - /* 0x07 */ 1 /* */, /* 0x07 */ - /* 0x08 */ 1 /* */, /* 0x08 */ - /* 0x09 */ 1 /* */, /* 0x09 */ - /* 0x0a */ 1 /* */, /* 0x0a */ - /* 0x0b */ 1 /* */, /* 0x0b */ - /* 0x0c */ 1 /* */, /* 0x0c */ - /* 0x0d */ 1 /* */, /* 0x0d */ - /* 0x0e */ 1 /* */, /* 0x0e */ - /* 0x0f */ 1 /* */, /* 0x0f */ - /* 0x10 */ 1 /* */, /* 0x10 */ - /* 0x11 */ 1 /* */, /* 0x11 */ - /* 0x12 */ 1 /* */, /* 0x12 */ - /* 0x13 */ 1 /* */, /* 0x13 */ - /* 0x14 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x21 */ - /* 0x22 */ 1 /* <"> */, /* 0x22 */ - /* 0x23 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x42 */ - /* 0x43 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5b */ - /* 0x5c */ 1 /* <\> */, /* 0x5c */ - /* 0x5d */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x7c */ - /* 0x7d */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x9c */ - /* 0x9d */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xbc */ - /* 0xbd */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xdc */ - /* 0xdd */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xfc */ - /* 0xfd */ 0,0, /* 0xfe */ -}; - -/** - * Allowable two-character 'common' escapes: - */ -static int Allowed_Escapes[0x100] = { - /* 0x00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */ - /* 0x20 */ 0,0, /* 0x21 */ - /* 0x22 */ 1 /* <"> */, /* 0x22 */ - /* 0x23 */ 0,0,0,0,0,0,0,0,0,0,0,0, /* 0x2e */ - /* 0x2f */ 1 /* */, /* 0x2f */ - /* 0x30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x4f */ - /* 0x50 */ 0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5b */ - /* 0x5c */ 1 /* <\> */, /* 0x5c */ - /* 0x5d */ 0,0,0,0,0, /* 0x61 */ - /* 0x62 */ 1 /* */, /* 0x62 */ - /* 0x63 */ 0,0,0, /* 0x65 */ - /* 0x66 */ 1 /* */, /* 0x66 */ - /* 0x67 */ 0,0,0,0,0,0,0, /* 0x6d */ - /* 0x6e */ 1 /* */, /* 0x6e */ - /* 0x6f */ 0,0,0, /* 0x71 */ - /* 0x72 */ 1 /* */, /* 0x72 */ - /* 0x73 */ 0, /* 0x73 */ - /* 0x74 */ 1 /* */, /* 0x74 */ - /* 0x75 */ 1 /* */, /* 0x75 */ - /* 0x76 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x95 */ - /* 0x96 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xb5 */ - /* 0xb6 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xd5 */ - /* 0xd6 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xf5 */ - /* 0xf6 */ 0,0,0,0,0,0,0,0,0, /* 0xfe */ -}; - -/** - * This table contains the _values_ for a given (single) escaped character. - */ -static unsigned char Escape_Equivs[0x100] = { - /* 0x00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */ - /* 0x20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x3f */ - /* 0x40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5f */ - /* 0x60 */ 0,0, /* 0x61 */ - /* 0x62 */ 8 /* */, /* 0x62 */ - /* 0x63 */ 0,0,0, /* 0x65 */ - /* 0x66 */ 12 /* */, /* 0x66 */ - /* 0x67 */ 0,0,0,0,0,0,0, /* 0x6d */ - /* 0x6e */ 10 /* */, /* 0x6e */ - /* 0x6f */ 0,0,0, /* 0x71 */ - /* 0x72 */ 13 /* */, /* 0x72 */ - /* 0x73 */ 0, /* 0x73 */ - /* 0x74 */ 9 /* */, /* 0x74 */ - /* 0x75 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x94 */ - /* 0x95 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xb4 */ - /* 0xb5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xd4 */ - /* 0xd5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xf4 */ - /* 0xf5 */ 0,0,0,0,0,0,0,0,0,0 /* 0xfe */ -}; - -/* Definitions of above-declared static functions */ -static char get_escape_equiv(unsigned c) { - return Escape_Equivs[c & 0xff]; -} -static unsigned extract_special(unsigned c) { - return Special_Table[c & 0xff]; -} -static int is_special_end(unsigned c) { - return Special_Endings[c & 0xff]; -} -static int is_allowed_whitespace(unsigned c) { - return c == ' ' || Allowed_Whitespace[c & 0xff]; -} -static int is_allowed_escape(unsigned c) { - return Allowed_Escapes[c & 0xff]; -} -static int is_simple_char(unsigned c) { - return !String_No_Passthrough[c & 0xff]; -} - -/* Clean up all our macros! */ -#undef INCR_METRIC -#undef INCR_GENERIC -#undef INCR_STRINGY_CATCH -#undef CASE_DIGITS -#undef INVOKE_ERROR -#undef STACK_PUSH -#undef STACK_POP_NOPOS -#undef STACK_POP -#undef CALLBACK_AND_POP_NOPOS -#undef CALLBACK_AND_POP -#undef SPECIAL_POP -#undef CUR_CHAR -#undef DO_CALLBACK -#undef ENSURE_HVAL -#undef VERIFY_SPECIAL -#undef STATE_SPECIAL_LENGTH -#undef IS_NORMAL_NUMBER -#undef STATE_NUM_LAST -#undef FASTPARSE_EXHAUSTED -#undef FASTPARSE_BREAK diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.h deleted file mode 100644 index e31a709..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/jsonsl/jsonsl.h +++ /dev/null @@ -1,1004 +0,0 @@ -/** - * JSON Simple/Stacked/Stateful Lexer. - * - Does not buffer data - * - Maintains state - * - Callback oriented - * - Lightweight and fast. One source file and one header file - * - * Copyright (C) 2012-2015 Mark Nunberg - * See included LICENSE file for license details. - */ - -#ifndef JSONSL_H_ -#define JSONSL_H_ - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifdef JSONSL_USE_WCHAR -typedef jsonsl_char_t wchar_t; -typedef jsonsl_uchar_t unsigned wchar_t; -#else -typedef char jsonsl_char_t; -typedef unsigned char jsonsl_uchar_t; -#endif /* JSONSL_USE_WCHAR */ - -#ifdef JSONSL_PARSE_NAN -#define JSONSL__NAN_PROXY JSONSL_SPECIALf_NAN -#define JSONSL__INF_PROXY JSONSL_SPECIALf_INF -#else -#define JSONSL__NAN_PROXY 0 -#define JSONSL__INF_PROXY 0 -#endif - -/* Stolen from http-parser.h, and possibly others */ -#if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600) -typedef __int8 int8_t; -typedef unsigned __int8 uint8_t; -typedef __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#if !defined(_MSC_VER) || _MSC_VER<1400 -typedef unsigned int size_t; -typedef int ssize_t; -#endif -#else -#include -#endif - - -#if (!defined(JSONSL_STATE_GENERIC)) && (!defined(JSONSL_STATE_USER_FIELDS)) -#define JSONSL_STATE_GENERIC -#endif /* !defined JSONSL_STATE_GENERIC */ - -#ifdef JSONSL_STATE_GENERIC -#define JSONSL_STATE_USER_FIELDS -#endif /* JSONSL_STATE_GENERIC */ - -/* Additional fields for component object */ -#ifndef JSONSL_JPR_COMPONENT_USER_FIELDS -#define JSONSL_JPR_COMPONENT_USER_FIELDS -#endif - -#ifndef JSONSL_API -/** - * We require a /DJSONSL_DLL so that users already using this as a static - * or embedded library don't get confused - */ -#if defined(_WIN32) && defined(JSONSL_DLL) -#define JSONSL_API __declspec(dllexport) -#else -#define JSONSL_API -#endif /* _WIN32 */ - -#endif /* !JSONSL_API */ - -#ifndef JSONSL_INLINE -#if defined(_MSC_VER) - #define JSONSL_INLINE __inline - #elif defined(__GNUC__) - #define JSONSL_INLINE __inline__ - #else - #define JSONSL_INLINE inline - #endif /* _MSC_VER or __GNUC__ */ -#endif /* JSONSL_INLINE */ - -#define JSONSL_MAX_LEVELS 512 - -struct jsonsl_st; -typedef struct jsonsl_st *jsonsl_t; - -typedef struct jsonsl_jpr_st* jsonsl_jpr_t; - -/** - * This flag is true when AND'd against a type whose value - * must be in "quoutes" i.e. T_HKEY and T_STRING - */ -#define JSONSL_Tf_STRINGY 0xffff00 - -/** - * Constant representing the special JSON types. - * The values are special and aid in speed (the OBJECT and LIST - * values are the char literals of their openings). - * - * Their actual value is a character which attempts to resemble - * some mnemonic reference to the actual type. - * - * If new types are added, they must fit into the ASCII printable - * range (so they should be AND'd with 0x7f and yield something - * meaningful) - */ -#define JSONSL_XTYPE \ - X(STRING, '"'|JSONSL_Tf_STRINGY) \ - X(HKEY, '#'|JSONSL_Tf_STRINGY) \ - X(OBJECT, '{') \ - X(LIST, '[') \ - X(SPECIAL, '^') \ - X(UESCAPE, 'u') -typedef enum { -#define X(o, c) \ - JSONSL_T_##o = c, - JSONSL_XTYPE - JSONSL_T_UNKNOWN = '?', - /* Abstract 'root' object */ - JSONSL_T_ROOT = 0 -#undef X -} jsonsl_type_t; - -/** - * Subtypes for T_SPECIAL. We define them as flags - * because more than one type can be applied to a - * given object. - */ - -#define JSONSL_XSPECIAL \ - X(NONE, 0) \ - X(SIGNED, 1<<0) \ - X(UNSIGNED, 1<<1) \ - X(TRUE, 1<<2) \ - X(FALSE, 1<<3) \ - X(NULL, 1<<4) \ - X(FLOAT, 1<<5) \ - X(EXPONENT, 1<<6) \ - X(NONASCII, 1<<7) \ - X(NAN, 1<<8) \ - X(INF, 1<<9) -typedef enum { -#define X(o,b) \ - JSONSL_SPECIALf_##o = b, - JSONSL_XSPECIAL -#undef X - /* Handy flags for checking */ - - JSONSL_SPECIALf_UNKNOWN = 1 << 10, - - /** @private Private */ - JSONSL_SPECIALf_ZERO = 1 << 11 | JSONSL_SPECIALf_UNSIGNED, - /** @private */ - JSONSL_SPECIALf_DASH = 1 << 12, - /** @private */ - JSONSL_SPECIALf_POS_INF = (JSONSL_SPECIALf_INF), - JSONSL_SPECIALf_NEG_INF = (JSONSL_SPECIALf_INF|JSONSL_SPECIALf_SIGNED), - - /** Type is numeric */ - JSONSL_SPECIALf_NUMERIC = (JSONSL_SPECIALf_SIGNED| JSONSL_SPECIALf_UNSIGNED), - - /** Type is a boolean */ - JSONSL_SPECIALf_BOOLEAN = (JSONSL_SPECIALf_TRUE|JSONSL_SPECIALf_FALSE), - - /** Type is an "extended", not integral type (but numeric) */ - JSONSL_SPECIALf_NUMNOINT = - (JSONSL_SPECIALf_FLOAT|JSONSL_SPECIALf_EXPONENT|JSONSL_SPECIALf_NAN - |JSONSL_SPECIALf_INF) -} jsonsl_special_t; - - -/** - * These are the various types of stack (or other) events - * which will trigger a callback. - * Like the type constants, this are also mnemonic - */ -#define JSONSL_XACTION \ - X(PUSH, '+') \ - X(POP, '-') \ - X(UESCAPE, 'U') \ - X(ERROR, '!') -typedef enum { -#define X(a,c) \ - JSONSL_ACTION_##a = c, - JSONSL_XACTION - JSONSL_ACTION_UNKNOWN = '?' -#undef X -} jsonsl_action_t; - - -/** - * Various errors which may be thrown while parsing JSON - */ -#define JSONSL_XERR \ -/* Trailing garbage characters */ \ - X(GARBAGE_TRAILING) \ -/* We were expecting a 'special' (numeric, true, false, null) */ \ - X(SPECIAL_EXPECTED) \ -/* The 'special' value was incomplete */ \ - X(SPECIAL_INCOMPLETE) \ -/* Found a stray token */ \ - X(STRAY_TOKEN) \ -/* We were expecting a token before this one */ \ - X(MISSING_TOKEN) \ -/* Cannot insert because the container is not ready */ \ - X(CANT_INSERT) \ -/* Found a '\' outside a string */ \ - X(ESCAPE_OUTSIDE_STRING) \ -/* Found a ':' outside of a hash */ \ - X(KEY_OUTSIDE_OBJECT) \ -/* found a string outside of a container */ \ - X(STRING_OUTSIDE_CONTAINER) \ -/* Found a null byte in middle of string */ \ - X(FOUND_NULL_BYTE) \ -/* Current level exceeds limit specified in constructor */ \ - X(LEVELS_EXCEEDED) \ -/* Got a } as a result of an opening [ or vice versa */ \ - X(BRACKET_MISMATCH) \ -/* We expected a key, but got something else instead */ \ - X(HKEY_EXPECTED) \ -/* We got an illegal control character (bad whitespace or something) */ \ - X(WEIRD_WHITESPACE) \ -/* Found a \u-escape, but there were less than 4 following hex digits */ \ - X(UESCAPE_TOOSHORT) \ -/* Invalid two-character escape */ \ - X(ESCAPE_INVALID) \ -/* Trailing comma */ \ - X(TRAILING_COMMA) \ -/* An invalid number was passed in a numeric field */ \ - X(INVALID_NUMBER) \ -/* Value is missing for object */ \ - X(VALUE_EXPECTED) \ -/* The following are for JPR Stuff */ \ - \ -/* Found a literal '%' but it was only followed by a single valid hex digit */ \ - X(PERCENT_BADHEX) \ -/* jsonpointer URI is malformed '/' */ \ - X(JPR_BADPATH) \ -/* Duplicate slash */ \ - X(JPR_DUPSLASH) \ -/* No leading root */ \ - X(JPR_NOROOT) \ -/* Allocation failure */ \ - X(ENOMEM) \ -/* Invalid unicode codepoint detected (in case of escapes) */ \ - X(INVALID_CODEPOINT) - -typedef enum { - JSONSL_ERROR_SUCCESS = 0, -#define X(e) \ - JSONSL_ERROR_##e, - JSONSL_XERR -#undef X - JSONSL_ERROR_GENERIC -} jsonsl_error_t; - - -/** - * A state is a single level of the stack. - * Non-private data (i.e. the 'data' field, see the STATE_GENERIC section) - * will remain in tact until the item is popped. - * - * As a result, it means a parent state object may be accessed from a child - * object, (the parents fields will all be valid). This allows a user to create - * an ad-hoc hierarchy on top of the JSON one. - * - */ -struct jsonsl_state_st { - /** - * The JSON object type - */ - unsigned type; - - /** If this element is special, then its extended type is here */ - unsigned special_flags; - - /** - * The position (in terms of number of bytes since the first call to - * jsonsl_feed()) at which the state was first pushed. This includes - * opening tokens, if applicable. - * - * @note For strings (i.e. type & JSONSL_Tf_STRINGY is nonzero) this will - * be the position of the first quote. - * - * @see jsonsl_st::pos which contains the _current_ position and can be - * used during a POP callback to get the length of the element. - */ - size_t pos_begin; - - /**FIXME: This is redundant as the same information can be derived from - * jsonsl_st::pos at pop-time */ - size_t pos_cur; - - /** - * Level of recursion into nesting. This is mainly a convenience - * variable, as this can technically be deduced from the lexer's - * level parameter (though the logic is not that simple) - */ - unsigned int level; - - - /** - * how many elements in the object/list. - * For objects (hashes), an element is either - * a key or a value. Thus for one complete pair, - * nelem will be 2. - * - * For special types, this will hold the sum of the digits. - * This only holds true for values which are simple signed/unsigned - * numbers. Otherwise a special flag is set, and extra handling is not - * performed. - */ - uint64_t nelem; - - - - /*TODO: merge this and special_flags into a union */ - - - /** - * Useful for an opening nest, this will prevent a callback from being - * invoked on this item or any of its children - */ - int ignore_callback; - - /** - * Counter which is incremented each time an escape ('\') is encountered. - * This is used internally for non-string types and should only be - * inspected by the user if the state actually represents a string - * type. - */ - unsigned int nescapes; - - /** - * Put anything you want here. if JSONSL_STATE_USER_FIELDS is here, then - * the macro expansion happens here. - * - * You can use these fields to store hierarchical or 'tagging' information - * for specific objects. - * - * See the documentation above for the lifetime of the state object (i.e. - * if the private data points to allocated memory, it should be freed - * when the object is popped, as the state object will be re-used) - */ -#ifndef JSONSL_STATE_GENERIC - JSONSL_STATE_USER_FIELDS -#else - - /** - * Otherwise, this is a simple void * pointer for anything you want - */ - void *data; -#endif /* JSONSL_STATE_USER_FIELDS */ -}; - -/**Gets the number of elements in the list. - * @param st The state. Must be of type JSONSL_T_LIST - * @return number of elements in the list - */ -#define JSONSL_LIST_SIZE(st) ((st)->nelem) - -/**Gets the number of key-value pairs in an object - * @param st The state. Must be of type JSONSL_T_OBJECT - * @return the number of key-value pairs in the object - */ -#define JSONSL_OBJECT_SIZE(st) ((st)->nelem / 2) - -/**Gets the numeric value. - * @param st The state. Must be of type JSONSL_T_SPECIAL and - * special_flags must have the JSONSL_SPECIALf_NUMERIC flag - * set. - * @return the numeric value of the state. - */ -#define JSONSL_NUMERIC_VALUE(st) ((st)->nelem) - -/* - * So now we need some special structure for keeping the - * JPR info in sync. Preferably all in a single block - * of memory (there's no need for separate allocations. - * So we will define a 'table' with the following layout - * - * Level nPosbl JPR1_last JPR2_last JPR3_last - * - * 0 1 NOMATCH POSSIBLE POSSIBLE - * 1 0 NOMATCH NOMATCH COMPLETE - * [ table ends here because no further path is possible] - * - * Where the JPR..n corresponds to the number of JPRs - * requested, and nPosble is a quick flag to determine - * - * the number of possibilities. In the future this might - * be made into a proper 'jump' table, - * - * Since we always mark JPRs from the higher levels descending - * into the lower ones, a prospective child match would first - * look at the parent table to check the possibilities, and then - * see which ones were possible.. - * - * Thus, the size of this blob would be (and these are all ints here) - * nLevels * nJPR * 2. - * - * the 'Width' of the table would be nJPR*2, and the 'height' would be - * nlevels - */ - -/** - * This is called when a stack change ocurs. - * - * @param jsn The lexer - * @param action The type of action, this can be PUSH or POP - * @param state A pointer to the stack currently affected by the action - * @param at A pointer to the position of the input buffer which triggered - * this action. - */ -typedef void (*jsonsl_stack_callback)( - jsonsl_t jsn, - jsonsl_action_t action, - struct jsonsl_state_st* state, - const jsonsl_char_t *at); - - -/** - * This is called when an error is encountered. - * Sometimes it's possible to 'erase' characters (by replacing them - * with whitespace). If you think you have corrected the error, you - * can return a true value, in which case the parser will backtrack - * and try again. - * - * @param jsn The lexer - * @param error The error which was thrown - * @param state the current state - * @param a pointer to the position of the input buffer which triggered - * the error. Note that this is not const, this is because you have the - * possibility of modifying the character in an attempt to correct the - * error - * - * @return zero to bail, nonzero to try again (this only makes sense if - * the input buffer has been modified by this callback) - */ -typedef int (*jsonsl_error_callback)( - jsonsl_t jsn, - jsonsl_error_t error, - struct jsonsl_state_st* state, - jsonsl_char_t *at); - -struct jsonsl_st { - /** Public, read-only */ - - /** This is the current level of the stack */ - unsigned int level; - - /** Flag set to indicate we should stop processing */ - unsigned int stopfl; - - /** - * This is the current position, relative to the beginning - * of the stream. - */ - size_t pos; - - /** This is the 'bytes' variable passed to feed() */ - const jsonsl_char_t *base; - - /** Callback invoked for PUSH actions */ - jsonsl_stack_callback action_callback_PUSH; - - /** Callback invoked for POP actions */ - jsonsl_stack_callback action_callback_POP; - - /** Default callback for any action, if neither PUSH or POP callbacks are defined */ - jsonsl_stack_callback action_callback; - - /** - * Do not invoke callbacks for objects deeper than this level. - * NOTE: This field establishes the lower bound for ignored callbacks, - * and is thus misnamed. `min_ignore_level` would actually make more - * sense, but we don't want to break API. - */ - unsigned int max_callback_level; - - /** The error callback. Invoked when an error happens. Should not be NULL */ - jsonsl_error_callback error_callback; - - /* these are boolean flags you can modify. You will be called - * about notification for each of these types if the corresponding - * variable is true. - */ - - /** - * @name Callback Booleans. - * These determine whether a callback is to be invoked for certain types of objects - * @{*/ - - /** Boolean flag to enable or disable the invokcation for events on this type*/ - int call_SPECIAL; - int call_OBJECT; - int call_LIST; - int call_STRING; - int call_HKEY; - /*@}*/ - - /** - * @name u-Escape handling - * Special handling for the \\u-f00d type sequences. These are meant - * to be translated back into the corresponding octet(s). - * A special callback (if set) is invoked with *at=='u'. An application - * may wish to temporarily suspend parsing and handle the 'u-' sequence - * internally (or not). - */ - - /*@{*/ - - /** Callback to be invoked for a u-escape */ - jsonsl_stack_callback action_callback_UESCAPE; - - /** Boolean flag, whether to invoke the callback */ - int call_UESCAPE; - - /** Boolean flag, whether we should return after encountering a u-escape: - * the callback is invoked and then we return if this is true - */ - int return_UESCAPE; - /*@}*/ - - struct { - int allow_trailing_comma; - } options; - - /** Put anything here */ - void *data; - - /*@{*/ - /** Private */ - int in_escape; - char expecting; - char tok_last; - int can_insert; - unsigned int levels_max; - -#ifndef JSONSL_NO_JPR - size_t jpr_count; - jsonsl_jpr_t *jprs; - - /* Root pointer for JPR matching information */ - size_t *jpr_root; -#endif /* JSONSL_NO_JPR */ - /*@}*/ - - /** - * This is the stack. Its upper bound is levels_max, or the - * nlevels argument passed to jsonsl_new. If you modify this structure, - * make sure that this member is last. - */ - struct jsonsl_state_st stack[1]; -}; - - -/** - * Creates a new lexer object, with capacity for recursion up to nlevels - * - * @param nlevels maximum recursion depth - */ -JSONSL_API -jsonsl_t jsonsl_new(int nlevels); - -/** - * Feeds data into the lexer. - * - * @param jsn the lexer object - * @param bytes new data to be fed - * @param nbytes size of new data - */ -JSONSL_API -void jsonsl_feed(jsonsl_t jsn, const jsonsl_char_t *bytes, size_t nbytes); - -/** - * Resets the internal parser state. This does not free the parser - * but does clean it internally, so that the next time feed() is called, - * it will be treated as a new stream - * - * @param jsn the lexer - */ -JSONSL_API -void jsonsl_reset(jsonsl_t jsn); - -/** - * Frees the lexer, cleaning any allocated memory taken - * - * @param jsn the lexer - */ -JSONSL_API -void jsonsl_destroy(jsonsl_t jsn); - -/** - * Gets the 'parent' element, given the current one - * - * @param jsn the lexer - * @param cur the current nest, which should be a struct jsonsl_nest_st - */ -static JSONSL_INLINE -struct jsonsl_state_st *jsonsl_last_state(const jsonsl_t jsn, - const struct jsonsl_state_st *state) -{ - /* Don't complain about overriding array bounds */ - if (state->level > 1) { - return jsn->stack + state->level - 1; - } else { - return NULL; - } -} - -/** - * Gets the state of the last fully consumed child of this parent. This is - * only valid in the parent's POP callback. - * - * @param the lexer - * @return A pointer to the child. - */ -static JSONSL_INLINE -struct jsonsl_state_st *jsonsl_last_child(const jsonsl_t jsn, - const struct jsonsl_state_st *parent) -{ - return jsn->stack + (parent->level + 1); -} - -/**Call to instruct the parser to stop parsing and return. This is valid - * only from within a callback */ -static JSONSL_INLINE -void jsonsl_stop(jsonsl_t jsn) -{ - jsn->stopfl = 1; -} - -/** - * This enables receiving callbacks on all events. Doesn't do - * anything special but helps avoid some boilerplate. - * This does not touch the UESCAPE callbacks or flags. - */ -static JSONSL_INLINE -void jsonsl_enable_all_callbacks(jsonsl_t jsn) -{ - jsn->call_HKEY = 1; - jsn->call_STRING = 1; - jsn->call_OBJECT = 1; - jsn->call_SPECIAL = 1; - jsn->call_LIST = 1; -} - -/** - * A macro which returns true if the current state object can - * have children. This means a list type or an object type. - */ -#define JSONSL_STATE_IS_CONTAINER(state) \ - (state->type == JSONSL_T_OBJECT || state->type == JSONSL_T_LIST) - -/** - * These two functions, dump a string representation - * of the error or type, respectively. They will never - * return NULL - */ -JSONSL_API -const char* jsonsl_strerror(jsonsl_error_t err); -JSONSL_API -const char* jsonsl_strtype(jsonsl_type_t jt); - -/** - * Dumps global metrics to the screen. This is a noop unless - * jsonsl was compiled with JSONSL_USE_METRICS - */ -JSONSL_API -void jsonsl_dump_global_metrics(void); - -/* This macro just here for editors to do code folding */ -#ifndef JSONSL_NO_JPR - -/** - * @name JSON Pointer API - * - * JSONPointer API. This isn't really related to the lexer (at least not yet) - * JSONPointer provides an extremely simple specification for providing - * locations within JSON objects. We will extend it a bit and allow for - * providing 'wildcard' characters by which to be able to 'query' the stream. - * - * See http://tools.ietf.org/html/draft-pbryan-zyp-json-pointer-00 - * - * Currently I'm implementing the 'single query' API which can only use a single - * query component. In the future I will integrate my yet-to-be-published - * Boyer-Moore-esque prefix searching implementation, in order to allow - * multiple paths to be merged into one for quick and efficient searching. - * - * - * JPR (as we'll refer to it within the source) can be used by splitting - * the components into multiple sections, and incrementally 'track' each - * component. When JSONSL delivers a 'pop' callback for a string, or a 'push' - * callback for an object, we will check to see whether the index matching - * the component corresponding to the current level contains a match - * for our path. - * - * In order to do this properly, a structure must be maintained within the - * parent indicating whether its children are possible matches. This flag - * will be 'inherited' by call children which may conform to the match - * specification, and discarded by all which do not (thereby eliminating - * their children from inheriting it). - * - * A successful match is a complete one. One can provide multiple paths with - * multiple levels of matches e.g. - * /foo/bar/baz/^/blah - * - * @{ - */ - -/** The wildcard character */ -#ifndef JSONSL_PATH_WILDCARD_CHAR -#define JSONSL_PATH_WILDCARD_CHAR '^' -#endif /* WILDCARD_CHAR */ - -#define JSONSL_XMATCH \ - X(COMPLETE,1) \ - X(POSSIBLE,0) \ - X(NOMATCH,-1) \ - X(TYPE_MISMATCH, -2) - -typedef enum { - -#define X(T,v) \ - JSONSL_MATCH_##T = v, - JSONSL_XMATCH - -#undef X - JSONSL_MATCH_UNKNOWN -} jsonsl_jpr_match_t; - -typedef enum { - JSONSL_PATH_STRING = 1, - JSONSL_PATH_WILDCARD, - JSONSL_PATH_NUMERIC, - JSONSL_PATH_ROOT, - - /* Special */ - JSONSL_PATH_INVALID = -1, - JSONSL_PATH_NONE = 0 -} jsonsl_jpr_type_t; - -struct jsonsl_jpr_component_st { - /** The string the component points to */ - char *pstr; - /** if this is a numeric type, the number is 'cached' here */ - unsigned long idx; - /** The length of the string */ - size_t len; - /** The type of component (NUMERIC or STRING) */ - jsonsl_jpr_type_t ptype; - - /** Set this to true to enforce type checking between dict keys and array - * indices. jsonsl_jpr_match() will return TYPE_MISMATCH if it detects - * that an array index is actually a child of a dictionary. */ - short is_arridx; - - /* Extra fields (for more advanced searches. Default is empty) */ - JSONSL_JPR_COMPONENT_USER_FIELDS -}; - -struct jsonsl_jpr_st { - /** Path components */ - struct jsonsl_jpr_component_st *components; - size_t ncomponents; - - /**Type of the match to be expected. If nonzero, will be compared against - * the actual type */ - unsigned match_type; - - /** Base of allocated string for components */ - char *basestr; - - /** The original match string. Useful for returning to the user */ - char *orig; - size_t norig; -}; - -/** - * Create a new JPR object. - * - * @param path the JSONPointer path specification. - * @param errp a pointer to a jsonsl_error_t. If this function returns NULL, - * then more details will be in this variable. - * - * @return a new jsonsl_jpr_t object, or NULL on error. - */ -JSONSL_API -jsonsl_jpr_t jsonsl_jpr_new(const char *path, jsonsl_error_t *errp); - -/** - * Destroy a JPR object - */ -JSONSL_API -void jsonsl_jpr_destroy(jsonsl_jpr_t jpr); - -/** - * Match a JSON object against a type and specific level - * - * @param jpr the JPR object - * @param parent_type the type of the parent (should be T_LIST or T_OBJECT) - * @param parent_level the level of the parent - * @param key the 'key' of the child. If the parent is an array, this should be - * empty. - * @param nkey - the length of the key. If the parent is an array (T_LIST), then - * this should be the current index. - * - * NOTE: The key of the child means any kind of associative data related to the - * element. Thus: <<< { "foo" : [ >>, - * the opening array's key is "foo". - * - * @return a status constant. This indicates whether a match was excluded, possible, - * or successful. - */ -JSONSL_API -jsonsl_jpr_match_t jsonsl_jpr_match(jsonsl_jpr_t jpr, - unsigned int parent_type, - unsigned int parent_level, - const char *key, size_t nkey); - -/** - * Alternate matching algorithm. This matching algorithm does not use - * JSONPointer but relies on a more structured searching mechanism. It - * assumes that there is a clear distinction between array indices and - * object keys. In this case, the jsonsl_path_component_st::ptype should - * be set to @ref JSONSL_PATH_NUMERIC for an array index (the - * jsonsl_path_comonent_st::is_arridx field will be removed in a future - * version). - * - * @param jpr The path - * @param parent The parent structure. Can be NULL if this is the root object - * @param child The child structure. Should not be NULL - * @param key Object key, if an object - * @param nkey Length of object key - * @return Status constant if successful - * - * @note - * For successful matching, both the key and the path itself should be normalized - * to contain 'proper' utf8 sequences rather than utf16 '\uXXXX' escapes. This - * should currently be done in the application. Another version of this function - * may use a temporary buffer in such circumstances (allocated by the application). - * - * Since this function also checks the state of the child, it should only - * be called on PUSH callbacks, and not POP callbacks - */ -JSONSL_API -jsonsl_jpr_match_t -jsonsl_path_match(jsonsl_jpr_t jpr, - const struct jsonsl_state_st *parent, - const struct jsonsl_state_st *child, - const char *key, size_t nkey); - - -/** - * Associate a set of JPR objects with a lexer instance. - * This should be called before the lexer has been fed any data (and - * behavior is undefined if you don't adhere to this). - * - * After using this function, you may subsequently call match_state() on - * given states (presumably from within the callbacks). - * - * Note that currently the first JPR is the quickest and comes - * pre-allocated with the state structure. Further JPR objects - * are chained. - * - * @param jsn The lexer - * @param jprs An array of jsonsl_jpr_t objects - * @param njprs How many elements in the jprs array. - */ -JSONSL_API -void jsonsl_jpr_match_state_init(jsonsl_t jsn, - jsonsl_jpr_t *jprs, - size_t njprs); - -/** - * This follows the same semantics as the normal match, - * except we infer parent and type information from the relevant state objects. - * The match status (for all possible JPR objects) is set in the *out parameter. - * - * If a match has succeeded, then its JPR object will be returned. In all other - * instances, NULL is returned; - * - * @param jpr The jsonsl_jpr_t handle - * @param state The jsonsl_state_st which is a candidate - * @param key The hash key (if applicable, can be NULL if parent is list) - * @param nkey Length of hash key (if applicable, can be zero if parent is list) - * @param out A pointer to a jsonsl_jpr_match_t. This will be populated with - * the match result - * - * @return If a match was completed in full, then the JPR object containing - * the matching path will be returned. Otherwise, the return is NULL (note, this - * does not mean matching has failed, it can still be part of the match: check - * the out parameter). - */ -JSONSL_API -jsonsl_jpr_t jsonsl_jpr_match_state(jsonsl_t jsn, - struct jsonsl_state_st *state, - const char *key, - size_t nkey, - jsonsl_jpr_match_t *out); - - -/** - * Cleanup any memory allocated and any states set by - * match_state_init() and match_state() - * @param jsn The lexer - */ -JSONSL_API -void jsonsl_jpr_match_state_cleanup(jsonsl_t jsn); - -/** - * Return a string representation of the match result returned by match() - */ -JSONSL_API -const char *jsonsl_strmatchtype(jsonsl_jpr_match_t match); - -/* @}*/ - -/** - * Utility function to convert escape sequences into their original form. - * - * The decoders I've sampled do not seem to specify a standard behavior of what - * to escape/unescape. - * - * RFC 4627 Mandates only that the quoute, backslash, and ASCII control - * characters (0x00-0x1f) be escaped. It is often common for applications - * to escape a '/' - however this may also be desired behavior. the JSON - * spec is not clear on this, and therefore jsonsl leaves it up to you. - * - * Additionally, sometimes you may wish to _normalize_ JSON. This is specifically - * true when dealing with 'u-escapes' which can be expressed perfectly fine - * as utf8. One use case for normalization is JPR string comparison, in which - * case two effectively equivalent strings may not match because one is using - * u-escapes and the other proper utf8. To normalize u-escapes only, pass in - * an empty `toEscape` table, enabling only the `u` index. - * - * @param in The input string. - * @param out An allocated output (should be the same size as in) - * @param len the size of the buffer - * @param toEscape - A sparse array of characters to unescape. Characters - * which are not present in this array, e.g. toEscape['c'] == 0 will be - * ignored and passed to the output in their original form. - * @param oflags If not null, and a \uXXXX escape expands to a non-ascii byte, - * then this variable will have the SPECIALf_NONASCII flag on. - * - * @param err A pointer to an error variable. If an error ocurrs, it will be - * set in this variable - * @param errat If not null and an error occurs, this will be set to point - * to the position within the string at which the offending character was - * encountered. - * - * @return The effective size of the output buffer. - * - * @note - * This function now encodes the UTF8 equivalents of utf16 escapes (i.e. - * 'u-escapes'). Previously this would encode the escapes as utf16 literals, - * which while still correct in some sense was confusing for many (especially - * considering that the inputs were variations of char). - * - * @note - * The output buffer will never be larger than the input buffer, since - * standard escape sequences (i.e. '\t') occupy two bytes in the source - * but only one byte (when unescaped) in the output. Likewise u-escapes - * (i.e. \uXXXX) will occupy six bytes in the source, but at the most - * two bytes when escaped. - */ -JSONSL_API -size_t jsonsl_util_unescape_ex(const char *in, - char *out, - size_t len, - const int toEscape[128], - unsigned *oflags, - jsonsl_error_t *err, - const char **errat); - -/** - * Convenience macro to avoid passing too many parameters - */ -#define jsonsl_util_unescape(in, out, len, toEscape, err) \ - jsonsl_util_unescape_ex(in, out, len, toEscape, NULL, err, NULL) - -#endif /* JSONSL_NO_JPR */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* JSONSL_H_ */ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-1.0.pc.in b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-1.0.pc.in deleted file mode 100644 index b65abbc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-1.0.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=${exec_prefix}/include - -Name: libbson -Description: The libbson BSON serialization library. -Version: @VERSION@ -Libs: -L${libdir} -lbson-@BSON_API_VERSION@ -Cflags: -I${includedir}/libbson-@BSON_API_VERSION@ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-static-1.0.pc.in b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-static-1.0.pc.in deleted file mode 100644 index 6ee58d0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/src/libbson-static-1.0.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=${exec_prefix}/include - -Name: libbson static archive -Description: The libbson BSON serialization library. -Version: @VERSION@ -Libs: -L${libdir} -lbson-static-@BSON_API_VERSION@ @LIBBSON_LIBRARIES@ -Cflags: -I${includedir}/libbson-@BSON_API_VERSION@ -DBSON_STATIC diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/CMakeLists.txt deleted file mode 100644 index db9e4e1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -file (GLOB_RECURSE src_libbson_tests_DIST_cs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.c) -file (GLOB_RECURSE src_libbson_tests_DIST_hs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.h) -file (GLOB_RECURSE src_libbson_tests_DIST_bsons RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.bson) -file (GLOB_RECURSE src_libbson_tests_DIST_jsons RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.json) - -set_dist_list (src_libbson_tests_DIST - CMakeLists.txt - ${src_libbson_tests_DIST_cs} - ${src_libbson_tests_DIST_hs} - ${src_libbson_tests_DIST_bsons} - ${src_libbson_tests_DIST_jsons} -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/binary_deprecated.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/binary_deprecated.bson deleted file mode 100644 index efac921efdb5597b8f81efb9578c580d26717852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26 ecmb1QU|?WP%FIhFs$}2*vYA+bgrSkK2?GE$?gM=Q diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/cdriver2269.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/cdriver2269.bson deleted file mode 100644 index e302f87c437f37882bab29d43951f0c38db98d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28 bcmWe-U|`^9-~*B%zy_fhm|t{sFfafB4XOe( diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/code_w_empty_scope.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/code_w_empty_scope.bson deleted file mode 100644 index 7cb594c0547b2102c98a7e91e4b14647be58ff30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36 ncmY#kU|`@+&QD2YkOZ=LfVeENNFhI_XJ7yTXcYx> diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/codewscope.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/codewscope.bson deleted file mode 100644 index cb20ed031fde9a478783f469891d6b16a544e7be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27 bcmb1UU|`@+%g<*J1Tt8F7{q1;(hLj$E4u>C diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/dollarquery.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/dollarquery.bson deleted file mode 100644 index 62cbe1e3c8c864c270f8558d9e6cb1e4dbd75b46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 XcmWe)U|?WYDJ)Gbs$^gVvKbfv8G!ENljy5WB>pX$pV}J diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/empty_key.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/empty_key.bson deleted file mode 100644 index 2bb676210e165c0121b8a1bbd5d8196c26c9b2cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 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

(+{ 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

UB zFLq`dHf23lX9bpIA?9Wlre!k5XADMUDE>+sczxy@KIJ`L=LMeRA@1fDuH`cR!#_EL z6Zsp5vLCy%16#5YYqJW=vKaF-2QxAi6EhB@G8}{Rdy>HJ17GqHZ}SSz@)-AX2RCvR z|Ks2MgHt((yTF&T-W8H8UF2X=4yjQ4qi7kP?@ zxrbZ1j?4Kk|Kdze;_n>B{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?Bpi2|>We8tDS z!>c^U<2=Bf+{D#f!UdeeX&lc{9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%C89n zyLWuf2fWEkJk2BA%WYiG6&TPY`tjFrCz>+M) z+|0tXOvd<(!H5jSU-1I3&wRtDyvOUjz>_@0-Q2>pT*iO+CueXXf8$X0V|R97OEzL{ zR$*BdV}9mfMy6t7#$i;3V{m?t8`yo|OFrUlUg23D<9_boMy}$2{F{GpD#vjo2eCK1 zuq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@JpP)?k%73K5y_MPw_DKa4XkwIsfHfoXJW2 zox|9lJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^0P9;PsKO_?UNimFIYz2e^})xSC72 zfO9yF<2j0h*@s=(j?LMCHCc(JS%i6+jp>z4KVt@7pZJ49Lj#|&JJwJMy$;$EX!id&m7FiR7}h` zjLL8f&hOCzyAOQHN4(7|Jj-L;&mG*zRs4^C^AAqtIF95X_GTBhWi!@i4OV0+7G@r1 zWjZEj0>)${hGr0ci5l3w82hsaJF*oUvkt4W z9E-C6b21ZCGYR7|8pAULe?$qqKJpbG^A4}_9FOw=cXAU~a|su44ySQEM{zLwuq)fK zIUBGhE3q_-FfX$)JyS3tV=*$rFetx94(#6XIUn#QFYz>wa4)xUJy&oM=W!M%a}0-b z0DH0%TeAu4vKq^?1Pd}3Gcyg7G9IHd0z>j=q`>PFU-Jp?@*26hp;cZu{~R`A#1TR%djZ(F*`FbB@;0=qcALk@ms{e?mb`dA#d?A&+sVsaXU9~ zB^Pr(XLAb2as&sm7dx{Jo3b9OvjR)95OXsN(=r+3GX^6v6n{ksygu^{pYk5B^8!!u z5O;G6*K!&E;h&triTsU2*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c8IHmEJ$zvIfiL-p zw|RwUd5rtHgB!Vu|M74B!Koa_ksQR{?83He#`>(miY&##%)_iq$K*`Fn2f~G48kwr z0=u_-#{0a%i#)}{+{3M0$L0K&e{m)!@plemfA(NUwqj$}VO5r6aTZ`sW@2h4VO&OI zc!uDQuz}Y{zT#uv;Z>gFaUS4KZsKY#;R4R#G>+#e4rU*AWji)!1J-0EmSz#=Wj3Z~ z3MOPMMrIfW<<~HQ-8(+#1K#8%p5_tm>V|kWf zLFQs+reRXXV{}GfNd62Rczxn)KH*(n<9VLoLGI#auHjNH?u)mE$;)gV>v0*p|&$pEX#KrC6AGn3d_6oCz3{kr2w|JRnc$E9Nog284i#eaOIfY|6f&S&!9OfhAdp zxtWD&nT+ungAo~uzkUW@pZSJQd5_n5fhT#0ySasHxs3ntPtM>({>Gu~$L{RFmTbh@ ztirM^#{A5|j7-JEjKio5$Kd?_Be46xmwd$Ayu!0Q#{JyEja({{U9iQ_7Z}JjP^9c8H z8`pCM7jYhEaWcnnI0vvNJFzvJur8~yJWH@3b1^g1Fe&3PIwLS7e|`zPKJhi5@Gh_M zJWuc-cX2bM{@}KvK!m81sk#!E3*uXG9R-u15+{)V>1fFG8n&o4(#6Z z1t0PjFY^qKav!&I16Oh}=W{lva4bh~AbYVh+psC?u{tZTBnvS&voI}_F+O83B17@l zr@-qo-|#8#@j5T?BoA>nw{R_&@gM%l8Jx)9IF$X^ogLVcjaZviSeC_@pE;P3shF5? z7?t4|oZmkNb|3hXk9eC`c$UYwpF6mbtN0)P<{zBOaU97(?9DE0%Vw<48m!1tEX+L2 z%5+T51dPc@49y_?@*%K$%V)gL8@$L%F!pB;c4R9yW*t^# zITmLD=42+OW)j9_G=^sg{&*jFedH@X<{e(;IUeT$?&Kz}<`OR898TkSj^beUVOO?e zb2ea2R$^%uVP0lqdZu7P#$sfKVNia37udbyb3WirUgBvU;a+azdamFi&f_dj<`@p= z0QO`jwq_I7Wi^&(2^M57W@Z{DWjsb_1cv0#w}ICuzUC9&L)KztmSIumV|Hd>N+x1#MqyY6^L*C+Lp5amM<92S~ zN-pMn&gK-3

UBFLq`dHf23lX9bpIA?9Wlre!k5XADMUDE@jKczxy@KIJ`L=LMeR zA@1fDuH`cR!#_EL6Zsp5vLCy%16#5YYqJW=vKaF-2QxAi6EhB@G8}{R`>Vk217GqH zZ}SSz@)-AX2RCvR|Ks2MgHt((yTF&T-W8H8V6 z26k`xjQ4qi7kP?@xrbZ1j?4Kk|Kdze;_n>B{_MeyY{kZ`!>TOD;w-?N%*518!nlma z@C?BpF9NTRe8tDS!>c^U<2=Bf+{D#f!UdeeX&lc{9LzrK%64qd2CT_SEX^X!%WO=~ z6imoijLa|$%CFA@yLWuf2fWEkJk2BA%WYiG6 z&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSUrz$B&wRtDyvOUjz>_@0-Q2>pT*iO+CueXX zf8$X0V|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m?d9N2x}OFrUlUg23D<9_boMy}$2 z{F{GpD#vjo2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@XMpX?k%73K5y_MPw_DK za4XkwIsfHfoXJW2ox|9lJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^78A;PsKO_?UNi zmFIYz2e^})xSC72fO9yF<2j0h*@s=(j?LMCHCc(JS%i6+jp>z4 zKko-#pZJ49Lj#|&JJwJMy$;$ zEX!id&m7FiR7}h`jLL8f&hK{uyAOQHN4(7|Jj-L;&mG*zRs4^C^AAqtIF95X_GTBh zWi!@i4OV0+7G@r1WjZEj0>)${hGr0cxgFTO z82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAULf7}YZKJpbG^A4}_9FOw=cXAU~a|su4 z4ySQEM{zLwuq)fKIUBGhE3q_-FfX$)JyS3tV=*$rFety?4D8wa4)xU zJy&oM=W!M%a}0-b0DH0%TeAu4vKq^?1Pd}3Gcyg7G9IHd0z>lWjlk;@U-Jp?@*26hp;cZu{~R`A#1TR%djZ(F*`FbB@;0=qcALk@!R#l?mb`d zA#d?A&+sVsaXU9~B^Pr(XLAb2as&sm7dx{Jo3b9OvjR)95OXsN(=r+3GX^6v6n|X{ zygu^{pYk5B^8!!u5O;G6*K!&E;h&triTsU2*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c z8IHmE{c2$MfiL-pw|RwUd5rtHgB!Vu|M74B!Koa_ksQR{?83He#`>(miY&##%)_iq z$K*`Fn2f~G48kv00=u_-#{0a%i#)}{+{3M0$L0K&e{m)!@plemfA(NUwqj$}VO5r6 zaTZ`sW@2h4VO&OIc!uDQ%YoNNzT#uv;Z>gFaUS4KZsKY#;R4R#G>+#e4rU*AWji)! z1J-0EmSz#=Wj3Z~3MOPMMrIfW<=0Dr-8(+#1K#8%p5_tm>V|kWfLFQs+reRXXV{}GfNdCMSczxn)KH*(n<9VLoLGI#auHjNH?u)mE$;)gV>v0*p|&$pEX#KrC6AGn3d_6oCz3{krTDkIhl#6nS^l}jo}%BKaK`oANh)pd52ed zj>ma`JGqIgxr7TihtoKoqd1s-*p=IflbIfIZoXt=WWiS&ijcf(4n2nVE)38IRE!fg$4h`E`C zX_<`i8G{iSioXs9UZ44fPkE2md4VT+h`YIkYq^a7@K4U*ME=I1?8olxz?N*p+N{E| zEXMrI!Hi7B#EiqJ49DR7eju>>z?Xc)+q}ZFJjVUp!HrzS|M)lm;8c#|NDg9ec41pK zV|~_OMV4Y==3!Q*V{#^7Oh#g82H}_ef!$j^<9*)XMV{he?%`Ih<8uDXzc`bV_&bNO zKYOqvTd^_guqw;3I14Z*Gch%jFfOApJVWruzQF4vU-2>T@G8&oI1g|qH*qzWZ~^CV z8pm@K2eS{mvK^bV0c)}nOS1^`G8@w~1rstBBQp$x^6TEf?j4`=0dMjWPxA=(avRrk z1s8E1XK^yea5x9BCp)n#;g3up|pHH?uG;lQBMHFd{?o*RH_p zGvDwj@9{b>@FWj$H@9#tm+>F|$r+r;-#C>0*qt5Nl8soKRalnAn4dYAk*S!NaTt~1 z7@XgC26i9#l8<&l;@AQY_3o%*u33 z&IF9fNDR#&{IVmkd&_6M&l|kRQ#{N)+{$%a&VTtAXL1sM=P>qX4|ZfLHf9}GWjPjS z0p?^Tre+exWi*Co2>#d}czxt6KIR=>(BF^J1PUaX6=K%I( zC$?r2)@3!8X9*T$E@oyLCS^QEX9R}i&#i&iC%)zr-sLr(=LsIEFaP39PU7zz#{TTVj%>xoti!4-$Kou&oXo`3Ov1Q~#_$Zm z9~%O%k9@_)yu+(J$KyP}o!rFLT*3vM!)YAPQ5?)Z?8N-WJH%*$*{&lF6^ zSd7dt49c(T1G{&8&Ii27OFYdZ+{xg8F7W!q*L=deyvFl9!Gqkz&0NE!T*$ec&IugNA?(X;Y|j>K$Xcw- zGAzn`%+3r<$wZ9JC=APB{I)i*d(Rhq$XmS3Gd#+D+|CVL$;F({*_^_$9KnI?#m;QQ zrmV;6tiX~i#N5onv`ohMjKPQu#b0Xzug`qLr@Y7Oyugz@#NFJ&wOq!3_$Oy@B7fsh z_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhGTGkUme(e;7dN@ZC>G79^-!Q;6|?EfBc(& za4N@fBnPoKyRa>ru|8|CB1^F_^DryZF*y@3CL=L4gYe6$!0s)d@jh?xB2V!!_i!uM zaXJ6xU!2KF{GG$tpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o+0>SW#ILZulSgEc$MdP zoCmm*o4A@wxPWswjpI3rgV~2&*^bTGfHhf(rCEe|nT_e0f(aRmkr{?T`E^BL_m0o` zfH!%Gr+I{XxsB_&f{QqhvpAV!IGh96lbzU_O<0%JSe_+Vkhz$dX_%Dp7@ZLql0TOR zUZ41yPk5Ktc%CPCkh{2n_K?J@jL}kVJH9q&9-gZwr$(CZQHh6ZMEzz zZMAIMw)NgUKj;5&6W4JC7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9E0=w z+Q9AuU-A)e^9s-M7!PqTw{Zj4a4F|;Iwx=>2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@ zBQZ3C@XMOO?k%73K5y_MPw@!%a~C&rJy&uOXLAb2av1xw2RpJA8?z3pvK))E0CO@E zQ!@$UG8)4(1b?g!ygu?3AM*~c@*I!zF!ymgH*zhPaXx2oB1dsB`>-q9u{j&CCM&Tt zi!d*)${hGr0cSsK{AP)?rnaV{sN>PG(|iCShDgV|a$(k0pWE zN50}?-r-fA<8dD5K5pkmuH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{EJkJ+ z2Ibeqf!#Yk=L6p4C7$L{9^h_n;qP3<#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_i zjK}DVz>xg8DDe8k*L=deyvFl9!GHJ{ckoaC#^qeVnViJY9Kycr#`bK%hOEWPEW@JA z$L!3&luX3fjKZ)C#%~J)yZ3y-hrGqhJj4HZkbAh5e{eOIa4x5DJV$UKd$BXyuqo@Y zIxDaw3o$pdFfEfYK4UN(miY&##%)_iq$K*`Fn2f~G48kw-0=u_-#{0a%i#)|6+|OOy%=KK! zMV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y&k+1EH}Lw%SA5JnyvlPt&coct z?cB(%%p+|4cgovXN*b2ydbIGh96lbzU_O<0%JSe_+Vkhz$dX_%Dp7@ZLql0Rn$UZ41y zPk5Ktc%CQt5C7s0{>k6CoC`RUlQ^0~*q7bdo-NprwOE;DSd{sgof(*ti5Qzv7?#2K zZB}6So-g>2w|JRn_#Y2)54Z9UuI3WX^ z8JUWS8HZ6Bj=}kTMqu}WFZqbKd4*?rjEA_F+qi*ixRmoaof9~cgV>v0*p|&$pEX#K zrC6AGn3d_6oCz3{krxr>{*o-4VCvpI!hIgI_;gB{t5 zjai3PS&qe7fH|3oshNav8I9o?f#`clvjht=7c(;rlQJHoGXg{M=aj(f6JPTQ@A4YY^929lU);ez z`5TvW0cUa&M{@}KvK!m81sk#!E3*uXG9R-u15+{)V>1fFG8n&24(#6Z1t0PjFY^rl z<3aA>R{p`&T*A4W#_=4%f$YW3Y{RCk$Lg%Wk}SmB%)+!x#`uiEhz!MFlLD{Le8Z=_ z$LqYnll+%|b0;@(9anH6XK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!z2)Fe<|_IKNK} z>^|@%AMrM?@GOt<5chH$H*gJ?avrC10!MNXd$SAMvKi~M1}m}@3o{S1G98mM0b?=} zLo*1!ObG1W@)_^*1~2jyk8nSCaWmI*B^Plvr*JHXu|IpTBU`aC>#!=zu{aAbCo?fM zlQ1r$F+4-?$N0eOBVX|`@9-+m@i-52AGdQO*K!%>a|S1J6bG{pyRsddvjJN9e4{$fP@OQ4_V$R`Ij^l6+U{7{pYc^qB zR%3aVU_s_$W~O0M#$$9wU`YNP8+d)L)KztmSIumV|Hd>N+x1#MqyY6^L*C+Lp5cEy$UWT3Ke(DpIG58n zo+CJrz1W#;*p&5HofTM;g_xUJn3l;HpD`Gbq4;Zb;Pshr_>}i}ofmkL|MG9{h~wR%JOBX94D9CZ=W*#$_~yX9)fn5qN#% zD?a8OUgbF+=V9*Sc5dWaF5`U8;6#q%VD@2GwqtWPU`Qe+>z|KJyKq@*c1A0#EW^{>`1-#C2T3g`CC79K)gP$L{RF zmTbh@tirM^#{A5|j7-JEjKio5$Kd=vII#P`mwd$Ayu!0Q#zWl8ZQQ^$T*`Tz&IugJ zLF~;gY|Cb>&l;@AQY_3o%*u33&IF9fNDR#&{4yx8d&_6M&l|kRQ#```+{MjY&y`%n z*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(#-jK=T`!5;$yuaA7i$GpR zjaqIeP7 zM26z8zJb?gzTs2e<8@x(N&d^fxs#i?jw`s3vpAV!IF$X^ogLVcjaZviSeC_@pE;P3 zshF5?7?t4|oZtHdb|3hXk9eC`c$UX_h8@Pr`Igishfg?GHz1f9r*^KpBgB4kd zg_(z0nU2YsfH4_~p&5i^Y|479&I&BaLd?x9Ov_}9&lrrzQ2f;`@cPU*e9C*g z&I>%rfB83eaue5a1s8G_CvyykvLCy%16#5YYqJW=vKaF-2QxAi6EhB@G8}{Rd)L73 z17GqHZ}SSz@)!?sFSl_6*KjH4aXKe(BnPoKyRa>ru|8|CB1^F_^DryZF*y@3CL=L4 zgYZk2!0s)d@jh?xB2V!M_j4CFb3Ipb5odD>$8s3^vj;n}6&te-tFj!6vjB546H_w@ z<1!kF#E78+p#$tuqG?9G>b4V zvoSqWFd<_xGQ%(^zjg}j-tjpf@Fp+uG>`HCcXJDW=PEAd98Tpp4(9;&WGA*}6V_!l zmS+hTWG-fA8YX2tMrQk!zz=LOvd!>#;-tGR@8IgR5v zf&S&!9OfhAdpxtWD&nT+ungAo~uzuE_0pZSJQd5_n5fhYMd|K?6^;ySM2 zLeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m?N7ubE^OFrUlUg23D<00RVt zjKGlm*(&h*#MgYnyS&EpJi&kX7kBVa{>J58z?q!H(Hz3Q?8f$N!G^5G$}Gd8%*X7^ zz?4kH*o?xk490IQ1H1Qp!H2xX%RIyXc#wOzm49$GmvAnpaXd$GAbYVh+psC?u{tZT zBnvS&voI}_F+O83B17?4i@@tM-|#8#@j5T?B>&~#+{sN`#}!=2S)9x<9Lj#|&JJwJ zMy$;$EX!id&m7FiR7}h`jLL8f&hO0wyAOQHN4(7|Jj-J|#J$|c4P3*eoX6>$z>yrp z-t5A*Y{vSm!HO)!!py_0OvmI*z?h80&ui(e8&5{!HYb_Bizqj+|2b{$wi#a zDICjT?9U$T$X0C3I;_faEY1SV$xKYmB#g^w49^h!(KPV-$X9&KJG{zsJkG=1$L-w6 zwOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9p#0h-uzSbne88K$#M3;= z1KiCm{GF?~m~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?M952VS4}nooF_ z*La>M_z(Z$4*tpCxSR_(lan}_L)e$y*q$xekhNHuWmuH?n4KAzl8G3bQ5crN_^nZ3 z_nt5Kkhgf5XZRlvau2ui53c4C&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5XADMU zDE?{~czxy@KIJ`L=LMeRzxFe zd6<>yn4Ae1laUyjLHMP9VE2~Kc%L_Tk*9cs`?-soxt=Szh_g9`V>yid*@GR~ij7%^ zRauV3S%5j2iK&@{aT$%_8G=9R1zsQdijR4RS9y-dd6@gSog2B9%Q&AiIFX|`n0?rl z?bw_RSd*1lnnjqG*_fUwn2@m;nPC`|U+V^T@A#Y#c$1fSnn!tnySatGa}^hJ4ySS) zhjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcZ|S@@JjE>l0t|3Geb6&+`QT;a}XrKlvM% za{*^^5=V0g`?4F`vjrQn7Avz1i!vXxGXqmH5o0q7!!j7Z)eh|5^93LB7BBM*|KmaK z;a2{^)m*~4oW}7S!GY|>&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSU$p|S&wRtDyvOUj zz?1x!e{&}{aUEB1A!l(i$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v{14D3Ge zB_HuNukb97@eucN8#izbmvSDba{@S6pwH}cX2bmy(BG4Jpy&+#}9b04>JBiC{n=W_-pauf%%54*A*o3jCHvJy+P2=g)< z(=!DVG8Q8<41@A(wZQHjpYs84@)A$;C=YNqxA1qa;$qI>RF30t4q#7qVrw>GT~=dx zmS92VVrHgcQpRI+Mqo((tQvTI;%h$PU0&mPp5QK$Xcw-GAzn`%+3r< z$wZ9JC=APB{8l!wd(Rhq$XmS3GyIPSxrbZ%2Ul|m=W-gya|8#n7dx{Jo3b9OvjR)9 z5OXsN(=r+3GX^6v6n~Woygu^{pYk5B^8!!uU;fRV+{ATU!G)Z~$sEI>?8olxz?N*p z+N{E|EXMrI!Hi7B#EiqJ49DR7UOKS*z?Xc)+q}ZFJjO%Z%Wd4iHC)PhoX!ax$wBPR zE^NzYtj`*($WkoKJj}{;OwI(1$w&;%ApBA)uzSmAyw4lF$WuJR{oKXPT+fwU#Mzv} zu^h(!?7@y~#m20|sw~IiEWn)1#MDf}xQxc|48b2I1Fw&K#mBtEt31c!Jj{LE&W&8l zWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFefuO$MzcYMwVyva*E&7(ZP z-Q2?8xr&Q9hf_I@!#RLG*@>;$gmqbsxqve{iK97$ec6re*@6vOi z`GOC5ip!k*qt5Nl8soKRalnAn4dYAk*S!N zaTt~17@XgW1a=?zl8<iiMen zS(%Q>nSe1FiJ=*UUkV3yZ~2V(d4m^uibuGgySSO_xsr=Gn^QQJ!`Poa*paQ+m~~i{ z6wBF8HUzi~Mi za3&{lG>5P+yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYjGb!0tU?@F8#UGSBco9^@Ww zpi?aZ8G80oX3F9&v z!!rbbf9EPL<{VDtI1c9k_GBlvW)s$BHI`=y z7Gy4FW*R1CJVs{(hUCwjf!8O#<`drKHJ;}Q{=>hxgMacjF6RQygR8lOb2*LUIf4V( zi=EkqO<9lCS%D>4h`E`CX_<`i8G{iSiodc4UZ44fPkE2md4VVSFaPFFZsIzw;6l#g zWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhGTGk&lcEy;7dN@ZC>G79^)bIHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*UW+4 zJ3i+F-sB~o=20HtZf@c4T*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS z{Fy26`o!0K!n?f2^E|%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP z#Mq3&unfj;83Vibe8Gpj#mhXy|9FslxRrl!HJ5NMr*S+-a3FiJGuyB!>#;g3up|pH zH?uG;lQBMHFd{?oSBAjrGvDwj@9{b>@Ff4`-`vSfT*nn$$XT4sF&xT%?9L8s$wsWr zDlE%l%+DOm$W%1049@TA1G^7=$w$1+D?H0%JjA`+#tmG(+{=4`;4ti;kR!o1AJ^i08ojK#i}FnP>PP4{{H;@(-@&63*o`j^_vtWG{AR8#ZM8$RVdUgrg#6n}e7?Y70nnCy_d0_XJ&v>6Vc#)@gg!{RRo4KAVxrnnlg=0C4{n>*Z*@}%>hgDgQ z#aVzknTe^HgmD>-;TeKIk_BEL`HGKuhgW%y$9b6hxSbohmdiMwGdPi>IGBCdmF?J^ z4Oo+vSeiwcm)V$}DVUJ47@1)hlwXqucJKI{4|tQ8c$!CffV;VczjGBAa}K9+9EWoN zd$JQ-vkB|68q2c;3o;ioGYyk69-}h?L-J>m!0QuV^9k?r8qf0t|KVTU!9V#MmvaGU zauP>#2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rOza{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&Ck*U9@FgGd zHm~q3kMR)qavL{r4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQRKhG7>{G2)`r< z?B4Pj@AC#P@)VD7KX-96*K;KoaW^Zd6r;7 z=3-{1VN%9pbVguE{)`)Ved23A;ay(id7j`u{EIvICx7E|F5pZ~;%E+GUv^`AwqQfn zVr7})N+{!<=noBsB(>R_ZIFP;A znQhpV^;n%1SdxX9n^~Ba$rzt87?Gj)D|X=ZnQ!=%_jsKbc#{9}Z|>wKuHy?&EfD<2n@-e z(E_hee9b4k%WFK(6a0sNaR>k8Z(Pm=oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy z%_t1ZVEh&}uzSxJe8^k8%rpFt2f2q^`3F~X3FmSe$8!V+vKKqE4V$tatFr=2vJi7K z3)3$G8BJB3A{e@4WIHJuk!*=@?ZYVo!rEAT)~B$#mOAQq3p-*?7)_6#M-RF zvMk2@%)yLI#l(!ms0_#8{2n>5`@olc#M`{WvpmK_+{bWF|!jLAq0%^>^|DX@FXXS~lFyvS2L!u{OE&0NowT*TR&!m%92 z{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?Bp5d*J}e8tDS!>c^U<2=lL+|G?$%VnI; z8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%C8XuyLWuf2fWEkJk6s#z}?)! z-?@s5Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^9_W;Pr{G`Gj|QjpuoS z|L`yF;Gg`B%ejCvIfzx!n^$<2$9RZ)xs4mRhD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49 z$(evL8Hu48gkM4jc5nHN_j!XCd5TB4pS!r3>$#GPIGa;Amc!VeJ=l@0*qC)#mE~BR z1(=hWn3_o#m(duWA^0Oy;PsKO_?UNimFIYzhq;g2xshwRjPp5z6FG{5*@s=(j?LMC zHCc(JS%i6+jp>2^qlfQ8}7jPyg zaWsdpFT1flTd*N(u`BZsi|b z%_W@6X&lcH9LQem%rd%VsIJjs9g zH+OOq*Kq|Gauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY$dP!0rQI@)2+I z3eWNw4{G7dLY~S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAUL zfBZW6|JO&p;$z<7Ri5K<9_Bu7=SHsOGS24=PUI*KW*>HCJ2qzn)?_7?W)bFPHl}9^ zCS)u|W*7$L*PnsiJ3i+F-sB~o=20HtZf@c4T*bwl!>Js{;T*u8?8Me=!n&-+@+`rE z%*D)1!=#MI=#0RS{P`pB`o!0K!n?f2^E|%}#L*nWzU;>KY{7=C z#mX$hqRhwa%)pdP#Mq3&unfj;-vhh%e8Gpj#mhXy|9FslxRrl!HJ5NMr*S+-a3FiJ zGuyB!>#;g3up|pHH?uG;lQBMHFd{?o*SEmyGvDwj@9{b>@Ff4`-`vSfT*nn$$XT4s zF&xT%?9L8s$wsWrDlE%l%+DOm$W%1049@Rg1G^7=$w$1+D?H0%JjA`+#tmG< zrJTp(+{=4`;4ti;kR!o1AJ^i08ojK#i}FnP>PP4{{H;@(-@&63*o`j^_vtWG{AR8#ZM6n}e7?Y70nnC#GZD9A7&v>6Vc#)@gg!{RRo4KAVxrnnlg=0C4 z{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKI-UMDB`HGKuhgW%y$9b6hxSbohmdiMw zGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwV&5cJKI{4|tQ8c$!CffV;Vc zzjGBAa}K9+9EWoNd$JQ-vkB|68q2c;3o;ioGYyk69-}h?L-OaV!0QuV^9k?r8qf0t z|KVTU!9V#MmvaGUauP>#2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rOzr76X-tz?? z@)j@i4FBUn?%`Jc!PQ*CxtzxF9KnI?#m;QQrmV;6tiX~i#N5onv`ohMjKPQu#a}N1 zug`qLr@Y7Oyug$Emw$67H*p{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q z!!bC&KM(9a@FgGdHm~q3kMR)qavL{r4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w553@2I zlQRKhG7>{G2){fF?B4Pj@AC#P@)VD7KX-96*K;KoaWyyCl9iQ_7Z}JjP^C%B+H@EP2uHs_O;Z%;}a1LNk zc4BKbVO>^Zd6r;7=3-{1VN%9pbVguE{(KyGed23A;ay(id7j`u{EIvICx7E|F5pZ~ z;%E+GUv^`AwqQfnVr7})N+{!<= znoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?Gj)>tW#anQ!=%_jsKbc#{9} zZ|>wKuHy?&EfD<2n@-ecLJ|Ze9b4k%WFK(6a0sNaR>k8Z(Pm=oXJTX%^~c|ZfwsMY{*)y z%rY#>e9X=aOvyxy%_t1ZVElGFuzSxJe8^k8%rpFt2f2q^`3F~X3FmSe$8!V+vKKqE z4V$tatFr=2vJi7K3)3$G8BK^3cNn^4WIHJuk!*=@?ZYVo!rEAT)~B$#mOAQ zq3p-*?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8{C+dA`@olc#M`{WvpmK_+{bWF|!jLAq0%^>`8Bd~kRXS~lFyvS2L!u{OE z&0NowT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?Bp*8{JQe8tDS!>c^U z<2=lL+|G?$%VnI;8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%CFY~yLWuf z2fWEkJk6s#z}?)!-?@s5Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^G!a z;Pr{G`Gj|QjpuoS|L`yF;Gg`B%ejCvIfw99@A-lcd5f2MhX3&(_i!u!;A$@6Tu$S7j^IG{VrRBtQ`Td3R$xgMVs2(( zS|($B#$ZH-;;+kr*Jr-rQ{LlsUf@ao%fGpko4AfExRA3rnPWJV{n(uy*piJ{n^jnr z#h9Ntn31WNm~j}D;TW9XF9miV_>zx!n^$<2$9RZ)xs4mRhD$k*(>Z}7If%X4g>Bi4 z^;v@zS&D_3hgq49$(evL8Hu48gkLTOc5nHN_j!XCd5TB4pS!r3>$#GPIGa;Amc!Ve zJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^77$;PsKO_?UNimFIYzhq;g2xshwRjPp5z z6FG{5*@s=(j?LMCHCc(JS%i6+jp>2^qlfQ8}7jPygaWsdpFT1flTd*N(u`BZsi|b%_W@6X&lcH9LQem%rd%VsIJjs9gH+OOq*Kq|Gauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0 zgY*08!0rQI@)2+I3eWNw4{G7dLY~S8@?&a|*|D82hsaJF*oUvkt4W9E-C6 zb21ZCGYR7|8pAULf1C`wKJpbG^A4}_9FOxb_i;NnaxIr}K4)+uM{zLwuq)fKIUBGh zE3q_-FfX$)JyS3tV=*$rFetyC2<+bRIUn#QFYz>w@_!u9Qvel)0szo#+qP}nwr$(C zZQHi(+Tv;%tJPM^#(Vetod0u-`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbsyUFZq=Bd6SoUj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7 zkJVX$C0U5MnT2VYjPV(R5gCfV&IMkd`Gzm}n0I)cmw1{-xR=|wo-4SJvpAV!IF$X^ zogLVcjaZviSeC_@pE;P3shF5?7?t4|oZrs|b|3hP&-j41c!lSAf(N;ao4JNdIgish zfg?GHz1f9r*^KpBgB4kdg_(z0nU2YsfH4_~p&5i<&IERE`46A)E^qKRp5amM<92S~ zN-pATPT^P%V}JHwN48>P)?rnaV{sN>PG(|iCShDgV|a$(kJEwINB+mZ`H+9|DlhOP z4{ru|8|C zB1^F_^DryZF*y@3CL=L4gYe7I!0s*o;S=8F4gSV6Jj#9C&JA42MV!qk9Lr(s&mQc^ zR&2~VtjcmM&H~KIOiaxrjLT>Y&k+1^B=Gvk|M)i_@=spn1)k&~?&cP*L=p5kHd z;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lBoCSq(xVOR#^w}XM*d%omT-seqT z<~bhc0q*1`uI3WX(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m@o zAJ~21D?Z}`-r^OW=LsIcxsThqfh)O)vpI!hIgI_;gB{t5jai3PS&qe7fH|3o zshNav8I9o?fyf$*a7;lRU)T+`_e7#`&DVi5$hj?8B~X$L4Innykdq zEW*6Z#`H|Vgp9?=48x%Ox+k!E$A9@3@9_`*&a*tm{oKKgT*bwl!>Js{;T*u8?8Me= z!n&-+@+`rE%*D)1!=#MI=#0RS{JA^u`o!0K&PTk>YrM!)Jj^}Z%5_}M1)RxA9L*u@ z%WiDX7Hr5`tjsbj%6!bu3{1&HjLj$v%V7MrE3kXdmwd|myvfTv$KyP}o!rFLT*A4W z#_=4%f$YW3Y{RCk$Lg%Wk}SmB%)+!x#`uiEhz!MFI|HxJe8U%f%saf!OFYdZ+{$z>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z?h80&#!=zu{aAbCo?fMlQ1r$F+4-?$F{)h zBmd*ye8@j}l^1xDhq#+txR%Q}pEEd-qd1s-*p=Fed6<>yn4Ae1laUyjLHK1uVE2~)@Cono27luj9_2o6=LW9i zBF^R%j^!}+XAgE{D>h~wR%JOBX94D9CZ=W*#$_~yX9)gSA9#J_fBc&d`6sXP0#EV~ zcXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~1rstBBQp$x^6R?5?j8T-U%baZ z_&d+?8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c;3o;ioGYyk69-}h?L-Oa^!0QuV z^En^!Hm~s_Pw_DKa4XkwITvsyCvh}~urIr@JzKCLYq2uRuqg8}J2NmP6EQZUFf4=d z+nT`cJzw%E@AD=v^Bj-!0C#c|S91yHavH~T1P8JgJF^X&vL36m0!y+Gb2AImG8yAD z1|u>Qf2|I@KJyJ<@GEZsA%k<9yEGM2_NM z_F-4HV{^Zd6r;7=3-{1VN%9pbVguE{#+J#ed23A=OfP7M26z8C4tvxzTpc# z<{e(=C7$LH?&UVF=L#<5EKcSa4rM=fX9u=qBi3dWmSr*KXAWj$Dkf$eMrAk#=l8{d z-3PwnGd|!gUg3G3;6d)N-WJH z%*$*{&lF6^Sd7dt49c$y0=swomw)jd|KRUD%VXTn9o)!OT+BI~%5fad0qn_6Y|SRD z%W5po5-iAE%*-@Q%6N><2n@-e^8>F>e9h;4#M`{ai#)}{+{3M0$K_nWnViJY9Kycr z#`bK%hOEWPEW@JA$L!3&luX3fjKZ)C#&7ciyZ3y_r@YUbyv%bv&I8=ZO^Y|479&I&BaLd?x9Ov_}9&lrrzQ2aGF@cPU*e8I=O!|S}n(>%hx+{X1> z!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ49DR7J}0pIz*l_62fW2AJkJw6 z$X(pbHC)PhoX!ax$wBPRE^NzYtj`*($WkoKJj}{;OwI(1$w&;%Ap9~ruzSmY_=I

$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!k9>CJ=uw^*@SgjjpbQ_1(}PPnTAOj zkI@-{A^CGg;Pr{G`J9hS&!9O zfhAdpxtWD&nT+ungAo~uzorFVpZSI__?UNiotJo;N4S^UxSlJxkh3_MV>p!k*qt5N zl8soKRalnAn4dYAk*S!NaTt~17@Xgy26i9#iqH6fw|Ir;d4dPIi<`NIOF56zIe{ZN zh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1FiJ=*UU#0|hZ}|_O@GfugH=f~9?&EfD;7Tsy zY);`=4r71zU`MuMW7c6+mSb@iU`}RYY9?V^Mq_w};E&0H*GK-xzxj}V@+vRzBoA>n zw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*1fFG8n&2 z2<+bTC7<#>Z}KwF@i-4~CpU35mvAnpaXd$GAbYVh+psC?u{tZTBnvS&voI}_F+O83 zB17@l_`vHk-|z(=^A4}`5>N98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGY2y= z6%#WKqcR+W^ZU5K?gL-(86WT#ukbui@E~__GuLn_=W#kGa3lw@H@mPco3TD?up&#b zF!L}g(=j;{FeW20G=uQV*ud^B|KStfL)KztmSIumV|Hd>N+x1#MqyY6|Q{LxIUgkL- z=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5XADMUDE=A|czxy@zTjit z;dNf(X&&KTZsU5c;6l#gWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhGTGkA0F6! z;441k1K#2lp63Z3N4byNxq&OWh_g9`V>yid*@GR~ij7%^RauV3S%5j2iK&@{ zaT$%_8G=8C23{ZeAOGe<{>iJnz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf z%*OOg!Gw&($PB}v{5mACd&htI7w_>8{?4;J#{JyEja&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSUjqZL&wRrde9Sw%&PzPaBizevT+bC; z$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%1049@QZ0=o}<#bm&c; z-+ahFd6gGz4Kl=n;pZJ>3`G~i9jTd=}hq;GaxsJ=ZfHOIXqdA0q*^TYlf(==Vm05;GnUC3- zfhn1Yu^EM78I0e02X^oIl23V`H+h-oc$^2glbg7jOE{O)IG!UokiFQMZP=9cSe+GE zl7*O?S(ui|7@sj1k)imjSK#%TZ}@_bd570|iKlsld%2D4xq=Hhi<3EqL)nkr*?}$D zh_zXTWm$~*nS&XbiisJAQ5lZG`Mqag_kpkYj1PE=S9qQ$c#ylenQOR|^EjOoIFf_d zn_bwJ%~+o`Sdpbzn0c6$>6n}e7?Y70nnC!bM_~7s|L_U#@&a|S1J6bG{pyRsddvjJj=*TCx&U-LO1 z@iwpVB2V!!_i!uMaXA-oCMR(;hp;cZu{~R`A#1TR%djZ(F*`FbB@;0=qcALk@mrU` z?mb`fDev>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hj zG2<{Q!!bC&cM9x2@D-o&0dMgN&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w5 z53@2IlQRKhG7>{G2)}d;?B4PpKH**7;BP#`quj^s+`yGw#Mzv}u^h(!?7@y~#m20| zsw~IiEWn)1#MDf}xQxc|48b2A0>V|kWfLFQs+reRXXV{}GfNd9aWczxn)KIbFe<~3gADIVq?Zsj^I z=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKZBF1JEhGj5*Ya7_T=Sx22ect3{p5t*I z;7)GhYA)eiPUCov;6V0bXSQKe)?;;6U`ZBYZf0RxCS!cYU_^%EuQq|#XTISJKIR=> z=Ov!z5$@$SuICCajc0h2`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{bWF|!jLAq0%^>{JIIw%mfB1xVd4s?4 z43Bajw{rtmauH{93deF7`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&v!!rbbGzz>v@<0B~ zhy0UQd4VT+h`YIkYq^Z`IfD~9ii6pQUD=M!*?=`!iKSVDd6|vrnSu!!i;)?ILHV^| zVE2yy@-N=wAN-wXd5rtHgB!Vui#dl=IgZ0QfIZoXt=WWiS&ijcf(4n2nVE)38IRE! zfg$;`LE!a?ulbyhc$?RFk*9c=d$^VBxSR_(lan}_L)e$y*q$xekhNHuWmuH?n4KAz zl8G3bQ5crN_^p0m_nt5Ll=pd)mwArId4M~)iL1GUb2*LUIf4V(i=EkqO<9lCS%D>4 zh`E`CX_<`i8G{iSiofawUZ44fFZh^uc%7Gcnn$>o+qj-9xRA3rnPWJV{n(uy*piJ{ zn^jnr#h9Ntn31WNm~j}D;TW9X>jrio_=?Z?fVX&s=Xrt$xr>{*hD$k*(>Z}7If%X4 zg>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkS0ec5nF)pYSek@Hd{}QSRe*Zs1BT;%rXg zSPo-<_FzZ0Vq?}}RhDCM7GO?hVrnK~Tt;JfhTxCdf!9a=$G`cIfAT6X@FWj$H@9#t zmvKI4a3V)>F#E78+p#$tuqG?9G>b4VvoSqWFd<_xGQ%(^zt#%u-tk}l#e4jNzw<1Q zaX)u(BUf=T=Wr^=aX1ICCp)n#;g3up|pHH?uG;lQBMHFd{?o zSM|W_GvDw9AM*~c^Ab<<2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu z4x=(0gY$c}!0rQI@fjcR7O(I;Pw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6 zE7LJK6EG$tF*JklOVz;cE&t&Y-sKJc#xp$1eca9sT**b8%_$tqVeHQy?8sJZ%sQ;f zaxBgQ%*jkl%_NM=XbjH~{81(F`pEzIHy`p(UgZUz#63kALuYp5-y_=MHY z63*o`j^_vtWG{AR8#ZM;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4elH)`ec&rT z;{)E}6`tn_9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`IwofV#$+UhW)OZU z7udb!KYYTwyusgihDW)N+qr=&xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>- z;TeKI$_8E^`5*u0L;lIDyugz@#NFJ&wOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)Y* zOu>YV#mEf9p!`}UuzSaU`4{i;5B|=xJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z z!Gg@i%uK_ijK}DVz>xe|I`I0$*L==Lyv=L8$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K z$Xcw-GAzn`%+3r<$wZ9JC=APB{8lQkd(W4A%KN;@%RI;9JiwjY#MNBFxtzxF9KnI? z#m;QQrmV;6tiX~i#N5onv`ohMjKPQu#a|@@ug`qL7ktb+yv|EJ%_H2)ZCuY4T*z6R z%rP9we(cT;Y{^Ef%_=O*V$9DR%*a$s%s7n7a174xB?7w-e8p#cz+1e+^E|72lk9K_!2!nSP2`mDimlln_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC`|UyBBI z@AxnO;ywPs-+7kDxSunoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9 zn^~Ba$rzt87?Gj)t5D$enQ!=lk9mjJd5NcagnPM->$!ppIg67yhC|tp-PwUH*@(4S zg=JZc`I&2#Di&uD_CwP#%xS4CXl=C>96F8EC*qdG0 zmd#k7HCU0QSeSX3mFbwA2^f=+7@9%&r9fc!mjCbx@A3wJ;~5_1K5pj*uH+)l<`jUGAedK@qn-BRXukr#<@(_1(3)gZP z=W_-pauf%%54*A*o3jCHvJy+P2=g)<(=!DVG8Q8<41@A(zQFDs|K(r2$3OTx&+-`e za|bta6&G_3r*a&Ja{zm?6I-(h>#`clvjht=7c(;rlQJHoGXg{MXWqc;6JPT=AMrM? z@gh(0F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYjFQ!0tU? z@+t50CNJ|GkMjU`auZi`3FmSe$8!V+vKKqE4V$tatFr=2vJi7K3)3$G8BL1 z4!l0|4PWpv@9;V=@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yX zD#I~2zvl|TOD z;w-?N%*518!nlma@C?BpIRdYb{EvV0A^+r6Uf@X{;%;u?S}x;!&fr9j;$Ze+SGHqw zHegLwVrdp(US?x@reH$GVq}J4P=3uG*uCSw{EPSa2Y=^T9^-!Q;6|?EV$R`Ij^l6+ zU{7{pYc^qBR%3aVU_s_$W~O0M#$$9wU`YPV7I=N)Yd+^A-sUx4IiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWRW*kOkI0onU%z@npzTz`J z;4NO^d7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMNawcF*Mq+3N;g?K- z-CO>{C%nrW{EcULl>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duW zA^0O>;PsLJ@ozrlpS;QoJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD- zOvqS_%rFefuNeZncl?)s@gD!+?>x(6+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w z$Xv|KG)&5PjLrxQ$)D*1uTOl<=X}K5yvB<>#lzggtz5_DT)>%}#L*nWzU;>KY{7=C z#mX$hqRhwa%)pdP#Mq3&unfj;=>og=e95Q0&zro=b3D!i+{sN`%_W@6X&lcH9LQem z%rA0$;QXE@u=~JQe8va7#Vb6|6FkUW+{`sx z%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?k~*+^%YXQUcX@-q@eGf0 zAGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAULf20b$KJq{Q&4>Jx zS9yUad5F8Yg=@Kt^ErbPIf{eXhh5o@&Dnr8S&5}tgn5~b>6wBF8HqIe$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`Iwy1zw-|hA;S-cX*wbc$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ? zmc^K#Ihc{Dn3!=GmEjni-;)M*ANY#T_<*-~h39#K2f2%zxrR$QkJCAUBRPn@*@bP{ zjP+TA6(yTF&T-W8H8Vw1a@!v51;TZZ}2ys;Zg46c5dKGF5+xX;aCo1 zfA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQ#DUjG{>Q)hkbm+jFYqJ}aW}VcEthdV zXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2D8D8O?B4NT{>6LzgTM1Ek8wYD za3fc7G3Rh9$8k6ZuqQjQHJh+5tFb&wupo0WGt)3B<1soTFeHB_47@(^HJ|elZ}S>2 z@)Qqq54Un1mvaGUauP>#2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rOzaoec*1t0Scuk#X5^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN z9E02eCK1uq~UhK5MWdOR+HXFe}qB zITJ7@BQZ3C@Jrml?k)e}6W-+w{>C#r%6;6<4P41ZoXsg5%VF%#9_+|gY|J{W%5p5u z0?f%wOwA;W%V-SG5d0A*@cPLA_%|Q&PhRB(p5!6!<`%ByGS24=PUI*KW*>HCJ2qzn z)?_7?W)bFPHl}9^CS)u|W*7$L*VuvGJO0bRc#nVZcb?@j?&l6}+#84rDKOW*atTJyvH0mSiF3W)`MpGR9{NMr0`diV=8y<{Q4?W8UF)UgBvU z;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb2oVN`}=aDI;-*nQwDKH~%4 z;uW6f2_EDwZsr;;)${hGr0ci5A$s zTDkIhl#6nS^l}jo}%B zKcWU+ANe2u=0pC;tGvLIJjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08o zjK#RVtjKGlm89DI!#MgYzN4(8zyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y z%rY#>e9X=aOvyxy%_t1ZVEh&-uzSy!e9HU0$;&*)<2=Bf+{D#f!nvHr@f^W{?8VM( z!=|jq>a4($EX3T*!n91r_>94b48>m&1Fz3~!xwzaJG{(miY&##%)_iq$K*`Fn2f~G48kwr1G~5UhfjEyH~1UR@F@3j zJ2!A87jZVHa4d(hKYOqvTd^_guqw;3I14Z*Gch%jFfOApJVWqDxWMZp|Ks0$$Uk|N z7kH9~xSLzJmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwZRJcJKHv z|KdIV!QXk7$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?MB3 z1YV!`n$P)&w|R{hd5VX*hg-Rh%ejCvIf^8JUWS8HZ6Bj=}joWMKD!ulS4)c#Btfo+o&aySSNaxRmoaof9~cgV>v0*p|&$ zpEX#KrC6AGn3d_6oCz3{kru8jczxu5{F@K?C$I7XPx26Va|_pU8Rv5b zCvp@Avk$wn9hN%d-RvG8Z#54U;k+qcZ|S@@LS%>l0t|IUn&hukj*J z@i6yrE7x&37jPygaWsdpFT1flTd*N(u`qgOR^AiGYiu)8RIhsBQg|!{kr)7 z*Jr-r3qIx@UgssA<`M4YHm>IiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWRW*kOk zI0onUpMl*6zTz`J;4NO^d7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMN zawcF*Mq+3N;g=tQ-CO>{C%nrW{EcULl>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR z1(=hWn3_o#m(duWA^78a;PsLJ@ozrlpS;QoJjp}c%`IHZWt`6$oXAle%s%YOc5KcD ztjS6&%_7XpY)sD-OvqS_%rFefuipZ@cl?)s@gD!+?>x(6+|M1{$W>g-Ih@LI9L@pk z$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ$)8^XuTOl<=X}K5yvB<>#lzggtz5_DT)>%} z#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;Ujn=Le95Q0&zro=b3D!i+{sN` z%_W@6X&lcH9LQem%rA0$;Qan6u=~JQe8va7 z#Vb6|6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?@-eV` z%YXQUcX@-q@eGf0AGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAUL ze|!kMKJq{Q&4>JxS9yUad5F8Yg=@Kt^ErbPIf{eXhh5o@&Dnr8S&5}tgn5~b>6wBF z8HqIe$sc?IFpk&nnT!^-PoQj*pRhY znPpg%`IwyOM99oUkMSesQ?mc^K#Ihc{Dn3!=GmEjni-(LrIANY#T_<*-~<$oN{Qy3No006*R zwOq@#ZQHhO+qP}nwr$(Ct*usDZQp+{_kKLXquj^s+`yGw#Mzv}u^h(!?7@y~#m20| zsw~IiEWn)1#MDf}xQxaK49Ot;{vojY%r|_>d%VsIJjp}c%`IHZWt`6$oXAle%s%YO zc5KcDtjS6&%_7XpY)sD-OvqS_%&-j3pYH>&ul&H5e8k(l!m~Wa{oKKgT*bwl!>Js{ z;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0ov49Xwx0=qAK%V)gL8@$LA0;-}&F`!0T^* z;%h$PU0&mPp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T)?h`JVqxZCR;FWeCSXiPVi*SF zzpnzjzxbXn_>i}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{6wBF8H`Qv$D_l0lyjQ4qi7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj z4OxqoS%yWKkJ*`lDVd0|8HM2(g1?>xUf=kUulSgEc$MdPoCmm*o4A@wIG58no+CJr zz1W#;*p&5HofTM;g_xUJn3l;HpE39cL-RNO^E9yglkfPP4|tQ8c$!DJm)p3WE4Yxe zIGJNOl>OM99oUkMSesQ?mc^K#Ihc{Dn3!=GmErk2|9cX6{moB&%_qFeYdp^rJjh+# z%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA>bWF|!jLAq0!(jaPabWis-}40@@)j@i z43Bajw{rtmauH{93deF7`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&vBQPX`@cW~{?la%; zDev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8F*3t4IDbA2 zyuR`SU-A)e^9s-M8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c;3o;ioGYyk69-}iN zLoq0SJP7Q*@GYP5K5y_MPw_DKa4XkwITvsyCvh}~urIr@JzKCLYq2uRuqg8}J2NmP z6EQZUFdReh*Zsij8$a?DAM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL36m0!y+G zb2AImG8yAD2LE7a{>Fdq1$KY(9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;r zvkJ?y81pj+GcpwuGY+FNJb&kZcLT4#`H8Rjgm-z3=Xrt$xr>{*hD$k*(>Z}7If%X4 zg>Bi4^;v@zS&D_3hgq49$(evL8Hr&SjQ`#V?Ed0=zTiXN;$@!UQSRe*Zs1BT;%rXg zSPo-<_FzZ0Vq?}}RhDCM7GO?hVrnK~Tt;IAhGYHCJ2qzn)?_7?W)bFPHl}9^CS)u|W>^O2&s%}lSAO72KH_a&;aMKz ze(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9pbVg(-2IY^Nf!!CrQo9}Lak z_|Nsg?oYnsb3WirUgBvU;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb2o zVN{0a@BHst;Pp2@@im|DF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6 zE7LJK6EG$tF${z8->ZS$UwqFOe8^k8%riX7eca9sT**b8%_$tqVeHQy?8sJZ%sQ;f zaxBgQ%*jkl%_NM=XpF#+48reM0=v(A!>7E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{ z=4`;4ti;kR!o1AJ^i08ojK#?*4}8f-yv-{-%VXTn9o)!OT+BI~%5fad z0qn_6Y|SRD%W5po5-iAE%*-@Q%6N>^Y|479&I&BaLd?x9Ov_}9&lvoJq4^vCxe(a>$#;Ct2fWEk zJk2BA%WYiG6LJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`IwofV#$+UhVKDxC zF0lKH@A-lcd5f2MhDW)N+qr=&xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>- z5g3v|`2B2P_nB|_l=pa@7kH9~xSLzJmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$} zDVUJ47@1)ioIlS5USIivFZqbKd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_ z1(}PPnTAOjkI@;Cp%|1uP6u{h_?FLjpEr1sr+AoqxRvX;oC`RUlQ^0~*q7bdo-Npr zwOE;DSd{sgof(*ti5Qzv7>*(M>r~+NjUV}nk9mhzd5*_S&!9OfhAdpxtWD&nT+ungMTnIf8#$V1G_)@j?ejkH+hMtd4zkpjqACB3ptCE zIfg^okKNgUE!l{*S%qa;jQN>^8JUWS8HZ6Bp172lk9K_!2!nSP2`mDimll1fFF$8}d4!pkcBVX|`@9-+m@i-4~CpU35mvAnpaXd$GAbYVh+psC?u{tZTBnvS& zvoI}_F+OAP4~FJ%{O3?$_b1=+IUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4 zuq=x)KXWi6Q!z2)Fe=0Icm8)U@cNsd_?l06m)CfnCwP#%xS4CXl=C>96F8EC*qdG0 zmd#k7HCU0QSeSX3mFbwA2^f=+7>2?4?}5PXFTUpsKIAQ4<{2L4K5pj*uH+)l<`jL)KztmSIumV|Hd>N+x1#MqxOH;IBP_*EfFT zD?a8OUgbF+=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5XAJ(q(EN@6 z><;YyTOD z;w-?N%*518!nlma2n@*}{JtZw`^-0d%6q)d3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd z2CT_SEX^X!%WO=~6imoijLfhM&Y#-@udn>Tmwd$Ayu!0Q#{JyEja&TPY`tjFrCz>+M)+|0tXOvd<(!9N(9zww_ff!&{c$LD;&o4mx+ zJi@))#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-JEjKio5&)@mq=D_Q3e&TCB z;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMNawcF*Mq(HS4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(du3 zAsK|#|LHT2SVE2V@`Hc5@gBN*T>!e9b4k%WFK(6FkUW+{`sx z%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@48vgjcXeR*7vJ**AMzG2^9+x2 zAGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8Y3_ygYf&R!0t2O@G0-{ zIxp}f4{l;7v6(92suksv^^8j~p6IXKy=W-gya|8#n7dx{Jo3b9OvjR)95OXsN z(=r+3GY0=)X#U23mIZcy@*SV^0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW= zvKaF-2QxAi6EhB@GCY6he@g?ezxj!;`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{ zjP+TA6(yTF&T+r7>xfe3GDvjd%oa9-r{AR;Zg46c5dKGF5+xX;aCo1 zfA(NUwqj$}VO5r6aTZ`sW@2h4VO&OI1cqb~eqS8eedZfJ>V|kWfLFQs+reRXXV{}GjC(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3 z=kNS)Uf}gNKk+r6@Gh_MJWuc-cX2b2eCK1uq~UhK5MWdOR+HXFe}qB zITJ7@BQXqv@!z?D-Cumq7ktQDyv#E^%6;6<4P41ZoXsg5%VF%#9_+|gY|J{W%5p5u z0?f%wOwA;W%V>)${hG8)NJ1wyL zi|_e@4|$81d4@;1kK4I{E4hfXIfY|6jQ!bz9odSFS%+0wj>TDkIhl#6nS^l}jS(1< zLHK=YVE37C_>}i}ofmkLhq#+txR%Q}pEEd-qd1s-*p=4h`E`CX_<`i8H0Z?G=Jki69c(miY&##%)_iq$K*`Fn2f|Q490)Q2X=q)Jzwx4Z}BqE@F@3j zJ2!A87jZVHa4d(hKYOqvTd^_guqw;3I14Z*Gch%jFfOAp0z)zgzmE&-KJyKq@*c1A z0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~1rstBBQq?6^XJ&W>nlI- zB_HuNukb97aX)u(BUf=T=Wr^=aX1ICCp)nS6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXxGXqmH5o0q7 z!!ZPZjSjrN@graHG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3up|pHH?uG; zlQBMH@DGOOZ~SLeVD~5A@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDK zF+X!KBU3Rk<1i}2^LPF?GVuDFpZJv0*p|&$ zpEX#KrC6AGn3d_6oCz3{kr;--`0t3o?k~RQ3qIs6UgjAdEZsA%k<9yEG zM2_NM_F-4HV{63*o`j^_vtWG{AR8#ZMxoti!4-$Kou& zoXo`3Ov1Q~#t00_ApAZcu=~t6e9C*g&I>%rL)^_RT+3yg&l#M^Q5?)Z?8 zN-WJH%*$*{&lF6^Sd7fD49=hZ1Fx_Az?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^H z)@;JMtj6*z!Gg@i%uK_ijK}DV$WRQ*AN>NmFMP{qyw4lF$WuJbJ>1H5T+RiY$w?f| zA?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=ACC{M9$``o@oZ#mBtEt31c!JiwjY#MNBF zxtzxF9KnI?#m;QQrmV;6tiX~i#N5onv`ohMjKMz`n!oX%K7rkze8=Z}z?;0p(>%hx z+{X1>!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ4A0;BU+=){Z+_xyKH*(n z<9VLoLGI#auHjP7<8)5oNDg9ec41pKV|~_OMV4Y==3!Q*V{#^7Oh#fD2IIfI0=vKX zo-g>2w|JRnc$E9Nog284i#VH8IF`fMpFP--t=O1#Se4~ioCTPZnV6bM7?;r)fgu@$ z-+KmjpZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf(rCEe|nT_e0f(aRm zkr|f3`Ljph^_3s^l8<a}_>r&pn0I)U=Xjh4xRaZ>noBsB(>R_ZIFP;AnQhpV z^;n%1SdxX9n^~Ba$rzt8_yp!k z*qt5Nl8soKRalnAn4dYAk*S!NaTt~1`8)sX5_tX1PkhZMyvu7m&l5bzUEItyT*`Tz z&IugJLF~;gY|Cb>&l;@AQY_3o%*u33&IF9fNDRYZ{I_#p_ZQ#u1t0PjFY^qKav!&I z16OhpXLAb2av1xw2RpJA8?z3pvK))E0CO@EQ!@$UG8!W=B!lpKr@-zr-|#8#@j5T? zBoA>nw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*#`clvjht=7c(;rlQJHoGa^GVD1USa z?7r|VpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i^D#R!FeMW)Hlr{c zL-1Go!0Q`7@)aNR4zKbYkMjU`auZi`3FmSe$8!V+vKKqE4V$tatFr=2vJi7K3)3N98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~r zGY2y=6%#WKqcS{y=YMSjufO?;ula;`d5!0Jf(N;ao4JNdIgishfg?GHz1f9r*^KpB zgB4kdg_(z0nU2YsfH4_~VHk}6wh8S1;(NZ}L*C+Lp5amM<92S~N-pATPT^P%V}JHw zN48>P)?rnaV{sN>PG(|iCShDgV+4j|5PokR*nQ?3KIJ`L=LMeRA@1fDuH`b$=L}Bd zC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{EJkKn2ItRKf!9}l;7dN@ZC>G79^-!Q;6|?E zV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$W~O0M#$$9wWGDvZkCuVm7rx~)-scTo^T6&; zzTru|8|CB1^F_^DryZF*y@3 zCL=KngYn;{f!$wx&lh~iTfEFOJj#9C&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&H~KI zOiaxrjLT?@z>o~W?@a=`&wRtDyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY z(k#Nf%*OOg!Gw&($PCNi{Mk70`pOS{$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv| zCalY9EYA`w$Xv|KG)&5PjLwJ*#i0DrD6sp&w|vI?yuph+#lzggtz5_DT)>%}#L*nW zzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&a16m;4Fj)l{K!{)%safwb3D!i+{sN`%_W@6 zX&lcH9LQem%r2h{GI>R54`^7C%)zr-sLr( z=LsIr zZeaJBZ}^n=c%2t`l83mPTez0XIG-~(k)t@6eb|-l*qjYmla*MSMVOb_n4T$^kg*t< zVHuo1>jYk3`GGI_h_`u#XL*eKxq}qIe6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhYnPpg% z`IwyH_*Wdia*L=deyvFl9!Gqkz&0NE!oX6>$ zz>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z?h80Fbu|js|R*}@jYMgA#d?A&+sVsaXU9~ zB^Plvr*JHXu|IpTBU`aC>#!=zu{aAbCo?fMlQ1r$F#^}1ipYk5B^8!!u z5O;G6*K!%>a|S1J6bG{pyRsddvjJ#2>Y@d+p`55vKA||42v=!voixzG7)1l3d1o3 ze^m~=zVRbp@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@m zWAG1#=5PF`QegKd-|;yg@Fp+uG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQ zFe6hjG2<{Q!}E9kS26JVo1gfaPk5Ktc%CPCkh{2Fed6<>yn4Ae1laUyP!T4{5!0s=;=Lh~wR%JOBX94D9CZ=W*#$_}{U`Phx_ws?=XTIT6-s5#%;7K0hZf@aPF5`U8;6#q% zVD@2GwqtWPU`+#84rDKOW*atTJyvH0mSiF3W)`MpGR9{N{=v}vjsKJm?Ed6C zKIa48RVtjL1+7${)o7yDxmpXS~lFyvS2L%st%7bzIH`oXJTX%^~c| zZfwsMY{*)y%rY#>e9X=aOvyxy%_t1V5d2j%@cPD&e8tDS!>c^U<2=Bf+{D#f!nvHr z@f^W{?8VM(!=|jq>a4($EX3T*!n91r_>93n7@EKFpCWu-MIYd+y!UgLS5 z;6d)zx!n^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m z@fe*E8Hz#qBY$A`g>U(c_j!XCd5VX*hg-Rh%ejCvIf2zw!lM-}sTQ_?UNimFIYz2e^})xSC5im(w_&BRG(~*qLqEl=WDh z6o+qj-9xRA3rnPWJV{n(uy z*piJ{n^jnr#h9Ntn31WNm~j}D;rToN%M*D0%};#IC%nsRJkJw6$X(pbHC)PhoX!ax z$wBPRE^NzYtj`*($WkoKJj}{;OwI(1$w&;tVEi|CVD}f_^93LB7BBM*k8&Tka|2g$ z5odD>$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!i}FeHQUd#=FlGvDwj@9{b>@FWj$ zH@9#tmvKI4a3V)>F#E78+p#$tuqG?9G>b4VvoSqWFd<_xGQ%=Bf94FlzVZWK@)2+I z3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcb8yF(`lJ2<*P_ zEuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N(u`qgOR^AiGYiu)8RIhs z|6pkT#(%N}c7O66pYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rC zG8Gdu4x=(Wf9HQ$1FygNiLd#DcX^HHd4dPIi<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc> ziiMenS(%Q>nSe1FiD4Lw|7Hp7{^EPS;6vWxWuDnqWDtJO9N2y48$RVdUgrg# zRF30t4q#7qVrw>GT~=dxmS92VVrHgcQpRI+Mr0@k<&TVk-50*)Gv4P7UgRkr<{ob4 zIxgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbIreq?!|tczxqXzT#uv;Z>gF zaUS4KZsKY#;apDRc#hye_F`wYVN=#)byi?W7GiE@VOl0*e8%7(49(y8Px`>_Prl=G zKHyDW;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REFp8{4ZVL z^*2B9HJ|VXr@Y7Oyugz@#NFJ&wOq#eoWY44#lh^uu58EVY`~hV#L_In zyv)Y*Ou>YV#mEfH;QX07@cPORe91?=%_}_1W8BXj+{jg2%sHIOaU9M8?8#1S%_gkN zYAnwZEXZ8U%rs2Oc#O`748@@Qkt(qJ!nb_J`@F%6JjKJ@!>wG$yid*@GR~ij7%^RauV3S%5j2iK&@{aT$#f7?MHwJ!xR~ znQ!=%_jsKbc#?;>n_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC~6 zKa&JrU-^MA`G~i9g=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbsma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$ zC0U5MnT2VYjPV(Re=szE<39-lyFdAk&-s8id5NcagnPM->$!ppIg67yhC|tp-PwUH z*@(4Sg=JZc`I&T@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4b6? zhURblCstthC*ScoAMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-Q zF)`yXD#P=4{ueXw`kSBlnooF_*La>Mc#ylenQOR|^EjOoIFf_dn_bwJ%~+o`Sdpbz zn0c6$>6n}e7?Y70hQau6jKJ6ns9n1Hbvg<%*Z*@}%>hgDgQ#aVzknTctboQW8ZF&L4d_$zAQ^_g$@l=pa@7kH9~xSLzJ zmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}shE@r8HZ6Bj=}joN?`YaFZqbKd4*?r zjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnU*P-nDH5tkro+qj-9xRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WO zjDIpNqcZ|S@@Is=>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w5 z53@2IQ!)t?FgBwwEQ9e|_`vQxU+^Js@iNcwDEDzYH*h5vaW^|@%AMrM?@GOsUKX-5=S8*}ta4N@f zI0vvNJFzvJur8~yJWH@3b1^g1G6fSeK4UTxLo*1!gbD24@)_^*1~2jy4|5NqgOR^AiGYkLYKm3coGZrH=41@A(sKD+WpYs84 z@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCGBuO&PsU|*Mqo((3>kQR z;%h$PU0&mPp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T)?h`JVqxZCR;FW0CSd}`W)y~H zFn$XW*uCcqKIAQ4<{2L4K5pj*uH+)l<`j zL)KztmSIumV|HfXzxgFaUS4KZsKY#;apDRc#hye z_F`wYVN=#)byi?W7GiE@;eY&xfAM$5Vq}J4P=5V&{QtXme9i~F$xA%VBizevT+bC; z$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$ka^6KN*+N8G#}B^Jn1oiLd#DcX^HHd4dPI zi<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc>iiMenS(%P0nS==#n^72+!T9Y*VE3Lc_>i}F znP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{<8H&HY2VS4~ zhEI8q*Li^_d5F8Yg=@Kt^ErbPIf{eXhh5o@&Dnr8S&5}tgn5~b>6wa2nUHZ9mEjni z-@gTRANZ1wc$-&vmdCiCJGhanxR`S|mE$;^1K5+D*qTjPm(^IFC0LNTn3-vrf{7WQ zF&T-W8H8WH26k`xjQ4qi7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj4OxqoS%yWKkJ*`l z|MGAC!QU8-;TeKIz64$$`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mech zS%|rrh5zv%{>9%Ji;)?ILHYG_VE2yC`G7ZhiKlsld%2D4xq=Hhi<3EqL)nkr*?}$D zh_zXTWm$~*nS&Xbn#uSl<1#uUFeHC|3cNn?HJ|Vpi?aZ8G85Aoec*Dev(*FYqJ}aW}Vc zEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!yzMG7h6M9E0=w`@rr4U-A)e^9s-M z8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c;3o;ioGc8jvG2=5PBQZ3C@XNcv?k%73 zK5y_MPw_DKa4XkwITvsyCvh}~urIr@JzKCLYq2uRuqg8}J2UWK{>?x58>2BiL-5Dj z!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*mdDKmNnN_&Z}U zGQ%(^zrG3V-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hl z8UJKlMrQcE*C)Q_6W--Dp63Z3HC zJ2qzn)?_7?W)bFPHl}APCS^j#VN`}=aDIOg*nQwjKH_a&;aMKze(vB#uHs_O;Z%;} za1LNkc4BKbVO>^Zd6r;7=3-{1WeO%{e8yxXhGr0cc^=rk+#84rDKOW*atTJyvH0mSiF3W)}X(fA|-FXDmi$7zX9nr-9u&KIa48 zoM07E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ z^i0L1OvpHl%5V(M?+*jJ4}8f-yv-{-%VXTn9o)!OT+BI~%5fad0qn_6Y|SRD%W5po z5-iAE%*?b*!NiQun2f~G48kuD0=u_-#{0a%i#)}{+{3M0$K_nWnViJY9Kycr#`bK% zhOEWPEW@JA$L!3&fB856;BSn^@C?Bp_XDqwe8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{ z?8VM(!=|jq>a4($EX3T*!vFXW|KjhA#mEf9p!|9-uzSbne88K$#M3;&z1+t2T)~B$ z#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI&1C$OaT%Qv7?MBl240`|nooF_*La>Mc#yle znQOR|^EjOoIFf_dn_bwJ%~+o`Sdpbzn0c6$>6ns9n1Hbvg<%*Z*@}%>hgDgQ#aVzknTctboQW8ZF&L4d`0IAy^_g$@ zl=pa@7kH9~xSLzJmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}shE@r8HZ6Bj=}l; zR$%vmFZqbKd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnU*P-nDH5t zkro+qj-9xRA3rnPWJV{n(uy*piJ{ zn^jnr#h9Ntn31WOjDIpNqcZ|S^5?a{>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p7 z3)`|8>$3(cvJ?w553@2IQ!)t?FgBwwEQ9ge)xhpOU+^Js@iNcwDEDzYH*h5vaW^|@%AMrM?@GOsU zKX-5=S8*}ta4N@fI0vvNJFzvJur8~yJWH@3b1^g1G6fSeK4UTxLo*1!Tng;o@)_^* z1~2jy4|5NqgOR^AiGYkLYKm3coGZrH= z41@CPg~09|pYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCGBuO& zPsU|*Mqo((JRf*{;%h$PU0&mPp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T)?h`JVqxZC zR;FW0CSd}`W)y~HFn&81*uCcqKIAQ4<{2L4K5pj*uH+)l<`jL)KztmSIumV|HfXzxgFaUS4K zZsKY#;apDRc#hye_F`wYVN=#)byi?W7GiE@;eY&xfAM$5Vq}J4P<}lb*uCR(KHyDW z;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqW-|WCxQxyS49TA-0bWF)4Ou*QT!mtd+ zZ^r|>_k6*Jyv55r!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%)~TI&P0sI z7>vkJ{BaG_d=?mwd$Ayu!0Q#{JyEja{* zhD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49DVc-`7@JWTmcjV#Kw$TtFZhtRc$sH- zl>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn1;!ji18SM5gCfV_6J^{`G!w< zkJovDCwYjwxrJ-FjPp5z6FG{5*@s=(j?LMCHCc(JS%i6+jp><+Ntuvw7?t4|oZt5a zb|3hXk9eC`c$UYwpF6mbtGJkRIF;i#oCDaCo!FX9SeMmUo+Vh2xtN)0nSzNKpD`JU zp&5i<_6Bxu`Hc5@gBN*ma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5M znT7xHAO6MP8H$!ppIg67yhC|tp-PwUH*@(4S zg=JZc`I&fL-E&+!0R*L@G0-{Ixp}f4{T@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pd@IU^;zxX?2F*3t2 zD8FtA?B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QGa3J6 zTt;UEhUCx9f!8O#<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l` zI;Lb2CSYtvVOR#^w@rcFd%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6 zaTZ`sW?~v9XClU93`S%q{@NILedZfJ>V|kWfLFQs+rez8yW_-qEB!*@Xepw&bz2!6B=M7%uDIVq?Zsj^I=K{{; zB#!0~_GLG=XA3rDEmme37G*wWX9oVuzxfA$V>E_m2>w_Xczxt6KIR=>IiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@Kt672lk9K_!2!nSP2`mDimllluW_|jLj$v%V7Mr zIe8&5{!HYb_!`#EIT*u{Hz?q!H(Hz3Q?8f$N!G^5G z$}Gd8%*X7^z<>ES|KM+o#_$ZmAIk%;k9@_)yu+(J$KyP}o!rFLT*A4W#_=4%f$YW3 zY{RCk$Lg%Wk}SmB%)96F8EC*qdG0md#k7HCU0QSeSX3mFbw0Ntl4K8HHgPjNg_7cJKLu4|$81d4@;1 zkK4I{E4hfXIfY|6jQ!bz9odSFS%+0wj>TDkIhl!Rn4F0ik1-gLq4;ZY;Pshr_>}i} zofmkLhq#+txR%Q}pEEd-qd1s-*p=SLE!a~ulSgEc$MdPoCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM;g_xUJ z_#gk_U;Lf17@1)hlwaoucJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ? zmc^K#Ihc{DnT&rjE~7I7L-Oam!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@ z8SAqKE3y;|GY_*e9aAz16EHTTFf4=d+uXqJJzwx4Z}BqE@F@3jJ2!A87jZVHa4d(h zKYOqvTd^_guqw;3I14Z*GcgU5GZEu41|u>Qf6WQJKJyKq@*c1A0#EV~cXJEZavA4y z1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~6_YX{<1i}2F*v`^4(vYgB_HuNukb97aX)u( zBUf=T=Wr^=aX1ICCp)nS z6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXxGXwwS-~5BWF&e`&1b@s7ygu?3 zAM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL36m0!y+Gb2AJ7<3Ie1zcUsiGYo_B z>x{te9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+Gcq-k@lVEO zbVguE{+u3oed23A;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMN zN+w|f#%2_TWiWo57TCS#3qIs6UgjAdVm!uRM26z8se#vLzTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV{mXG}(7Xa?bz$${NlKI47f;6T zyZ3y-hrGqhJj0{h$L-v}m0ZNxoWijj#{TTVj%>xoti!4-$Kou&oXo^DOwL4%#~6&r zQ2aG6@cPU*e9C*g&I>%rL)^_RT+3yg&l#M^Q5?)Z?8N-WJH%*$*{&s0px zgp9+e49DR7J~puXz?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i z%uLG^Ow9O<$w&;%Ap9~WuzSmAyw4lF$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw- zGAzn`%+3t_mw)pQ{>Eqw&k+1EI`I0)SA5JnyvlPt&I8=ZO^ zY|479&I&BaLd?x9{Ez?eFaFM0jLa|$%CDmWyLWuf2fWEkJk2BA%WYiG62w|JRnc$E9N zog284i#VH8IF`fMpFP--t=O1#Se4~ioCTPZnV5#jnTYWigAo~uzlH~1pZSJQd5_n5 zfhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf(rCEe|nT_e0ib(f>fS&!9OfhAdpxtWFk z@gM%h-x-UM8HPdmb#P$!j?ejkH+hMtd4zkpjqACB3ptCEIfg^okKNgUE!l{*S%qa; zjQN>^8JU{N_$T8sIwLS7e+~+~KJhi5@Gh_MJWuc-cX2b2eCK1uq~Uh zK5MWdOR+HXFe}qBC6h1#V>1fFG8n%N4D8nw{R_&aXx2o zB1dsB`>-q9u{j&CCM&Tti!d*#`clvjht=7c(<0Q!p{(GbST3G=uO5P+yRki6upw))GRv?i^D#R!@L>KlmG?F+4-?N8iBfBVX|` z@9-+m@i-4~CpU35mvAnpaXd$GAbYVh+psC?u{tZTBnvS&v+zIu!@u}DV=*$rFetzF z3GCkSIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!^R=WL!pP z1cv0#-htOAzUC9&^L*C+Lp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV{sN> zPG({nCTAkXV+=-QDE{ghczxy@KIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz` zC6;Cp=4CdfXDTLTLdIcKhGTGk?-AI2;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{p zYc^qBR%3aVU_s_$W~OBdCT4ubWF&@W5Ps<%*uCX5-scToOj#7k_6gMrIfW<=3u(-8(+#1K#8%p5_tm z(miY&##%)_iq$COOM1dPon49j5r);X|y z&lh~iTfEFOJj#9C&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaV%OvHGM!H5jS zU!4N4&wRtDyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg#iUHg zIE>1049@Qz1G^7=$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|K zv`oRojL(>i#Lx`FFC7BAw|vI?yuph+#lzggtz5_DT)>%}#L*nWzU;>KY{7=C#mX$h zqRhwa%)o#7H~-*ojK=T`!5{4duaA7i$GpR&TPY` ztjFrCz>+M)+|0uN_z(Z$?~KLB48x%O+Agqr$LD;&o4mx+Ji@))#`Rpmg`CC79K)gP z$L{RFmTbh@tirM^#{A5|j7-gB{F8ARoe>z4KidXgpZJv0*p|&$pEX#KrC6AGn3d_6l1Z3=u^EM78I0fB1a|NFf)9C%mwARqxsThq zfh)O)vpI!hIgI_;gB{t5jai3PS&qe7fH|3oX_%ae7>_X+k)imjb>Q`xZ}^n=c%2t` zl83mPTez0XIG-~(k)t@6eb|-l*qjYmla*MSMVOb_n4YPalnEJ!Q5lZG`Mp(O_kl0@ zh_`u#XL*eKxq}qIe6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`Iwy<_%HwFAN-Bc z7@i^cqebBLk+1lecX*ZOc$^2glbg7jOE{O)IG!UokiFQMZP=9cSe+GEl7*O?S@<9S z;a~inu^5?Q7?fX|2X^oHoDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ogLVcjaZviSeC_@ zpE;P3shNy_GA^St0z>j=v%u>UU-Jp?@*2#!=zu{aAbCo?e(lQR+HF$Na|S1J z6bG{pyRsddvjJ%MA!!bC&HxBGR@FgGdHm~q3k8wYDa3fc7 zG3Rh9$8k6ZuqQjQHJh+5tFb&wupo0WGt)8!6Ei+zG7>{G2){H6?B4Pj@AC#P@)Qqq z54Un1mvaGUauP>#2>Y@d+p`55vKA||42v=!voiz#<=^~+zcCuaGX#G$47@(_6(92s zuksv^^8j~p6IXKy=W-gya|8#n7dx{Jo3b9OvjR)95OXsN|KmUWi@!4#BQp$x@@s>@ z?j4`=0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKaF-2QxA?lkrc+WpqYh zNdBxJczxn)KH*(n<9VLoLGI#auHjP7<8)5oNDg9ec41pKV|~_OMV4Y==3!Q*V@f7r z0>)+(hGj5*s~6b4=Lh~wR%JOBX94D9 zCZ=I>CSp9sU_^%EueyQPXTIT6-s5#%;7K0hZf@aPF5`U8;6#q%VD@2GwqtWPU`cgA95hG9^Ctr^(8<8waXO(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6&m{>iwE&Ik<2pEUxnPkhZMyvu7m z&l5bzUEItyT*`Tz&IugJLF~;gY|Cb>&l;@AQY_3o%*u33$s|m`*o?xk490KO1H1Qp z!H2xX%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s)G)&G!jK>&^$WZ)M zE%5rxH+;%_yv_?e$wS=DEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1BEBFxKdOwUwI%7l!= zs0_#8{9ZM%`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z#mr30 z6im$cjLAq0%^>_zC9r$TXS~lFyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#> ze9X=a{Fi_85B|nz49^h!Q91DX$X9&KJG{zsJkA5$$xU3%C7jD?9M2IP$X@KsHf+jz ztj-E7$wJJ{Ec}oE@Gt((Sd7dt49c&S0=sv7&Ii27OFYdZ+{zx! zn^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ57Vi5Z_U8Hu48gkQ=A zc5nHN_j!XCd5VX*hg-Rh%ejCvIf4h`E`C|M4IG z#orl=kr{?T`L%Rl_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}Xfi2mHwONH_S&aFa zgBh8c$@nMZGCCtLB!89)yguru|8|C zB1^F_^DryZF(s2Q0b?@?!!j7Zl??3O^93LB7BBM*k8&Tka|2g$5odD>$8s3^vj;n} z6&te-tFj!6vjB546Vos`6EPlRFd{?oSBb#uGvDwj@9{b>@FWj$H@9#tmvKI4a3V)> zF#E78+p#$tuqG?9G>b4VvoSqWF)0%=4x=(0gY$dw!0rQI@)2+I3eWNw_j3m~aupYI z4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#5EmJTt<1;2BF*JklOR>Q2EuZl|Z}1{d@i6yr zE7x&37jPygaWsdpFT1flTd*N(u`my(BG4Jpy z&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3up|pHH?#0R{=>icJ7Y02!!Rhn776U$ z@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDKF+X!KBU3XO|72W7X9R}i z&%%M%C%)zr-sLr(=LsIRF30t4q#7qVrw>G zT~=dxmS92VVrHgg3MOWJ#$+UhW)ObKAK1O+Gv4P7UgRkr<{ob4Ixgn|&g3MH<`DK} zH@0UBHe@YUW*HV`K4xbI{>#7l2Y+KUhGz)=$QO8h63*o` zj^_vtWG{AR8#ZMxfzC-C~j*L=deyvFl9 z!Gqkz&0NE!oX6>$z>yrp-t5A*Y{vSm!HO)!!py_0OvjW=!UT-XC=APB{FXbgd(Rhq z$XmS3Gd#+D+|CVL$wi#aDICjT?9U$T$X0C3I;_faEY1SV$xKYc7e91?=%_}_1W8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZEXZ8U%(P6w z#Ej3FjKt6k!Y?@jySIGC`@F%6JjKJ@!>wG$%hx+{X1>!G)Z~$sEI>?8olx zz?N*p+N{E|EXMrI!Hi7JWc-tH8J!Url0UNsUZ41yPk5Ktc%CPCkh{2Fed6<>yn374DfUy~cVHu3yvIKVT`GOC5iyid*@GR~ij7%^RauV3S%5j2iD{Uei5QPD7?Gj)D|6uWnQ!=%_jsKbc#?;> zn_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fWGn3M?_hfx`h!TCK?VE2J9`G~i9 zg=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbswG$ z&l;@6axB3@%**V|z?4kH*o?xk z490KS0=xHo!H2xX%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7t{D);&l)v*gW?@<; zV|>P7M26z8tbx~OzTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV{^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJur90d zU;f2n{DZlfmFbwA2^f=+7@9%&C39f+md|*fH+Ye!c$j;*mFu{i3pkULIGRJ)m)+Q& zE!dE?SefNniiMema`JGqIgxrB2$jpI3j z1KEq6*@jJ7kJVX`Wm%jBnTOe!o++4+u^5?Q7?fW#26pfGoDX=Dmw1{-xR=|wo-4SJ zvpAV!IF$X^ogLVcjaZviSb?Qkgaw$3nVE)38IRE!fg$-bL*Vs^ula;`d5!0Jf(N;a zo4JNdIgishfg?GHz1f9r*^KpBgOym0C0K}gnVlJ!l8G3bQ5crN_$_^4_nt5Kkhgf5 zXLywRxSbogl8ZQ-Q#h8x*q=Svk*(O6by$`EunddxcmBpKOv_}9&lrrzQ2doH@cPU* ze9C*g&I>%rL)^_RT+3yg&l#M^Q5?)Z?8|M)jc@=xYt4rXL3CT1K)WjF@s z_q2iC2fpMZ-sTmacHzGU-2>T@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDg) zi?bl}FdNe|1rstBBQp$x@@uNV?j4`=0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5Y zYqJU~ur!OX0CO=j(=aLHF*+kKB!8w1yguru|8|C63ej!3o$RVGXqmH5o0q7!!j7Zr3mca^93LB7BBM*k8&Tka|2g$5odD> z$8s3^vj;n}6&te-tMVU~VNw3h-)EU^2)mwd$Ayu!0Q z#{JyEja%(SawcF*Mq+3N;g_U=-CI86 zecs?jp5kHd;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrXDJqDe&%E*re+exWi*Co2>wVC zczxt6KIR=>(LeAo3j^R-DV|R97OEzL{R$&E}W)T)(E@oyL zCS^QEX9R}i&qRUOC%)zr-sLr(=LsInw{R_&aXx2oB1dsB`>-q9 zu{j&CCjaB#EXhBak2#o;shF5?7?t4|oZsUIb|3hXk9eC`c$UYwpF6mbtGJkRIF;i# zoCDaCo!FX9SeMoKFaKgO{=wYL%5+T51dPc@49y_?5-+fO%V)gL8@$LxeIJMj9% z*L=deyvFl9!Gqkz&0NE!oX6>$z>yrp-t5A*Y{vSm!AdO05-h~L%+3r<$wZ9JC=APB z{1z*)d(Rhq$XmS3Gd#+D+|CVL$wi#aDICjT?9U$T$X0C3I;_fnScXOUJAY#qre!k5 zXADMUDE^8Wczxy@KIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@X9L#cfBc&z`6u%+ z2QxAi6EhB@G8}{RdyK&D17GqHZ}SSz@)-AX2RCvR7jq7$avX(yTF&T-W8H8V=2X=4yjQ4qi7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj z4OxqoS)Qd>nE9ELnV6bM7?;r)o+0=nTHy7OulSgEc$MdPoCmm*o4A@wIG58no+CJr zz1W#;*p&5HofTP@#aWPfn2qU~f(aRmkr{?T`88@__m0o`fH!%Gr+I{XxsB_&f(to| zlR1V%*^k}Xfi2mHwONG~SeivxfVr5NX_%Dp7@ZLql0TyaUZ41yPk5Ktc%CPCkh{2< zYq*s2IGqzXl7rZrUD%e*Sf4dmiRD;=g_xJwnSm*ph_M-kVHu3yA_sQw`GOC5iyid*@GR~ij7%^RrwFguqc1$Z_L89Ovd<(!H5jSUy%Z@&wRtD zyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?%Gzf3qb2WIpC#My6t7#$i;3V{m?t z7}$N_OFrUlUg23D<9_boMy}#w&f!#!<8TgOPj+H!Hep>>7Nygu?3AM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL36mBFnNk z3o;M0F+Ec-A!9Kz!!Rhnh70W8@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9e ztFQt~vj__?7c(;rlQJHoGXg{MXV}2&6JPTQ@A4YY^8^oa7dLYamvSDba{@)${hGr0c2^rYE^ zN50}?-r-fA<8dC~PHy6AF5z5G<9LqXK=xv1wqaA&V|7+!Sr%tO=3zFbX9^}{EJkJ+ z2Ibe_f!#Yk=L6p4C7$LH?&UVF=L#<5EKcSa4rM=fX9u=qBi3dWR$yrsVFBi1W~O0M z#$$9wU`YN97I=N)Yd+y!UgLS5;6d))(=r+3GX^6v6n_N?ygu^{pYk5B^8!!u5O;G6*K!%>a|S1J6bG{pyRsdd zvjJ=JKmN^<{FC{ZgBh8Mi5Z7c8IHmE{nxSo?>_J)AMrM?@GOsUKX-5=S8*}ta4N@f zI0vvNJFzvJur90dU;f2n{DZlfmFbwA2^f=+7@9%&ma` zJGqIgxrB2$jpI3j1KEq6*@jJ7kJVX`Wm%jBnTOe!o++4+u^5?Q7?fYX2X^oHoDX=D zmw1{-xR=|wo-4SJvpAV!IF$X^ogLVcjaZviSb?Qkgaw$3nVE)38IRE!fg$%rL)^_RT+3yg&l#M^Q5?)Z?8|M)jc@=xYt z4rXL3CT1K)WjF@s_s@ad2fpMZ-sTmaT@G8&oI1g|qH*qzWa4x5DJV$UK zd$BXyuqo@YIxDg)i?bl}FdNe|1rstBBQp$x^6Q7d?j4`=0dMjWPxA=(avRrk1s8G_ zCvyykvLCy%16#5YYqJU~ur!OX0CO=j(=aLHF*+kKB!9jSyguru|8|C63ej!3o$RVGXqmH5o0q7!!j7Zy$kH#^93LB7BBM* zk8&Tka|2g$5odD>$8s3^vj;n}6&te-tMVU~VNw3h-%(SawcF* zMq+3N;g{Ee-CI86ecs?jp5kHd;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrXDJqDe&%E* zre+exWi*Co2>y5#czxt6KIR=>(LeAo3j^R-DV|R97OEzL{ zR$&E}W)T)(E@oyLCS^QEX9R}i&liE$C%)zr-sLr(=LsI!-|#8#@j5T?BoA>nw{R_& zaXx2oB1dsB`>-q9u{j&CCjaB#EXhBak2#o;shF5?7?t4|oZp`Yb|3hXk9eC`c$UYw zpF6mbtGJkRIF;i#oCDaCo!FX9SeMoKFaKgO{=wYL%5+T51dPc@49y_?@+7c(%V)gL z8@$Lxg;F!1`s*L=deyvFl9!Gqkz&0NE!oX6>$z>yrp-t5A*Y{vSm!AdO05-h~L z%+3r<$wZ9JC=APB{PrNQd(Rhq$XmS3Gd#+D+|CVL$wi#aDICjT?9U$T$X0C3I;_fn zScXOUJAY#qre!k5XADMUDE_)1czxy@KIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@ zX9L#cfBc&z`6u%+2QxAi6EhB@G8}{R`@O*K17GqHZ}SSz@)-AX2RCvR7jq7$avX(yTF&T-W8H8W%26k`xjQ4qi7kP?@xrbZ1j?1}# zGdYQ)IfQ-LjqTZj4OxqoS)Qd>nE9ELnV6bM7?;r)o+0?-PT=*CulSgEc$MdPoCmm* zo4A@wIG58no+CJrz1W#;*p&5HofTP@#aWPfn2qU~f(aRmkr{?T`So^S_m0o`fH!%G zr+I{XxsB_&f(to|lR1V%*^k}Xfi2mHwONG~SeivxfVr5NX_%Dp7@ZLql0R<+UZ41y zPk5Ktc%CPCkh{2yid*@GR~ij7%^RrwFguqc1$Z_L89Ovd<( z!H5jSUpE4;&wRtDyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?%Gzf3qb2WIpC# zMy6t7#$i;3V{m@I9@u^0OFrUlUg23D<9_boMy}#w&f!#!<8TgOPj+H!Hep>>)${ zhGr0cIUm@))(=r+3GX^6v6n~uxygu^{pYk5B^8!!u5O;G6*K!%> za|S1J6bG{pyRsddvjJ=JKmN^<{FC{ZgBh8Mi5Z7c8IHmE{bXSGfiL-pw|RwUd5rtH zgB!Vui#dl=IgZ0QfIZoXt=WWiS&jelFBan;%+0J!$K*`Fn2f~G48kub0=u_-#{0a% zi#)}{+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEYDIb%>2yBOiaxrjLT>Y&k+1^Jn;I+ zSA5JnyvlPt&I8=ZO^Y|479&WbF{;w;EK%*OOg!Gw&($PB}v z{CX^~d&lQ|z?;0p(>%hx+{X1>!G)Z~$sEI>?8olxz?N*p+N{C~EX^V;z+BACG)&5P zjLrxQ$)869uTOlH)dg4CS!cYU_^%Eufu`YXTIT6-s5#%;7K0hZf@aPF5`U8;6#q%VD@2GwqtWP zU`_tVzgd!hG9Pm=BU3Rk<1i}2F*v^;3hX}cB_HuNukb97aX)u(BUf=T=Wr^=aX1IC zCp)nS&!9Ok!4w&1(}E0n4T$^kg*tp!k*qt5Nl8soKRak+gS%d|cii}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{|F8^;@^}8mEKJK}jL#U1 z$WZ*XC-C~rH+;%_yv_?e$wS=DEnLfGoX;7Y$Wa{3KJ3bNY|aL($^ZB_OY%?VV-99y zDkf$eMrAk#=l9)#-3PwpBi`l}p5-y_=MHYN98_i`K8a|IW27AJEI zhq52LvjbbQ5o@ywE3h<+umE#0Gt)3B<1soTFeHC&54=9{HJ|VgmI!Hi7B#EiqJ49DR7z9q2x zz?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj2%&7mM)^=4Mu=V{#^7Oh#g8 z2H}^@f!$j^<9*)XMV{he?%`Ih<8m(GOitox4q;z*V|%t>L)KztmS-szW`5>mCZ=W* z#$_~yX9)h-6nK5)D?a8OUgbF+=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lXGNA}aTa7A zW@CD$U_!=XWQJi-e%%<@z2kE};7wlQX&&KTZsU5c;6l#gWRBrb_G5Q;U`sY)ZB}6g zmSzzaU@m568YX2tMrQ=EXv>c8?!JilQBMHFd{?o*Sf&#GvDwj@9{b>@FWj$H@9#tmvKI4 za3V)>F#E78+p#$tuqOZG-z>>LnU6V`k*S!NaTt~17@XhN26i9#l8<&TPY`tjFrC$g(WXg3QBgOwSZd$XJZbFbvAC zs{*@se9i~F$xA%VBizevT+bC;$XT4sF&xT%?9L8s$wsWrDy+cLEW!fJ#mr2@q>RVt zjKGlmxiawj#MgYnyS&EpJi&w9#m!v9rJTp#`dEMc#ylenQOR|^EjOoIFf_dn_bwJ%~+o`Sc&CWf`you*_nYUnTW9&g<%*Z*@}%>hgJCx%djYa=Wooyv`ohMjKPQu z#a{~oug`qLr@Y7Oyugz@#NFJ&wOq#eoWY44#lh^uu58EVY`~iQkAJfy|71SqU`D25 zV#Z-qhGTGkpC8zL;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{pYc^qBR^z|?i^cc{ zb2BT`F*y@3CL=L4gYe6|!0s)d@jh?xB2V!!_i!uMaXA-oCMR(;hp;cZu{~R`A#1TR z%d->>pEw{bmJa3N=LGRJTz z`>{Jauq7L@Hmk4#OS1?IFc&j34U;k+qcZ|S^5^Wp>l0t|3Geb6&+`Niau+vq4VQ8r zr*i^Fau9p73)`|8>$3(cu^daV5c4uSGcY9+F*c(xEQ9getibL)U+^Js@iNcwDEDzY zH*h5vaWn_IY+%Q&AiIFX|`n0?rl?bw_RSd;(pZ1049@Q}0=o}< z$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9{Fi^R82?~yW@S1iX9C7#B!*@X zewiNFz2!6B=M7%uDIVq?Zsj^I=K{{;B#!0~_GLG=XA3rDEmmfEmSSP%XHI5fY9?V^ zMq_w};E!p6*GInMW8UFap5t*I;7)GhYA)eiPUCov;6V0bXSQKe)?;;6WLXwxLFQpL zre_K!WGqHz7zX9nse#=)KIa48$G8BJJ3cNn^4WIHJuk!*=@(_1(3)gZP=W_-p zauf%%54*A*o3jCH@<0B~lKhkTn1dOaiisJAQ5lZG`F&zw_kl0@h_`u#XL*eKxq}qIexo%i=7^Jj}-QOu>YV#mEf9p!_;6 zuzSbne88K$#M3;&z1+t2T)~B$#mOAQq3p-*?7)_6#M-RF3M|bcEWljM%rs2Oc#O^n z49TBk1Fuhf%_qFeYdp^rJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|ti*CG!9vW-?99NF zOvKoX!mtd+Z({as;WmuHI z^EYN;S|($B#$ZH-;;+$x*Jr-rQ{LlsUf@X{;%;u?S}x;!&fr9j;$Ze+SGHqwHegNu z$G=&Ue=;9)Fe6hjG2<{Q!!bC&j|%KQ@FgGdHm~q3k8wYDa3fc7G3Rh9$8k6ZuqQjQ zHJh+5tMOm{#bW$}xtW#en4Ae1laUyjLHK24VE2~Kc%L_Tk*9c=d$^VBxSR_(lan}_ zL)e$y*q$xekhNHuF@A#Y#c$1fSnn$>o z+qj-9xRA3rnPWJV{n(uy*piJ{n^jnWrCEdpn2VX2hDjNZ(HVgu`Eyv{^@*?fgm-z3 z=Xrt$xr>{*hD$k*(>Z}7If%X4g>Bi4^;v_JSdJxFh4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mH)5|i}H8=#w<+BWQ@-kjL1;@ zH6-x*%r|_>d%VsIJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjYiQH%szQ=3@?KWGW_R z97bh02Iu#|f!znb#5ujDIjU zvoal%GXY~V5<@cxzYGfO-trmm^9C>S6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avzn zOR+HXGbb}KHIpzdqcJ=~@W;Tw>my(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB! z>#;g3vMh_UAoDOA(=!DVG8Q8<41@CPfWYn@pYs84@)A$;2={Uu*K-9Iauz3Z42QBG zyR!pZvJq>u3M;TQi?9H5F*DOJDdRCZBQPX?_7A*1@im|DF0b)CPw*gjaWmI&Dd%xI zCvYSOu{XQ0Et|1EYp@c_u>=b-FS9cPQ!)`_GYZ2p7{B!k?B4SQAMzG2^9+x2AGdP@ zS8@?&a|*|D82hsaJF*oUvkt5BAC_TJ{?6Z+g=v|L@fm{=8H&I9240`}hEI8q*Li^_ zd5F8Yg=@Kt^ErbPIf{eXhh5o@&Dnr8`5*sgN&d-v%)yLI#l(!ms0_#8{N5+9`@olc z#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#^3`4@}v59Vf8reks@U`$40Xa?bz z-htg)KI47f;663*o`j^_vtWG{AR8#ZM;$)8DQ1)YYc3?|3Vr^Do1(s$J z7GN%BW*R1CJVs{(hUCv4f!8O#<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGf zR$@7pU?JvZc4lBoCSq(xVOR#^x9)-6d%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(NU zwqj$}VO9RaGAzp9`5Ut^Et4@mV=y8^@mIIN>oec*Dev(*FYqJ}aW}VcEthdVXK*4% zaWMO^E8DR-8?Yw-zx!n^$<2$GD$6xRI;4 zm~%Ll<2alH*pr>unoU@j)%Y*}Vln=~+|0^!OwI(1$w&;%ApFuLuzSmAyw4lF$WuJb zJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-@+`%|%+H+6#MDf}xQxc|48b3r1Fw&K#mBtE zt31c!JiwjY#MNBFxtzxF9KnI?#m;QQrmV;6tjMw~&VtOtY)sD-OvqS_%rFefubl$B zcYMwVyva*E%_H2)ZCuY4T*z6R%rP9we(cT;Y{^Ef%_^+G(k#LP%*D)1!=#MI=#0RS z{Mj+^`o!0K!n?f2^E|72lk9K_!2!nSP2`mDi9EXNWo#JtST3{1&H zjLj$v%V7N0A+UST7ktQDyv#E^%6;6<4P41ZoXsg5%VF%#9_+|gY|J{W%70jfMfp2_ zV-}`mGR9{NMr0`dY9Dxg<{LicJznPpp5!6!<`%ByGS24=PUI*KW*>HCJ2qzn*5rTu znN|K(pS#y^;wS(%Q>nSe1FiJ=*UU)lzCZ~2V(d4m^uiif#}Te*(Qxqve{iK97$ zec6re*@6vOinoBsB z(>R_ZIFP;AnQhpV^;n%1S(e3Fka?Jm>6wBF8H$!ppIg67yhC|tp-PwUH*@(4Sg%wzuMOc8jn3-vql<^py5g3v`TLoU9_?l06m)Cfn zCwP#%xS4CXl=C>96F8EC*qdG0md#k7HCTz|Sb~L^m)V(tDVd0|8HHgPjNe)YcJKLu z4|$81d4@;1kK4I{E4hfXIfY|6jQ!bz9odSFS%+2m56iG9f9G$^!n91r_>94b48>n9 z07E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{=4`;4{EvULB>!YS=3qvqVq(T& zREA@4es3Pwec($z;%#2xSsvql?%+nQ;$qI>RF30t4q#7qVrw>GT~_12{ENl-2Xiwk z(=j;{FeW20G=uO5P+yRki6upw))GRw0R z3o}1+G80oX3F9&v!!rbbG!48y@)aNR4zKbYkMjU`auZi`3FmSe$8!V+vKKqE4V$ta ztFt1@vN#Je53?~nQ!pW8F*3t2D8Dud?B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEqNH zJFq1iu{Nu)0!y<93osWmGYyk69-}h?L-J?i!0QuV^9k?r8qf0t4{{eba}Aer9;b5x zM{*E*vkTj@8SAqKE3q6)un_YyJ2NmP6EQZUFf4=dTcg14Jzwx4Z}BqE@F@3jJ2!A8 z7jZVHa4d(hKYOqvTd^_guqyvy85ZU5{EbIGBCdmF?J^4Oo-^@o$#opUlS`%*a$s%s7n7a174x4FbCle91?= z%_}_1W8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYW$afu^9hgZf0dVCT9Z1WF&@W5Pqp2 z*uCX5-scToIiF61mu<`@oTKXzvawqzsLW))UoX%=At z=3-{1VN%9pbVguE{;U&ted23A;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(l zmSYJPVqRuv2Bu^p#%2_TWiWoL9oW6+3qIs6UgjAdc&8RIhsBQg|!)e5{m^9`T!9;$gmqbs|MD*u;~&h;tW3w`Ou(3o#Lx`FFEs+Yw|vI?yuph+#lzgg ztz5_DT)>%}#L*nWzU;>KY{7=C#mX$tQY_5;%*jkl%_NM=XbjH~{82sd`p8#&%safw zb3D!i+{sN`%_W@6X&lcH9LQem%r<2n@-e zRRgb2e9b4k%WFK(6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48mz=}EWtv|%k0d+luX3f zjKZ)C#&1;uyZ8U&c%A~NFcbiQX4|%H+qT={YH_u=)v|5dwr$(CZR@>ze$M~l3qIs6 zUgjAdP7M26z8I)T?` zzTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F*@6WE(bP1J-60mSr*KXAWj$Dkf$eMrAk# z=l9xy-3PwpBi`l}p5-y_=MHY63*o`j^_vtWH0{1zuAgS`5SAp z5=*lP^D-OLGX)be79%qZgYs*Q!0sKN^8s)25>N98_i`K8a|IW27AJEIhq534V`u)w zKiPeS@2thjEW@JA$L!3&luX3fjKZ)C#&6XEyZ3y-hrGqhJj0{h$L-v}m0ZNx zoWijj#{TTVE^NmZY|MJB&I&BaLd?x9Ov_}9&lrrzQ2bRj@cPU*e9C*g&I>%rL)^_R zT+3yg&l#M^Q5?)Z?8c64!)9#2+N{E|EXMrI!Hi7B#EiqJ49DR7UL~;mz?Xc)+q}ZF zJjVUp!HrzS#hk;b9LM1tz@F^N_H4-}tj`*($WkoKJj}{;OwI(1$w&;%ApBA}uzSmA zyw4lF$WuJbJ>1H5T+RiY$w?f|A?(ZU?8LTg&W5bRsw~IiEWn)1#MDf}xQxc|48b3j z0wOE;D zSd{sgof(*ti5Qzv7?#2Kt$bkjo-g>2w|JRnc$E9Nog284i#VH8IF`fMpFP-x?bw2i zS&!9OfhAdpxtWD&nT+ungAo~uzsdz(pZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~4O z*pY46j15?uRalnAn4dYAk*S!NaTt~17@XhB26i9#l8<=KE!l+iS%Vc>iiMenS(%Q>nSe1FiJ=*UU&;h_Z~2V(d4m^uiif#}Te*(Q zxqve{iK97$ec7Fz*p|)Nkabv<noBsB(>R_ZIFP;g5C3K>Hsx=u$x1BEBFxKdOwSZd$XJZbFbvACr2@Nme9i~F z$xA%VBizevT+bC;$XT4sF&xT%{Ewaa7yo1<)@3!8X9*T$E@oyLCS^QEX9R}i&ys=H zC%)zr-sLr(=LsI1fF zG8n&=2<+bT1t0PjFY^qKav!&I16OhpXLAb2av1xw2fMHxTd*nw{R_&aXx2oB1dsB`>-23vJIQD0c*1g%d!~r zGY2y=6%#WKqcR+W^Lw$t?gL-)5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?E8DXro3K7> zup&#bF!L}g(=j;{FeW20G=uO<(ZKF4pYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yR#G9 zvN;>F4y&>pi?aZ8G80oX3F9&v!!rbb6bZaO@)aNR4zKbYkMjU`auZi`3FmSe$8!V+ zvKRm1-)zOE{EanPiKSVDd6|vrnSu!!i;)?ILHV_CVE2yC`G7ZhiKlsld%2D4xq=Hh zi<3EqL)nl2u`~bTpKQdstj6*z!Gg@i%uK_ijK}DVz>xe|DDe8k*L=deyvFl9!Gqkz z&0NE!oX6>$z>yrp-u#yx*qVRvch+KMmSIumV|Hd>N+x1#MqyY6^L*C+L zp5amM<92S~N-pATPT^P%V}JHw7q(*yHfB9mX9bpIA?9Wlre!k5XADMUDE=xCczxy@ zKIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4J4jVKX*hZB}7f7Gr+qU`D25V#Z-qhGTGk z&mY)*;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{sd$wc~)@Kb?WGNPA9%f}aCT9Z1 zWF&@W5Pr!Q*uCX5-scTomu_i0A zG>b4VvoSqWFd<_xGQ%(^zvc<--tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`|&?^=3o4i zjaZk}Se_+Vkhz$dX_%Dp7@ZLql0S0?UZ41yPk5Ktc%CPCkh{2+M)+|0tXOvd<(!H5jSUpWJ>&wRtDyvOUjz>_@0-Q2>p zT*mpF!HFEj!R*6s?8r83#s;j-DlE%l%+DOm$W%1049@R40=o}<$w$1+D?H0% z+|M1{$W>g-Ih@LI9L@pk$*yeAmTbcMtig&b#lp%}#L*nWzURSzi+{2a>#`clvjht=7c(;r zlQJHoGXg{MXO_V06JPTQ@A4YY^8^oa7dLYamvSDba{@q zIe6n}e7?Y70nnCy_Ltyuo&v>6Vc#)@gn0vUD>$sc? zIFpk&nnT!^-Pwt4*_;hohgDgQ#aVzknTe^HgmD>-;TeKI(g$82`HGKuhgW%y$9aG| zxrwW}gmXEK<2ix@*^B@1Z?GZD#L_Inyv)Y*Ou>YV#mEf9p!}LHuzSbne88K$ z#M3;&z1+t2T)~B$#mOAQq3p;1*qMLvPc~v*R%3aVU_s_$W~O0M#$$9wU`YN<8+d)< zYd+y!UgLS5;6d)a|S1J6bG{pyRjqNuo)Y$Hmk5Ki!ncQ zFe6hjG2<{Q!!bC&rwZ&o@FgGdHm~q3k8wYDa3fc7G3Rh9$8k6ZuqV5+JzKH~>$3(c zvJ?w553@2IlQRKhG7>{G2*0EZ?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@-JFzXB zvmxuSD$B7r3os`$F*TDgE~7C#L-0q6!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po} z@gM%pR&2`OSd*1lnnjqG*_fUwn2@m;nPC`|Uy}!R@A#Y#c$1fSnn$>o+qj-9xRA3r znPWJV{rDd{^Dq9%My$(fEYA`w$Xv|KG)&5PjLrxQ$)CvruTOljedH@X<{e(;IUeT$?&Kz}<`T~3G>+#84rDL>!@t>zP5B#ZvJy+P z2=g)<(=!DVG8Q8<41@A(g23(_pYs84@)A$;2={Uu*K-9Iauz3Z42QBG|6^zV#Xs4I zbybWF|!jLAq0%^>^|JFt7pXS~lF zyvS2L%st%7bzIH`oXJTX%^~c|?(D?2Y|e(P!>TOD;w-?N%*518!nlma@C?Bpu>!A; ze8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{?8SfhH(RkOe`8HnVrdp(US?x@reH$GVq}J4 zP=1XW*uCR(KHyDW;%Oe?UT))huHZt>;$)8DQ1;`0?99LTCmXRYtFb&wupo0WGt)3B z<1soTFeHD*2)sV=HJ|V4h`E`CX_<`i8G{iSioc=-UZ44fPkE2md4VT+h`YIkYq^Z`IfD~9ii6pQ-Pn#_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH z*ppq^o-Nsg^;v@zS&D_3hgq49$(evL8Hu48gkPcrc5nHN_j!XCd5VX*hg-Rh%ejCv zIfmhCtjS6&%_7XpY)sD-OvqS_%rFefuaN?~cYMwVyva*E z%_H2)ZCuY4T*z6R%rP9we*BM}`4|6WBi3a#mS+hTWG-fA8YX2tMrQ$8s3^vj@Ad9b2$5>#;g3up|pHH?uG;lQBMH zFd{?oSNOo|GvDwj@9{b>@FWj$H@9#tmvKI4a3V)>F#E6@JF*R%u>otd3d^z>^D_rC zG8Gdu4x=(0gY$d1!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvMbxOC7ZB5Yp^0q zu`u&6E7LJK6EG$tF*JklOW45fEuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1l7+p;+u zvJR`V9E-C6b21ZCGYR7|8pAULe}oCVKJpbG^A4}_9FOw=cXAU~a|!2i8pm@42eKFc z;ooeaHS&5}tgn5~b>6wBF8H$!ppIg67y zhC|tp|FJXw;-759x~#_XEWv`z#mr2@q>RVtjKGlm87lDl#MgYnyS&EpJi&w9#m!v9 zrJTpCMy3pQpwR%Zp4WFh8e7N%t~#%ByhWGMa$5qN#(8$RVd zUgrg#RF30t4q#7qWqY<{6V_)9R%9s_W*%l`IwofV#$+Uh zW)OY}7TCSzGv4P7UgRkr<{ob4Ixgn|&g3MH<`DK}cXnc1HfKZDVO5r6aTZ`sW@2h4 zVO&OIc!uDQpn=y%zT#uv;Z>gFaUS4KZsKY#;apDRc#hye_ToSMo2}TCzp*AOu{4V? zFS9W{Q!pW8F*3t2D8B{??B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEsk0cIIFFlZ{xH z)mWY-Sdh7xnQ54m@fe*E7?MAK9sU376JPTQ@A4YY^8^oa7dLYamvSDba{@qIe6n}e7?Y70nnC#GTVVH=&v>6V zc#)@gn0vUD>$sc?IFpk&nnT!^-Pwt4*_;hohgDgQ#aVzknTe^HgmD>-;TeKIz6M?& z`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^B@1Z?GZD#L_Inyv)Y*Ou>YV#mEf9 zp#1tJuzSbne88K$#M3;&z1+t2T)~B$#mOAQq3p;1*qMLvPc~v*R%3aVU_s_$W~O0M z#$$9wU`YP_9C&@=Yd+y!UgLS5;6d)a|S1J6bG{pyRjqN zuo)Y$Hmk5Ki!ncQFe6hjG2<{Q!!bC&e+cY8@FgGdHm~q3k8wYDa3fc7G3Rh9$8k6Z zuqV5+JzKH~>$3(cvJ?w553@2IlQRKhG7>{G2*11!?B4Pj@AC#P@)Qqq54Un1mvaGU zauP>#2>Y@-JFzXBvmxuSD$B7r3os`$F*TDgE~7C#L-5DD!0RJl@iFi4D$nsa4{#?p zaW$84E~jxkM{po}@gM%pR&2`OSd*1lnnjqG*_fUwn2@m;nPC`|U*86H@A#Y#c$1fS znn$>o+qj-9xRA3rnPWJV{rDd{^Dq9%My$(fEYA`w$Xv|KG)&5PjLrxQ$)9fmuTOl< zC%nsRJkJw6$X(pbHC)PhoX!ax$wBPRf7yYp`3HYzEmme37G*wWX9lKZBF1JEhGj5* zdmY%l=L+#84rDL> z!@t>zP5B#ZvJy+P2=g)<(=!DVG8Q8<41@CPv%u~hpYs84@)A$;2={Uu*K-9Iauz3Z z42QBG|6^zV#Xs4IbybWF|!jLAq0 z%^>{pFtB^eXS~lFyvS2L%st%7bzIH`oXJTX%^~c|?(D?2Y|e(P!>TOD;w-?N%*518 z!nlma@C?Bp4+5``e8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{?8SfhH(RkOe`8HnVrdp( zUS?x@reH$GVq}J4P=381*uCR(KHyDW;%Oe?UT))huHZt>;$)8DQ1;`0?99LTCmXRY ztFb&wupo0WGt)3B<1soTFeHE83%ow@HJ|V4h`E`CX_<`i8G{iSiofmzUZ44fPkE2md4VT+h`YIkYq^Z` zIfD~9ii6pQ-Pnzx!n^$<2$GD$6 zxRI;4m~%Ll<2alH*ppq^o-Nsg^;v@zS&D_3hgq49$(evL8Hu48gkNq2c5nHN_j!XC zd5VX*hg-Rh%ejCvIfmhCtjS6&%_7XpY)sD-OvqS_%rFef zuQvj_cYMwVyva*E%_H2)ZCuY4T*z6R%rP9we*BM}`4|6WBi3a#mS+hTWG-fA8YX2t zMrQ$8s3^vj@Ad9b2$5>#;g3 zup|pHH?uG;lQBMHFd{?o*VVx5GvDwj@9{b>@FWj$H@9#tmvKI4a3V)>F#E6@JF*R% zu>otd3d^z>^D_rCG8Gdu4x=(0gY)~9!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdX zvMbxOC7ZB5Yp^0qu`u&6E7LJK6EG$tF*Jkl%jLlCEuZl|Z}1{d@i6yrE7x&37jPyg zaWsdpFT1l7+p;+uvJR`V9E-C6b21ZCGYR7|8pAULe_RT@KJpbG^A4}_9FOw=cXAU~ za|!2i8pm@42eKFc;ooeaHS&5}tgn5~b>6wBF8H$!ppIg67yhC|tp|FJXw;-759x~#_XEWv`z#mr2@q>RVtjKGlmc_Hxn#MgYn zyS&EpJi&w9#m!v9rJTpCMy3pQpwR%Zp4WFh8e7N%t~#%Byh zWGMbR7kGW<8$RVdUgrg#RF30t4q#7qWqY<{6V_)9R%9s_ zW*%l`IwofV#$+UhW)OZk6WG1wGv4P7UgRkr<{ob4Ixgn|&g3MH<`DK}cXnc1HfKZD zVO5r6aTZ`sW@2h4VO&OIc!uDQ(}CAVzT#uv;Z>gFaUS4KZsKY#;apDRc#hye_ToSM zo2}TCzp*AOu{4V?FS9W{Q!pW8F*3t2D8HTx?B4M?AMhqG@idQcFSl_$S8yR`aWcnn zDEsk0cIIFFlZ{xH)mWY-Sdh7xnQ54m@fe*E7?M9v240`|nooF_*La>Mc#ylenQOR| z^EjOoIFf_doBy%{Tk{Y8&RVR@GAzn`%+3r<$wZ9JC=APB{B|O+d(Rhq$XmS3Gd#+D z+|CVL$wi#aDICjT?9U$T!gg%I#;nKctiX~i#N5onv`ohMjKPQu#b3t*ug`qLr@Y7O zyugz@#NFJ&wOq#eoWY44#lh^uZtTc5Y{mwx%_=O*V$9DR%*a$s%s7n7a174x#{#<# ze91?=%_}_1W8BXj+{jg2%sHIOaU9M8?8&Zd&z5Y$`mDimllwG$IiF61mu<`@oTKmNzg{EL6G5$m!V z%d-RvG8Z#54U;k+qcZ|S^5>zz>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p-Uv^+? z{=wf_iyid z*@Io!jxE@j^;n%1SdxX9n^~Ba$rzt87?Gj)>pn_IY+%Q&Ai zIFX|`n0?rd9odG>*nqWJg=JZc`I&TDkIhl#6nS^l}jo}%BKlTP*ANh)p zd52edj>ma`JGqIgxrB2$jpI3j1KErJ@Nc$aQ~t)9ti;kR!o1AJ^i08ojK#$G8BL947@(`4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54*7=+prlM zur{l(EQ>Keb1)-QF)`yXD#I~2zwZd_KJXT@G8&oI1g|qH*qzW za4x5DJV$UKd+{Is%~ov6-&m8CSeiwcm)V$}DVUJ47@1)hlwY?7cJKI{4|tQ8c$!DJ zm)p3WE4YxeIGJNOl>PW0JM%C8$wsWpYAnwZEXZ8U%rs2Oc#O^n49TBc0w_fczxt6KIR=>i7 zicR?&YqAncvk3Dt8`Cod6EYSfGYo_B>$<@19iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;F zAOB-#{>4Aph;>{*hD$k* z(>Z}7If%XaFFUX`|KRVe#mX$hqRhwa%)pdP#Mq3&unfj;YXZCXe8Gpj#mhXyquj^s z+`yGw#Mzv}u^h(!?7=Q<#};hNdaTY0EXhL5%`8mIWQ@-kjL1;@wL0+n%r|_>d%VsI zJjp}c%`IHZWt`6$oXAle%s%YKj%>qbY{1&A!m=#J{LI0OOvS{E!>A0$;QYQSu=~K5 ze8k(l!m~Wa{oKKgT*bwl!>Js{;T*u8?8^3R$tJAN8m!1tEX+L2%5+T51dPc@49y_? zvNEuH%V)gL8@$Li}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa z*oE!bf{j^^)mechS%|rrg=v|L@fm{=8H&G_1YV!{hEI8q*Li^_d5F8Yg=@Kt^ErbP zIf{eXhuzqbZP<(rSesQ?mc^K#Ihc{Dn3!=GmEjni-xmjVANZ1wc$-&vmdCiCJGhan zxR`S|mE$;^1K5*Y*`6)gg!Ng26(yTF&T-W8H8UJ1$J-wjQ4qi7kP?@ zxrbZ1j?1}#GdYQ)IfQ-Lot@a0&DoH3Se4~ioCTPZnV6bM7?;r)o+0>SVc_+VulSgE zc$MdPoCmm*o4A@wIG58no+CJrz4#CRW-B)3Z>-5mEX^X!%WO=~6imoijLa|$%C8Fo zyLWuf2fWEkJk2BA%WYiG6LJWl5Xj^rTr=D+N~*8GFNvlc6}42v=!voixz zG7)1l3d1rOzs(Em-tz??@)j@i43Bajw{rtmauH{93deF7`?CkTupL{lG3&89E3hOB zF*ma?Et4@mV=y8^@z>nI>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^8#}TMo3R0F zvkJ?y81pj+GcpwuGY+FN9E0=woWSk_U-A)e^9s-M8257rH*ysha}K9+9EWoNd$KFr zvn89bK5MWdOR+HXFe}qBITJ7@BQZ3C@XPGL?k%73K5y_MPw_DKa4XkwITvsyCvh}~ zurIr_6Wg*m8?p|ovK))E0CO@EQ!@$UG8)4(1b@s5ygu?3AM*~c@*I!z0C#c|S91yH zavH~T1P8Jg|KZeV|Kgu)#Ja4;@+`rE%*D)1!=#MI=#0RS{5d1=`o!0K!n?f2 z^E|72lk9K_!ImmS!efADwKVr74DvQ zzTiXN;$@!UQSRe*Zs1BT;%rXgSPo-<_FxybV+%HBJyvH0mSiF3W)`MpGR9{NMr0`d znihC{<{LicJznPpp5!6!<`%ByGS24=PUI*KW*>HAN48-zHehX5VObVqe&%3Creb2o zVN`}=aDJZ}*nQwjKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc4d3EWE0kB4OV0+7G@r1 zWjZEj0>)${hGr0cnG)E&PG(|iCShDgV|a$(kI8}8N50}?-r-fA<8dC~PHy6AF5z5G<9LqXK=$H4{F|-V zl)teiE3q_-FfX$)JyS3tV=*$rFetxH3hdtTIUn#QFYz>wa4)xUJy&ocXK^yea47rn zKX&F{{F9AXm(^IFC0LNTn3-vql<^py5g3v`Ck9@h_?l06m)CfnCwP#%xS4CXl=C>9 z6F8EC*qi^d16%VC{?1yg%rY#>e9X=aOvyxy%_t1ZVEi^AuzSxJe8^k8%riX7eca9s zT**b8%_$tqVeHQy?80_z!N#n|>a4($EX3T*!n91r_>94b48>pL1Fz3~!>7E*>%72| zJjC7H!nIt+`JBOt9L2%x!*1-zHf+WQtj#Jc%VNyW9L&g6Ow2fp%5V(M@8bfy4}8f- zyv-{-%VXTn9o)!OT+BI~%5fad0qn`HY|oZ#!uqViiY&##%)_iq$K*`Fn2f~G48kvC z1G~3;#{0a%i#)}{+{3M0$K_nWnViJY9Kycr&Q5I0=4{A1tjcmM&H~KIOiaxrjLT>Y z&k+1ECh+>mSA5JnyvlPt&I8=ZO+E z*p4mOnDtnl6 zIGBCdjUCyB&DemoS%qa;jQN>^8JUWS8HZ6Bj=}kTcwqN|FZqbKd4*?rjQhER8@Y;$ zIfqj@j>9>CJ=vA**^*6IpEX#KrC6AGn3d_6oCz3{kr~8m9;>qgOR^Ai zGYiu)8RIhsBQg|!4Gg?K^9`T!9^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNyRto7 zvI*<61}m}@3o{S1G98mM0b?=}Lo*1!^bhRb@)_^*1~2jy4|5N#!=zu{aAbCo?fMlQ1r$F+4-?N58=9BVX|`@9-+m@i-4~CpU35mvAnp zaXd$GAbas2{>@fw%HLR%l~|fZn3vg@o++4+u^5?Q7?fZ826pfGoDX=Dmw1{-xR=|w zo-4SJvpAV!IF$YPA3O6e{>etH%W5po5-iAE%*-@Q%6N><2n@-eeFCpfe9b4k%WFK( z6FkUW+{`sx%6Xj52^`5m?9G4Kfvx!me`hULW*HV`K4xbIreq?2fpMZ-sTmai>s|xTefZ6wr$(*-Scz) z&w#+|BVX|`@9-+m@i-4~CpU35mvAm;a0N98_i`K8a|IW27N>C%$8Z=2uqQjQHJh+5tFb&wupo0W zGt)3B<1soTFeHEW3%ow@HJ|Voec*Dev(*FYqJ}aW}VcEthdV|K(qtz|kDS ze(cT;Y{^Ef%_=O*V$9DR%*a$s%s7n7a174xy#u=se91?=%_}_1W8BXj+{jg2%sKpr zfASBG;BV~BE^NzYtj`*($WkoKJj}{;OwI(1$w&;%ApFuRuzSmAyw4lF$WuJbJ>1H5 zT+RjjkAHI_f9Fv4XAgE{D>h~wR%JOBX94D9CZ=W*#$_~yX9)i28F+oKb@`<{LicJznPpp5!6!<`%ByGS26}{EHJfnnT!+-PwUH*@(4Sg=JZc z`I&iiMenS(%Q>nSe1FiJ=*UUpfbNZ~2V(d4m^uiif#}Te*(Qxq$!iZ%*Xz9LoOe z!H#Uj#;n7tEXU$3z?{s))J(#-jK=T`!5^IhuaA7i$GpRRVtjKGlm*&*=y#MgYnyS&EpJi&w9 z#m!v9rJTo^oXYVW#lh^$ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1ZVEooTuzSxJe8^k8 z%riX7eca9sT**b8&FP%Xu^i5U?8VM(!=|jq>a4($EX3T*!n91r_>94b48>pV07E*>%72|JjC7H!nIt+`TUoEaRNtk2>Y=+JFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2 zzqbwSKJXpZh*pr>u znoU@j)mWY-Sdh7xnQ54m@fe*E7?M9*240`|nooF_*La>Mc#ylenQOR|^Ei`JIi909 zn0?ue?b(72S&NlfhDDi=*_nYUnTW9&g<%*qLqEl=WDh6b4VvoSqWFd<_x zGQ%(^zcvo+-tjpf@Fp+uG>>pEw{bmJa3N=L8YgiKhj9RVvJ+dg3G1>N%d-RvG8Z#5 z4U;k+qcZ|S@@J#K>l0t|3Geb6&+`Niau+vq4VQ8rXL2gXa})=&FT1flTd*N(u`qgOR^AiGYiu)8RIhsBQg|!H3+;u^9`T!92F#%^~c^ z?(D#pY{c5E!m=#J{LI0OOvS{E!>A0$;QU@cu=~K5e8k(l!m~Wa{oKKgT*bwl!+-cE z|KJGz#@_70wrs}wtig&b#lpGT~=dxmS92VVrHgcQpRI+Mqo((tQ~lL z;%h$PU0&mPp5Q_5;%2VlQqJQ{PUU!x;$Ze=H@0UBHe@YUW*HV`K4xbIreq?6n}e7?Y70nnC!bdSLgK&v>6Vc#)@gn0vUD>$sc?_#gk~ME=g9?9U$T z$X0C3I;_faEY1SV$xKYmB#g^w49^h!Q7!QL$X9&KJG{zsJkA5$$xU3%C7jC{oWgM& z$wBPHu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9p!`}juzSbne88K$#M3;&z1+t2T)~B$ z#c7vkJ{8cIN`ph?c z%6q)d3p~j~+|4aq%VnI;fB6?Da5RUoAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9E0$3(cvJ?w553@2IlQRKh zG7>{G2)|Sa?B4Pj@AC#P@)Qqq54Un1mvaICo+qj-9xRA3rjgvTr!#IFF*@>;$ zgmqbs{*hD$k*GdY#xIf{eX zm)+Q&E!dE?Sea#5l=+yQ8JLoZ7@JWTmcjU~Oknq(FZhtRc$sH-l>4}y8@Q5-IGfWs znPWMe1KEq6*@jJ7kJVX$C0U5MnT2VYjPV(R5gCfVN(Ww_`G!wmy(BG4Jpy&+#}9a3?o$HJ5NMXK)I~aU=(^54*A*o3jCHvJy+P2=g)<(=!DVG8Q8< z41@A(@xbmKpYs84@)A$;2={Uu*K-9Iau%m?631{D2e2nQu{E2pE~~LTORykwF*DOJ zDdRCZBQPX?77M&S@im|DF0b)CPw*gjaWmI&Dd%w}r*b?;aWMO`8{4x58?qKFvkZ$e zAG0$9Q!)`_GYZ2p7{3(_?B4SQAMzG2^9+x2AGdP@S8@?&b2=w;EQfO-d$BXyuqo@Y zIxDaw3o$pdFfEfYK4UN!hY<| z4s6Lrtj#Jc%VNyW9L&g6Ow2fp%5V(M?}Y=q4}8f-yv-{-%VXTn9o)!OT+BKAhkx=9 zj^JbWF|!jLAq0%^>_zD6o6WXS~lFyvS2L%st%7bzIH` z{EvTgB7f&l_Gb@vWGgmi9ad#I7H0wGWG1F&62@gThGz)=C>VHs z63*oePT@F?;xta;7!KnA_GBlvW)s$BHI`=y7Gy4FW*R1CJVs{(hUCxuf!8O# z<`drKHJ;}Q9^@`=<{B>LJkI1)j^`*2W?yz=d$wRh)?#IrVNvE|c4lBoCSq(xVOR#^ zw|s%!d%oa9-r{AR;Zg46c5dKGF5+xX=VXrMa1LZIc4iwkWj$7B1(swX=4KYAWirNR z3`S%q{>mG8edZfJ^ z8JUWS8HZ6Bj=}joPhj_fFZqbKd4*?rjQhER8@Y;$Ifwu7PyWFX{EfZYg>Bi4^;v@z zS&D_3hgq49$(evL8Hu48gkN$8c5nHN_j!XCd5VX*hg-Rh%ejF6@o!G#?;Ohh?7@y~ z#m20|sw~IiEWn)1#MDf}xQxc|48b3{0y|cYMwVyva*E%_H2)ZCuY4T*z6R z#z`E*VI07o?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS{Fx*0`o!0K!n?f2^E|^|@%AMrM?@GOsUKX-5=S8*}t@E`ukKRANFu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$t zF*JklOP0XyEuZl|Z}1{d@i6yrE7x&37w|v+&58V-L)o7_*paQ+m~~i{noBsBGdP9gIFf_dhh5o@&Dnr8S&5}t zgn5~b>6wBF8H$!ppIg8UciDNj71K5+D*qTjP zm(^IFC0LNTn3-vql<^py5g3v`GX`Ft_?l06m)CfnCwP#%xS4CXl=C=~Q#qcaIGBCe zjqTZj4OxqoS%yWKkJ*`lDVd0|8HHgPjNdW@cJKLu4|$81d4@;1kK4I{E4hfXIh~U^ zmcu!az1W#;*p&5HofTM;g_xUJn3l;HpD`Gbq4+C(;Pshr_>}i}ofmkLhq#+txR%Q} zpa1eNPT*(`VLx_f2exD*)@Bu!WijSw4rXL3CT1K)WjF@s_jG~X2fpMZ-sTmaQ&Lk-u{&`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&v!!rbbqzSw} z@)aNR4zKbYkMjU`auZi`3FmSKr*IrcauEBlE8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2 zD8Hr-?B4M?AMhqG@idQcFSl_$S8yR`aT+Ia42N+5d$JQ-vkB|68q2c;3o;ioGYyk6 z9-}h?L-J>;!0QuV^9k?r8qf0t4{{eba}Aer9%phY$8!`1voE``JzKCLYq2uRuqg8} zJ2NmP6EQZUFf4=dTgt%hJzwx4Z}BqE@F@3jJ2!A87jZVHb27(rI0v#9JF^X&vL36m z0!y+Gb2AImG8yAD1|u>Qf29b#KJyKq@*c1A0#EV~cXJEZavA6IU;f1j9L*u@$L{RF zmTbh@tirM^#{A5|j7-JEjKio5$Kd>)Jh1z~mwd$Ayu!0Q#{JyEjaI+y!nSP2`mDimllwG$IiF61mu<0OvZFb-f(c4BKbVO>^Zd6r;7=3-{1VN%9pbVguE{!AQred23A z;ay(id7j`w?&4;y;Zn}yOitx^j^beUWjD5G3pQjeR%RI%WjP7 zM26z8gn`#*zTs2e<8@x(Ngm>EZsA%k<9z(+{=4`;4ti;kR!o1AJ^i08ojK#<2n@-eaRRSTe9b4k%WFK(6FkUW+{`sx z%6Xj0sT|Ky9L&D##`bK%hOEWPEW@JA$L!3&luX3fjKZ)C#&59$yZ3y-hrGqhJj0{h z$L-v}m0ZNxoX*J{%i$czUhK>^Y|479&I&BaLd?x9Ov_}9&lrrzQ2Z4u@cPU*e9C*g z&I>%rL)^_RT+3yg&wu$BCvY@}uphg#16#5YYqJW=vKaF-2QxAi6EhB@G8}{Rd(6P@ z17GqHZ}SSz@)-AX2RCvR7jq8(;h+42BlsJ8vkTj@8SAqKE3y;|GY_*e9g{NwV=@v$ zGYG%L2<+bS8SnE3FY*)*a}T$29hY+f|Ks1B$lp1X{n>*Z*@}%>hgDgQ#aVzknTe^H zgmD>-;TeKIq6c0d`HGKuhgW%y$9aG|xrwW}gmXEAQ#g(zIf#AOmF?J^4Oo+vSeiwc zm)V$}DVUJ47@1)hlwYF-cJKI{4|tQ8c$!DJm)p3WE4YxeIE|AyhQm03J=uw^*@Sgj zjpbQ_1(}PPnTAOjkI@-{A^9_E;Pr{G`Gj|QjpuoS2f2%zxrR$Qk25)y<2j0h*_Yke zo-NprwOE;DSd{sgof(*ti5Qzv7?#2KElObbo-g>2w|JRnc$E9Nog284i#VIpIhkWQ zoCDd5o!N#>S&!9OfhAdpxtWD&nT+ungAo~uzaj@-pZSJQd5_n5fhT#0ySasHxs3Dq zFaP2Mj^+^dV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m?t6xe;>OFrUlUg23D<9_bo zMy}#w&f!1&lYejoe`9ZUVOut1eb!(_mSSP%VOFMNawcF*Mq+3N;g^Vk-CI86ecs?j zp5kHd;a0BWaxUP1{F@W`JBPAAd$1#0u`%ngD$B7r3os`$F*TDgE~7C#L-0q0!0RJl z@iFi4D$nsa4{#?paW$84E@yBG$8jVFu@Ael9hdM{zLwvK!m81sk#!E3*uXG9R-u z15+{)V>1fFG8n&w4eZ|Y1t0PjFY^qKav!&I16OhpXLC9yb1a8*AbYVh+psC?u{tZT zBnvS&voI}_F+O83B17?4n852Z-|#8#@j5T?BoA>nw{R_&aX$a$U!1_v9KwF=&JJwJ zMy$;$EX!id&m7FiR7}h`jLL8f&hMcEyAOQHN4(7|Jj-L;&mG*zRb0$D{D*(?502n( z?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?5-PBJ%V)gL8@$LL)KztmSIumV|Hd>N+x1#MqyY6^L*C+Lp5amM<92S~N-pATPUmEfczxy@KIJ`L=LMeRA@1fDuH`b$=fC`m6F8bf*pJ=Wfi2mHwONH_S&aFagBh8M zi5Z7c8IHmEJxE~pfiL-pw|RwUd5rtHgB!Vui#dn?@K6515&Vt4*@bP{jP+TA6(yTF&T-W8H8Vc9r^$6EuZl|Z}1{d@i6yrE7x&37w|v+&58V-L)o7_*paQ+ zm~~i{noBsBGdP9gIFf_d zhh5o@&Dnr8S&5}tgn5~b>6wBF8H$!ppIg8Uc ziDNj71K5+D*qTjPm(^IFC0LNTn3-vql<^py5g3v`zXx8Q_?l06m)CfnCwP#%xS4CX zl=C=~Q#qcaIGBCejqTZj4OxqoS%yWKkJ*`lDVd0|8HHgPjNiTmcJKLu4|$81d4@;1 zkK4I{E4hfXIh~U^mcu!az1W#;*p&5HofTM;g_xUJn3l;HpD`Gbq4?`-;Pshr_>}i} zofmkLhq#+txR%Q}pa1eNPT*(`VLx_f2exD*)@Bu!WijSw4rXL3CT1K)WjF@s_b-9n z2fpMZ-sTmaQ&Lk-u{&`?Ci-vK1S%4y&>pi?aZ8G80oX z3F9&v!!rbbdQf4vL5KJyKq@*c1A0#EV~cXJEZavA6I zU;f1j9L*u@$L{RFmTbh@tirM^#{A5|j7-JEjKio5$Kd?_Hn97^mwd$Ayu!0Q#{JyE zjaI+y!nSP2`mDimllwG$IiF61mu<0OvZFb-f(c4BKbVO>^Zd6r;7=3-{1VN%9p zbVguE{(KpDed23A;ay(id7j`w?&4;y;Zn}yOitx^j^beUWjD5G3pQjeR%RI%WjP7M26z8=YiK}zTs2e<8@x(Ngm>EZsA%k<9z(+{=4`;4ti;kR!o1AJ^i08ojK#<2n@-ej{>hxe9b4k z%WFK(6FkUW+{`sx%6Xj0sT|Ky9L&D##`bK%hOEWPEW@JA$L!3&luX3fjKZ)C#%~V; zyZ3y-hrGqhJj0{h$L-v}m0ZNxoX*J{%i$czUhK>^Y|479&I&BaLd?x9Ov_}9&lrrz zQ2g~E@cPU*e9C*g&I>%rL)^_RT+3yg&wu$BCvY@}uphg#16#5YYqJW=vKaF-2QxAi z6EhB@G8}{R`~AS~17GqHZ}SSz@)-AX2RCvR7jq8(;h+42BlsJ8vkTj@8SAqKE3y;| zGY_*e9g{NwV=@v$GYG%j3+&$V8SnE3FY*)*a}T$29hY+f|Ks1B$lp1X{n>*Z*@}%> zhgDgQ#aVzknTe^HgmD>-;TeKI?gm~T`HGKuhgW%y$9aG|xrwW}gmXEAQ#g(zIf#AO zmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwa=zcJKI{4|tQ8c$!DJm)p3WE4YxeIE|Ay zhQm03J=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^G!m;Pr{G`Gj|QjpuoS2f2%zxrR$Q zk25)y<2j0h*_Ykeo-NprwOE;DSd{sgof(*ti5Qzv7?#2K?N(s-o-g>2w|JRnc$E9N zog284i#VIpIhkWQoCDd5o!N#>S&!9OfhAdpxtWD&nT+ungAo~uzitLzpZSJQd5_n5 zfhT#0ySasHxs3DqFaP2Mj^+^dV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m@I5!ij; zOFrUlUg23D<9_boMy}#w&f!1&lYejoe`9ZUVOut1eb!(_mSSP%VOFMNawcF*Mq+3N z;g{=y-CI86ecs?jp5kHd;a0BWaxUP1{F@W`JBPAAd$1#0u`%ngD$B7r3os`$F*TDg zE~7C#L-5D7!0RJl@iFi4D$nsa4{#?paW$84E@yBG$8jVFu@Ael9h(#*S9iQ_7Z}JjP^9c8H8`pCM7jhP-aT3RH7zeN?JFzvJur8~y zJWH@3b1^g1Fe&3PIwLS7e_jc^KJhi5@Gh_MJWuc-cX2bdM{zLwvK!m8 z1sk#!E3*uXG9R-u15+{)V>1fFG8n&I4(#6Z1t0PjFY^qKav!&I16OhpXLC9yb1a8* zAbYVh+psC?u{tZTBnvS&voI}_F+O83B17@lrNHYm-|#8#@j5T?BoA>nw{R_&aX$a$ zU!1_v9KwF=&JJwJMy$;$EX!id&m7FiR7}h`jLL8f&hHlkyAOQHN4(7|Jj-L;&mG*z zRb0$D{D*(?502n(?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?av`vL%V)gL8@$L< zJj^}Z%5_}M1^kbHb0UA|Q1)jJc4R9yW*t^#ITmLD=42+OW)j9_G=^sg{x~0aedH@X z<{e(;IUeT$?&Kz}<`T~33{K%Vj^rTrVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVNiZO z7udbyb3WirUgBvU;a+azdamF?&f+vq;usF&0QO`jwq_I7Wi^&(2^M57W@Z{DWjsb_ z1cv0#vw_zqzUC9&L)KztmSIumV|Hd> zN+x1#MqyY6^L*C+Lp5amM<92S~N-pATPUmEfMfczxy@KIJ`L=LMeRA@1fDuH`b$=fC`m6F8bf*pJ=Wfi2mH zwONH_S&aFagBh8Mi5Z7c8IHmE{ZwH0fiL-pw|RwUd5rtHgB!Vui#dn?@K6515&Vt4 z*@bP{jP+TA6(yTF&T-W8H8U>26k`xjQ4qi7kP?@xrbZ1j?1}#|M725 zTOD;w-?N%*518!nlma@C?BpCjzgJe8tDS!>c^U<2=Bf+{D#f z!nvHmDICX<9K=5C%64qd2CT_SEX^X!%WO=~6imoijLa|$%CE-*yLWuf2fWEkJk2BA z%WYiG6+M)+|0tXOvd<(!H5jS zUq=G3&wRtDyvOUjz>_@0-Q2>pT*mqQmw#~rM{@}Ku{%4kB^$9etFSDKF+X!KBU3Rk z<1i}2F*v^;4(vYgB_HuNukb97aX)u(BUf=T=kOo?$v-%Pzp*#Fuq~UhK5MWdOR+HX zFe}qBITJ7@BQZ3C@XMjV?k%73K5y_MPw_DKa4XkwIT!Fh{>_Q}okQ85J=l@0*qC)# zmE~BR1(=hWn3_o#m(duWA^789;PsKO_?UNimFIYz2e^})xSC5imoqqp<2aIo*oR%& zj?LMCHCc(JS%i6+jp>z4KlcY-pZJ)${hGr0c z*&W!uwa4)xUJy&ocXK@-QaSVrX0DH0%TeAu4vKq^? z1Pd}3Gcyg7G9IHd0z>lWj=<{^U-Jp?@*2^I!hO z2^`HK?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ49DR7zBRD>z?Xc)+q}ZFJjVUp!HrzS z#hk-`_$UA12>!<2?83He#`>(miY&##%)_iq$K*`Fn2f~G48kv40=u_-#{0a%i#)}{ z+{3M0$K_nW|M)j2@^=npfA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQ&4JfPzT#uv z;Z>gFaUS4KZsKY#;atw(6prIa4q_j6Wji)!1J-0EmSz#=Wj3Z~3MOPMMrIfW<=0Jt z-8(+#1K#8%p5_tm>V|kWfLFQs+reRXXV{}Gf zNdDXyczxn)KH*(n<9VLoLGI#auHjP7<4jKFc#h&=_GLG=XA3rDEmme37G*wWX9lKZ zBF1JEhGj5*+Ys2j=L#g z&Y|qj9_+|gY|J{W%5p5u0?f%wOwA;W%V-SG5d5(w@cPJCe9Sw%%5yx<1Ki0?T+Jn% z%Nd-)aU97(?8B~X$L4InnykdqEW*6Z#`H|Vgp9?=48x%Ox;n6X$LD;&o4mx+Ji@)) z#`Rpmg`CA{oWwC4#sTcfPHfF4tjlUF&k`)iT+GZgOv-qS&Ik<2pQ{3|PkhZMyvu7m z&l5bzUEItyT*`Tz$*COAQ5?*^?8f$N!G^5G$}Gd8%*X7^z?4kH*o?xk490IO1H1Qp z!H2xX%RIxQ+{f+Qz?EFY*__VF9LwPx$X@KsHf+jztj-E7$wJJ{EKJK}jL#U1$WZ*X zBJldmH+;%_yv_?e$wS=DEnLfGoX>yx7bkEuhp->JvjbbQ5o@yw%d!~rGY2y=6%#WK zqcR+W^ZW9^?gL-)5pVMf&+-`ea|bta6&G_3|KXqfgCqDGd$SAMvKi~M1}m}@3o{S1 zG98mM0b?=}Lo*1!EDP-3@)_^*1~2jy4|5NOO*9odSFS%+0w zj>TDkIhl#6nS^l}jo}%BKb8hwANh)pd52edj>ma`JGqIgxrB2$gHt$;BRPnD*p=zgV~qe*q$xekhNHuWmuH?n4KAzl8G3bQ5crN_-#>O_nt5Kkhgf5XLywRxSbog zl8ZQ-(>a-AIh+I8i=EkqO<9lCS%D>4h`E`CX_<`i8G{iSioX^HUZ44fPkE2md4VT+ zh`YIkYq^Z``7i(C1diqq_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhGTGkUl7=R;7dN@ zZC>G79^-!Q;6|?EV$R_|{F8rh1b<_1c41pKV|~_OMV4Y==3!Q*V{#^7Oh#g82H}_a zf!$j^<9*)XMV{he?%`Ih<8m(GfBc&h`8$WQKYOqvTd^_guqw;3I14Z*Gch%jFfOAp zJVWruyuj-tU-2>T@G8&oI1g|qH*qzWa4u(X3deCI2eA*kvK^bV0c)}nOS1^`G8@w~ z1rstBBQp$x^6T8d?j4`=0dMjWPxA=(avRrk1s8G_r*RU;a2N-$Cp)n#;g3up|pHH?uG;lQBMHFe3lQ@jL}kVJH9q&9-gZwr$(CZQI6bwbg1FtHov8 zwr#(6&(HZkq4;ZY;Pshr_>}i}ofmkLhq#B^xPhyFed6<>yn4Ae1laUyjLHK21VE2~Kc%L_Tk*9c=d%2w(xthzlh_g9`V>yid z*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8G=6+1YRHcijR4RS9y-dd4RjPmFu{YOF5r2 zIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC`|U*`vQ@A#Y#c$1fSnn(B_|K%qB z%|E!9b2ydbIGh96lbzU_O<0%JSe_+Vkhz$dX_%Dp7@ZLql0WAKUZ41yPk5Ktc%CPC zkh}R0*Yhv_&IO#wNgT}~?8|O!&lYURTCB`6EXsV$&J0Y+M2yWS49j5rHaD<)&lh~i zTfEFOJj#9C!OdL5KlvNyavH~T1P8JgJF^X&vL36m0!y+Gb2AImG8yAD1|u>Qf6WQJ zKJyKq@*c1A0#EV~_i!6Ga21zvA!l(i$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2 zF*v`^4(vYgB_HuNukb97aX)u*3)gZ5mvA1Za{@S6c2MRw{s&`b2%4rHm7hbhp|6my(BG4Jpy&+#}9a2L079anNG=W_-pauf%%54*A*o3jCH zvJy+P2=g)<(=!DVG8Q8<41@CPjKJ<4pYs84@)A$;2>;{1+{C~62N!b=r*a&Ja{zm? z6I-(h>#`clvjht=7c(;rlQJHoGXg{M=k&nq6JPTQ@A4YY^8^oaH~-;!{>9(9fHOIX zqdA0q*^TYlf(==Vm05;GnUC3-fhn1Yu^EM78I0ei1$OWGf)9C%mwARqxsN-znQQnb zf8$(E<9LqXK=xv1wqaA&V|7+wNfu&mW?@<;V|>P7M26z8se#vLzTs2e<8@x(Ngm=J zZsP{7;xaDeEKcSa4rM=fX9u=qBi3dWmSr*KXAWj$Dkf$eMrAk#=l3ar-3PwpBi`l} zp5-y_=T2_nTCU&{&f|1W;7AT)Z+2l@He-F(U`3W;#RKXN-pJm&fr9j;$Ze+SGHqwHegLwVrdp(US?x@reH$G zVq}J4P=1{l*uCR(KHyDW;%Oe?fBcu5_&5LHV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$ zW~O0M#$$9wU`YO)5O{s!Yd+y!UgLS5;6d)@KU~kh_&XPHCMR(;hp;cZu{~R`A#1TR z%djZ(F*`FbB@;0=qcALk@!R;o?mb`dA#d?A&+sVsaR)bZ4gchCoXcq(&k-ERUhK>^ zY|479&I&BaLd?x9Ov_}9&lrrzQ2aG6@cPU*e9C*g&I>%rL)^n{+`v^_#)X{4$sEI> z?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ49DR7J~puXz?Xc)+q}ZFJjVUp$t_&V6-iUd=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKZBF1JE zhGj5*8xh#O=LS&!9OfhAdpxtWD& znT+ungAo~uzlH~1pZSJQd5_n5fhT#0d$^4oxQffTkh3_MV>p!k*qt5Nl8soKRalnA zn4dYAk*S!NaTt~17@XgS1$H0!l8<iiMenS(%Q>nSe1FiJ=*UUxo&DZ~2V(d4m^uiif$E+qsdextxnQn^QQJ!`Poa z*paQ+m~~i{6wBF8HqIe9w{ZhkaTynK7AJEIhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+W z^Lzim?gL-)5pVMf&+-`eb0@cOEmv>}=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{ zFeW20G=uOpi?aZ8 zG80oX3F9&v!!rbb^bNc|@)aNR4zKbYkMjU`aVytxC6{tOXK*4%aWMO^E8DR-8?YuT zu{4V?FS9W{Q!pW8F*3t2D8Kdz?B4M?AMhqG@idR{KmN;2{F{GpG3Rh9$8k6ZuqQjQ zHJh+5tFb&wupo0WGt)3B<1soTFeHEW4!l0`HJ|VG7 z9^-!QHCJ2qzn)?_7?W)bFPHl}9^CS)u| zW*7$L*RFxxJ3i+F-sB~o<`MqKf4PZ&^A9fO98Tpp4(9;&WGA*}6V_!lmS+hTWG-fA z8YX2tMrQ&TPY` ztjFrCz>+M)+|0tXOvd<(!H5jSU!4N4&wRtDyvOUjz>_@0J>13(T*YNv$XT4sF&xT% z?9L8s$wsWrDlE%l%+DOm$W%1049@Qz1G^7=$w$1+D?H0%+|Qld!nIt%C7j3U zoWPMB#NO<}wrs}wtig&b#lp(+{=4`;4ti;kR!o1AJ^i08ojK#RVtjKGlm**5U{ z#MgYnyS&EpJi&w9&40L_fAM!N;7m^9Xbxdtc4K?CU_;hoWtL%4=3{ndU`i%pY(`;N z2IIFjf!%w);6vWxWuDQ`xZ}^n=c%2t`l83m5+qi+NxQq)qi<3EqL)nkr*?}$Dh_zXTWm$~* znS&XbiisJAQ5lZG`Mp(O_kl0@h_`u#XL*eKxszMCmMge~^EjOoIFf_dn_bwJ%~+o` zSdpbzn0c6$>6n}e7?Y70nnC!bWnlM~&v>6Vc#)@gn0vXM8@Zaxxrnnlg=0C4{n>*Z z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKIS_EDn`HGKuhgW%y$9aIexRvX;l1n+CGdPi> zIGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwX?%cJKI{4|tQ8c$!D}AOGbh{>?wQ zm~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?MAm1zw-{nooF_*La>Mc#ymK z57+ZA{>}xQ$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=APB{MIzEd(Rhq$XmS3 zGd#+D+`-LU!$0{O=W-gya|8#n7dx{Jo3b9OvjR)95OXsN(=r+3GX^6v6n`}dygu^{ zpYk5B^8!!u5chB!H*gh~aUo}MGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC& zHxBGR@FgGdHm~q3k8wYDatqgT1($Fhr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQRKh zG7>{G2){H6?B4Pj@AC#P@)QqqFSm0eS93WRaWN%d-RvG8Z#54U;k+qcZ|S@@M_P>l0t|3Geb6&+`NiayS3sdj7@Vxqve{iK97$ zec6re*@6vOiIHW1`GOC5ioA@{X;9}0GT~=dxmS92VVrHgc zQpRI+Mqo((tPyy9;%h$PU0&mPp5Q_5=09A|zxX>Ba3&{lG>5P+yRki6upw))GRv?i z^D#R!FeMW)Hlr{sgYjGS!0tU?@F8#UGSBcR_i+a|a}EFGZ=B0%9M2IP$X@KsHf+jz ztj-E7$wJJ{EKJK}jL#U1$WZ)ME%5rxH+;%_yv_?e$wS=3ZQQ_BT*if*#mOAQq3p-* z?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8{9ZM%`@olc#M`{WvpmNA+{rCm%N1P0d7RD( z9LYiK%`R-qW~|Q|tjJO<%skA>bWF|!jLAq0%^>_zC9r$TXS~lFyvS2L%)Q*sja<#; zT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?Bpl>@Jje8tDS!>c^U<2=A! z+{$%a$)%jn8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%CD6IyLWuf2fWEk zJk2BgkN4h`E`CX_<`i z8G{iSioePSUZ44fPkE2md4VT+hzx!n^$<2$GD$6xrJ-Ff=f7$(>Z}7If%X4g>Bi4^;v@z zS&D_3hgq49$(evL8Hu48gkQ=Ac5nHN_j!XCd5VX*m)p6KtGS$uIGa;Amc!VeJ=l@0 z*qC)#mE~BR1(=hWn3_o#m(duWA^4+A;PsKO_?UNimFIYz2e^w{xsEHjl=C@*6FG{5 z*@s=(j?LMCHCc(JS%i6+jp>x{DX@* zhf_I@!#RLG*@>;$gmqbs%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;B?G(ne8Gpj#mhXy zquj?G+{`unlfQ8;r*S+-a3FiJGuyB!>#;g3up|pHH?uG;lQBMHFd{?oSBb#uGvDwj z@9{b>@FWj$54UjxS8*8^auz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY$dw z!0rQI@)2+I3eWNw_j4z=a4lDG3FmP-CvYSOu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$t zF*JklOR>Q2EuZl|Z}1{d@i6ytJ2!GQmva$ka|*|D82hsaJF*oUvkt4W9E-C6b21ZC zGYR7|8pAULe-sV8KJpbG^A4}_9FOw=cX2D%aV3{>K4)+uM{zLwuq)fKIUBGhE3q_- zFfX$)JyS3tV=*$rFetwk3GCkSIUn#QFYz>w@IU^`P5hgGa53j_D#vj+2e2nQu{E2p zE~~LTORykwF*DOJDdRCZBQPX?77n~V@im|DF0b)CPw*gj^B=C~U;Ld5IFpk&nnT!^ z-PoQj*pRhYnPpg%`Iwyi}FnP+&E`?!OfxrTr8H_qiW zj^_vtWG{AR8#ZM^F5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQe1X?T zzT#uv;Z>gFaUS3#2>Y@d+p`55vKA||42v=! zvoixzG7)1l3d1rOzvT|>-tz??@)j@i43BajcW^V;@K656xtzxF9KnI?#m;QQrmV;6 ztiX~i#N5onv`ohMjKPQu#b3Dsug`qLr@Y7Oyugz@#68@`4P3=#T*z6R%rP9we(cT; zY{^Ef%_=O*V$9DR%*a$s%s7n7a174xIRm>7e91?=%_}_1W8BZ3+`_e7!6lr>>72lk z9K_!2!nSP2`mDimllJs{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS{FycI`o!0K z!n?f2^E|s7zTiXN;$@!UQSRdoZsr>P$=^7a(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt8 z7?Gj)D|6uWnQ!=%_jsKbc#?;>hugS;tGJ8{Ig67yhC|tp-PwUH*@(4Sg=JZc`I&TDkIhl#6nS^l}jo}%BKQaVfANh)pd52edj>ma`ySSC>xROgbpEEd-qd1s- z*p=e9X=aOvyxy%_t1ZVEmRguzSxJe8^k8%riX7 zecZv#T*E*48|QKw$8!V+vKKqE4V$tatFr=2vJi7K3)3$G8BKM3A{e@4WIHJ zuk!*=@(}lM8#izjmvJFyaWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zo!oD zKJXT@G8&oI1g|aw{jgwVEczxt6 zKIR=>^Zd6r;7=3-{1VN%9p zbVguE{!9>fed23A;ay(id7j`w?&d#S&%gLP7jPygaWsdpFT1flTd*N(u`d%VsIJjp}c!)@HaRb0k}oW;o;!=dcQ?(D#p zY{c5E!m=#J{LI0OOvS{E!>A0$;QSspu=~K5e8k(l!m~Wa{oKhdT+0<)!g-v|2^`5m z?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?5+|^G%V)gL8@$Lxoti!4-$Kou&oXo`3Ov1Q~#_$ZmAF%_kk9@_)yu+(J$KyP}UEIob zT*;-J&l#M^Q5?)Z?8N-WJH%*$*{&lF6^Sd7dt49c&u0=sv7&Ii27OFYdZ z{Ez=~6aVHPT+BI~%5fad0qn_6Y|SRD%W5po5-iAE%*-@Q%6N><2n@-eF$1qpe9b4k z%WFK(6FkV>{D z*uCcqKIAQ4<{2L4KJMUVuHm2jjdMAT<2ix@*^8aohD}+I)mechS%|rrg=v|L@fm{= z8H&H62VS4~hEI8q*Li^_d5C+sjT^X%%eauUIGJNOl>OM99oUkMSesQ?mc^K#Ihc{D zn3!=GmEjni-=hU~ANZ1wc$-&vmdCiCJGq5xxq?eLkJCAUBRPn@*@bP{jP+TA6(yTF&T-W8H8V=26k`xjQ4qi7kP?@xtH6yk*m3!i#VH8IF`fMpFP--t=O1# zSe4~ioCTPZnV6bM7?;r)o+0=nO5pX8ulSgEc$MdPoCmmzTe*%axs>xcgA+N5gV~2& z*^bTGfHhf(rCEe|nT_e0f(aRmkr{?T`89H2_m0o`fH!%Gr+I|`@n3G@-~5A%Ifqj@ zj>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^9^>;Pr{G`Gj|QjpuoS2f3U7a6SLx z?_9u{oW#)_!oKXr_H4n1ti{SK!=lW`?99NFOvKoX!mtd+ZxI8#_k6*Jyv55r!=v2C z9o)<{{FA?NE~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@mGYv>oec*Dev(* zFYqJ}aSyj~16Oew7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9E02eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C z@JqPB?k%73K5y_MPw_DKayvJ2HJ5V{XLAb2av1xw2RpJA8?z3pvK))E0CO@EQ!@$U zG8)4(1b>7Lygu?3AM*~c@*I!z0C#aK*KsA6az1BpB1dsB`>-q9u{j&CCM&Tti!d*< zF+Ec-A!9Kz!!Rhnh6(K6@i`yxCNJ?ckMKYK%T4^7e{eD9a4N@fI0vvNJFzvJur8~y zJWH@3b1^g1Fe&3PIwLS7e})dcKJhi5@Gh_MJWuc-ck>^v=U@Dt3pkULIGRJ)m)+Q& zE!dE?Sea#5l=+yQ8JLoZ7@JWTmcjTfRABd>FZhtRc$sH-l>4}Yo4JO6@;A=qG>+#8 z4rDKOW*atTJyvH0mSiF3W)`MpGR9{NMr0`d3K@8P<{LicJznPpp5!6!;WlpIDlX$f z&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb2oVN`}=aDERF*nQwjKH_a&;aMKze(vNJ zuH_0Y;XF>~1dik&_GTBhWi!@i4OV0+7G@r1WjZEj0>)${hGr0c2_D$JP)?rnaV{sN>PG(|iCShDgV|a$(k6?kOj0iGTACF6JCgzUC9&P$=^7a(>R_ZIFP;AnQhpV^;n%1 zSdxX9n^~Ba$rzt87?Gj)>u2EgnQ!=%_jsKbc#?;>hugS;tGJ8{Ig67yhC|tp-PwUH z*@(4Sg=JZc`I&TDkIhl#6nS^l}jo}%BKfVQCANh)pd52edj>ma`ySSC> zxROgbpEEd-qd1s-*p=N_?l06 zm)CfnCwP#%`489gFaFL2oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1ZVEpzu zuzSxJe8^k8%riX7ecZv#T*E*48|QKw$8!V+vKKqE4V$tatFr=2vJi7K3)3$ zG8BJ(3cNn^4WIHJuk!*=@(}lM8#izjmvJFyaWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-Q zF)`yXD#I~2zkdwuKJXT@G8&oI1g|aw{jgy5xczxt6KIR=>^Z zd6r;7=3-{1VN%9pbVguE{(KgAed23A;ay(id7j`w?&d#S&%gLP7jPygaWsdpFT1fl zTd*N(u`d%VsIJjp}c!)@HaRb0k} zoW;o;!=dcQ?(D#pY{c5E!m=#J{LI0OOvS{E!>A0$;QanLu=~K5e8k(l!m~Wa{oKhd zT+0<)!g-v|2^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?@+h!-%V)gL8@$L< zJj}h^&W&8nxoti!4-$Kou&oXo`3Ov1Q~#_$Zm9}fesk9@_) zyu+(J$KyP}UEIobT*;-J&l#M^Q5?)Z?8N-WJH%*$*{&lF6^Sd7dt49c$$ z0=sv7&Ii27OFYdZ{Ez=~6aVHPT+BI~%5fad0qn_6Y|SRD%W5po5-iAE%*-@Q%6N>< z2n@-e_XDp_e9b4k%WFK(6FkV>{DOM99oUkM zSesQ?mc^K#Ihc{Dn3!=GmEjni-|qx=ANZ1wc$-&vmdCiCJGq5xxq?eLkJCAUBRPn@ z*@bP{jP+TA6(yTF&T-W8H8VM2X=4yjQ4qi7kP?@xtH6yk*m3!i#VH8 zIF`fMpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o+0?-R^auKulSgEc$MdPoCmmzTe*%a zxs>xcgA+N5gV~2&*^bTGfHhf(rCEe|nT_e0f(aRmkr{?T`SoUC_m0o`fH!%Gr+I|` z@n3G@-~5A%Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^G!0;Pr{G`Gj|Q zjpuoS2f3U7a6SLx?_9u{oW#)_!oKXr_H4n1ti{SK!=lW`?99NFOvKoX!mtd+Z`T96 z_k6*Jyv55r!=v2C9o)<{{FA?NE~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^ z@z=G$>oec*Dev(*FYqJ}aSyj~16Oew7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+Gcpwu zGY+FN9E0=w)xhopU-A)e^9s-M82580w{R_2a0%yeIwx=>2eCK1uq~UhK5MWdOR+HX zFe}qBITJ7@BQZ3C@XM9J?k%73K5y_MPw_DKayvJ2HJ5V{XLAb2av1xw2RpJA8?z3p zvK))E0CO@EQ!@$UG8)4(1b-q9 zu{j&CCM&Tti!d*^v=U@Dt z3pkULIGRJ)m)+Q&E!dE?Sea#5l=+yQ8JLoZ7@JWTmcjV#LSXlvFZhtRc$sH-l>4}Y zo4JO6@;A=qG>+#84rDKOW*atTJyvH0mSiF3W)`MpGR9{NMr0`dIv;p_<{LicJznPp zp5!6!;WlpIDlX$f&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb2oVN`}=aDG1**nQwj zKH_a&;aMKze(vNJuH_0Y;XF>~1dik&_GTBhWi!@i4OV0+7G@r1WjZEj0>)${hGr0c zIUCr$P)?rnaV{sN>PG(|iCShDg zV|a$(k28VSN50}?-r-fA<8dC~E^g&IuH;hA=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4Cdf zX9^}{EJkJ+2Ibe&f!#Yk=L6p4C7$LH{>Oj0iGTACF6JCga4($EX3T*!n91r_>94b48>n307E*>%72|Jj6ZR#tmG>Wn9Qv zoXjyC%6{z54s6Lrtj#Jc%VNyW9L&g6Ow2fp%5V(M@5ckX4}8f-yv-{-%VXTno!r8; zT)`!r$LXBFksQR{?83He#`>(miY&##%)_iq$K*`Fn2f~G48kwR0=u_-#{0a%i#)}{ z+{^9U$kklVMV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y&k+1^H1PV!SA5Jn zyvlPt&I8=Vtz5^IT*~>J!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($PB}v{CXs? zd&lQ|z?;0p(>%ie_%Ao{Z~no>oWrRc$Kf2np6tZdY{I&%#_}w|g3QItOv9v%$LNf} zkok4sm(w_&BRG(~*qLqEl=WDh6^8JUWS8HZ6Bj=}l;Kw$TQFZqbKd4*?rjQhEhTey}hxPv0 z*p|&$pEX#KrC6AGn3d_6oCz3{kr$s9j zIiE8)k)t@6eb|-l*qjYmla*MSMVOb_n4T$^kg@*9@jL}kVJH9q&9-gZwr$(CZQHhO z8(TJ3TdlTQwq5Vt^KwaX)u(BUf=T=Wr^=aX1IC zCp)n#;g3up|pHH?uG;lQBMHFd{?o*WtkHGvDwj@AEdV^8!!u z2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY)~L!0rQI@)7^x zpS;4e{EY{>i<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1FiJ=*UUk(O# zZ~2V>@o)aYi#)}n+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(#-jK=T` z!5;?#uaA7i$NZOn@hZ>pcOK$yZsA%k<9yEGM2_NM_F-4HV{63*o`j^_vtWG{AR z8#ZM;$)8D zQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4e%~F~ec($z;y?V8S9q4c@gR3`GuLn_ z=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=uQVuE6dspYcEb%|CdNr+Ae6 zxSbogl8ZQ-Q#h8x*q=Svk*(O6by$_N-WJH%*$*{&lF6^Sd7dt49c%N0=sv7 z&Ii218@$BRJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_ijK}DVz>xg8 zJ@ER(*L=czyv1ug&l5b%J>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9J zC=APB{I)Hyd(Rhq$h*AB%RIy5JiwjY#MNBFxtzxF9KnI?#m;QQrmV;6tiX~i#N5on zv`ohMjKPQu#a~+kug`qLr@YVGyv_?e$s^p$ZCuY4T*z6R%rP9we(cT;Y{^Ef%_=O* zV$9DR%*a$s%s7n7a174xTLQZee91@rhkx=4&+<1OQ)h2QTszk8&Tka|2g$5odD>$8s3^ zvj;n}6&te-tFj!6vjB546H_w@<1!k7_2$KQE~ySasHxs3BU zgA+N5gV~2&*^bTGfHhf(rCEe|nT_e0f(aRmkr{?T`E_Gp_m0o`fOmLDUZ41yPk4{Fc#Y?I zf`_?>Te*(Qxqve{iK97$ec6re*@6vOinoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?Gj)YhB>= znQ!=%_j#Mwd4VT+gnPM->$!ppIg67yhC|tp-PwUH*@(4Sg=JZc`I&Fpc#m!v9rJTp-q9u{j&C zCM&Tti!d*#`clvjht=7c(;rlQJHoGXg{M=gPqA6JPTQ@9`F|@jOrPF!yjP*Ks))a3&{l zG>5P+yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYnyn!0tU?@FDN=CNJ|0kMjU`auZi` z3FmSe$8!V+vKKqE4V$tatFr=2vJi7K3)3$G8BI;54=9}4WIHpZ}U1Y@Fb6L zFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zb^~yKJX6n}e7?Y70nnCzwX<+x3 z&-fqz<{!MsQ#{Ij+|CVL$wi#aDICjT?9U$T$X0C3I;_faEY1SV$xKYmB#g^w49^h! zu_W;N$X9&KfB6@$@*IEXA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{ zEJkJ+2Ibeqf!#Yk=L6p14PN4D9^-!Q;6|?EV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$ zW~O0M#$$9wU`YO46nK5&Yd+yU-r_Z$=LsI>9&Y72F6RQyIiF61mu<`@oT zKXzvawqzsLW)+rYG3I9uW@IWRW*kOkI0onU`GMUBzT_kR!#{b2XZafsau+vq4VQ8r zr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQRKhG7>{G2*1n=?B4Pj|Ks2MgBN*yid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8G=9N23{ZeijVm(|Ke4i zpT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($PB}v{5mJFd&lQ| zz&pIbOFYeE+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ$)B?W zuTOl%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3& zunfj;vjV&Ke8Gpj%bUE+Gd#`%+{sN`%_W@6X&lcH9LQem%r`@GHTyugz@!oA$a^<2S)oW;o;!=dcQ?(D#pY{c5E!m=#J z{LI0OOvS{E!>A0$;QT%#u=~K5e8hkFC$I1my(BG5_UXyvlR@ork!aTez0XIG-~( zk)t@6eb|-l*qjYmla*MSMVOb_n4T$^kg*tqIe$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`Iwygyb zlb3mh$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrg=v|L@fm{=8H&Fq1zw-| zhEI8)w|Sixc#=oBm)p3WE4YxeIGJNOl>OM99oUkMSesQ?mc^K#Ihc{Dn3!=GmEjni z-zNrkANZ1w_z(Z&6`tj9Jjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA>bWF|! zjLAq0%^>_TA+USPXZ(+U^ABF+DIVoMZs!KBa|S1J6bG{pyRsddvjJ^8^ob54Un1mvaGUauP># z2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rOzl{m(-tz??@-A=kGSBch4{#?paW$84 zE~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@z?0U>oec*Dev<(uk!*=@(A~G z8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9E0=wsKD+6U-A+E;h((1 zv;2(*xr>{*hD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkMGmc5nHN z|M74B!HYb_quj^s+`yGw#Mzv}u^h(!?7@y~#m20|sw~IiEWn)1#MDf}xQxc|48b2G z06JR<7f6F5pZ~;%E+GUv^`AwqQfnVr7+#84rDKOW*atT zJyvH0mSiF3W)`MpGR9{NMr0`d8WMPY<{LicectAEUf@X{;a+azdamF?&f;W_;ZXKt zcXnV)Hezj7VObVqe&%3Creb2oVN`}=aDE>g*nQwjKH@+8lUI0_zwsbvSEuZl}{>?vlk*9c+`?#GO zxRQ%Fn^QQJ!`Poa*paQ+m~~i{%ug+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z#mr2@q>RVtjKGlm*+205 z#MgYnd%VSKJkJw6%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1Z zVEooEuzSxJe8{`J$;&*$<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r z_>94b48>o41Fz3~!>7E@+q}*TJjo;6%WYiG6LJWl5Xj^rTrW*4?)GuCGf zR%9s_W*%l`IwofV#$+UhW)Obq9oW6)GyccF`3EoZ6pwNrw{rtmauH{93deF7`?Ci- zvK1S%4y&>pi?aZ8G80oX3F9&v!!rbb^a{K_@)aNRU;f3bJjdU8h`YIkYq^Z`IfD~9 zii6pQUD=M!*?=`!iKSVDd6|vrnSu!!i;)?ILHV_3VE2yC`G9wLgO_-k$GD$6xRI;4 zm~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?MAG1YV!`nooF-w|I@`d4h+z zhg-Rh%ejCvIf^8JUWS8HZ6Bj=}l8 zYhd?*FZqc7@K0XhS^ma@+{MjY!=;?Z>72lk9K_!2!nSP2`mDimllF#E78+p#$tuqG?9 zG>b4VvoSqWFd<_xGQ%(^zjg}j-tjpf@D6YA5>N9O_j3m~aupYI4ySS)hjRdXvJ+dg z3G1>N%d-RvG8Z#54U;k+qcZ|S@@L1u>l0t|3GeY1ukk!j@G$pqE7x&37jPygaWsdp zFT1flTd*N(u`qgOR^AiGYiu)8RIhsBQg|!wGX^L^9`T!K5z3nFYqLfa4)xU zJy&ocXK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!z2)Fe<|_IKQ_G>^|@%AMqdl$tyg| z-*}L_xS4CXl=C>96F8EC*qdG0md#k7HCU0QSeSX3mFbwA2^f=+7@9%&rEOsMme2Sf z|K=aO$WuJZeca9sT**b8%_$tqVeHQy?8sJZ%sQ;faxBgQ%*jkl%_NM=XbjH~{Lv=x z`p8#&%zyb8uksv!=OOOq7Ov$o&gTqHRF30t4q#7qVrw>GT~=dxmS92VVrHgc zQpRI+Mqo((Y!!HY;%h$PJ>KFqp63Z3<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV` zK4xbIreq?XEp5zhk*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKIng(7U`HGMEFaP3Ip5yO4 z#NFJ&wOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9p#0h-uzSbne84-r z!Am^NW8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZEXZ8U%rs2Oc#O^n49TC31Fuhf z%_qFaTfD~eJi)`wG$vkJ{M9h<`ph?c%KN;{>%72|Ji@))#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5| zj7-JEjKio5$Kd?lAh7$umwd#3_$ROMEPvxc?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_ zmSSP%VOFMNawcF*Mq+3N;g|Y>-CI86fBc(&@FGv~DEDzYH*h5vaW;$gmqbsMc$j;* zmFu{i3pkULIGRJ)m)+Q&E!dE?Sea#5l=+yQ8JLoZ7@JWTmcjU~c3}6OFZhsmd6SoU zhR1n;JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2VYjPV(R5gCfVY6V`O`G!w< zpSO9P7kH9KxR=|wo-4SJvpAV!IF$X^ogLVcjaZviSeC_@pE;P3shF5?7?t4|oZo8( zb|3hXkN6M&9d+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@ z49y_?QX{Z?%V+$LfAbGs!edH@X=D+-lS9y-V^ALA)3)gZP=W_-pauf%%54*A*o3jCHvJy+P z2=g)<(=!DVG8Q8<41@A(wZQHjpYs9l@CGmOG>>sVcW@(DaWUs`D#vj+2e2nQu{E2p zE~~LTORykwF*DOJDdRCZBQPX?Rt>y9@im|D9&hm)&+`Nia}T$29hY+fXL1rpa|rvg z8{4x58?qKFvkZ$eAG0$9Q!)`_GYZ2p7{65s?B4SQAM!45@-olxI1g|qH*qzWa4x5D zJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UN(yTF&T-W8H8Ud26k`xjQ{a( z{=thp#iQKE?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?Bp6#}o1 ze8tE7mw)jp&+&I2;%;u?S}x;!&fr9j;$Ze+SGHqwHegLwVrdp(US?x@reH$GVq}J4 zP<|~R*uCR(KHweR;3b~sG4AIMZsaO1<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW*R1C zJVs{(hUCw3f!8O#<`drIEnee!p5S5b;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE| zc4lBoCSq(xVOR#^x3YoVd%oa9-sMeR<{2L60q*1`uI3WX(LeAo3j^R-DV|R97 zOEzL{R$*BdV}9mfMy6t7#$i;3V{m>i9oT)~OFrU1{F7IBmcQ{JcX2b z2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@Jp${?k%73KmN@>c#)@gl>4}y8@Q5- zIGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^4+Y;PsKO_?Z9lFJ9$2{?0?( z%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFefuO$MzcYMwVyu%y3 z#M3;+{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS{8>Ek`o!0K z!h5{MYdp^rJj^}Z%5_}M1)RxA9L*u@%WiDX7Hr5`tjsbj%6!bu3{1&HjLj$v%V7Lg zEU@(R!LHy-3JZsr;;)${hGr0cDID0n6wBF8H}i~ zo7Z`PCwYW>xsB_&f(to|lR1V%*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c8IHmEJ#S$5 zfiL-p|L{*<;aUF1gWSc(miY&##%)_iq$K*`Fn2f~G z48kvY0=u_-#{c*?|KLTQ;!*D7c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4 zVO&OIc!uDQ+=16ezT#v4%fEP)=lDAhaW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V? zFS9W{Q!pW8F*3t2D8J?k?B4M?AMg%u@Dfk+8257rH*ysha}K9+9EWoNd$JQ-vkB|6 z8q2c;3o;ioGYyk69-}h?L-J?N!0QuV^9k?q7O(LQe`OE6KJyKq@;-0#Ixp}fk8m%yaXnXX zA!l(i$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v_x3+z7dB_Hu0{>dvm%inmA zySSNaxRmoaof9~cgV>v0*p|&$pEX#KrC6AGn3d_6oCz3{krHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L z*UW+4J3i+F-r)^i;%Oe^e(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9p zbVguE{>&73ed23A;XU5sHJ;}Q9_AiyP7M26z841w2YzTs2e=WSl+1)k&)?&UVF=L#<5EKcSa4rM=fX9u=q zBi3dWmSr*KXAWj$Dkf$eMrAk#=lAr1-3PwpBmTobd4*^B8xL|9H**b_avrC10!MNX zd$SAMvKi~M1}m}@3o{S1G98mM0b?=}Lo*1!qzmlc@)`f*-~59Yd5TB5kK4I{E4hfX zIfY|6jQ!bz9odSFS%+0wj>TDkIhl#6nS^l}jo}%BKhg$XANh)p`7i(CRi5MTJjC7H z!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#<2n@-esROT1e9b4k z$6LI{^E|=B+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3&luX3fjKZ)C#&4+t zyZ3y-hrG+1yv#E^&I8=ZO^Y|479&I&BaLd?x9Ov_}9&lrrz zQ2doL@cPU*e9HU0&Fj3tlRUz`+{X1>!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B z#EiqJ49DR7o+7aOz?Xc)fA}Y_@GO7hLGI#auHjP7<8)5oNDg9ec41pKV|~_OMV4Y= z=3!Q*V{#^7Oh#g82H}_Ff!$j^jIGBCd zmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwXqucJKI{4|s<+c!{TZjQhER8@Y;$Ifqj@ zj>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^9^&;Pr{G`Gog)i`RIbCwQ29xRvX; zoC`RUlQ^0~*q7bdo-NprwOE;DSd{sgof(*ti5Qzv7?#2KEpcG?o-g>2cX^YSd4|V% zfIGQ~tGR@8IgR5vf&S&!9OfhAdpxtWD&nT+ungAo~uzY+yrpZSJQd7rm= zofmkLN4S^UxSlJxkh3_MV>p!k*qt5Nl8soKRalnAn4dYAk*S!NaTt~17@Xe|26i9# zl8^Wg|Kt^(&l;@AQY_3o%*u33&IF9fNDR#& z{E{HBd&_71kAL$IUgRkrys4czxt6KIXsti&uG$zw;1xa|_pU8Rv5bCvp@Avk$wn9h1fFG8n(b3GCkU1t0P*Z}KwF@Hh`}CpU35mvAnpaXd$G zAbYVh+psC?u{tZTBnvS&voI}_F+O83B17?4?7-_Y-|#8#^ER*Z0#EV?_i`K8a|IW2 z7AJEIhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+W^Lwno?gL-)5&z+zyu!2mjR(1l zo4JNdIgishfg?GHz1f9r*^KpBgB4kdg_(z0nU2YsfH4_~p&5ixoti!4-$Kou&oXo`3Ov1Q~#_$ZmA29;2k9@_) z{Fi_6D$ntE9^!6p;aV=^e9quRj^beUVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVNiaJ z9@xF(b3Wi5-ryyk<}vQ)4sPTsF6JCgL)KztmSIumV|Hd> zN+x1#MqyY6^L*C_0UgjAd=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpI zA?9Wlre!k5XADMUDE^8Pczxy@KIMJh=5=1+Ngm-|ZsU5c;6l#gWRBrb_G5Q;U`sY) zZB}7f7Gr+qU`D25V#Z-qhGTGkj~v*2;7dN@Km3zdc$UBMAa`*y*KjH4aXKe(BnPoK zyRa>ru|8|CB1^F_^DryZF*y@3CL=L4gYZkF!0s)d@jw2}KX{R+c$E9Nog284i#VH8 zIF`fMpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o+0=nV&L_WulSh%@-JTHIsVQ=+|4aq z%VnI;8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%C8XuyLWuf2fV`@yu{Ny z#{JyEja&TPY`tjFrCz>+M)+|0tXOvd<(!H5jS zUtt5U&wRtDywBUb&I>%rBizevT+bC;$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%1049@Ri0=o}<$w&N$fAR{?@;4sjE^g);F6BH<=LC-AAogY#wq-NcXAM?lDHdiP zW@S1iX9C7#B!*@XehD4ez2!6h$G`apFY*+Rav!&I16OhpXLAb2av1xw2RpJA8?z3p zvK))E0CO@EQ!@$UG8)4(1b>7Iygu?3AM;=S#j8BW-+73;xrJ-FjPp5z6FG{5*@s=( zj?LMCHCc(JS%i6+jp>z4KSKmwpZJ$z>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z?h80&P)?rnaV{sN>PG(|iCShDg zV|a$(k6$PM|N6*Re9V9O7q9Xhf9E0Y<`%ByGS24=PUI*KW*>HCJ2qzn)?_7?W)bFP zHl}9^CS)u|W*7$L*PnsiJ3i+F-r)^i;%Oe^e(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Z zd6r;7=3-{1VN%9pbVguE{`?Vmed23A;XU5sHJ;}Q9_AiyP7M26z8Z-LimzTs2e=WSl+1)k&)?&UVF=L#<5 zEKcSa4rM=fX9u=qBi3dWmSr*KXAWj$Dkf$eMrAk#=l8FH-3PwpBmTobd4*^B8xL|9 zH**b_avrC10!MNXd$SAMvKi~M1}m}@3o{S1G98mM0b?=}Lo*1!dTDkIhl#6nS^l}jo}%BKRyRuANh)p z`7i(CRi5MTJjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#< z2n@-e9|NyXe9b4k$6LI{^E|=B+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3& zluX3fjKZ)C#%~`2yZ3y-hrG+1yv#E^&I8=ZO^Y|479&I&Ba zLd?x9Ov_}9&lrrzQ2g~i@cPU*e9HU0&Fj3tlRUz`+{X1>!G)Z~$sEI>?8olxz?N*p z+N{E|EXMrI!Hi7B#EiqJ49DR7{w}clz?Xc)fA}Y_@GO7hLGI#auHjP7<8)5oNDg9e zc41pKV|~_OMV4Y==3!Q*V{#^7Oh#g82H}^tf!$j^jIGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwV&5cJKI{4|s<+c!{TZ zjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^G!F;Pr{G`Gog) zi`RIbCwQ29xRvX;oC`RUlQ^0~*q7bdo-NprwOE;DSd{sgof(*ti5Qzv7?#2K?PXy1 zo-g>2cX^YSd4|V%fIGQ~tGR@8IgR5vf&S&!9OfhAdpxtWD&nT+ungAo~u zzg`4hpZSJQd7rm=ofmkLN4S^UxSlJxkh3_MV>p!k*qt5Nl8soKRalnAn4dYAk*S!N zaTt~17@Xgq2X-I$l8^Wg|Kt^(&l;@AQY_3o z%*u33&IF9fNDR#&{PHZYd&_71kAL$IUgRkry5)czxt6KIXsti&uG$zw;1xa|_pU8Rv5bCvp@Avk$wn z9hyyCl9iQ_7@9+jM@idQdKX-5=S8*}ta4N@f zI0vvNJFzvJur8~yJWH@3b1^g1Fe&3PIwLS7e?AVpKJhi5@E&jR8qf0t4|5N1fFG8n%-3hdtV1t0P*Z}KwF@Hh`} zCpU35mvAnpaXd$GAbYVh+psC?u{tZTBnvS&voI}_F+O83B17@l!@%n^-|#8#^ER*Z z0#EV?_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGY2y=75~TaJcVIl00022)v|5d zwr$(CZQHhO+qP}DTHNAl)%N}Oa_^Uru^5?Q7>qxj2X>$NjxYF#w|RwUd5rtHgB!Vu zi#dl=IgZ0QfIZoXt=WWiS&ijcf(4n2nVE)38IRE!fgu@$-<}0_ANZQjc%L_Tk*9c= zd$^VBxSR_(lan}_L)e$y*q$xekhNHuWmuH?n4KAzl8G3bQ5crN`SWSu^@Z>Gl84h`E`CX_<`i8G{iSib47PNnrPp zZ}^-Kc$1fSnn$>o+qj-9xRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D;rKg$ zJr2CS@-P0$C%nsRJkJw6$X(pbHC)PhoX!ax$wBPRE^NzYtj`*($WkoKJj}{;OwI(1 z$w&;%-}vvN!0r>@@((`bEnems9_2o6=LW9iBF^R%j^!}+XAgE{D>h~wR%JOBX94D9 zCZ=W*#$_~yX9)iHF!1_^fAbZe@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}n zOS1^`G8@w~1rstBBQp$x@yCO}?la%<1t0M?ukb97aX)u(BUf=T=Wr^=aX1ICCp)n< zo3Jjcu{=w#AagM@(=aLHF*+kKB!lqV{lM-6U-KF7^9C>S6c2L`w{jhqa{*^^5=V0g z`?4F`vjrQn7Avz1i!vXxGXqmH5o0q7!!kI3-V40G@I7DhG4Jpy&+#}9a3?o$HJ5NM zr*S+-a3FiJGuyB!>#;g3up|pHH?uG;lQBMHFd{=SD8Jtg>^|}hpYs84@)A$;2={Uu z*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0f9J0|f!A05#XtFkcX^HH zd4dPIi<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1FiJ|!$|Ggd9ed1gG z!H2xX%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(#-jK=T`!T)Xr zUjOiKzT#8f<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV{63*o`j^_vtWG{AR8#ZM< zR%Zp4WFh8e7N%t~#%ByhWGDvZ_iKUON50{6KHyDW;%Oe?UT))huHZt>;$)8DQ1)YY zc3?|3Vr^DoSr%h{=3qvqVq(T&REFd4{Bxukk!j@E~__GuLn_=W#kG za3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=Jm2R|30Fe9J%hkhgf5XLywRxSbog zl8ZQ-Q#h8x*q=Svk*(O6by$_%r zL)^_RT+3yg&l#M^Q5?)Z?8N-WJH%*$*{&lF6^Sd7dt48|Xq0=v(A#}|CW z+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_ijK}DVz>o~WZx;i* z4}8sMyw4lF$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=AQs z{COep`oi~o$;Z6It31c!JiwjY#MNBFxtzxF9KnI?#m;QQrmV;6tiX~i#N5onv`ohM zjKPQu#i0CtKCt`9H+;?qyva*E%_H2)ZCuY4T*z6R%rP9we(cT;Y{^Ef%_=O*V$9DR z%*a$s%s7n7aQvOW&IMjy`4|7>6W--Dp63Z3Z~XUcVE2h{`3E2J7BBM*k8&Tka|2g$5odD>$8s3^vj;n} z6&te-tFj!6vjB546H_w@<1!knoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?GhEl;2MTb|3kM z&-s8id5NcagnPM->$!ppIg67yhC|tp-PwUH*@(4Sg=JZc`I&nw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tt zi!d*#`clvjht=7c(;rlQJHoGXg_02)`W;>^|@{pYc9#@FGv~F!yjP*Ks))a3&{lG>5P+ zyRki6upw))GRv?i^D#R!FeMW)Hlr{sgY)O1!0QX&^Cchi4zKbYkMjU`auZi`3FmSe z$8!V+vKKqE4V$tatFr=2vJi7K3)3$G8BXI`@z8OBj4~jAMhqG@idQcFSl_$ zS8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yXD#P)2{yGqNedS;LlTUb;*La>M zc#ylenQOR|^EjOoIFf_dn_bwJ%~+o`Sdpbzn0c6$>6n}e7?Y70n!oYi{ej&lzU3c$ z$XmS3Gd#+D+|CVL$wi#aDICjT?9U$T$X0C3I;_faEY1SV$xKYmB#g^w49^h!Z(rc` z5C7&XKIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{EJkJ+ z2IG&tf!$}m;|o6GZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$W~O0M z#$$9wU`Phxw>^Q~2fpSr-scToIiF61mu<`@oTKXzva zwqzsLW)+rYG3I9uW@IWRW*kOkIR4IGI|Hw;{EL6`3Geb6&+`Niau+vq4VQ8rr*i^F zau9p73)`|8>$3(cvJ?w553@2IlQRKhG7>}cH~zaLu=~Wf{DTj9iyid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8G`?954`^2-+aZVyvOUjz>_@0 z-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($PB|^{IM;t`^g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ$sqi;HL&}@ z*L=qNyuph+#lzggtz5_DT)>%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unf+h zTLP~ye9xDB%safwb3D!i+{sN`%_W@6X&lcH9LQem%rA0$-}!4(;PsV%@lQVCU0&mPp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T)?h`J zVqxZCR;FWeCSXiPVrc%xe>VnppZJ!4@F8#UGSBcR_i;Nna3vRUHm7hbhp|6qIe6Vc#)@gn0vUD z>$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`IwyOM99oUkMSesQ?mc^K#Ihc{Dn3!=GmErh1f2|I@ zzVa{r$tS$aYdp^rJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA>bWF|!jLAq0 z&ENR%s=)3O-|`PWa|S1J6bG{pyRsddvjJ#2>Y@d z+p`55vKA||42v=!voixzG7)1l3d1rue=ZBWzVJO?@-gr5D$nsa4{#?paW$84E~jxk zM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^F(|(;4eUPh4WIJ?Z}JjP^9c8H8`pCM z7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9DnDpC4tvh{>4A}gm-z3=Xrt$ zxr>{*hD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu6!8~+#84rDKOW*atTJyvH0 zmSiF3W)`MpGR9{NMr0@k<@b4k-ABIRb3WirUgBvU;a+azdamF?&f;W_;ZXKtcXnV) zHezj7VObVqe&%3Creb2oVN{0W@BB44@cPQX_$Qz6F0b)CPw*gjaWmI&Dd%xICvYSO zu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$tF*JYUzjFe+PkhTi_>i}FnP+&E`?#GOxRQ%F zn^QQJ!`Poa*paQ+m~~i{mUBjSA5EQyv_?e$wS=D zEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1BEBFxKdOwSZd$XJZbFbu{YvjV%%e8(4j#M`{W zvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z#mr2@q>RVtjKGi#!f!JJyAOQL zXS~lFyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1Z;QTow z@cP2{e96bW!>c^U<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r_>94b z48@@QK0UDe$Txh>2fWEkJk2BA%WYiG6LJWl5Xj^rTrW*4?)GuCGfR%9s_ zW*%l`IwofV#$+Uh=5PFWYGC(?Z}|rw@)j@i43Bajw{rtmauH{93deF7`?Ci-vK1S% z4y&>pi?aZ8G80oX3F9&v!!rc`n-X~a!@v28PkE2md4VT+h`YIkYq^Z`IfD~9ii6pQ zUD=M!*?=`!iKSVDd6|vrnSu!!i;)?I!T4ixVE38t_=1mkn^$<2$GD$6xRI;4m~%Ll z<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?MHwZBk(Ofv@?D_j!XCd5VX*hg-Rh z%ejCvIf^8JUWS8HZ6Bj=%HQ_`vHc z|Kgu~!n?f2^E|72lk9K_!2!nSP2`mDimll^|`=|KLO3;$@!UQSRe*Zs1BT;%rXgSPo-<_FzZ0Vq?}}RhDCM7GO?hVrnK~ zTt;JfhTwl=1FwJhH(&87@9{b>@FWj$H@9#tmvKI4a3V)>F#E78+p#$tuqG?9G>b4V zvoSqWFd<_xGQ%(!e~bz2KJy)4@DXqG3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N z%d-RvG8Z#54U;k+qcZ|SG6=to4(vYgHJ|Z5Z}1{d@i6yrE7x&37jPygaWsdpFT1fl zTd*N(u`qgOR^AiGYiu)8RIhsBQg|&^83iZ?jzsuIUn#QFYz>wa4)xUJy&oc zXK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!z2)Fe=0Gcm5g?czxwx{F6_3m)CfnCwP#% zxS4CXl=C>96F8EC*qdG0md#k7HCU0QSeSX3mFbwA2^f=+7@EKF-{FDXC%)w$e8^k8 z%riX7eca9sT**b8%_$tqVeHQy?8sJZ%sQ;faxBgQ%*jkl%_NM=XbjH~{BKy`^$-8% zD?a5tUgrg#RF30t4q#7qVrw>GT~=dxmS92VVrHgcQpRI+ zMqo$=;kO}y-3PwrGv4P7UgRkr<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbI zreq?gFaUS4KZsKY#;apDRc#hye_F`wYVN=#)byi?W z7GiE@VOl0*e8ylzhGI~D9~9Vq*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeMe^$)!M;op44r@Y7Oyugz@#NFJ& zwOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9VEoZ9u=~t+e8ES&%_}_1 zW8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZEXZ8U%rs2Oc#O^n49Ot;);F;Gz}I}n z`@F%6JjKJ@!>wG$vkJ z49f4l1G|rW!{>a!o4mx+Ji@))#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-JE zjKio5$KUy@SK#%PfALQ~;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP% zVOFMNawcF*Mq+6G#(#STcAxl`fAAr1@iNcwDEDzYH*h5vaWn_IY+%Q&AiIFX|`n0?rl z?bw_RSd*1lnnjqG*_fUwn2@m;nPC`=Ke`8YpZSh2_=vZ8g=cw;`?-S~xr&Q9hf_I@ z!#RLG*@>;$gmqbsT@A;CCd52edj>ma` zJGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2VYjPV(R5gCd>`MpbE_mOY-oDX=D zmw1{-xR=|wo-4SJvpAV!IF$X^ogLVcjaZviSeC_@pE;P3shF5?7?t7pJAZW!yuR`; z{>dl2%WFK(6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49(y8 zZ>PZS6W{U=KIAQ4<{2L4K5pj*uH+)l<`j6`%4Ruk!*=@(_1(3)gZP=W_-pauf%%54*A*o3jCHvJy+P2=g)< z(=!DVG8Q8<41@7UhrsSL-|+<>@iwpUERS(NcW@(DaWUs`D#vj+2e2nQu{E2pE~~LT zORykwF*DOJDdRCZBQPX`@LT)9?gL-*8SnE3FY*)*a}T$29hY+fXL1rpa|rvg8{4x5 z8?qKFvkZ$eAG0$9Q!)`_GYZ2pIDfVayuR=~U-B{U@G8&oI1g|qH*qzWa4x5DJV$UK zd$BXyuqo@YIxDaw3o$pdFfEfYK4UN(yTF&T-W`5XUj9oT*1TmHd^yv55r z!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?EKS_NMJ@Nd52 zQ{LlsUf@X{;%;u?S}x;!&fr9j;$Ze+SGHqwHegLwVrdp(US?x@reH$GVq}J4F#c#6 z*nQ?ZzThL?<`tghG4AIMZsaO1<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW*R1CJVs{( zhGY(LeAo3j^R-DV|R97OEzL{ zR$*BdV}9mfMy6t7#$i;32eCK1 zuq~UhK5MWdOR+HXFe}qBITJ7@BQZ384}y8@Q5-IGa;A zmc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^2b8!0R9W%~yQNd%VsIJjp}c%`IHZ zWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFebAB_UL&wR%he8k(l!m~Wa z{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS48m^>1G^7=&1byN z8@$L`^YzZ&Ii27OFYdZ+{)${hURblw{BqfiEsG_AMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oUvkt4W z9E-C6b21ZCGYR7|8pAUL|Em*t{lmZcicfiu*Li^_d5F8Yg=@Kt^ErbPIf{eXhh5o@ z&Dnr8S&5}tgn5~b>6wBF8H(miY&##%)_iq$K*`Fn2f~G{Eh!s z3+z7eE&t#{-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4VO&OI zc!uDARRgbo_%~niDev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{ zQ!pW8F*3t27=Kg=>^}1yU+@uc^9s-M8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c; z3o;ioGYyk69-}h?Lox`zRSxVv@HLQgYtXD!0sd8@HrpwCNJ?ck8m%yaXnXXA!l(i z$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2@pt~J5O{s%U;L9#c$e3Bo+o&aySSNa zxRmoaof9~cgV>v0*p|&$pEX#KrC6AGn3d_6oCz3{krHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$JkFtT? zXTIYLKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9pbVguE z2I03df!znb<}=>s4PN9a9_AiyP7M22EeelHc+edHTH=L6p4C7$LH?&UVF=L#<5EKcSa4rM=fX9u=qBi3dW zmSr*KXAWj$Dkf$eMrAnu&R-=1udn=zfAR_M@*2TDkIhl#6nS^l}jo}%B{}m6s{^8$z#izW->%72|JjC7H!nIt+ z`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#<2n@*}{8luu`@q+H#{0a% zi#)}{+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3&luX3fjKZ)C&YwjBuP=Ph zmwe1SyvlPt&I8=ZO^Y|479&I&BaLd?x9Ov_}9&lrrzPz=iN zg#){fe8cB_z?;0p(>%hx+{X1>!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ z49DO3t5D$em4ES1KH*(n<9VLoLGI#auHjP7<8)5oNDg9ec41pKV|~_OMV4Y==3!Q* zV{#^7Oh#g8{>Fa`26mtLmVfXeZ}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_guqw;3 zI14Z*Gch%jFfOApJVWrm0)f{*{F|@%l=pa@7kH9~xSLzJmdiMwGdPi>IGBCdmF?J^ z4Oo+vSeiwcm)V$}DVUJ47@1)hj6d=RcAxo9>C zJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{AsK|<@&$Gu_?pjnpEr1sr+AoqxRvX;oC`RU zlQ^0~*q7bdo-NprwOE;DSd{sgof(*ti5Qzv7?#2LGjHJah41;2k9mhzd5*_S&!9OfhAdpxtWD&nT+ungAo~uLHRvTVE2)4_?!=Tlb3j! zN4S^UxSlJxkh3_MV>p!k*qt5Nl8soKRalnAn4dYAk*S!NaTt~1_&a~)4!pkdFaF6V zyvu7m&l5bzUEItyT*`Tz&IugJLF~;gY|Cb>&l;@AQY_3o%*u33&IF9fNDR&2_;0Sj z?i1hg4?g5AUgjAdzEd@cM^;^A(@+91fFGB|%`3%tJYJzw%M@9-+m@i-4~CpU35mvAnpaXd$GAbYVh z+psC?u{tZTBnvS&voI}_F+O83B117Kzh@2XKJpEp^8s)25>N98_i`K8a|IW27AJEI zhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+S=dUb**H`|Z~hrGqhJj0{h z$L-v}m0ZNxoWijj#{TTVj%>xoti!4-$Kou&oXo`3Ov1Q~#_$Zm|1t$$|L||V;#1z^ zbza~}9^!6p;aV=^e9quRj^beUVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVKDy47}$O0 zJHFr}-sTmaL)KztmSIumV|Hd>N+x1# zMqyY6=g;(k*B8F$OFrfuUgbF+=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9Wl zre!k5XADMUCr zu|8|CB1^F_^DryZF*y@3CL=L4f8)Pt0=rLq%Rl&#w|JRnc$E9Nog284i#VH8IF`fM zpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o+0>O>cHzC{>@i>%6q)d3p~j~+|4aq%VnI; z8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$#viEyyU%>b7ktFqyu!0Q#{JyE zja&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSp!}XZ zu=~h2e9i~F$xA%VBizevT+bC;$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%10 z{GGp&1zunI7yslF-sLr(=LsITk_`HD|@kJovDCwYjwxrJ-FjPp5z6FG{5*@s=(j?LMC zHCc(JS%i6+jp>z4LHI3EVE2Kq`Hc5@gBN*ns1_pM1i* zyvFl9!Gqkz&0NE!oX6>$z>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z?h80(EN@6#tZB| z@h$)0L*C+Lp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV{sN>PG(|iCShDgV|a$( ze{ln^fA}|F@hR`|Ixp}f4{kHrWB_Hz+uksv^^8j~p6IXKy=W-gya|8#n7dx{J zo3b9OvjR)95OXsN(=r+3GX^6v6oc}6%)ss=-|#sf@Fp+uG>>pEw{bmJa3N=LGRJTz z`>{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!|`|iiV=8yFed6<>yn4Ae1laUyjzwzJbf!!y*=TfEFOJj#9C z&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y&k+1CTHy5$|K=+`>V|kWfLFQs+reRXXV{}GfNCx4z zD1qGvzUDLD=M7%uDIVq?Zsj^I=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKZBF1JE zhGlU6j2w7<;d{R1W8UFap5t*I;7)GhYA)eiPUCov;6V0bXSQKe)?;;6U`ZBYZf0Rx zCS!cYU_^#uP=1dT*nQ+1KIa48ru|8|CB1^F_^DryZF*y@49%C{R!!j7Zg%0fA^93LB z7BBM*k8&Tka|2g$5odD>$8s3^vj;n}6&te-tFj!6vjB546H_x86EZHNF(O0pSE#`2 zGvDwj@9{b>@FWj$H@9#tmvKI4a3V)>F#E78+p#$tuqG?9G>b4VvoSqWFfrpZ79%qp zgY$dH!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54gcle z{DaZ?8$&Y)zk~?v-trmm^9C>S6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXx zGXqmH3IAejMqzk{;E&*e*GInMW8UFap5t*I;7)GhYA)eiPUCov;6V0bXSQKe)?;;6 zU`ZBYZf0Rx{>Oj#Cu8t;hG9^C4HnqF<8waXO(LeAo3j^R-DV|R97 zOEzL{R$*BdV}9mfMy6s?CSV*!Wdw%g&!B_@0 z-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!NiQuSd7eY49@RA1G^7=$w$1+ zD?H0%+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|KH2jx;^AASnZw$>K{PH8P zd&_6M&l|kRQ#{N)+{$%a&IO#wNgT}~?8|O!&lYURTCB`6EXsV$&J0Y+B>ao98HM2) zfS&!9OfhAdpxtWD&`5*t` zpNzrZ8HPdm^;=-~j?ejkH+hMtd4zkpjqACB3ptCEIfg^okKNgUE!l{*S%qa;jQN>^ z8JUVnnSgN^l@S<{KfeZEpZJv0*p|&$pEX#K zrC6AGn3d_6oQW8ZF&T+r8I0e)1a|NFf)9C%mwARqxsThqfh)O)vpI!hIgI_;gB{t5 zjai3PS&qe7fH|3oshNxk8JE!*k)inObKv!vZ}^n=c%2t`l83mPTez0XIG-~(k)t@6 zeb|-l*qjYmla*MSMVOb_n4T$^nDH5lkr|G``TbL1_kl0@h_`u#XL*eKxq}qIe$A`e{BVX|`@9-+m z@i-4~CpU35mvAnpaXd$GAbYVh+psC?u{tZTBnvS&voJ0H<3Ie9G59;fFetyi5A5FY zIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!yzMFb<lW zyTI!cU-Jp?@*2#!=zu{aAbCo?fM zlQALVG8!W?6o0)5ygu^{pYk5B^8!!u5O;G6*K!%>a|S1J6bG{pyRsddvjJ?uaoxd?OgYe6%!0s)d@jh?xB2V!!_i!uMaXA-oCMR(;hp;cZ zu{~R`A#1TR%djZ(F*`FbC6n+k#%2_TX9)gy8F+oh~wR%JOBX94D9CZ=XGCS+VjV?>7Hucv|6 zXTIT6-s5#%;7K0hZf@aPF5`U8;6#q%VD@2GwqtWPU`5jKc5?!5@zTuaA7i$GpR&TPY`tjFrC zz>+M)+|0tX{Ez?ePsZTy48x%O`Y^D2$LD;&o4mx+Ji@))#`Rpmg`CC79K)gP$L{RF zmTbh@tirM^#{A5|j7-I(Ou#sd$_Na}pAQ1BPkhZMyvu7m&l5bzUEItyT*`Tz&IugJ zLF~;gY|Cb>&l;@AQY_3o%*u33&P0sIn2f}*490Kw1H1Qp!H2xX%RIxQ+{f+Qz?EFY z*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(>NjLT?@$WZ)sFYx-zH+;%_yv_?e$wS=D zEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1BEBFxKdOwSZd%=nDO$PCBe{C+pE`@olc#M`{W zvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z#mr2@fB856V08Y*&7|Afg$zx!n^$<2$GD$6xRI;4m~%Ll z<2alH*pr>unoU@j)mWY-Sdh7xnQ8bh|K=Zz&fgfCLHOlrVE2~Kc%L_Tk*9c=d$^VB zxSR_(lan}_L)e$y*q$xekhNHuWmuH?n4KAzl1ca%V>1fFGX#HJ3A{e?6(92suksv^ z^8j~p6IXKy=W-gya|8#n7dx{Jo3b9OvjR)95OXsN)AB$5!#^2=zcUPj^6TZm?j4`= z0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKaF-2QxAilQIG0Fe)Q3B!6BC zyguru|8|CB1^F_^DryZF*y@49%C{R z!!j7ZT@38r^93LB7BBM*k8&Tka|2g$5odD>$8s3^vj;n}6&te-tFj!6vjB546H_x8 z6EZHNF(O0p*M-3AGvDwj@9{b>@FWj$H@9#tmvKI4a3V)>F#E78+p#$tuqG?9G>b4V zvoSqWFfrpZ79%qpgY*0O!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N z%d-RvG8Z#54gcle{DaZ?8$&Y)znlx~-trmm^9C>S6c2L`w{jhqa{*^^5=V0g`?4F` zvjrQn7Avz1i!vXxGXqmH3IAejMqzk{;E%I`*GInMW8UFap5t*I;7)GhYA)eiPUCov z;6V0bXSQKe)?;;6U`ZBYZf0Rx{>Oj#Cu8t;hG9^CJrmfy<8waXO( zLeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6s?CSV*!Wdw%g&(nd|C%)zr-sLr(=LsI< zE^g);F6BH<=LC-AAogY#wq-NcXAM?lDHdiPW@S1iXClU9Oh#f@2IIF=f!%w);6vWx zWuD z8$RVdUgrg#RF30t4q#7qVrw>GT~=dxmS92VVrHh{zxxfTB=Gvg*L=deyvFl9!Gqkz&0NE!oX6>$z>yrp z-t5A*Y{vSm!HO)!!py_0OvmI*#CVL!NDRwh{B}67d(Rhq$XmS3Gd#+D+|CVL$wi#a zDICjT?9U$T$X0C3I;_faEY1SV$xKYmWK77ojK+uz#b1X4ug`qLr@Y7Oyugz@#NFJ& zwOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)Y*Ou@vA&sdDia174x2Lrnge91?=%_}_1 zW8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZEXZ8U%ryL$fAbGU=Wh(nApCM5uzSmA zyw4lF$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$t3)Xu^ENo8G=9d z2VNifijR4RS9y-dd4M~)iL1GUb2*LUIf4V(i=EkqO<9lCS%D>4h`E`CY55=j;h&7b z-x-EM`E_4l_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}Xfi2mHwONH_S&aFagBh8M zNtu9g7?lwil0WwbUZ41yPk5Ktc%CPCkh{2Fe zd6<>yn4F0ik1-jEVHu3y_5^nC`GOC5iyid*@GR~ij7%^ zRauV3S%5j2iK&^42^p8s7?Gj)Yj@!FnQ!=%_jsKbc#?;>n_IY+%Q&AiIFX|`n0?rl z?bw_RSd*1lnnjqG*_fUwn3(Yyi;)?Q!TEhxVE2J9`G~i9g=cw;`?-S~xr&Q9hf_I@ z!#RLG*@>;$gmqbss|Z~2V(d4m^uiif#}Te*(Q zxqve{iK97$ec6re*@6vOimy(BG4Jpy&+#}9 za3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3up|pHH?uG;|KmUWlQH-^!!RhnZV&9<@i`yx zCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDKF+X!KBU3Rc6EF^=G6F;L=eEG> z6JPTQ@A4YY^8^oa7dLYamvSDba{@5P+yRki6 zupw))GRv?i^D#R!FeQ`lFUDpRhGz)=*cf63*o`j^_vt zWG{AR8#ZMmXDmi$I0onU zHG$m+zT_j`<`tghG4AIMZsaO1<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW*Yv>zxfBF z^EZZO5Pn%5*uCX5-scTo%hx+{X1>!G)Z~$sEI>?8olxz?N*p z+N{E|EXMrI!Hi7Bq)fm#jLHZM$)76%uTOld%VsIJjp}c%`IHZ zWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-Ow9O<#mEfD;QYQcu=~K5e8k(l!m~Wa z{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!+-fV|6p|f#?TDHFG~Wuw|vI? zyuph+#lzggtz5_DT)>%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP!oL`sQ5c>f_+xS4 z^^vdmn0I)U=Xjh4xRaZ>noBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba|M4IG$r${d zVHlKO7X^0j_?!=Tlb3j!N4S^UxSlJxkh3_MV>p!k*qt5Nl8soKRalnAn4dYAk*S!J z2^fb_8G#}Bb7A21iLd#DcX^HHd4dPIi<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc>iiMen zS(%Q>nTYWilaUyf!T4=KVE3Lc_>i}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{ z6wCw8K1Ejnc*0m-{%E(ANZ1wc$-&vmdCiCJGhanxR`S|mE$;^ z1K5+D*qTjPm(^IFC0LNTn3-w#FaPErjLzQ}nnCzwZeaJ8&v>6Vc#)@gn0vUD>$sc? zIFpk&nnT!^-PoQj*pRhYnPpg%`IwyN98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGY2y=6_YXn<1i{CFeHD@3cNn? zHJ|Vpi?aZ8G80oX851%t zqcI{w@z;#N>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{ zQ!p{(GZrH=9E0=w^uX=|U-A)e^9s-M8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c; z3o;ioGY$Xc-~5Bo`5Qws2)|4V?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d+p`55 zvKA||42v=!voixzG70};Y(`;thTxB>f!9aA;$z<7Ri5K<9^g)H;%YA8Tu$S7j^IG{ zVrRBtQ`Td3R$xgMVs2((TK>m>_$OoVcZOk5ew`B7z2kE};7wlQX&&KTZsU5c;6l#g zWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D25QYK&=Mr8zsHCJ2qzn)?_7?W)bFPHl}9^CT4ubVq}J6aDJZ< z*nQwjKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1;lKQwe=s_K zV`v89m+^t!TR!7`-rz-^;$iOLR<7f6F5pZ~;%E+GUv^`AwqQfnVr7#MgYnyS&EpJi&w9#m!v9rJTpog07E*>%72|JjC7H!nIt+ z`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i09TjL%q%%y10O?;``d4}8f-yv-{-%VXTn z9o)!OT+BI~%5fad0qn_6Y|SRD%W5po5-iAE%*-_Wmw)pQM(1w~%^>_TBCvbQXS~lF zyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvxnti?JDn;TeKIh6i3B z`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrg=zU8|KXpE!QUB% zLHTu9VE2yC`G7ZhiKlsld%2D4xq=Hhi<3EqL)nkr*?}$Dh_zXTWm$~*nS&XbibMc#ylenQOR|^EjOoIFf_dn_bwJ%~+o`Sdpbzn0c6$ z>6n~}7>_X-iD4Ox--ZNs@A-lcd5f2MhDW)N+qr=&xrnnlg=0C4{n>*Z*@}%>hgDgQ z#aVzknTe^Hj0qW+(HN1T_-kIGBCdmF?J^ z4Oo+vSeiwcm)V$}DVUh?8H9>C zJ=uw^*@SgjjpbQ_1(}PPnTG%JZ~npP{EeX*gkJ^*c5nHN_j!XCd5VX*hg-Rh%ejCv zIfGJHs$2zxEI8-tjpf@Fp+u zG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hjDHAXbqcQ?R@@K!m>l0t| z3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQR+HF(xB1EQ9e| z-@xuYU+^Js@iNcwDEDzYH*h5vaW%R{ zBQg|!^$EN_^9`T!9^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJur8~yJWH@3 zb1^g1@L>KNy|AF*JklORvE0EuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N( zu`+#84rDKO zW*atTJyvH0mSiF3W)`O9fBc7kG6sKV7zX9n9)aCEKIa48)ufMqo((>>hZ1;%h$PU0&mPp5Q_5;%2Vl zQqJRaPT)umVsCa~TQ*~T)?h`JVqxZCR;FWeCSp9sWF&@VFn;S6*uCcqKIAQ4<{2L4 zK5pj*uH+)l<`jW;h1t_b!3m z2fpMZ-sTmac^U<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T* z!nFL4|L{-7;O`8>p#0h~uzSbne88K$#M3;&z1+t2T)~B$#mOAQq3p-*?7)_6#M-RF zvMk2@%)yLI#iUHYIE=~&49TAz0bWF}fjK`Ra#IOv;Z|wuS_k6*Jyv55r!=v2C?cBhXT*TR&!m%92 z{_MeyY{kZ`!>TOD;w-?N%*518#)OQ^XpG2E{M9b-`ph?c%6q)d3p~j~+|4aq%VnI; z8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6im$cjK#IP@!Y^$CySIGC`@F%6 zJjKJ@!>wG$d2ponaW1 zUt0xs@A#Y#c$1fSnn$>o+qj-9xRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WNlnEGz zQ5k_D`Lku<^@*?fgm-z3=Xrt$xr>{*hD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49 z$(e}p7?Y70mcjU~MPT=yFZhtRc$sH-l>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR z1(=hWn3~C$kZ~D}5gCfVng?E=`G!w4faKJpbG^A4}_9FOw=cXAU~ za|!2i8pm@42eKDCvkjZF9;>qgOR^AiGYix5KmNl%8H2ww41@A(u3d^z>^D_rCG8L0D0pl<#BQPX?HVV8x@im|D zF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6E7LJK6EPlRG7`fw7{4_P z?B4SQAMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGZ_;yE~7Cb zL-ALG!0R*L@G0-{Ixp}f4{gFaUS4KZsKY#;apDRc#hye_F`wY zVN=#)byi?W7GiE@VOsvjfA}Y3@OOq`P=2iw*uCR(KHyDW;%Oe?UT))huHZt>;$)8D zQ1)YYc3?|3Vr^DoSr%h{=3qvqVp1kx97bgXhUCxMf!8O#<`drKHJ;}Q9^@`=<{B>L zJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`Iwof##$!xIVps;_w_1VSd%oa9-r{AR;Zg46 zc5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4V?xGdG)817{;C;xedZfJ>V|kWfLFQs+rs2Q*n}0Ame`9C{ z;g{-x-CI86ecs?jp5kHd;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lBoCgER< z%_t1d5d2Xs@cPJCe9Sw%%5yx<1Ki0?T+Jn%%V`|X5gf=~?94W7%6hEM3M|P&%*`xJ z%m4Tf|6~mQ&M*whuT=xPcYMwVyva*E%_H2)ZCuY4T*z6R%rP9we(cT;Y{^Ef%_=O* zV$9DR%*a$s$^?wVsEojn{8=UN`o!0K!n?f2^E|72lk9K_!2!nSP2 z`mDimll)ENe8Z=_$LqYnlRU)T+`_e7#`&DV zi5$hj?8B~X$L4InnykdqEW*6Z#`H|V#Ej2ajLdKh&hHfiyAOQHN4(7|Jj-L;&mG*z zRb0$DoXT+=&H?PnPHfF4tjlUF&k`)iT+GZg{Fi_84@T#249y_?QX#N=%V)gL8@$L< zJj^}Z%5_}M1)RxA9L*u@%WiDX7Hr5`tjsbj%6!bu3{1%+{EM*}h2a^3KgtJQANh)p zd52edj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2WjAOGQ>jKSX-hC%tY zTwwQ(&-s8id5NcagnPM->$!ppIg67yhC|tp-PwUH*@(4Sg=JZc`I&a= z5g3v`%LZPb_?l06m)CfnCwP#%xS4CXl=C>96F8EC*qdG0md#k7HCU0QSeSX3mFbwA zi5QPD8Hr&TjNi%xcJKLu4|$81d4@;1kK4I{E4hfXIfY|6jQ!bz9odSFS%+0wj>TDk zIhl#6nT!b;m(duJq4=wG;Pshr_>}i}ofmkLhq#+txR%Q}pEEd-qd1s-*p=T@G8&oI1g|qH*qzW za4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfIS%Km3z1_&dWeD8CjD?B4M?AMhqG@idQc zFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)0%;4x=&xL-J>_!0QuV^9k?r z8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqKE3y;|GY_*e9g{N=<1r>9F)V}eThYMo zJzwx4Z}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_guqw;3I14Z*Gch%jF(KnJ8Y40k ze-#P5KJyKq@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~1rswq zV=*$rF*v^$4(vYgB_HuNukb97aX)u(BUf=T=Wr^=aX1ICCp)nvJ-czxt6KIR=>IiF61mu<`@oT zKXzvawqzsLW)+rYG3I9uW@IWRWdg=wR7PM({>&eEed23A;ay(id7j`w?&4;y;Zn}y zbWY$%4q|V1VOut1eb!(_mSSP%VOFMNawcLt#$+UhWiWor7udb$3qIs6UgjAdEZsA%k<9yEGM2_NM_F-4HV{#7l2cz>hhGr0c z$sO3e9jg z!te~iAGrdrk9@_)yu+(J$KyP}o!rFLT*A4W#_=4%f$YW3Y{RCk$Lg%Wk}SmB%)+$% zkN@yb#^CP^!=U_{Gq8Kd=X}7Myu{Ny!oA$a^<2S)oW;o;!=dcQ?(D#pY{c5E!m=#J z{LI0OOvR*3z&MP`2n@-eIRdXwe9b4k%WFK(6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<4 z8m!1tEX+L2%5+T5M2yFnjKr`E#&6jJyZ3y-hrGqhJj0{h$L-v}m0ZNxoWijj#{TTV zj%>xoti!4-$Kou&oXo`3OvZ$a%V>%rL)^_RT+3yg&l#M^ zQ5?)Z?8N-WJH%*$*{&lF6|_>9HK49DR7o;9%hz?Xc)+q}ZFJjVUp!HrzS z#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_7`8WSybpFQB48kv20=u_-#{0a%i#)}{ z+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3&luW|E7@JWTo+0=nbKv!nulSgE zc$MdPoCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM;g_xUJn3n(XAO6W0{GDMKlwUIi zcJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ?mc^K#Ihc{Dn3M?^hfx`U zA^9_7;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{jP+TA6(yb z@feel7?#2KEkj`Uo-g>2w|JRnc$E9Nog284i#VH8IF`fMpFP--t=O1#Se4~ioCTPZ znV6c%n2>Q9jS(4&ztRU@pZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf( zrCEe|nT_e0f{7WQu^5@*7@XhJ1$H0!l8<2eCK1uq~UhK5MWdOR+HXFe}qBITJA+V=@xMG8n(54D8nw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*^Lz5Z?gL-)5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?6I-(h>#`clvjht=7c>8l z<9Q08!cYJJnr+*z)#8>`TW#64ZQHhO+qP}nwypQ>`8ofGnVF8snSe1FiJ=*UU(yG5 zZ~2V(d4m^uiif#}Te*(Qxqve{iK97$ec6re*@6vOinoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9pE;R@>6wBF z8H$!ppIg67yhC|tp-PwUH*@(4Sg=JZc1(}yQ zn2Bkal<^py5g3v`(*$0h_?l06m)CfnCwP#%xS4CXl=C>96F8EC*qdG0md#k7HCU0Q zSeSn^7qc=0Q!)`_GYZ2p7{8?s?B4SQAMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oU zvkt4W9E4A|JJT{5<1+>$G8BKM3cNn^4WIHJuk!*=@(_1(3)gZP=W_-pauf%% z54*A*o3jCHvJy+P2>)SjX5(*6#l(!ms0_#8{GKwf`@olc#M`{WvpmNA+`)}p#l@V% zsT{}Q9KfFJ#MW%Wx~#_XEW!VnkAE^V(=j;{FeW20G=uO5P+yRki6upw))GRv?i3os9}Gb2+o3F9&v!!rbbBoDkk@)aNR4zKbY zkMjU`auZi`3FmSe$8!V+vKKqE4V$tatFr=2vJmq#C$lg;Q!pW8F*3t2D8D8P?B4M? zAMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ_%q^D+lBF%6S49-}h?L-J?R z!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqKE3y;|^Ka&2R%T#ICSq(x zVOR#^wPy zS|($B#$ZH-;;+Pk*Jr-rQ{LlsUf@X{;%;u?S}x;!&fr9j;$Ze+SGHqwHegLwVrdrP zKg`W+{EexYm~j}D;TW9X69sl3_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j z)mWY-_#gA}PiAI1CT9Z1WF&@W5PnG**uCX5-scToIi zF61mu<`@oTKXzvawqzsLW)+rYF&1QA=3pkKVN%9pbVguE{)`uRed23A;ay(id7j`w z?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSQ4&0NgN3{1&HjLj$v%V7K#H?Vup7ktQD zyv#E^%6;6<4P41ZoXsg5%VF%#9_+|gY|J{W%5p5ufB6^x;O|V!WQ@-kjL1;@6({ie z%r|_>d%VsIJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_97VxtWc>F%=Ut4x=(0 zgY$dr!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-UkV?O@L%uL7R zOu(3o#Lx`FFR=o%}#L*nWzU;>KY{7=C#mX$hqAb8X z%+8EV%_NM=XbjH~{1G$o`p8#&%safwb3D!i+{sN`%_W@6X&lcH9LQem%r<2n@-e(F3nfe9b4k%WFK(6FkUW+{`sx%6Xj52^`5m z?9DE0%Vw<48m!1tEX==|i&>e0DVd0|8HHgPjNhUKcJKLu4|$81d4@;1kK4I{E4hfX zIfY|6jQ!bz9odSFS%+0wj>Y*e|KcC~ooShj@fm{=8H&H6240`}hEI8q*Li^_d5F8Y zg=@Kt^ErbPIf{eXhh5o@&Dnr8S&5}tg#R!%v+*~kVq(T&REA@4evcB^ec($z;%#2x zSsvql?%+nQ;$qI>RF30t4q#7qVrw>GT~=dxmf(NP$3K~w>6n}e7?Y70nnCy_a$xtC z&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhYnPpg%1(=7~nUSfPgmD>-;TeKI zA_ZO_`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%~?WlUbOaDVUJ4 z7@1)hlwTtTcJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ?mc>|*d6|Qm zn1)FikI@-{A^9^x;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{jP+TA6E=96EQZUFf4=dTlm24Jzwx4Z}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_g zuqw;3IRE8e{DZ$UEt4@mV=y8^@mILO>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^ zE8DR-8?YuTu{4YDALeE@{>D^H%s7n7a174xVFSAle91?=%_}_1W8BXj+{jg2%sHIO zaU9M8?8#1S%_gkNYAnwZ{EzwgCo?l0lQRKhG7>{G2)~30?B4Pj@AC#P@)Qqq54Un1 zmvaGUauP>#2>Y@d+p`55vKA||42!Y=^DsLzGBuMhE~7C#L-0rF!0RJl@iFi4D$nsa z4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF+X!M3)3?N6EYSfGYo_BYpB5P9iQ_7 zZ}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y7z;8lb1)OrFe&3PIwLS7e})Xa zKJhi5@Gh_MJWuc-cX2b2eCK1uq~UhK5MWdOR+HjW-exB2Bu^p#%2_T zWiWmV5!k)w3qIs6UgjAdHCJ2qzn)?_7?W)c3w z+|0(`n2L!Rhfx`h!TCK{VE2J9`G~i9g=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbs z+#8 z4rDKOW*atTJyvH0mSiF3XHI5edZu7P#$sfKVNibkb>RQIcYMwVyva*E%_H2)ZCuY4 zT*z6R%rP9we(cT;Y{^Ef%_=O*Vl2qK%)v}d!=#MI=#0RS{P{ER`o!0K!n?f2^E|72lk9K_!2!nSP2`mDi4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR|MD;X!QYvd$rzt87?Gj)>wDn! znQ!=%_jsKbc#?;>n_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnm~zb2A%%V=5+Q97bh0 z2Iu#0f!znbnoBsB(>R_ZIFP;AnQhpV^;n%1 zSdxX9pE;R@>6wBF8H$!ppIg67yhC|tp-PwUH z*@(4Sg=JZc1(}yQn2Bkal<^py5g3v`KLuW&_?l06m)CfnCwP#%xS4CXl=C>96F8EC z*qdG0md#k7HCU0QSeSn^7qc=0Q!)`_GYZ2p7{7fC?B4SQAMzG2^9+x2AGdP@S8@?& za|*|D82hsaJF*oUvkt4W9E4A|JJT{5<1+>$G8BJ(2)sV?4WIHJuk!*=@(_1( z3)gZP=W_-pauf%%54*A*o3jCHvJy+P2>)SjX5(*6#l(!ms0_#8{Qf?$`@olc#M`{W zvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEW!VnkAE^V(=j;{FeW20G=uQVyTI-( zpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i3os9}Gb2+o3F9&v!!rbb zybZiQ@)aNR4zKbYkMjU`auZi`3FmSe$8!V+vKKqE4V$tatFr=2vJmq#C$lg;Q!pW8 zF*3t2D8If5?B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ_%q^D+lB zF%6S49-}h?L-ObA!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqKE3y;| z^Ka&2R%T#ICSq(xVOR#^w^xDPd%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$} zVO5r6asJD{_y>PyS|($B#$ZH-;;)y1*Jr-rQ{LlsUf@X{;%;u?S}x;!&fr9j;$Ze+ zSGHqwHegLwVrdrPKg`W+{EexYm~j}D;TW9XUj%j^_>zx!n^$<2$GD$6xRI;4m~%Ll z<2alH*pr>unoU@j)mWY-_#gA}PiAI1CT9Z1WF&@W5Po?c*uCX5-scToIiF61mu<`@oTKXzvawqzsLW)+rYF&1QA=3pkKVN%9pbVguE{(KU6 zed23A;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSQ4&0NgN3{1&HjLj$v z%V7NWIIw%q7ktQDyv#E^%6;6<4P41ZoXsg5%VF%#9_+|gY|J{W%5p5ufB6^x;O|V! zWQ@-kjL1;@^(gTA%r|_>d%VsIJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_97V zxtWc>F%=Ut4x=(0gY)~t!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N z%d-UkV?O@L%uL7ROu(3o#Lx`FFAoB{w|vI?yuph+#lzggtz5_DT)>%}#L*nWzU;>K zY{7=C#mX$hqAb8X%+8EV%_NM=XbjH~{Bb|<`p8#&%safwb3D!i+{sN`%_W@6X&lcH z9LQem%r<2n@-ecLT3ae9b4k%WFK(6FkUW z+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX==|i&>e0DVd0|8HHgPjNk4AcJKLu4|$81 zd4@;1kK4I{E4hfXIfY|6jQ!bz9odSFS%+0wj>Y*e|KcC~ooShj@fm{=8H&Gd2VS4~ zhEI8q*Li^_d5F8Yg=@Kt^ErbPIf{eXhh5o@&Dnr8S&5}tg#R!%v+*~kVq(T&REA@4 ze!msiec($z;%#2xSsvql?%+nQ;$qI>RF30t4q#7qVrw>GT~=dxmf(NP$3K~w>6n}e z7?Y70nnC#GW?=W0&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhYnPpg%1(=7~ znUSfPgmD>-;TeKIZUkN*`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mech zS%~?WlUbOaDVUJ47@1)hlwYq0cJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkM zSesQ?mc>|*d6|Qmn1)FikI@-{A^G!K;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@ z*@bP{jP+TA6E=96EQZUFf4=d+ttACJzwx4Z}BqE@F@3jJ2!A87jZVH za4d(hKYOqvTd^_guqw;3IRE8e{DZ$UEt4@mV=y8^@z<5W>oec*Dev(*FYqJ}aW}Vc zEthdVXK*4%aWMO^E8DR-8?YuTu{4YDALeE@{>D^H%s7n7a174xmjk;Ge91?=%_}_1 zW8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZ{EzwgCo?l0lQRKhG7>{G2)|qk?B4Pj z@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d+p`55vKA||42!Y=^DsLzGBuMhE~7C#L-5DN z!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF+X!M3)3?N6EYSf zGYo_B>xIDX9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y7z;8lb1)Or zFe&3PIwLS7f1VG#KJhi5@Gh_MJWuc-cX2b2eCK1uq~UhK5MWdOR+Hj zW-exB2Bu^p#%2_TWiWm_7udb$3qIs6UgjAd<{LicJznPpp5!6!<`%ByGS24=PUI*KW*>HC zJ2qzn)?_7?W)c3w+|0(`n2L!Rhfx`h!TJ46VE2J9`G~i9g=cw;`?-S~xr&Q9hf_I@ z!#RLG*@>;$gmqbs+#84rDKOW*atTJyvH0mSiF3XHI5edZu7P#$sfKVNiZO8Q8t!b3Wir zUgBvU;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqLFQ!+W?~v9Wjsb_1cv0#6M@$! zzUC9&xoti!4-$Kw2#fAJ6g&a_O% z_>94b48>o^07E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!he{X z+4vh%F)`yXD#I~2zaI_kKJX`8B(QtSXS~lFyvS2L%st%7bzIH`oXJTX%^~c|ZfwsM zY{*)y%rY#>0?fng%*fPC!nlma@C?BphXb#Ve8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{ z?8VM(!=|jq>a4($EX4fG$t+CI6imoijLa|$%CCn4yLWuf2fWEkJk2BA%WYiG6(miY&##{F}L$l^K|li5Qzv7?#2K?Lc7no-g>2w|JRn zc$E9Nog284i#VH8IF`fMpFP--t=O1#Se4~iod5DK{=wgwmdO~OF&L4d_-lXQ^_g$@ zl=pa@7kH9~xSLzJmdiMwGdPi>IGBCdmF?J^4Oo+vSeixn4|6jce`6{pW*kOkI0onU zeSzHvzT_j`<`tghG4AIMZsaO1<{VDtI1c9k_GBlvW)s$BHI`=y{>Oa$lbM;0$(evL z8Hu48gkSasc5nHN_j!XCd5VX*hg-Rh%ejCvIfz4KX(OQpZJv0 z*p|&$pEX#KrC6AMGZ(Wm15+{)V>1fFG8n(@4D8A0$;QYQlu=~K5e8k(l!m~Wa z{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+@+`ssn2&!lGt)6S6EG$tF*Jkl%eKJoEuZl| zZ}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N(u`qgOR^C2Gbgh!JyS3tV=*$r zFetxn3GCkSIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=zQAoDT@GcgU5 zG9IHd0z>lW=D_O{U-Jp?@*2^L*C+Lp5amM<92S~N-pATPT^P%V}JHwN48>P)?rna zV{!h=zxW4#XIds>e8ylzhT^Y{f!Alg;Zxq@bza~}9^!6p;aV=^e9quRj^beUVOO?e zb2ea2R$^%u;XlmHZ2XO>n3!=GmEjni-!}wyANZ1wc$-&vmdCiCJGhanxR`S|mE$;^ z1K5+D*qTjPm(^IFCHNon@lR%EIwofV#$+UhW)OZ^AK1O+Gv4P7UgRkr<{ob4Ixgn| z&g3MH<`DK}H@0UBHe@YUW*HV`0p?+LW@Kt6VO&OIc!uDQb%EDMzT#uv;Z>gFaUS4K zZsKY#;apDRc#hye_F`wYVN=#)byi?W7Gi$pWEQ4p3MOPMMrIfW<=3@=-8(+#1K#8% zp5_tm@y>$_z}&M2yWS49j5r zwmPtT&lh~iTfEFOJj#9C&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&VTtA|KRUT%Vdnt z7>vkJ{Ix3Z`ph?c%6q)d3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd2CT_SEX^YPhq;-J zzcCdPGY+FN9E0=w%E0aeU-A)e^9s-M8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c; z|6@M>$;?d0wG$&l;@AQY_5BnTuJOfhn1Yu^EM78I0eS1a|NFf)9C%mwARq zxsThqfh)O)vpI!hIgI_;gB{t5jai3PS&qf|FaP2n{GDl;jPV(R5gCfV76)FR`G!w< zkJovDCwYjwxrJ-FjPp5z6FG{5*@s=(j?LMCHCc(JS%m*EH?#3Kreb2oVN`}=aDHDD z*nQwjKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Zd6wXR%*Q{Ondz9E2^f=+ z7@9%&Wnp0Vmd|*fH+Ye!c$j;*mFu{i3pkULIGRJ)m)+Q&E!dE?Sea#5lm(cF*_n~4 znS^l}jo}%BKNbXDANh)pd52edj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U61 znUh(Vo++4+u^5?Q7?fY<2X^oHoDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ogLVcjaZvi zSeC_Dka?MdnV5!28IRE!fg$;GUf}hKula;`d5!0Jf(N;ao4JNdIgishfg?GHz1f9r z*^KpBgB4kdh50vgF)K4LB@;0=qcALk@!Q#!=zu{i(bU;Kl=GcA)bK4UNT@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$=)G7Hl)1rstBBQp$x z^6QMi?j4`=0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKR|8FLN*x(=aLH zF*+kKB!5m1yguru|8|CB1^F_|7I>` zWd^2XBF1JEhGj5*n-h~wR%JOB z=fC`mfADvvWirNR3`S%q{+b$iedZfJ9>C zJ=uw^*@SgjjpbQ_|1lr`WM-ygawcF*Mq+3N;g`vQ-CI86ecs?jp5kHd;a0BWaxUOZ zPU2_|VPAG*d$wRh)?#IrVNn)f9%g4ore+exWi*Co2>zH9czxt6KIR=>(LeAo3j^R-DV|R97OEzL{R$*BdV?pL+4rXE+CS^QEX9R}i&k2FoC%)zr z-sLr(=LsIa#`uiE zhz!MF;{vbGe8Z=_$LqYnlRU)T+`_e7#`&DVi5$hj?8B~X$L4InnykdqEW&@7o7wmq zQ!z2)Fe<|_IKPh#>^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJur8~yJWKFD z=Hs8t%ydl71dPc@49y_?GA6Kl%V)gL8@$LxeoGVuDu*L=deyvFl9!Gqkz&0NE! zoX6>$z>yrp-t5A*Y{vSm!HO)!!u*@Ln3Wlrl8G3bQ5crN_-#aB_nt5Kkhgf5XLywR zxSbogl8ZQ-Q#h8x*q=Svk*(O6by$_}i} zofmkLhq#+txR%Q}pEEd-qd1s-*p=(yTF&T-W z8H8Vk26k`xjQ4qi7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj4OxqoS%yVffO(jm8JU_% z7?;r)o+0>SNZ|F6ulSgEc$MdPoCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM;g_xf? znT6?@f(aRmkr{?T`E_t$_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}Xfi2mHwONH_ zS&RjlmpPb;X_%Dp7@ZLql0OFpUZ41yPk5Ktc%CPCkh{2Fee=`@eG6PdG5o0q7!!j7Z4Giqw^93LB7BBM*k8&Tka|2g$5odD>$8s3^ zvj;n}6&te-tFj!6^I!hOKlnS-G8yAD1|u>Qe+>w{KJyKq@*c1A0#EV~cXJEZavA4y z1}Ab92eS{mvK^bV0c)}nOS1_7VQyyQZ%oC+jKio5$Kd?lKd}42mwd$Ayu!0Q#{JyE zjaK53@5PQ!@$UG8)4(1b_4mygu?3 zAM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL36m0!y+G^D`&2Fg;T+A!9Kz!!Rhn z_6h9X@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDKu^{s@2Qx7ZlQJHo zGXg{MXYau46JPTQ@A4YY^8^oa7dLYamvSDba{@P7M26z8o`KhAzTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV{)${hGr0c=^og<%rL)^_RT+3yg&l#M^Q5?)Z?8N-WJH{D--jjlVG! z6EhB@G8}{Rd&j`;17GqHZ}SSz@)-AX2RCvR7jq7$avXjWt$K*`Fn2f~G48kuR0=u_-#{0a%i#)}{+{3M0$K_nWnViJY9Kycr#`bK%hOEWP zEW@HKz&y;(j7-fWjLT>Y&k+34KJfa;SA5JnyvlPt&I8=ZO^ zY|479&I&BaLd?&c%)<0c!Gw&($PB}v{Ms(Cd&lQ|z?;0p(>%hx+{X1>!G)Z~$sEI> z?8olxz?N*p+N{E|EXIP&%N)$aG)&5PjLrxQ$)9ZluTOlyid*@GR~ij7%^RauV3`7i(CAN-wZnT+ungAo~uzgh=gpZSJQd5_n5 zfhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf(rCEgkFgLUDH>P4@#$i;3V{m?N71({? zOFrUlUg23D<9_boMy}#w&f!#!<8TgOPj+H!Hep>>V|kX~f6T`}nVIRBoCz3{krS&!9OfhAdp`I(bh zn4T$^kg*tp!k*qt5Nl8soKRalnA zSde*{gPE9yNg0pP8G#}BvsvKviLd#DcX^HHd4dPIi<`NIOF56zIe{ZNh`rf`ZP|?V zS%Vc>iiP<%b1^G3FeMW)Hlr{sgYjF_!0tU?@F8#UGSBcR_i;Nna3vRUHm7hbhp|6< zup?WsG3&4@%dt5Bnw{R_&aXx2o zB1dsB`>-q9u{j&CCM&Tti|`-jW;XuDR7}h`jLL8f&hL!_yAOQHN4(7|Jj-L;&mG*z zRb0$DoXT+=&H?PnPHfF4tjlUF&l3EP`S>R@GaZvN0b?=}Lo*1!Gz#qA@)_^*1~2jy z4|5NN98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!{?GB0y56Vos$<1soT zFeHE054=9{HJ|VL)KztmSIsAU>;^?My6&G#$_~yX9)hN6?lE*D?a8OUgbF+=K=2ICa&fZ z&gC?Y=LimDFLq`dHf23lX9bpIA?9aJW?_1!U_!=XWQJi-eythUz2kE};7wlQX&&KT zZsU5c;6l#gWRBrb_G5Q;U`sY)ZB}7f7Gpu?We#Ry8YX2tMrQ_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#M%n48)78&fec z<1i}2F*v_h4eUPfB_HuNukb97aX)u(BUf=T=Wr^=aX1ICCp)n&TPY` ztjFrCz>+M){LINLOwSZd$XJZbFbvACl>)nWe9i~F$xA%VBizevT+bC;$XT4sF&xT% z?9L8s$wsWrDlE%lEXcgf!AwlUq>RVtjKGlmSuybX#MgYnyS&EpJi&w9#m!v9rJTp< zoWPMB#NO<}wrs}wtig&b#lrlXxtNt1n39PYn^72+!T7C0VE3Lc_>i}FnP+&E`?#GO zxRQ%Fn^QQJ!`Poa*paQ+m~~i{Mc#ylenQOR|^EjOoIFf_dn_bwJ%~+o` zSdpbznE&H=o&u;a6aau`+qP}nUahuTZMAGH+qP}nwr$(CjrZ>PIsd09^D#R!FeMW) zHlr{sgYjFX!0tU?@F8#UGSBcR_i;Nna3vRUHm7hbhp|6ZtFi)1vJi7K z3)3$G8BJR47@(`4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54*A*Td*N(vpOrY zEQ>Keb1)-QF)`yXD#I~2zgGzCKJX+unNnuI14Z*Gch%jFfOApJVWqDxxniqU-2>T@G8&oI1g|qH*qzWa4x5D zJV$UKd$BYBV>8z0-~5A>Seiwcm)V$}DVUJ47@1)hlwZpRcJKI{4|tQ8c$!DJm)p3W zE4YxeIGJNOl>OM99oUME`7i(C?<~&}EXZ8U%rs2Oc#O^n49TBm0vJ@czxt6KIR=>{*hD$k*(>Z}7 zIf%X4g>BiK4fqfLd%VsIJjp}c z%`IHZWt`6$oXAle%s%YOc5K0htj+4I%(5)T{LI0OOvS{E!>A0$;QU@Fu=~K5e8k(l z!m~Wa{oKKgT*bwl!>Js{;T*u8?8G)~%6hEDYOKgoEX+L2%5+T51dPc@49y_?QZTT4 z%V)gL8@$Li}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ- zgmqbyRat>0S%|rrg=v|L@fm{=8H&I11YV!{hEI8q*Li^_d5F8Yg=@Kt^ErbPIf{eX zhh5o@E!dE?S)G+xmc^K#Ihc{Dn3!=GmEjni-*X3cANZ1wc$-&vmdCiCJGhanxR`S| zmE$;^1K5+D*oIA6kF{8h6(yTF&T-W8H8VQ1$J-wjQ4qi7kP?@xrbZ1 zj?1}#GdYQ)IfQ-LjqTZzjaY{@ScTLJWl5Xj^rTrW*4?)b2i{V{FA@242v=!voixzG7)1l z3d1rOzhw*T-tz??@)j@i43Bajw{rtmauH{93deF7`?Ci-vNfBqE^D$XE3hOBF*ma? zEt4@mV=y8^@mJQs>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DRJ8?rX5vog!F z81pj+GcpwuGY+FN9E0#zo^upEoC0CO@EQ!@$UG8)4(1b<`-ygu?3AM*~c@*I!z0C#c|S91yHavH~T z1P8JgJM%v_V}1V3KUj&SS%i6+jp>72lk9K_!2!nSPA2KHCJGNj$)@F59W?2?ve&%3Creb2oVN`}= zaDGo4*nQwjKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc48YgWj)qnHCALP7G@r1WjZEj z0>)${hGr0cNfX$; zPG(|iCShDgV|a$(kJN$JN50}?-r-fA<8dC~PHy6AF5z5G<9LqXK=xv1{>Nsl&%gNx zE3q_-FfX$)JyS3tV=*$rFetyK3hdtTIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fuy z8}ncO#ot+;C0LNTn3-vql<^py5g3v`QwCn2_?l06m)CfnCwP#%xS4CXl=C>96F8EC z*qdG0md)9K|L{-##xg9*e9X=aOvyxy%_t1ZVEmRMuzSxJe8^k8%riX7eca9sT**b8 z%_$tqVeHQy?8w$^!n&-94b48>o`1Fz3~!>7E*>%72|JjC7H z!nIt+`JBOt9L2%x!>(+{7Hr7ctj@|T%VNyW9L&g6Ow2fp%5V(M@5utY4}8f-yv-{- z%VXTn9o)!OT+BI~%5fad0qn_6Y{RCk$6Bn$iY&##%)_iq$K*`Fn2f~G48ku-1G~3; z#{0a%i#)}{+{3M0$K_nWnViJY9Kycr#`bKY&k+2P zB=GvkSA5JnyvlPt&I8=ZO#7kJIk{K3o;io zGYyk69-}h?L-J>$!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@IUDdF{>k51 zhDDi=*_nYUnTW9&g<%*Z*_usQ zmo-_H6IGBCd zmF?Jq4OyGjS(#;7jQN>^8JUWS8HZ6Bj=}joeqi^3FZqbKd4*?rjQhER8@Y;$Ifqj@ zj>9>CJ=uwE*p&5Hi`7_>rC6AGn3d_6oCz3{kr^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNJFyL$vL0)( z8Y{9C3o{S1G98mM0b?=}Lo*1!L=WuV@)_^*1~2jy4|5N<2n@-eQ39_|e9b4k%WFK(6FkUW z+{`sx%6Xj52^`5m?9DE0%jRsrfA}YVV;L4@K4xbIreq?vkJ{1rOz`ph?c%6q)d3p~j~+|4aq z%VnI;8Jx&b9LzrK%64qQhOEu%tjw}3#{A5|j7-JEjKio5$Kd=PDzN*&mwd$Ayu!0Q z#{JyEja&is$fSf79M4_0Dn7GYjyV|u1wLdIfb zhG9^C4IbFN<8waXO(LeAo3j^R-DV|R97D>ml8{ENS{JWH@3b1^g1 zFe&3PIwLS7e+CP@KJhi5@Gh_MJWuc-cX2b2eCK1uq~Uj0srBj{EcN; zl=+yQ8JLoZ7@JWTmcjTfXkhoAFZhtRc$sH-l>4}y8@Q5-IGa;Amc!VeJ=l@0*@Sgj zlT}%PC0U5MnT2VYjPV(R5gCfVf&^Zl`G!w#zo^upEoC0CO@EQ!@$UG8)4(1b_Spygu?3AM*~c@*I!z z0C#c|S91yHavH~T1P8JgJM%v_V}1V3KUj&SS%i6+jp>72lk9K_!2!nSPA2KHCJGNj$)@F59W?2?v ze&%3Creb2oVN`}=aDM+B*nQwjKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc48YgWj)qn zHCALP7G@r1WjZEj0>)${hGr0c`4rf_PG(|iCShDgV|a$(kB@=ZN50}?-r-fA<8dC~PHy6AF5z5G<9LqX zK=xv1{>Nsl&%gNxE3q_-FfX$)JyS3tV=*$rFetx%2<+bRIUn#QFYz>wa4)xUJy&oc zXK^yea47q+J3Fuy8}ncO#ot+;C0LNTn3-vql<^py5g3v`-v?fw_?l06m)CfnCwP#% zxS4CXl=C>96F8EC*qdG0md)9K|L{-##xg9*e9X=aOvyxy%_t1ZVEpzjuzSxJe8^k8 z%riX7eca9sT**b8%_$tqVeHQy?8w$^!n&-94b48>n>1Fz3~ z!>7E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{7Hr7ctj@|T%VNyW9L&g6Ow2fp%5V(M z?{5OT4}8f-yv-{-%VXTn9o)!OT+BI~%5fad0qn_6Y{RCk$6Bn$iY&##%)_iq$K*`F zn2f~G48kw31G~3;#{0a%i#)}{+{3M0$K_nWnViJY9Kycr#`bKY&k+3aD)9QqSA5JnyvlPt&I8=ZO#7kJIk{K3o;ioGYyk69-}h?L-OZ~!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E* zvkTj@IUDdF{>k51hDDi=*_nYUnTW9&g<%*Z*_usQmo-_H6IGBCdmF?Jq4OyGjS(#;7jQN>^8JUWS8HZ6Bj=}l;X<+w(FZqbKd4*?r zjQhER8@Y;$Ifqj@j>9>CJ=uwE*p&5Hi`7_>rC6AGn3d_6oCz3{kr^|@%AMrM?@GOsUKX-5=S8*}ta4N@f zI0vvNJFyL$vL0)(8Y{9C3o{S1G98mM0b?=}Lo*1!+zssB@)_^*1~2jy4|5N<2n@-ew*s$E ze9b4k%WFK(6FkUW+{`sx%6Xj52^`5m?9DE0%jRsrfA}YVV;L4@K4xbIreq?vkJ{B<$#`ph?c z%6q)d3p~j~+|4aq%VnI;8Jx&b9LzrK%64qQhOEu%tjw}3#{A5|j7-JEjKio5$Kd>a zA+Y&is$fSf79M4_0Dn z7GYjyV|u1wLdIfbhG9^CJsa4)<8waXO(LeAo3j^R-DV|R97D>ml8 z{ENS{JWH@3b1^g1Fe&3PIwLS7f1U}vKJhi5@Gh_MJWuc-cX2b2eCK1 zuq~Uj0srBj{EcN;l=+yQ8JLoZ7@JWTmcjV#bYS4}y8@Q5-IGa;A zmc!VeJ=l@0*@SgjlT}%PC0U5MnT2VYjPV(R5gCfVP6b|{`G!w6(92suksv^^8j~p z6IXKy=W-gya|8#n7d!JmHe-GM%|BR)rCEe|nT_e0f(aRmkr{?T`E`F__m0o`fH!%G zr+I{XxsB_&f(to|lR1V%*^k}Xfvwn>|MD;X&hjk5g3QItOv9v%$LNf}ko>tX@cP8p ze8RiD#`8SEgWScR%TfiV}9mf zMy6t7#$i;3V{m@o9oT)~OFrUlUg23D<9_boMy}#w&f!#!<8TgOPj+G(Hf255Vl`G| zDHdiPW@S1iX9C7#B!*@Xe%Te+z2!6B=M7%uDIVq?Zsj^I=K{{;B#!0~_GLG=XG=C> z9oAqKmSb@iU`}RYY9?V^Mq_w};E$bw*GInMW8UFap5t*I;7)GhYA)eiPUCov;6V0b zXa2`#tk1vs2P?5Oi!d*9%}o+Vh2xtN)0n3VAtoe>z4Keq>7pZJv0*p|)NfdBAM{>Cya%6!bu3{1&HjLj$v%V7MrEwFpf7ktQDyv#E^ z%6;6<4P41ZoXsg5%VF%#9_+~0Y{I&%$*Qctk}SmB%)+!x#`uiEhz!MFTLZ7pe8Z=_ z$LqYnlRU)T+`_e7#`&DVi5$hj?8B~X#};hJ+N{pXEX!id&m7FiR7}h`jLL8f&hJ|S zyAOQHN4(7|Jj-L;&mG*zRb0$DoXT+=&H?PnPHe-btjAic#)>S(!py_0OvmI*z?h80 z&lWhQR9+U-Jp?@*2@AO6YTScXNJkJ*`lDVd0|8HHgPjNjG=cJKLu4|$81d4@;1kK4I{E4hfXIfY|6 zjQ!bz9od>qSeG?fl@(Z$g_xUJn3l;HpD`Gbq4;ZE;Pshr_>}i}ofmkLhq#+txR%Q} zpEEd-qd1s-*p=Fed6<>yn4Ae1laUyjLHK1&VE2~Kc%L_T zk*9c=d$^VBxSR_(lan}_L)e$y*q$xfh;>+lRalP2S%5j2iK&@{aT$%_8G=7n2VNif zijR4RS9y-dd4M~)iL1GUb2*LUIf4V(i=Fu&o3TFs<{zxY(k#Nf%*OOg!Gw&($PB}v z{JJWzd&lQ|z?;0p(>%hx+{X1>!G)Z~$sEI>?8olxz*cO`fB6@GXL*)jLFQs+reRXX zV{}GfNd8st z0!y+Gb2AImG8yAD1|u>Qe=QHZKJyKq@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK?En zA#1ZbE3+(%F+X!KBU3Rk<1i}2F*v_33+z7dB_HuNukb97aX)u(BUf=T=Wr^=aX1IC zCp)nXo3b8ju^KC~6bmyCvoal%GXY~V5<@cxzbp;x-trmm^9C>S6c2L`w{jhqa{*^^ z5=V0g`?4F`vn3m`4r{Oq%dt2MFefuHHIpzdqcJ=~@W+zC>my(BG4Jpy&+#}9a3?o$ zHJ5NMr*S+-a3FiJGyh{V*5}{+gOymCMVOb_n4T$^kg*tp!k*qt5NijDa%|Kjf~&k`)iT+GZgOv-qS&Ik<2pNj&oPkhZM zyvu7m&l5bzUEItyT*`Tz&IugJLF~;gY|G|sz<>BBe`6UIWjP7 zM26z81%cORzTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV+%H9ZB}PxmSr*KXAWj$ zDkf$eMrAk#=lA)6-3PwpBi`l}p5-y_=MHYYO~63*o`j^_vtWG{B+ ze{9D3{F{HU5=*lP^D-OLGX)be79%qZgYxT~!0sKN^8s)25>N98_i`K8a|IW27AJEI zhq52LvjbbPG5_UX{GH`lf(4n2nVE)38IRE!fg$;GcHs4iula;`d5!0Jf(N;ao4JNd zIgishfg?GHz1f9r*_;jd5C7zEEW@JA$L!3&luX3fjKZ)C#&5F%yZ3y-hrGqhJj0{h z$L-v}m0ZNxoWijj#{TTVj%>{)tjn6L$_gyWLd?x9Ov_}9&lrrzQ2aGB@cPU*e9C*g z&I>%rL)^_RT+3yg&l#M^Q5?)Z?8a5JNEXMrI!Hi7B#EiqJ49DR7J|nRE zz?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^HHf+jzti@`q$WkoKJj}{;OwI(1$w&;% zAp9~tuzSmAyw4lF$WuJbJ>1H5T+RiY$w?f|A?(X;Y|oZ##5%0ODlEt1EWn)1#MDf} zxQxc|48b4M0HX%=B# zW@CD$U_!=XWQJi-ew`ZFz2kE};7wlQX&&KTZsU5c;6l#gWRBrb_G5Q;U@JD}zx<28 zvph?%AagM@(=aLHF*+kKB!5l`ygur zvjP9%pZtwwSd{sgof(*ti5Qzv7?#2KZE|4uo-g>2w|JRnc$E9Nog284i#VH8IF`fM zpFP--t=WWiS(8;+fhAdpxtWD&nT+ungAo~uza|An4dYAk*S!NaTt~17@XfH26i9#l8<nSe1FiJ=*UUnT^0Z~2V(d4m^u ziif#}Te*(Qxqve{iK97$ec6re*^-S|hc#G*noBsB(>R_ZIFP;Ang6jF>+^5^!AdO6BFxKdOwSZd$XJZbFbvAC z;{v;Pe9i~F$xA%VBizevT+bC;$XT4sF&xT%?9L8s#m4-XfAM#gX9*T$E@oyLCS^QE zX9R}i&#{5mC%)zr-sLr(=LsI1fFG8n&&3GCkU1t0PjFY^qKav!&I16OhpXLAb2av1xw2RpJgo3JixvMMXE zBnvS&voI}_F+O83B17@l=)mhU-|#8#@j5T?BoA>nw{R_&aXx2oB1dsB`>-q9u>~8l zHmkET%d!~rGY2y=6%#WKqcR+W^ZTg4?gL-)5pVMf&+-`ea|bta6&G_3r*a&Ja{zm? z6Wg#U>#-KAu_8;cF!L}g(=j;{FeW20G=uQV$iVI`pYc9#@FGv~F!yjP*Ks))a3&{l zG>5P+yRki6vJvaB2CJ|fi?aZ8G80oX3F9&v!!rbbj0n6w@)aNR4zKbYkMjU`auZi` z3FmSe$8!V+vKKq^KQ?21{>?vFiKSVDd6|vrnSu!!i;)?ILHTufVE2yC`G7ZhiKlsl zd%2D4xq=Hhi<3EqL)nkr*@3OtnE&!G{?76&!Gg@i%uK_ijK}DVz>xeoEb#io*L=de zyvFl9!Gqkz&0NE!oX6>$z>yrp-t5A*Y|aM!hkx=nmSIumV|Hd>N+x1#MqyY6^L*C+Lp5amM<92S~N-pATPT^P%V}JHwN491Y)@4mrWd)XGA?9Wlre!k5XADMU zDE=A}czxy@KIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a%ZU_;hsbyj9s7Gr+qU`D25 zV#Z-qhGTGk9~{_y;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{p8#ZM<)?zhQWGNPA z9%f}aCT9Z1WF&@W5PlgH*uCX5-scTob4VvoSqWFd<_xGQ%(^zYYlO-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz z`>{JauoWBgU;f44S)L_Wkhz$dX_%Dp7@ZLql0W+gUZ41yPk5Ktc%CPCkh{2PyWU-EXsV$&J0Y+M2yWS49j5r)-SMo&lh~iTfEFOJj#9C z&JA42MV!qk9Lr(s&mQc^)@;JMtjVgZz>+M)+|0tXOvd<(!H5jSUws3w&wRtDyvOUj zz>_@0-Q2>pT*mpF!HFEj!R*7XY{wRC$l9#V$}G!b%+DOm$W%1049@R;0=o}< z$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv;rmV+Wtj3Bg#lp%}#L*nWzU;>KY{^Ef!y2r@axBgQ%*jkl%_NM= zXbjH~{Lw4$`p8#&%safwb3D!i+{sN`%_W@6X&lcH9LQem%>USo_4zmdU?rAj5$0t! zre_K!WGqHz7zX9no`KyvKIa48qIe6n}e7?Y70nnC!bOJMhw&v>6Vc#)@g zn0vUD>$sc?IFpk&nnT!^-PoQj*@$&mgH>3L#aVzknTe^HgmD>-;TeKIItN}K`HGKu zhgW%y$9aG|xrwW}gmXEK<2ix@*^8a|ADgj0|K=a8#L_Inyv)Y*Ou>YV#mEf9p#0h? zuzSbne88K$#M3;&z1+t2T)~B$#mOAQq3p-*?7&uR%zyb8e`k4?U_s_$W~O0M#$$9w zU`YP#7#`=RvI0x8 z5OXsN(=r+3GX^6v6o0i3ygu^{pYk5B^8!!u5O;G6*K!%>a|S1J6bG{pyRscyupw)+ zIxDj*i!ncQFe6hjG2<{Q!!bC&w+rk(@FgGdHm~q3k8wYDa3fc7G3Rh9$8k6ZuqQjQ z4V$taYq1(DvJ?w553@2IlQRKhG7>{G2*0!q?B4Pj@AC#P@)Qqq54Un1mvaGUauP># z2>Y@d+p{Gbu?}mn%Ktc?rvNGp1puJgwr$(CZQI^zaka(O;<9bqwr$%s-@E7M{2!KM zaTZ`sW@2h4VO&OIc!uDQu7TG_zT#uv;Z>gFaUS4KZsKY#;apDRc#h-{_GeFaWji)! z1J-0EmSz#=Wj3Z~3MOPMMrIfW<<~BO-8(+#1K#8%p5_tm>V|kWfLFQs+reRXXV{}GfNdD{`czxn)KH*(n<9VLoLGI#auHjP7<8)5o zC=TTS_F^}-XA3rDEmme37G*wWX9lKZBF1JEhGj5*>lE0%=L)JO5o@yw%d!~rGY2y=6%#WKqcR+W^Lxv{?gL-)5pVMf&+-`ea|bta6&G_3 zr}97k%fbAUf3OSNvKi~M1}m}@3o{S1G98mM0b?=}Lo*1!vTDkIhl#6nS^l}jo}%BKbi+#ANh)pd52ed zj>ma`JGqIgxrB2$jpI3zL)f1^*_G|soDEo$l~|fZn3vg@o++4+u^5?Q7?fX|1$OWF zoDX=Dmw1{-xR=|wo-4SJvpAV!Ih+I8m)+Tkt=WWiS&ijcf(4n2nVE)38IRE!fg$;` zY2fvVula;`d5!0Jf(N;ao4JNdIgishfulH-1K5k**q$xekhNHuWmuH?n4KAzl8G3b zQ5crN_^nA`_nt5Kkhgf5XLywRxSbogl8ZQ-Q#g(zIEek&gPqxiO<9lCS%D>4h`E`C zX_<`i8G{iSioY5MUZ44fPkE2md4VT+h`YIkYq^Z`IfD~9n#1@Pd-FGTU`sY)ZB}7f z7Gr+qU`D25V#Z-qhGTGkZxq;l;7dN@ZC>G79^-!Q;6|?EV$R`I{>Ohgn1AvQc41pK zV|~_OMV4Y==3!Q*V{#^7Oh#g82H}^6f!$j^<9*)XMV{he?%`Ih<8m(GOitn${=>i7 zhrhEUTd^_guqw;3I14Z*Gch%jFfOApJVWqDgTU(}U-2>T@G8&oI1g|qH*qzWa4x5D zJV$Z}`?DvzvK^bV0c)}nOS1^`G8@w~1rstBBQp$x@@xIT?j4`=0dMjWPxA=(avRrk z1s8G_Cvz-^b0GV&J3Fy8o3Jjcu{=w#AagM@(=aLHF*+kKB!AWmygu$8iJ)u^)S|GuyB!>#;g3up|pHH?uG;lQBMHFd{?oSDnD? zGvDwj@9{b>@FWj$H@9#tmvKI4a3V)@82@5#{>Bb$$wsWrDlE%l%+DOm$W%10 z49@Sh1G^7=$w$1+D?H0%+|M1{$W>g-Ih@M>_%8?ZPyWF!Y|Cb>&l;@AQY_3o%*u33 z&IF9fNDR#&{8B5hd&_6M&l|kRQ#{N)+{$%a&IO#wNgTs}_&59TcXnheHf9}GWjPjS z0p?^Tre+exWi*Co2>z%Uczxt6KIR=>(LeAo3j^%I;WM6h? zC$?r2)@3!8X9*T$E@oyLCS^QEX9R}i&+38KC%)zr-sLr(=LsIxoti!4-$Kou&oXo`3Ov1Q~#_$Zm zAC&^Hk9@_)yu+(J$KyP}o!rFLT*A4W#_=4N-WJH%*$*{&lF6^ zSd7dt49c$+1G{&8&Ii27OFYdZ+{xe|A@KUd*L=deyvFl9!Gqkz&0NE!oX6>$z)>8^0qn(YY|j>K$Xcw- zGAzn`%+3r<$wZ9JC=APB{8m1&d(Rhq$XmS3Gd#+D+|CVL$wi#aDICWU9K?R?!Om>M zrmV;6tiX~i#N5onv`ohMjKPQu#b4zDug`qLr@Y7Oyugz@#NFJ&wOq#eoWY44&0+kD zz4;qEuq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&mksPb@FgGdHm~q3k8wYDa3fc7G3Rh9 z|Kqru|8|CB1^F_^DryZF*y@3CL=L4gYZk4!0s)d@jh?xB2V!!_i!uM zaXA-oCMR(W|KZ>4!{6DFt=O1#Se4~ioCTPZnV6bM7?;r)o+0?7bl~-oulSgEc$MdP zoCmm*o4A@wIG58no+CMg{n?XU*^bTGfHhf(rCEe|nT_e0f(aRmkr{?T`L$GF_m0o` zfH!%Gr+I{XxsB_&f(to|lR1{dIgowXot@a4O<0%JSe_+Vkhz$dX_%Dp7@ZLql0QoZ zUZ41yPk5Ktc%CPCkh{2n_IY+%Q&AiIFX|{jDN8=e`5!>WFyvQ6_#Z& z=4TFOWGW_R97bh02Iu!;f!znbygu?3AM*~c@*I!z0C#c|S91yHavH~T zB!{p+d$KFru{j&CCM&Tti!d*#`clvjht=7c(;rlQJHoGXg{MXQ9CB6JPTQ@A4YY^8^oa z7dLYamvSDba{@$G8BIm2)sV? z4WIHJuk!*=@(_1(3)gZP=W_-pax{nWFZSkd?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8 z{GLCs`@olc#M`{WvpmNA+`)}p#l@V%sr--saxnkoAMC=mY{vSm!HO)!!py_0OvmI* zz?h80&P)?rnaV{sN> zPG(|iCShDgV|a$(kGz4`N50}?-r-fA<8dC~PHy6AF5z5G<9Lqb5cX$Jc4a#@X9Lz` zC6;Cp=4CdfX9^}{EJkJ+2Ibd0f!#Yk=L6p4C7$LH?&UVF=L#<5EKcTF4(CAjWp{RB zYc^qBR%3aVU_s_$W~O0M#$$9wU`YPV9e91>Yd+y!UgLS5;6d)6*Jr-rQ{LlsUf@X{;%;u? zS}x;!&fr9j<}m)n-u#Un*piJ{n^jnr#h9Ntn31WNm~j}D;TW9Xa|CuD_>zx!n^$<2 z$GD$6xRI;4m~%Ll|M6cA=AZn7UD%e*Sf4dmk)>Fed6<>yn4Ae1laUyjLHH$mVE2~K zc%L_Tk*9c=d$^VBxSR_(lan}x|L|}2;qUCoR&2~VtjcmM&H~KIOiaxrjLT>Y&k+2P zE%5rtSA5JnyvlPt&I8=ZO%hx+{X1>!G)Z~$sEh!9LT=x&Q5I2CalY9EYA`w$Xv|K zG)&5PjLrxQ$)8yQuTOld%VsIJjp}c%`IHZWt`6$oXF7}#=qE` zzp(>bvJq>u3d^z>^D_rCG8Gdu4x=(0gY$dF!0rQI@)2+I3eWNw_j3m~aupYI4yW=z z{>#DqlYg)a+p-z!vj!`&6bmyCvoal%GXY~V5<@cxzhnsP-trmm^9C>S6c2L`w{jhq za{*^^636f#{>?u8ogLYVjai3PS&qe7fH|3oshNav8I9o?f^J=vA**qjYmla*MSMVOb_n4T$^kg*tz4y*_YkfiLKd$byi}FnP+&E`?#GOxRQ%Fn^QQBBRGit*n^$fhD}+I)mechS%|rrg=v|L z@fm{=8H&GB2VS4~hEI8q*Li^_d5F8Yg=@Kt^ErbPIhw=x7kl$Jc3?|3Vr^DoSr%h{ z=3qvqVq(T&REA@4eoqzHec($z;%#2xSsvql?%+nQ;$qI>RQ|_*IhcR)4|ZW&He-F( zU`3W#!=zu{aAbCo?fMlQ1r$F+4-?M~cAfBVX|`@9-+m@i-4~CpU35mvAnpaXd$I z2>Y`qyRsddvjJN98_i`K8a|IW2 z7AJEohjSqNvO7DmHJh+5tFb&wupo0WGt)3B<1soTFeHB_3%ow@HJ|Voec* zDev(*FYqJ}aW}VcEthdVXK*4%a~S_(Z~n#(Y{^Ef%_=O*V$9DR%*a$s%s7n7a174x zi37V2e91?=%_}_1W8BXj+{jg2%sHIO|M)Kl^H2W4E^NzYtj`*($WkoKJj}{;OwI(1 z$w&;%ApDXjuzSmAyw4lF$WuJbJ>1H5T+RiY$w?f;fA}~1@OO4(D>h~wR%JOBX94D9 zCZ=W*#$_~yX9)gC7iiMenS(%Q>nSe1FiJ=*UUt$M#Z~2V( zd4m^uiif#}Te*(Qxqve{iDUQ=|7IWl&W>!w#;n7tEXU$3z?{s))J(#-jK=T`!5^^# zuaA7i$GpRRVtjKGlm86)ue#MgYnyS&EpJi&w9#m!v9rJTp ze9X=aOvyxy%_t1ZVEh(6uzSxJe8^k8%riX7eca9sT**b8%_$tm5gf#R?7_}#!=|jq z>a4($EX3T*!n91r_>94b48>p307E*>%72|JjC7H!nIt+`JBOt9L-_;i@o_9 zJFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zef%1KJXo3TD?up&#bF!L}g(=j;{FeW20G=uOMc#ylenQOR|^EjOoIEq6#fW6p_?b(72S&NlfhDDi=*_nYUnTW9&g<%Kf*qLqEl=WDh6IgEd?H-BRXwqzsLW)+rYG3I9u zW@IWRW*kOkI0onUaDm+izT_j`<`tghG4AIMZsaO1<{VDtfBct&`6vHi7q(?H)@Kb? zWGNPA9%f}aCT9Z1WF&@W5Pk_8*uCX5-scTob4VvoSqWFd<_xGQ%(^zlIL%-tjpf@Fp+uG>>pEw{bmJa3N=L zGRJZ_2eL1_vlCmh3G1>N%d-RvG8Z#54U;k+qcZ|S@@J^P>l0t|3Geb6&+`Niau+vq z4VQ8rr*i^FaVQ6{7rU`NTd*N(u`_W*vkjZF9;>qgOR^AiGYiu)8RIhsBQg|!g$TSp^9`T! z9A0$;QSsu zu=~K5e8k(l!m~Wa{oKKgT*bwl!>Rm_|8g+@%}#4-Gbf3pvNXGgYTW7c6+mSb@iU`}RY zY9?V^Mq_w};E$kz*GInMW8UFap5t*I;7)GhYA)eiPUCovG zT~=dxmS92VVrHgcQpRI+Mqo(({I&1@uTOle8Gpj#mhXyquj^s+`yGw#Mzv} zaU8)x?8hGL%rd%VsIJjp}c%`IHZ zWt`6$oXF7}#=qE`zp(>bvJq>u3d^z>^D_rCG8Gdu4x=(0gY*0M!0rQI@)2+I3eWNw z_j3m~aupYI4yW=z{>#DqlYg)a+p-z!vj!`&6bmyCvoal%GXY~V5<@cxzkCbq-trmm z^9C>S6c2L`w{jhqa{*^^636f#{>?u8ogLYVjai3PS&qe7fH|3oshNav8I9o?f^J=vA**qjYmla*MSMVOb_n4T$^kg*t< zVHlKOzXW#g_?!=Tlb3j!N4S^UxSlJxkh3_MV>z4y*_YkfiLKd$byi}FnP+&E`?#GOxRQ%Fn^QQBBRGit*n^$fhD}+I z)mechS%|rrg=v|L@fm{=8H&F?240`}hEI8q*Li^_d5F8Yg=@Kt^ErbPIhw=x7kl$J zc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4e*X~Iec($z;%#2xSsvql?%+nQ;$qI>RQ|_* zIhcR)4|ZW&He-F(U`3W#!=zu{aAbCo?fMlQ1r$F+4-?$GgDmBVX|`@9-+m@i-4~ zCpU35mvAnpaXd$I2>Y`qyRsddvjJN98_i`K8a|IW27AJEohjSqNvO7DmHJh+5tFb&wupo0WGt)3B<1soTFeHDz3A{e> zHJ|Voec*Dev(*FYqJ}aW}VcEthdVXK*4%a~S_(Z~n#(Y{^Ef%_=O*V$9DR z%*a$s%s7n7a174xF9W*|e91?=%_}_1W8BXj+{jg2%sHIO|M)Kl^H2W4E^NzYtj`*( z$WkoKJj}{;OwI(1$w&;%ApG(ouzSmAyw4lF$WuJbJ>1H5T+RiY$w?f;fA}~1@OO4( zD>h~wR%JOBX94D9CZ=W*#$_~yX9)gy9(aA^D?a8OUgbF+=K=2ICa&fZ&gC?Y=SU7= zfA(ZowqtWPU`iiMenS(%Q>nSe1F ziJ=*UUmgZ_Z~2V(d4m^uiif#}Te*(Qxqve{iDUQ=|7IWl&W>!w#;n7tEXU$3z?{s) z)J(#-jK=T`!5RVtjKGlmc`xw##MgYnyS&EpJi&w9#m!v9rJTpe9X=aOvyxy%_t1ZVElGBuzSxJe8^k8%riX7eca9sT**b8%_$tm z5gf#R?7_}#!=|jq>a4($EX3T*!n91r_>94b48>n}07E*>%72|JjC7H!nIt+ z`JBOt9L-_;i@o_9JFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zuyk*KJXo3TD?up&#bF!L}g(=j;{FeW20G=uQVt-$UrpYc9# z@FGv~F!yjP*Ks))a3&{l4FBQZ?8D#Lk*(O6by$_Mc#ylenQOR|^EjOoIEq6#fW6p_?b(72S&NlfhDDi= z*_nYUnTW9&g<%wCA@A-lcd5f2MhDW)N+qr=&xrnnlh2uDagV>Kf*qLqEl=WDh z6IgEd?H-BRX zwqzsLW)+rYG3I9uW@IWRW*kOkI0onUD}mhyzT_j`<`tghG4AIMZsaO1<{VDtfBct& z`6vHi7q(?H)@Kb?WGNPA9%f}aCT9Z1WF&@W5PrEF*uCX5-scTob4VvoSqWFd<_xGQ%(^zg`UN-tjpf@Fp+u zG>>pEw{bmJa3N=LGRJZ_2eL1_vlCmh3G1>N%d-RvG8Z#54U;k+qcZ|S^5=!X>l0t| z3Geb6&+`Niau+vq4VQ8rr*i^FaVQ6{7rU`NTd*N(u`_W*vkjZF9;>qgOR^AiGYiu)8RIhs zBQg|!oeR7^^9`T!9A0$;QW3zu=~K5e8k(l!m~Wa{oKKgT*bwl!>Rm_|8g+@%}#4-Gbf3pvNXGgYT zW7c6+mSb@iU`}RYY9?V^Mq_w};E&UR*GInMW8UFap5t*I;7)GhYA)eiPUCovGT~=dxmS92VVrHgcQpRI+Mqo((JQ;X>;%h$PU0&mPp5Q_5;%2Vl zQqJRaPT(jG6n}e7?Y70 znnC#GXkho2&v>6Vc#)@gn0vUD>$sc?IFpk&hX3$y_TlgB$X0C3I;_faEY1SV$xKYm zB#g^w49^h!aU}5i$X9&KJG{zsJkA5$$xU3%C7jD?9M6#)!v5^Zu58EVY`~hV#L_In zyv)Y*Ou>YV#mEf9p!|9`uzSbne88K$#M3;&z1+t2T)~B$#mOAY;T*`m?9NVX%_gkN zYAnwZEXZ8U%rs2Oc#O^n49TB|0vkJ{BIGTe1;rvkJ?y81pj+GcpwuGY+FN9E0=w{=n`7U-A)e^9s-M8257r zH*ysha}KBSKmN$3(cvJ?w553@2IlQRKhG7>{G2*2zL?B4Pj@AC#P z@)Qqq54Un1mvaGUauUbzAO6ig{GA=yij7%^RauV3S%5j2iK&@{aT$%_8G=9d23{Ze zijR4RS9y-dd4M~)iL1GUb2*LUIg&%zpFP=??bw_RSd*1lnnjqG*_fUwn2@m;nPC`| zU-txd@A#Y#c$1fSnn$>o+qj-9xRA3rnPWMe1KF3|*@>;$gmqbs{*hD$k*(>Z~oIFtj}i{03sE!dE?Sea#5l=+yQ z8JLoZ7@JWTmcjUKS77&^FZhtRc$sH-l>4}y8@Q5-IGa;Ajw3jT{n&$@*@jJ7kJVX$ zC0U5MnT2VYjPV(R5gCfVb_QOb`G!ws?c z@(*@lTQ*~T)?h`JVqxZCR;FWeCSXiPVrT~8m+gVwTR!7`-rz-^;$iOLR<7f6F5pZ~ z;u!wJzuAYsvm;xvG3&4@%dt2MFefuHHIpzdqcJ=~@W-~m>my(BG4Jpy&+#}9a3?o$ zHJ5NMr*S+-atQmgC%dv8o3jCHvJy+P2=g)<(=!DVG8Q8<41@CP*1+x^pYs84@)A$; z2={Uu*K-9Iauz3ZEQfO-`?5Pbu{E2pE~~LTORykwF*DOJDdRCZBQPX?ZV9|T@im|D zF0b)CPw*gjaWmI&Dd%xICvX&pasYd=8{4x58?qKFvkZ$eAG0$9Q!)`_GYZ2p7{6@} z?B4SQAMzG2^9+x2AGdP@S8@?&a|*|C1P8Gnd$2Rxuqo@YIxDaw3o$pdFfEfYK4UN< zL-E(9!0R*L@G0-{Ixp}f4{bWF|!jLAq0%^>`;A+USPXS~lFyvS2L%st%7bzIH`oXJTX!+-cU`|x*mWGgmi z9ad#I7H0wGWG1F&62@gThGz)=SRZ(O63*o`j^{`YVSn~y zSGHqwHegLwVrdp(US?x@reH$GVq}J4P<~w(*uCR(KHyDW;%Oe?UT))huHZt>;$)8H za1LZ&c4sHHW)s$BHI`=y7Gy4FW*R1CJVs{(hUCw+f!8O#<`drKHJ;}Q9^@`=<{B>L zJWl5Xj^a=bU@vxKd$wRh)?#IrVNvE|c4lBoCSq(xVOR#^w>5#?d%oa9-r{AR;Zg46 zc5dKGF5+xX;W&=qAogPqc4iwkWj$7B1(swX=4KYAWirNR3`S%q{#qS)edZfJ^8JUWS8HZ6Bj=}kTRbcml zFZqbKd4*?rjQhER8@Y;$IfqmEAOGcG{>eYsg>Bi4^;v@zS&D_3hgq49$(evL8Hu48 zgkM$$c5nHN_j!XCd5VX*hg-Rh%ejCvIf-NV5C3K#{?3kU#m20|sw~IiEWn)1#MDf} zxQxc|48b2O072k(9LfRg#cpiR z7Hr5`tjsbj%6!bu3{1&HjLj$v%V7MrG_ZTm7ktQDyv#E^%6;6<4P41ZoXsg5#}ORF ze(b@{Y{RCk$Lg%Wk}SmB%)+!x#`uiEhz!MFO9HRYe8Z=_$LqYnlRU)T+`_e7#`&DV zi5$&g{ENN$8#}Ni8?iR4uq=x)KXWi6Q!z2)Fe<|_IKM9r>^|@%AMrM?@GOsUKX-5= zS8*}ta4P@fzZ}dz`3JkOEt|1EYp^0qu`u&6E7LJK6EG$tF*Jkl%c8*UEuZl|Z}1{d z@i6yrE7x&37jPygaSZ?A-|WNR*^#Z-m~~i{noBsB(>R_ZIfVV$lU>=4&Dnr8S&5}tgn5~b>6wBF8H$!ppIg67ymcu!aec7Fz*qTjPm(^IFC0LNTn3-vql<^py z5g3v`=LcS&_?l06m)CfnCwP#%xS4CXl=C>96F7=PIe@*`jqTZj4OxqoS%yWKkJ*`l zDVd0|8HHgPjNj%3cJKLu4|$81d4@;1kK4I{E4hfXIfdgmf`izPJ=mFT*p&5HofTM; zg_xUJn3l;HpD`Gbq4;ZV;Pshr_>}i}ofmkLhq#+txR%Q}pEEd-qdAO!u{VEX2exD* z)@Bu!WijSw4rXL3CT1K)WjF@s_c?*x2fpMZ-sTmaCM!GuCGfR%9s_W*%l`IwofV#$+UhW)Oav9oW6)Gv4P7UgRkr<{ob4Ixgn|&g3MH z;XnMFefT>&vK1S%4y&>pi?aZ8G80oX3F9&v!!rbb%nH0d@)aNR4zKbYkMjU`auZi` z3FmSe$8#iyus?gUE8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2D8J4O?B4M?AMhqG@idQc zFSl_$S8yR`aWcnpI0v#XyR#EpvkB|68q2c;3o;ioGYyk69-}h?L-Oa0!0QuV^9k?r z8qf0t4{{eba}Aer9;b5xM{y_zuot_rJzKCLYq2uRuqg8}J2NmP6EQZUFf4=d+w{Qh zJzwx4Z}BqE@F@3jJ2!A87jZVHa2!W)5c{zQJF^X&vL36m0!y+Gb2AImG8yAD1|u>Q ze@zR#KJyKq@*c1A0#EV~cXJEZavA4y1}Abfhw(4==5Or4mTbh@tirM^#{A5|j7-JE zjKio5$Kd=vHL&}@mwd$Ayu!0Q#{JyEjamllwG$IiF61mu=2#Br zK=x&Kc4BKbVO>^Zd6r;7=3-{1VN%9pbVguE{+t+ied23A;ay(id7j`w?&4;y;Zn}y zbWY$X4&?y$VmG#D3pQjeR%RI%Wj4Dt`zT_j`<`tghG4AIMZsc07 zzHFczxt6KIR=> zz4 zKPLxXpZJd%VsIJjp}c%`IHd)m+B;oW;o;!=dcQ?(D#pY{c5E z!m=#J{LI0OOvS{E!>A0$;QT%zu=~K5e8k(l!m~Wa{oKKgT+5YQ%(xoti!4-$Kou&oXo`3Ov1Q~#_$ZmAL9bAk9@_)yu+(J$KyP}o!rEAT*W1v z#~GZ+Q5?)Z?8N-WJH%*$*{&lF6^Sd7dt49c%#1G{&8&Ii27OFYdZ+{lWn8523U-Jp?@*2OM99oUkMSesQ?mc^K#Ihc{Dn3!=G zmEjni-$w>^ANZ1wc$-&vmdCiCJGhZ+xsr=Hm(w|cBRPn@*@bP{jP+TA6(yTF&T-W8H8U(1a@!vjQ4qi7kP?@xrbZ1for&&3pkroIF`fMpFP--t=O1#Se4~i zoCTPZnV6bM7?;r)o+0>Sc;NMsulSgEc$MdPoCmm*o4AgvxP>V|kWfLFQs+reRXXV{}GfNd6oeczxn)KH*(n<9VLoLGI#a{=+}Hl)rN( zCvh}~urIr@JzKCLYq2uRuqg8}J2NmP6EQZUFf4=d+mOKSJzwx4Z}BqE@F@3jJOAU~ z{DX`58>ewRM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@z>zM>oec*Dev(*FYqJ} zaW}VcJy&xX=W`Y(a}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9E0=wpup|}U-A)e z^9s-M8257rH*zgkaxv#}Iwx=>2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@XNr! z?k%73K5y_MPw_DKa4R=(4VQBPXLAb2av1xw2RpJA8?z3pvK))E0CO@EQ!@$UG8)4( z1b++&ygu?3AM*~c@*I!z0C#c|*Krk>a2{uHB1dsB`>-q9u{j&CCM&Tti!d*+#84rDKO zW*atTJyvH0mSiF3W)`MpGR9{NMr0`d>JxZ<<{LicJznPpp5!6!<`%B!YA)k^&f;W_ z;ZXKtcXnV)Hezj7VObVqe&%3Creb2oVN`}=aDML{*nQwjKH_a&;aMKze(vB#uH{ND z=3Gwa1dik&_GTBhWi!@i4OV0+7G@r1WjZEj0>)${hGr0c=@r<$P)?rnaV{sN>PG(|iCShDgV|a$(kDh_oN50}?-r-fA z<8dC~PHy5luHq8T;|xyZC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{EJkJ+2Ibctf!#Yk z=L6p4C7$LH?&UWA%fGmS3ps~VIgZ0QfIZoXt=WWiS&ijcf(4n2nVE)38IRE!fg$;` zd*Jnnula;`d5!0Jf(N;aoB0p_a4($EX3T* z!n91r_>94b48>nv1Fz3~!>7E*>%72|JjC7H!u4FuWt`7hoXjyC%6{z54s6Lrtj#Jc z%VNyW9L&g6Ow2fp%5V(M?_C1B4}8f-yv-{-%VXTn9o)#ZT*<|p%julJksQR{?83He z#`>(miY&##%)_iq$K*`Fn2f~G48kv+1G~3;#{0a%i#)}{+{3Nhz%^XX1)R+(9Lr(s z&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y&k+34De(HpSA5JnyvlPt&I8=ZO%hx+{S2 zw|JRnc$E9No&WJ~{=r53jng=uBRG(~*qLqEl=WDh6^8JUWS8HZ6B zj=}l8ZD99-FZqbKd4*?rjQhER8@ZM%xtMb~of9~cgV>v0*p|&$pEX#KrC6AGn3d_6 zoCz3{kr$r+bIFB1fFG8n(L2<+bT1t0PjFY^qKav!(zKmN@> zxQM@T8pm@42eKDCvkjZF9;>qgOR^AiGYiu)8RIhsBQg|!H4nT#^9`T!9^|@%AMrM? z@GOsUKX-5=*K#Enb1tWI0!MNXd$SAMvKi~M1}m}@3o{S1G98mM0b?=}Lo*1!G!5+D z@)_^*1~2jy4|5N#!=zu{aAbCo?fMlQ1r$F+4-? zN0Y$oBVX|`@9-+m@i-4~CpU2&S8)mFaRw)H6bG{pyRsddvjJN98_i`KmxgeDDe8k*L=deyvFl9!Gqkz&HRUdaw&i3Oitox4q;z*V|%t>L)Kzt zmSIumV|Hd>N+x1#MqyY6^L*C+Lp5amM<97bXzxf9j@i$K6c#hye_F`wY zVN=#)byi?W7GiE@VOl0*e8ylzhT^XVf!Alg;Zxq@bza~}9^!6p;d-v-GS25LPUaX6 zWj}Uj2exD*)@Bu!WijSw4rXL3CT1K)WjF@s_xgd|2fpMZ-sTmah~wR%JOBX94D9CZ=W*#$_~yX9)hN8+d)>D?a8OUgbF+ z=K=2ICa&WuF5x`R;6#q%VD@2GwqtWPU`vkJ{8cmX`ph?c%6q)d3p~j~+|4aq&(&PU`JBbc9K)gP$L{RFmTbh@tirM^ z#{A5|j7-JEjKio5$Kd>4Be46xmwd$Ayu!0Q#{JyEjaT+F$g&IugJLF~;gY|Cb> z&l;@AQY_3o%*u33&IF9fNDR#&{8Bxzd&_6M&l|kRQ#{N)+{z7H!{uDS*_^_$9LE0a z!H#Uj#;n7tEXU$3z?{s))J(#-jK=T`!5`HEuaA7i$GpR#`clvjht=7c(;rlQJHoGXg{MXO+O~6JPTQ@A4YY^8^oa z7dP`C{>i2MoijO!qdA0q*^TYlf(==Vm05;GnUC3-fhn1Yu^EM78I0d52X^oIf)9C% zmwARqxsTiVAOGebT*TivjpI3j1KEq6*@jJ7kJVX$C0U5MnT2VYjPV(R5gCfVDg|Dj z`G!w8ii6pQUD=M!*?=`! ziKSVDd6|vrnSu!!i;)?ILHV^@VE2yC`G7ZhiKlsld%2DO@-MF7LeAk-j^l6+U{7{p zYc^qBR%3aVU_s_$W~O0M#$$9wU`YNf8+d)ru|8|CB1^F_^DryZF*y@3CL=L4gYZkq!0s)d z@jh?xB2V!!_i!sWa1EDp0cUdx$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!k z2)sV>6(92suksv^^8j~p6W4JSmvA0ua3V)>F#E78+p#$tuqG?9G>b4VvoSqWFd<_x zGQ%(^zZMVd-tjpf@Fp+uG>>pExA9;8#T8u0Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|K zG)&5PjLrxQ$)CjnuTOli9N2x}OFrUlUg23D<9_boMy};bF6LZL z=LC-AAogY#wq-NcXAM?lDHdiPW@S1iX9C7#B!*@Xekl~#z2!6B=M7%uDIVq?Zsi89 z;c_nEY);`=4r71zU`MuMW7c6+mSb@iU`}RYY9?V^Mq_w};E#fV*GInMW8UFap5t*I z;7)GhI#6(f(to^Q#p>qIe}M{e8Z=_$LqYnlRU)T+`{!-&1Ia=S)9x<9Lj#|&JJwJMy$;$EX!id z&m7FiR7}h`jLL8f&hL2wyAOQHN4(7|Jj-L;&mG*zwOq-?oXhE)z>yrp-t5A*Y{vSm z!HO)!!py_0OvmI*z?h80&YV#mEf9p!}LMuzSbne88K$#M3;&z1+rs`4?Ak zA?I)^$8k6ZuqQjQHJh+5tFb&wupo0WGt)3B<1soTFeHEG2)sV=HJ|V}i}ofmkLhq#+txSp%IjPp5*lR1V%*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c8IHmE zJ!@e1fiL-pw|RwUd5rtHgB!V)E4i3+Ih_+Yl7rZrUD%e*Sf4dmk)>Fed6<>yn4Ae1 zlaUyjLHH$0VE2~Kc%L_Tk*9c=d$^SwxQ5HQfU`M;V>yid*@GR~ij7%^RauV3S%5j2 ziK&@{aT$%_8G=7D2VNifijR4RS9y-dd4M~)iR-wEOE`}+IFX|`n0?rl?bw_RSd*1l znnjqG*_fUwn2@m;nPC`|Uo!=E@A#Y#c$1fSnn$>o+xRd4;tDS098Tpp4(9;&WGA*} z6V_!lmS+hTWG-fA8YX2tMrQ>S1P8JgJF^X&vL36m0!y+Gb2AImG8yAD1|u>Qf29w+KJyKq@*c1A0#EV~cXJEZ zb2XQ7K4)<<$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v`c3+z7dB_HuNukb97 zaX)u(BiC{z7jrJBa{@S6c2L`w{ip5a5)!nHm7hbhp|6my(BG4Jpy&+#}9a3?o$9anJ)=Wzxnauf%%54*A*o3jCHvJy+P2=g)<(=!DVG8Q8< z41@A(>cH+DpYs84@)A$;2={Uu|K(p?!G)Z|sT{}Q9KfFJ#MW%Wx~#_XEWv`z#mr2@ zq>RVtjKGlmnJV!5#MgYnyS&EpJi&w9#m)SOe{v~*=S)uGXbxdtc4K?CU_;hoWtL%4 z=3{ndU`i%pY(`;N2IIGsf!%w);6vWxWuDP7M26z86oJ=gzTs2e<8@x(Ngm>EZsB^a<}%LbEKcSa4rM=f zX9u=qBi3dWmSr*KXAWj$Dkf$eMrAk#=lA4+-3PwpBi`l}p5-y_=MHY zunoU@j)mWY-Sdh7xnQ54m@fe*E7?M8|2VS4} znooF_*La>Mc#yleng8%lF6Hl>$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=APB z{FW%Nd(Rhq$XmS3Gd#+D+|K{_H~-)w{>Et>&k-ERUhK>^Y|479&I&BaLd?x9Ov_}9 z&lrrzQ2doJ@cPU*e9C*g&I>%rL)^_RT+h{9#`&DZ$sEI>?8olxz?N*p+N{E|EXMrI z!Hi7B#EiqJ49DR7o*=OMz?Xc)+q}ZFJjVUp!HrzYm0ZlZoX!ax$wBPRE^NzYtj`*( z$WkoKJj}{;OwI(1$w&;%Ap81F-T*KvDz}cL_u^h(!?7@y~ z#m20|sw~IiEWn)1#MDf}xQxc|48b4q0N%d-RvG8Z#54U;k+qcZ|S@@JgD>l0t|3Geb6&+`Niau+xA zAO6Xu{GBs7iK97$ec6re*@6vOiS&!9OfhAdpxtWD&nT+ungAo~uzhVVmpZSJQ zd5_n5fhT#0ySatyxthy3pR+ibV>p!k*qt5Nl8soKRalnAn4dYAk*S!NaTt~17@Xf@ z26i9#l8<iiMenS(%Q>nSe1F ziJ=*UUt$DyZ~2V(d4m^uiif#}Te*R2xSR_(n^QQJ!`Poa*paQ+m~~i{j;pwY^EiVOIf{eXhh5o@&Dnr8S&5}t zgn5~b>6wBF8HG zT~=dxmS92VVrHgcQpRI+Mqo((j2d`-;%h$PU0&mPp5Q_5;%5HCKe?2@b0#NoG>5P+ zyRki6upw))GRv?i^D#R!FeMW)Hlr{sgYjFG!0tU?@F8#UGSBcR_i;P_nw{SgI za~bDz7AJEIhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+W^LwPg?gL-)5pVMf&+-`e za|btaEmv|e=W;qHa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=uO<#K7(?pYc9# z@FGv~F!yjPH*gJ?a{*^_3deF7`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&v!!rbbL2qs$T^(KaU9M8?8#1S%_gkNYAnwZEXZ8U%rs2O zc#O^n49TD20G79^-!Q;6|?HN-pMHPUi%U zHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*ARi-J3i+F-sB~o z<`M4YHvY@MxPl8ghf_I@!#RLG*@>;$gmqbs|m5C7y+{?3`4#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfj; z!2-MYe8Gpj#mhXyquj^s{EvV04=&&TPY`tjFrCz>+M)+|0tXOvd<( z!H5jSUqJ(}&wRtDyvOUjz>_@0-Q2?UT+L;i&sm(zF&xT%?9L8s$wsWrDlE%l%+DOm z$W%1049@RC0=o}<$w$1+D?H0%+|M1{$hBO_#hlCOoWPMB#NO<}wrs}wtig&b z#lpyid*@GR~ zij7%^RauV3S%5j2iK&@{aT$%_8G=8423{ZeijR4RS9y-dd4M~)iR-wEOE`}+IFX|` zn0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC`|Uw;I4@A#Y#c$1fSnn$>o+xRd4;tDS0 z98Tpp4(9;&WGA*}6V_!lmS+hTWG-fA8YX2tMrQ>S1P8JgJF^X&vL36m0!y+Gb2AImG8yAD1|u>Qe|-(SKJyKq z@*c1A0#EV~cXJEZb2XQ7K4)<<$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v_} z3G6=bB_HuNukb97aX)u(BiC{z7jrJBa{@S6c2L`w{ip5a5)!nHm7hbhp|6my(BG4Jpy&+#}9a3?o$9anJ)=Wzxnauf%%54*A*o3jCHvJy+P z2=g)<(=!DVG8Q8<41@CP$H49#pYs84@)A$;2={Uu|K(p?!G)Z|sT{}Q9KfFJ#MW%W zx~#_XEWv`z#mr2@q>RVtjKGlm`62N7#MgYnyS&EpJi&w9#m)SOe{v~*=S)uGXbxdt zc4K?CU_;hoWtL%4=3{ndU`i%pY(`;N2IIH)f!%w);6vWxWuDP7M26z8cY)VuzTs2e<8@x(Ngm>EZsB^a z<}%LbEKcSa4rM=fX9u=qBi3dWmSr*KXAWj$Dkf$eMrAk#=l8dP-3PwpBi`l}p5-y_ z=MHYunoU@j)mWY-Sdh7xnQ54m z@fe*E7?M9<240`|nooF_*La>Mc#yleng8%lF6Hl>$w?f|A?(X;Y|j>K$Xcw-GAzn` z%+3r<$wZ9JC=APB{PrTSd(Rhq$XmS3Gd#+D+|K{_H~-)w{>Et>&k-ERUhK>^Y|479 z&I&BaLd?x9Ov_}9&lrrzQ2g~g@cPU*e9C*g&I>%rL)^_RT+h{9#`&DZ$sEI>?8olx zz?N*p+N{E|EXMrI!Hi7B#EiqJ49DR7{w%Qjz?Xc)+q}ZFJjVUp!HrzYm0ZlZoX!ax z$wBPRE^NzYtj`*($WkoKJj}{;OwI(1$w&;%ApG()uzSmAyw4lF$WuJbJ>1F-T*KvD zz}cL_u^h(!?7@y~#m20|sw~IiEWn)1#MDf}xQxc|48b2y0N%d-RvG8Z#54U;k+qcZ|S^5>(#>l0t| z3Geb6&+`Niau+xAAO6Xu{GBs7iK97$ec6re*@6vOiS&!9OfhAdpxtWD&nT+un zgAo~uza9i$pZSJQd5_n5fhT#0ySatyxthy3pR+ibV>p!k*qt5Nl8soKRalnAn4dYA zk*S!NaTt~17@Xhl2X-I$l8< ziiMenS(%Q>nSe1FiJ=*UU+x8VZ~2V(d4m^uiif#}Te*R2xSR_(n^QQJ!`Poa*paQ+ zm~~i{j;pwY^EiVOIf{eX zhh5o@&Dnr8S&5}tgn5~b>6wBF8HGT~=dxmS92VVrHgcQpRI+Mqo((yd8Lb;%h$PU0&mPp5Q_5;%5HC zKe?2@b0#NoG>5P+yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYny~!0tU?@F8#UGSBcR z_i;P_nw{SgIa~bDz7AJEIhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+W^ZSj! z?gL-)5pVMf&+-`ea|btaEmv|e=W;qHa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20 zG=uQV^}y~epYc9#@FGv~F!yjPH*gJ?a{*^_3deF7`?Ci-vK1S%4y&>pi?aZ8G80oX z3F9&v!!rbbTnoHD@)aNR4zKbYkMjU`aue5a6_;=xXK*4%aWMO^E8DR-8?YuTu{4V? zFS9W{Q!pW8F*3t2D8F6}?B4M?AMhqG@idQcFSqeu{>2qs$T^(KaU9M8?8#1S%_gkN zYAnwZEXZ8U%rs2Oc#O^n49TBY0czxy@KIJ`L=LMeRA@1fDuIFkl z<9yEIWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhGTGkzZlqk;7dN@ZC>G79^-!Q z;6|?HN-pMHPUi%UHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L z*K>j0J3i+F-sB~o<`M4YHvY@MxPl8ghf_I@!#RLG*@>;$gmqbs|m5C7y+{?3`4#L*nWzU;>KY{7=C#mX$hqRhwa z%)pdP#Mq3&unfj;X9BzTe8Gpj#mhXyquj^s{EvV04=&&TPY`tjFrC zz>+M)+|0tXOvd<(!H5jSU#A1F&wRtDyvOUjz>_@0-Q2?UT+L;i&sm(zF&xT%?9L8s z$wsWrDlE%l%+DOm$W%1049@ST0=o}<$w$1+D?H0%+|M1{$hBO_#hlCOoWPMB z#NO<}wrs}wtig&b#lp(+{=4`;4ti;kR!o1AJ^i08ojK#i}FnP+&E`?#I|@o)aYMf{D^IG!UokiFQMZP=9cSe+GEl7*O?S(ui|7@sj1 zk)inONZ|FEZ}^n=c%2t`l83mPTezO9xs3BUi<3EqL)nkr*?}$Dh_zXTWm$~*nS&Xb ziisJAQ5lZG`TcNU_kl0@h_`u#XL*eKxq}6n}e7?Y70nnC#GP+<3#&v>6Vc#)@gn0vUD8@Ptcxq!1dg=0C4{n>*Z*@}%> zhgDgQ#aVzknTe^HgmD>-;TeKI4hCKy`HGKuhgW%y$9aG|xrytzic2_;GdPi>IGBCd zmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwS`7cJKI{4|tQ8c$!DJm)rO+|KbWR#2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rOzwHa`-tz??@)j@i43Baj zxAQ;#%|Ez^zi}GJa|8#n7dx{Jo3b9OvjR)95OXsN(=r+3GX^6v6o2gvygu^{pYk5B z^8!!u5O;G6*K;+OaXx2pGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&?+NTa z@FgGdHm~q3k8wYDa3j}pB^Prpr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQRKhG7>{G z2*2zO?B4Pj@AC#P@)Qqq54Umy*Kj!(a5krKEQhf_d$1#0u`%ngD$B7r3os`$F*TDg zE~7C#L-5D0!0RJl@iFi4D$nsa4{#?paUEB23FmPJCvp@Avk$wn9h(0RL9iQ_7Z}JjP^9c8H8~^2BT)~B$!>Js{;T*u8?8Me=!n&-+ z@+`rE%*D)1!=#MI=#0RS{JA6W`o!0K!n?f2^E|Q)h2N&@-PUCov z;6V0bXSQKe)?;;6U`ZBYZf0RxCS!cYU_^%EuWfxUJkH=mj^beUVOO^MAII|)K!u?I05sdSZQHhO+qP}nwr#iC zYPHpB%eL+J?)f?Yht1i5HCc(JS%i6+jp>z4KX(OQpZJ$z>yrp-t5A*Y{vSm!HO)!!py_0 zOvmI*z?h80&P)?rna zV{sN>PG(|iCShDgV|a$(kF9~%N50}?-r;}zn}6^m4{lW=D_O{U-Jp?@)|Gk98d8u_i!uMaXA-o zCMR(;hp;cZu{~R`A#1TR%djZ(F*`FbB@;0=qcALk@!O`r?mb`dA#d?2FY+vp^8j~p z6IXKy=W-gya|8#n7dx{Jo3b9OvjR)95OXsN(=r+3GX^6v6n||Dygu^{pYk5B^D@u# zG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&ZwTx@@FgGd zHvi>c{GBIwkh{2Fed6<>yn4Ae1laUyjLHK2T zVE2~Kc%L`;5C7zEJj#9C&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y z&k+2vF7W!uSA5Jn{EvV051!;9?&cP*xX<9_boMy}#w&f!#!<8TgOPj+H!Hep>>V|kWf zLFQs+reRXXV{}GfNd8#!=zu{aAbCo?fMlQ1r$F+4-?$AZA?BVX|`@9;nV%|CdOhq#+txR%Q} zpEEd-qd1s-*p=4h`E`CX_<`i8G{iSiofOr zUZ44fPkE2md70;Vnn$>o+qj-9xRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D z;TW9XX9sp4_>zx!oB#4J{>~FT$X(pbHC)PhoX!ax$wBPRE^NzYtj`*($WkoKJj}{; zOwI(1$w&;%Ap9~buzSmAyw4l_hkx=n9_2o6=LW9iBF^R%j^!}+XAgE{D>h~wR%JOB zX94D9CZ=W*#$_~yX9)h78F+oQ)h2T$@4cXJEZavA4y1}Ab92eS{mvK^bV z0c)}nOS1^`G8@w~1rstBBQp$x^6QMi?j4`=0dMjOFYpYHaX)u(BUf=T=Wr^=aX1IC zCp)n#;g3up|pHH?uG;lQBMHFd{?o*VMr4GvDwj@9{b>^E^-U z2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY)~8!0rQI@)2+I zU;f44d4dPIi<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1FiJ=*UUnU23 zZ~2V(d4vD(PyWWE+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(#-jK=T` z!5@EZsA%k<9yEGM2_NM_F-4HV{=MHY63*o`j^_vtWG{AR z8#ZM0{UT))huHZt>;$)8D zQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4ejgjyec($z;%)xRzxX>(@E~__GuLn_ z=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=uQVn85BWpYc9#@E`uk-*}Y! zxSbogl8ZQ-Q#h8x*q=Svk*(O6by$_N-WJH%*$*{&lF6^Sd7dt49c&g0=sv7 z&Ii27E4;unJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_ijK}DVz>xeo zGVuDu*L=deyv9pB$5TAaJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9J zC=APB{5B%6d(Rhq$XmS1i#*HYJiwjY#MNBFxtzxF9KnI?#m;QQrmV;6tiX~i#N5on zv`ohMjKPQu#b3h%ug`qLr@Y7Oyv*}F%_H2)ZCuY4T*z6R%rP9we(cT;Y{^Ef%_=O* zV$9DR%*a$s%s7n7a174x!vebxe91?=&42k9f9DAv$8s3^ zvj;n}6&te-tFj!6vjB546H_w@<1!knoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?Gj)Ye3-j znQ!=%_jsL`d7h_vgnPM->$!ppIg67yhC|tp-PwUH*@(4Sg=JZc`I&nw{R_&aXx2oB1dsB`>-q9u{j&C zCM&Tti!d*@U&+r)ca|bta6&G_3r*a&Ja{zm? z6I-(h>#`clvjht=7c(;rlQJHoGXg{MXYau46JPTQ@A4Wi@f=U_F!yjP*Ks))a3&{l zG>5P+yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYjFh!0tU?@F8#UDlhUZkMjU`auZi` z3FmSe$8!V+vKKqE4V$tatFr=2vJi7K3)3$G8BLH47@(`4WIHJuk$j`^E8ie zFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zxN32KJX6n}e7?Y70nnC!bdtmpL z&v>6V_z(Z&Z#>F<+|CVL$wi#aDICjT?9U$T$X0C3I;_faEY1SV$xKYmB#g^w49^h! z(Jk=$$X9&KJN%D-^ADcnA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{ zEJkJ+2IbeTf!#Yk=L6p46<**O9^-!Q;6|?EV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$ zW~O0M#$$9wU`YP#5_o;$Yd+y!UgIU6<0&5I9&Y72F6RQyIiF61mu<`@oT zKXzvawqzsLW)+rYG3I9uW@IWRW*kOkI0onUj)C0=zT_j`=D+-lzw-nSau+vq4VQ8r zr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQRKhG7>{G2)}d)?B4Pj@AC%#;h+4CN4byN zxq&OWh_g9`V>yid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8G=9B2VNifijR4R|M74B z!IM11-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($PB}v{Ms(Cd&lQ| zz?;0n3p~SP+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ$)9Zl zuTOl%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3& zunfj;Z34UZe8Gpj#jCu?vpmiN+{sN`%_W@6X&lcH9LQem%rd%VueJkQfS!oA$a^<2S)oW;o;!=dcQ?(D#pY{c5E!m=#J z{LI0OOvS{E!>A0$;QZbyu=~K5e8k)Qmw)khp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T z)?h`JVqxZCR;FWeCSXiPVrT~8mzIIuTR!7`-rzs{lfUsO_i;Nna3vRUHm7hbhp|6< zup?WsG3&4@%dt2MFefuHHIpzdqcJ=~@JEZl>my(BG4Jp{{>?vll83mPTez0XIG-~( zk)t@6eb|-l*qjYmla*MSMVOb_n4T$^kg*tqIe$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`Iwyi}F zl^1!I$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrg=v|L@fm{=8H&G}1YV!{ zhEI8q*Lj)ed74MKm)p3WE4YxeIGJNOl>OM99oUkMSesQ?mc^K#Ihc{Dn3!=GmEjni z-x~*ZANZ1wc$@$7FaFLGJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA>bWF|! zjLAq0%^>{JD6o6WXS~lF{D*(?Hy-6aZs!KBa|S1J6bG{pyRsddvjJsk8wYDa3fc7G3Rh9$8k6ZuqQjQ zHJh+5tFb&wupo0WGt)3B<1soTFeHE054=9{HJ|V# z2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rOzts!u-tz??@)oc1BG2+T4{#?paW$84 zE~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@mJlz>oec*Dev(*FY`Q4^9c8H z8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9E0{*hD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkNe0c5nHN z_j!Z=@K656quj^s+`yGw#Mzv}u^h(!?7@y~#m20|sw~IiEWn)1#MDf}xQxc|48b3@ z0Ve&RzTiXN;#FScSsv#B?&Kz}<`T~3G>+#84rDKOW*atT zJyvH0mSiF3W)`MpGR9{NMr0`dsup;C<{LicJznQ!p66*E;a+azdamF?&f;W_;ZXKt zcXnV)Hezj7VObVqe&%3Creb2oVN`}=aDJ~E*nQwjKH_cu%fI+LPw*gjaWmI&Dd%xI zCvYSOu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$tF*JklOO?RxEuZl|Z}1=f$=`UC`?#GO zxRQ%Fn^QQJ!`Poa*paQ+m~~i{*^^vdmn0NRe|K=Y& z$wS=DEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1BEBFxKdOwSZd$XJZbFbvACl>)nWe9i~F z$t%3TGd#xq+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z#mr2@q>RVtjKGlmSuybX z#MgYnyS&CrJjYW!%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1Z zVEk4guzSxJe8^k8%8NY9<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r z_>94b48>pN1Fz3~!>7E*>%7eKJk2BA%WYiG6LJWl5Xj^rTrW*4?)GuCGf zR%9s_W*%l`IwofV#$+UhW)OZU8`!<&Gv4P7{=+}{8;^1yw{rtmauH{93deF7`?Ci- zvK1S%4y&>pi?aZ8G80oX3F9&v!!rbblnJ~(@)aNR4*%od{DUWXh`YIkYq^Z`IfD~9 zii6pQUD=M!*?=`!iKSVDd6|vrnSu!!i;)?ILHV_GVE2yC`G7Zhg%@~+$GD$6xRI;4 zm~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?M9r1zw-{nooF_*LaENc#4O) zhg-Rh%ejCvIf^8JUWS8HZ6Bj=}l8 zcwqN|FZqbK`7i(C?>xbS+{MjY!=;?Z>72lk9K_!2!nSP2`mDimllF#E78+p#$tuqG?9 zG>b4VvoSqWFd<_xGQ%(^zZMDX-tjpf@FuVD0?+Um_j3m~aupYI4ySS)hjRdXvJ+dg z3G1>N%d-RvG8Z#54U;k+qcZ|S@@L_|>l0t|3Geb6FYz2t@i6yrE7x&37jPygaWsdp zFT1flTd*N(u`qgOR^AiGYiu)8RIhsBQg|!6%4#S^9`T!9^|@%AMrN-96F8EC*qdG0md#k7HCU0QSeSX3mFbwA2^f=+7@9%&C4XS|md|*f zH~0_#RF30t4q#7qVrw>GT~=dxmS92VVrHgc zQpRI+Mqo((%oBKh;%h$PU0&lQp5rMV<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV` zK4xbIreq?*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKIvIkxt`HGKuhyU?!{=t(x z#NFJ&wOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9p!}LGuzSbne88K$ z!V5gZW8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZEXZ8U%rs2Oc#O^n49TBa1Fuhf z%_qFeYrMpBJjKJ@!>wG$vkJ{FOQI`ph?c%6q)d%RJB1Ji@))#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5| zj7-JEjKio5$Kd>)DX{y%mwd$A{Fi_6cb?!u?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_ zmSSP%VOFMNawcF*Mq+3N;g^ho-CI86ecs?d{FA@&DEDzYH*h5vaWc#?;>n_IY+%Q&AiIFX|` zn0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC`|U(*M6@A#Y#c#~InfoFJ(`?-S~xr&Q9 zhf_I@!#RLG*@>;$gmqbsSM^@*?fgm-z3mw1k+c$j;* zmFu{i3pkULIGRJ)m)+Q&E!dE?Sea#5l=+yQ8JLoZ7@JWTmcjTfZD9AFFZhtRc$F7< zmdAO3JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2VYjPV(R5gCfV(ga?g`G!w< zkJovb=Xsh(xR=|wo-4SJvpAV!IF$X^ogLVcjaZviSeC_@pE;P3shF5?7?t4|oZnLi zb|3hXk9eE^@-P0*6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@ z49y_?k}9x!%V)gL8~lfV@;4skK5pj*uH+)l<`jajI1g|qH*qzWa4x5D zJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UNHJ17GqHZ}VUN#ou{? z2f2%zxrR$QkJCAUBRPn@*@bP{jP+TA6(yTF&T-W8H8UF2X=4yjQ4qi z|L{-##-rTF?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?Bpi2|>W ze8tDS!~gg<|KLd;;%;u?S}x;!&fr9j;$Ze+SGHqwHegLwVrdp(US?x@reH$GVq}J4 zP<~Aq*uCR(KHyDW;RT-IG4AIMZsaO1<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW*R1C zJVs{(hUCu#f!8O#<`drKHD2O5p5kHd;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE| zc4lBoCSq(xVOR#^xA=kGd%oa9-r`kW(LeAo3j^R-DV|R97 zOEzL{R$*BdV}9mfMy6t7#$i;3V{m?t8`yo|OFrUl{>#7kJ5TT+cX2b z2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@JpP)?k%73K5y_J{>k5Xl>4}y8@Q5- zIGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^0P9;PsKO_?UP2AOGebJjp}c z%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFefudxEVcYMwVyvZxP zz%x9?{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS{24Rw`o!0K z!n?f2OFYL@Jj^}Z%5_}M1)RxA9L*u@%WiDX7Hr5`tjsbj%6!bu3{1&HjLj$v%V7K# zBd~kV7ktQDyvmC_%i}!2o!rFLT*A4W#_=4%f$YW3Y{RCk$Lg%Wk}SmB%)+!x#`uiE zhz!MF(F3o~e8Z=_$LqYz^E}NX+{)${hGr0ci5l3w6wBF8HTxrbZ1 zj?1}#GdYQ)IfQ-LjqTZj4OxqoS%yWKkJ*`lDVd0|8HHgPjNc*#cJKLu4|$7Md68#% zoCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM;g_xUJn3l;HpD`Gbq4+C8;Pshr_>}i} zotJr@r+I{XxsB_&f(to|lR1V%*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c8IHmEJ$zvI zfiL-pxA`ys;_p1cgWSc(miY&##%)_iq$K*`Fn2f~G z48kwr0=u_-#{0a%fA}YV<5BM8c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4 zVO&OIc!uDQuz}Y{zT#uv;eY&_fAAy^aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V? zFS9W{Q!pW8F*3t2D8GgY?B4M?AMhrx@B+{98257rH*ysha}K9+9EWoNd$JQ-vkB|6 z8q2c;3o;ioGYyk69-}h?L-J?n!0QuV^9k?r8ZYr2Pw_DKa4XkwITvsyCvh}~urIr@ zJzKCLYq2uRuqg8}J2NmP6EQZUFf4=dTd2V9Jzwx4Z}BQG@+^<@0C#c|S91yHavH~T z1P8JgJF^X&vL36m0!y+Gb2AImG8yAD1|u>Qe}xRZKJyKq@*c1AGSBlgk8m%yaXnXX zA!l(i$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v`62<$%aB_HuN|K(r&ohNvZ zySSNaxRmoaof9~cgV>v0*p|&$pEX#KrC6AGn3d_6oCz3{krHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L z*PwyjJ3i+F-sBZt;29p{e(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9p zbVguE{tOa$ed23A;ay(iC7$Cc9_AiyvkJ{Pi>N`ph?c%6q)d%RJB1Ji@))#`Rpmg`CC79K)gP$L{RF zmTbh@tirM^#{A5|j7-JEjKio5$Kd?_Be46xmwd$A{Fi_6cb?!u?&4;y;Zn}ybWY$% z4q|V1VOut1eb!(_mSSP%VOFMNawcF*Mq+3N;g|1$-CI86ecs?d{FA@&DEDzYH*h5v zaWc#?;> zn_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC`|U%v)+@A#Y#c#~In zfoFJ(`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbsaj zI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UNVk2 z17GqHZ}VUN#ou{?2f2%zxrR$QkJCAUBRPn@*@bP{jP+TA6(yTF&T-W z8H8V626k`xjQ4qi|L{-##-rTF?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518 z!nlma@C?BpF9NTRe8tDS!~gg<|KLd;;%;u?S}x;!&fr9j;$Ze+SGHqwHegLwVrdp( zUS?x@reH$GVq}J4P=0+L*uCR(KHyDW;RT-IG4AIMZsaO1<{VDtI1c9k_GBlvW)s$B zHI`=y7Gy4FW*R1CJVs{(hUCv@f!8O#<`drKHD2O5p5kHd;a0BWaxUOZPU2_|VPAG* zd$wRh)?#IrVNvE|c4lBoCSq(xVOR#^x2J*Kd%oa9-r`kW( zLeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m?d9N2x}OFrUl{>#7kJ5TT+ zcX2b2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@XMpX?k%73K5y_J z{>k5Xl>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^78A;PsKO z_?UP2AOGebJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFef zuMYydcYMwVyvZxPz%x9?{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI z=#0RS{CPj{`o!0K!n?f2OFYL@Jj^}Z%5_}M1)RxA9L*u@%WiDX7Hr5`tjsbj%6!bu z3{1&HjLj$v%V7L=FR**h7ktQDyvmC_%i}!2o!rFLT*A4W#_=4%f$YW3Y{RCk$Lg%W zk}SmB%)+!x#`uiEhz!MFcLT4_e8Z=_$LqYz^E}NX+{)${hGr0cxgFTO6wBF8HTxrbZ1j?1}#GdYQ)IfQ-LjqTZj4OxqoS%yWKkJ*`lDVd0|8HHgPjNh&Y zcJKLu4|$7Md68#%oCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM;g_xUJn3l;HpD`Gb zq4?`s;Pshr_>}i}otJr@r+I{XxsB_&f(to|lR1V%*^mF@c%A~NFcbiQX4|%H+qP}n zwr$(CZQHfgYOBT7G8W#u=jZ&N?(D#pY{c5E!m=#J{LI0OOvS{E!>A0$;QW3su=~i@ ze9DKs%WFK(6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_? zdN;6p$CrG}`@F@=Jj0{h$L-v}m0ZNxoWijj#{TTVj%>xoti!4-$Kou&oXo`3Ov1Q~ z#_$ZmA9n(;Pkh5?e8hXa&I>%rL)^_RT+3yg&l#M^Q5?)Z?8N-WJH%*$*{ z&lF6^Sd7dt49ah}1H1Qp#V35g+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z z!Gg@i%uK_ijK}DVz>xfTEAaZvfBBq$@;Bb#MV{he?%`Ih<8m(GOitox4q;z*V|%t> zL)KztmSIumV|Hd>N+x1#MqyY6<9{~;yAS+_fAbIC;Z>gFaUS4KZsKY#;apDRc#hye z_F`wYVN=#)byi?W7GiE@VOl0*e8ylzhT^Xqf!7zlOM99oUkMSesQ?mc^K#Ihc{Dn3!=GmEjni->(ODANiV3`H**cjpuoS2f2%z zxrR$QkJCAUBRPn@*@bP{jP+TA6(yTF&T-W8H8W21$OWFl8vkJ{B<$#`ogz-!N2%BZ}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;r zvkJ?y81pj+GcpwuGY+FN9E0=wg~0A3U-Ky+@-DCOJWuc-cX2b2eCK1 zuq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@ay@&?j2w9G4JyhFY^qKav!&I16OhpXLAb2 zav1xw2RpJA8?z3pvK))E0CO@EQ!@$UG8)4(1b>_hygu;_pYajz@j5T?BoA>nw{R_& zaXx2oB1dsB`>-q9u{j&CCM&Tti!d*#`clvjht=7c(;rlQJHoGXg{M=b6CkGymmt{>k5X zgBN*ma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2VYjPV(R5gCfV zP6b|H_?9pD7k}qXUgBvU;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb2o zVN`}=aDG1-*nQ+{KIKE+)${hGr0cJrUTw<4Zo~ecs|_p5amM<92S~N-pATPT^P%V}JHwN48>P)?rna zV{sN>PG(|iCShDgV|a$(kK=*YC%)k`KH@!I=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@ zX9Lz`C6;Cp=4CdfX9^}{EJkJ+2IaS7f!%w);uAjLZC>G79^-!Q;6|?EV$R`Ij^l6+ zU{7{pYc^qBR%3aVU_s_$W~O0M#$$9wU`YNv8hCx?zkJR=`5SNWB2V!!_i!uMaXA-o zCMR(;hp;cZu{~R`A#1TR%djZ(F*`FbB@;0=qcALk@xLR1-3R`|zxfC6@G8&oI1g|q zH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UN(miY&##%)_iq$K*`Fn2f~G48pGm z1G{&8$;Z6UTfEFOJj#9C&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y z&k+1^An^LcH+;rNyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg z!Gw&($PB}v{I)-^d(T&V!Uw#~D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w z$Xv|KG)&5PjLrxQ$)EcIuh0CK&-o{R;|*TqDIVq?Zsj^I=K{{;B#!0~_GLG=XA3rD zEmme37G*wWX9lKZBF1JEhGj7Rw>Pl+z<>BR|KJ^7^8JUWS8HZ6Bj=}kTcVPFCulbY@d6(CCo+o&aySSNa zxRmoaof9~cgV>v0*p|&$pEX#KrC6AGn3d_6oCz3{kr$mwARq zxsThqfh)O)vpI!hIgI_;gB{t5jai3PS&qe7fH|3oshNav8I9o?fqIewa4)xUJy&ocXK^yea47q+J3Fu?8?iR4 zuq=x)KXWi6Q!z2)Fe<|_IKOWR>^|}}pYkE^@*2#!=zu{aAbCo?fMlQ1r$F+4-?$ELvR6W{O|AMqZq^8!!u5O;G6*K!%> za|S1J6bG{pyRsddvjJh~wR%JOB zX94D9CZ=W*#$_~yX9)gS9e91>8$RPB-s5#%;7K0hZf@aPF5`U8;6#q%VD@2GwqtWP zU`Qe=QHZzVIzy@Gt((o4mx+ zJi@))#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-JEjKio5$Kd?FEU^2?*L=!{ zyvu7m&l5bzUEItyT*`Tz&IugJLF~;gY|Cb>&l;@AQY_3o%*u33&IF9fNDR#&{JJ!- zd&if2%=^5>%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(#-jK=T` z!5>QkuTOl#XMDtayv_?e$wS=DEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1BEBFxKdOwSZd z$XJZbFbv9Xivzp&e8nexz}vjSvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z z#mr2@q>RVtjKGlmxhU}Z%zycufATlp;6P7M26z81%cNWzU2%4#ou|8mw1{-xR=|wo-4SJvpAV! zIF$X^ogLVcjaZviSeC_@pE;P3shF5?7?t4|oZsgMb|3kgPx+8{d5!0Jf(N;ao4JNd zIgishfg?GHz1f9r*^KpBgB4kdg_(z0nU2YsfH4_~p&5i<=LL4}_>zx#pSO6KXLywR zxSbogl8ZQ-Q#h8x*q=Svk*(O6by$_unoU@j)mWY-Sdh7xnQ54m@fe*E7?M9{ z2VS4~FQ4;I{>B@;$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9J zC=APB{BKrZ_ksWLZ~nnMyvlPt&I8=ZO^Y|479&I&BaLd?x9 zOv_}9&lrrzQ2aGB@cP2He8Io?J8$w5PxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW= zvKaF-2QxAi6EhB@G8}{R`;5TuBVY3=AM!4*@jOrPAa`*y*KjH4aXKe(BnPoKyRa>r zu|8|CB1^F_^DryZF*y@3CL=L4gYfJ0!0sJi@-gr87BBM*k8&Tka|2g$5odD>$8s3^ zvj;n}6&te-tFj!6vjB546H_w@<1!k@FWj$H@9#tmvKI4 za3V)>F#E78+p#$tuqG?9G>b4VvoSqWFd<_xGQ%(^zfBG7-t!fo@Bwf03eWNw_j3m~ zaupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcZ|S^5>Mm>ofo5bNS&!9OfhAdpxtWD&nT+ungAo~uza|A< zU-*_U_!ocYO(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3 zV{m?-7}$N}Yd+;e-sLr(=LsI`?zTy);;B8*vSsvql?%+nQ;$qI>RF30t4q#7q zVrw>GT~=dxmS92VVrHgcQpRI+Mqo((925P+yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYmyHf!zoG!@v0l@9-+m@i-4~CpU35 zmvAnpaXd$GAbYVh+psC?u{tZTBnvS&voI}_F+O83B17@l=)mg>-|_|j;_tl4OFYdZ z+{$z>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z?h80&YV z#mEf9p!_yGuzSx}e8LC3%_}_1W8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZEXZ8U z%rs2Oc#O^n49TCv0wR`@nzrH~-)rUgbF+=K=2ICa&fZ&gC?Y=LimDFLq`d zHf23lX9bpIA?9Wlre!k5XADMUDE=A}czxkpzTjW{oi}-jr+I{XxsB_&f(to|lR1V% z*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c8IHmEeQ;p+k+1ob4|$i@c%CPCkh{2Fed6<>yn4Ae1laUyjLHKo0VE2wM`Iz^4iyid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8G=6s240`|hR^tj_jsKb zc#?;>n_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC`|-v$JB@A-;P z_<*;0g=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbs%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3& zunflk`UQ3$_z(Z)AH2h>Jjdfaz@6O0)m*~4oW}7S!GY|>&TPY`tjFrCz>+M)+|0tX zOvd<(!H5jSUws3wFMP`v{ENTyCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDK zF+X!KBU3Rk<1i}2F*v{X3G6=dHJ|b!@A4YY^8^oa7dLYamvSDba{@l5Gb86WW;uk!*=@(_1(3)gZP=W_-p zauf%%54*A*o3jCHvJy+P2=g)<(=!DVG8Q8<41@Ap&%o|IU-1ba@HVgTERS(NcW@(D zaWUs`D#vj+2e2nQu{E2pE~~LTORykwF*DOJDdRCZBQPX?_6WQ_^ItyapZtwCc#)@g zn0vUD>$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`Iwy# z2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rO|LYLgec(U*n}6^Quksv^^8j~p6IXKy z=W-gya|8#n7dx{Jo3b9OvjR)95OXsN(=r+3GX^6v6o0i3yuR=)U+^#f&YQf%(>%hx z+{X1>!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ49DR7-Y&5F$k%+zhrG*c zJkJw6$X(pbHC)PhoX!ax$wBPRE^NzYtj`*($WkoKJj}{;OwI(1$w&;%ApF`kuzSas ze9Zg2#mhXyquj^s+`yGw#Mzv}u^h(!?7@y~#m20|sw~IiEWn)1#MDf}xQxc|48b35 z0Js{;T*u8?8Me=!n&-+@+`rE%*D)1 z!=#MI=#0RS{Mjn-`pkd%oPY8+-rz-^;$iOLR<7f6F5pZ~;%E+GUv^`AwqQfnVr79&Ulb3j!N4S^UxSlJxkh3_MV>p!k z*qt5Nl8soKRalnAn4dYAk*S!NaTt~17@Xgm2X-I%nos$VcX^HHd4dPIi<`NIOF56z zIe{ZNh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1FiJ=*UUz-JX@A#6Bd7rm6wBF8He9X=aOvyxy%_t1Z zVEnI9VE2Ll@NfRXJG{zsJkA5$$xU3%C7jD?9M2IP$X@KsHf+jztj-E7$wJJ{EKJK} zjL#U1$WZ*%F!1`qw|v3B_&aa%5>N98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~r zGY2y=6%#WKqcR+W^LvB9?jv9GDIfAKukk!j@E~__GuLn_=W#kGa3lw@H@mPco3TD? zup&#bF!L}g(=j;{FeW20G=uPK{lM-WU-B{U^A<1j43Bajw{rtmauH{93deF7`?Ci- zvK1S%4y&>pi?aZ8G80oX3F9&v!!rbb)C;^m@eQBx5%2LjFYqJ}aW}VcEthdVXK*4% zaWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2D8JPW?B4SgpYQ>1^9s-M8257rH*ysh za}K9+9EWoNd$JQ-vkB|68q2c;3o;ioGYyk69-}h?L-J>x!0R*r<#YbY-*|%;d5VX* zhg-Rh%ejCvIf4h`E`CX_<`i8G{iSioa?FUSIf@ zFZdUK=S^PXX&&KTZsU5c;6l#gWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhGTGk zuNl~VHCJ2qzn)?_7? zW)bFPHl}9^CS)u|W*7$Lw`zgid%ofmKHzO$;aMKze(vB#uHs_O;Z%;}a1LNkc4BKb zVO>^Zd6r;7=3-{1VN%9pbVguE{;V2!edfP>&OiAZZ}1{d@i6yrE7x&37jPygaWsdp zFT1flTd*N(u`id2k-DI&+#}9a3?o$HJ5NM zr*S+-a3FiJGuyB!>#;g3up|pHH?uG;lQBMHFd{?oSLML#3*Yhu|Kjhw$xA%VBizev zT+bC;$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%1049@SB0=tiV&8K|GyS&Ep zJi&w9#m!v9rJTp%72|JjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#<2n@-e63*o`j^_vtWG{AR8#ZM< zR%Zp4WFh8e7N%t~#%ByhWGMbB6L@{$TfX35{GB&>iKlsld%2D4xq=Hhi<3EqL)nkr z*?}$Dh_zXTWm$~*nS&XbiisJAQ5lZG`Mq>t_mQvpln;5A*La>Mc#ylenQOR|^EjOo zIFf_dn_bwJ%~+o`Sdpbzn0c6$>6n}e7?Y70nnC!rRABdxFZr1Fd5f2MhDW)N+qr=& zxrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKIN(Nq^_=eB;i1&D%7kH9~ zxSLzJmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hl;27OcJKL$Pxyeh zd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^Ed-;PsjR z@;U$HZ@j^aJjKJ@!>wG$>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQ zFe6hjG2<{Q!!bC&7YXb>@-?6GA@A}U&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(c zvJ?w553@2IlQRKhG7>{G2)`B%?B4MuAM-wM@iNcwDEDzYH*h5vaW@GOsUKX-5=S8*}t za4N@fI0vvNJFzvJur8~yJWH@3b1^g1Fe&3PIwLS7e-;S5KJ#Bb=b!wIH+Ye!c$j;* zmFu{i3pkULIGRJ)m)+Q&E!dE?Sea#5l=+yQ8JLoZ7@JWTmcjU6{=n`7|KZ>KgLin9 z=Xjh4xRaZ>noBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?Gj)D_`LCg>U(S zfAM$TUA8ec~HF<0IbVbza~}9^!6p;aV=^e9quRj^beUVOO?eb2ea2R$^%u zVP0lqdZu7P#$sfKVNia{71+J!D?Z@^-sTma$h5lfUr>FY*)*a}T$29hY+fXL1rpa|rvg z8{4x58?qKFvkZ$eAG0$9Q!)`_GYZ2p82`%=*nQwX{F{I94zKbYkMjU`auZi`3FmSe z$8!V+vKKqE4V$tatFr=2vJi7K3)3$G8BJh54^tcEno02{?41c#M3;&z1+t2 zT)~B$#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8{GKha`^eXP%7?tmYdp^r zJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA>bWF|!jLAq0%^>`mHL!cfmwe3o zyv55r!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?BpSpu(5 ze8Xpa#CyEX3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$ z%5RwiyZ3y>Cw#!$yu!0Q#{JyEjao+qj-9xRA3rnPWJV{n(uy z*piJ{n^jnr#h9Ntn31WNm~j}D;TW9X(+74R`I=Apkau~F=Xrt$xr>{*hD$k*(>Z}7 zIf%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkRGIcJKI-k9nWBc$sH-l>4}y8@Q5- zIGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^0P0;Pr`b_>7NukJovDCwYjw zxrJ-FjPp5z6FG{5*@s=(j?LMCHCc(JS%i6+jp>z4KT`)@pZPDJ z^H2W98@$Lu3d^z>^D_rC zG8Gdu4x=(0gY$ce!0sbo^C=(lF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0q zu`u&6E7LJK6EG$tF*JklYx2PE9bfV>@ADQf^9+x2AGdP@S8@?&a|*|D82hsaJF*oU zvkt4W9E-C6b21ZCGYR7|8pAULej=lECXT|K)T3$=`T`7kP?@xrbZ1 zj?1}#GdYQ)IfQ-LjqTZj4OxqoS%yWKkJ*`lDVd0|8HHgPjQ=GL>^|@x{>?vlhgW%y z$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrg=v|L@fm{=8H&FW1zunHmM{1h zf9FkJ;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4eoq+K zedKFCLJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`IwofV#$+Uh zW)OZ&5ZJxrOFrg(-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4 zVO&OIc!uDQ_<`3azTq=I;yqsH1)k&~?&cP*`6F%T=Ug23D<9_boMy}#w&f!#!<8TgOPj+H!Hep>> zV|kWfLFQs+reRXXV{}GfNdAl)czx!-e9k}l8*lI;Pw_DKa4XkwITvsyCvh}~urIr@ zJzKCLYq2uRuqg8}J2NmP6EQZUFf4=dzc_*22mZsq`3LXtD$nsa4{#?paW$84E~jxk zM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@mK7?>kHrV1^?pjyva*E%_H2)ZCuY4 zT*z6R%rP9we(cT;Y{^Ef%_=O*V$9DR%*a$s%s7n7a174xu>!k~e9fnP$h*A8^E|72lk9K_!2!nSP2`mDimll+#84rDKOW*atTJyvH0 zmSiF3W)`MpGR9{NMr0`diV}Ez;ak4oU;Ldnd5NcagnPM->$!ppIg67yhC|tp-PwUH z*@(4Sg=JZc`I&96F8EC z*qdG0md#k7HCU0QSeSX3mFbwA2^f=+7@9%&HBw;rjxYI`_j!w#d4@;1kK4I{E4hfX zIfY|6jQ!bz9odSFS%+0wj>TDkIhl#6nS^l}jo}%BKOzQRpZJE)_=xv-ofmkLhq#+t zxR%Q}pEEd-qd1s-*p=c^U<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r_>94b z48>nz1FtW9%NP8Mzw;(9@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-Q zF)`yXD#I~2zlRCzKJqo6@*(f?8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqKE3y;| zGY_*e9g{NwV=@v$GYG$i4(#6XB_H!XZ}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_g zuqw;3I14Z*Gch%jFfOApJVWqDsKDzJ-|!h9@gA@90#EV~cXJEZavA4y1}Ab92eS{m zvK^bV0c)}nOS1^`G8@w~1rstBBQp$x@>|Hj?mb`e2_Nt_ukb97aX)u(BUf=T=Wr^= zaX1ICCp)n9ar+AoqxRvX; zoC`RUlQ^0~*q7bdo-NprwOE;DSd{sgof(*ti5Qzv7?#2KU+}>01OMUQ{DXIRmFIYz z2e^})xSC5im(w_&BRG(~*qLqEl=WDh6IiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWRW*kOkI0onUpn=^- zzUEUt$qWCw#!$yu!0Q#{JyEjaYN+qP}nwr$(CZQJ|)d%5>xcXnV)Hezj7VObVqe&%3Creb2oVKhcy z7zXFhAA#2=zUC9&)w#hGQrO<+tyF-Fv>^L*C+Lp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV{sN> zPG(|iCShDgXGDf&2>$vOczxy@KIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz` zC6;Cp=4CdfX9^}{Y(`~xhGsB+{~FkR;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{p zYc^qBR%3aVU_s_$W~O0M#$yad;$QrOzwyhL!0s)d@jh?xB2V!!_i!uMaXA-oCMR(; zhp;cZu{~R`A#1TR%djZ(F*`FbB@^*K{>y*(Cx7RU&wgFaUS4KZsKY# z;apDRc#hye_F`wYVN=#)byi?W7GiE@VOl0*e8yyC{>_jK!mpnKyLWuf2fWEkJk2BA z%WYiG6(miY&##%)_iq$K*`FSd7AO48@@Q_93u) z&lh~iTfEFOJj#9C&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxrjLYbZ$gm8- zU+)92&wRtDyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&> zs0`20494&80=o}<$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|K zG)&5PjKN6!i+}Jpet8?%z2!6B=M7%uDIVq?Zsj^I=K{{;B#!0~_GLG=XA3rDEmme3 z7G*wWX9lKZBL2sJ`49i(@BHy5@cPJCe9Sw%%5yx<1Ki0?T+Jn%%V`|X5gf=~?94W7 z%6hEM3M|P&%*`xJ%Vdntn2gN78InQx^>twPj?ejkH+hMtd4zkpjqACB3ptCEIfg^o zkKNgUE!l{*S%qa;jQN>^8JUWS8HdprfngY&KVJo2pZJv0*p|&$pEX#KrC6AGn3d_6oCz3qIeR%J5B|n4 z&jP!*e8&5{!HYb_!`#EIT*u{Hz?q!H(Hz3Q?8f$N!G^5G$}Gd8%*X7^z?4kH|M)Ne z;h+4SKb{6&ANh)pd52edj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2VY zjPV(hk@+`6G6=su3GCkSIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x) zKXWi6Q!z2)Fd8E;41@FM#!=zu{aAbCo?fMlQ1r$Ga|z>1b;mYygu^{pYk5B^8!!u5O;G6*K!%>a|S1J z6bG{pyRsddvjJT z@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UU6|7J)A;n%x? z-8(+#1K#8%p5_tmh~wR%JOBX94D9 zCZ=W*#$|LyWLSpauUmoFXTIT6-s5#%;7K0hZf@aPF5`U8;6#q%VD@2GwqtWPU`S6c2L`w{jhqa{*^^5=V0g z`?4F`vjrQn7Avz1i!vXxGXqmH5&z@A{D*(?cmB8@czxt6KIR=>&l;@AQY_3o%*u33&IF9bC=AC?49ag;0=xHo z!H2xX%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(#-jLwJ*%Mko^ zIq>?-H+;%_yv_?e$wS=DEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1BEBFxKdOwSZd$k>d^ z@C?mh{C+90`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z#mr2@ zq>RTHjKshA2Y=(2i-Fx+KI47f;6yAahQaysT;TPIula;`d5!0Jf(N;ao4JNdIgish zfg?GHz1f9r*^KpBgB4kdg_(z0nU2YsfUy{b;TVcR`R#0A_nt5Kkhgf5XLywRxSbog zl8ZQ-Q#h8x*q=Svk*(O6by$_zx! zn^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fd@V_!s}+Z~Ss9 zuzSmAyw4lF$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wd5*|MDOH z$=~_oWZ?CYulSgEc$MdPoCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM;g_xUJn3l;H zpD`Jke={V5@au`d?j4`=0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKaF- z2QxAi6EhB@F#^LdIDZ}wyguru|8|C zB1^F_^DryZF*y@37Nam6Loq179SiK<^93LB7BBM*k8&Tka|2g$5odD>$8s3^vj;n} z6&te-tFj!6vjB546H_w@<1#uUGAu*z*U`Z1GvDwj@9{b>@FWj$H@9#tmvKI4a3V)> zF#E78+p#$tuqG?9G>b4VvoSqWFd<_zD#J50gYo;3!0rQI@)2+I3eWNw_j3m~aupYI z4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+V=xl`;vf8tUk(R$Z~2V(d4m^uiif#} zTe*(Qxqve{iK97$ec6re*@6vOi(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$hx@U>FAH z&jW$iC%)zr-sLr(=LsIRF30t4q#7qVrw>G zT~=dxmS92VVrHgcQpRHpM&e)mgTL|1p1|%cpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+ zyRki6upw))GRv?i^D#R!FeMZ5KmN;q_$PnokKKXSN50}?-r-fA<8dC~PHy6AF5z5G z<9LqXK=xv1wqaA&V|7+wNfu&mW?@<;V|>PBWd6;N48pIw0=sv7&Ii27OFYdZ+{$z>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z*vmJa16zu{I(;od(Rhq z$XmS3Gd#+D+|CVL$wi#aDICjT?9U$T$X0C3I;_faEY1SV$xKYmB#g`GjL5JI!C%`0 zug`qLr@Y7Oyugz@#NFJ&wOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)Y*Ou>YV&8Q5| z&^Y|479 z&I&BaLd?x9Ov_}9&zOwNzZsH2_;qt&_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}X zfi2mHwONH_S&aFagBh8Mi5Z8{7=d9JoIf`OUZ41yPk5Ktc%CPCkh{2Fed6<>yn4Ae1i%}Skp%|3kHU@U@`GOC5iyid*@GR~ij7%^RauV3S%5j2iK&@{aT%Qv8I~dVYeV4mnQ!=%_jsKbc#?;> zn_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;$gmqbs%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Q*p&|KXqf zoj=wFULX02k9mhzd5*_S&!9OfhAdpxtWD&nT+un zlacv1Lox`zt_kek@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDKF+X!K zBU3Rk<1iW{Fbsq9=jy=g6JPTQ@A4YY^8^oa7dLYamvSDba{@6Vc#)@gn0vUD z>$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`IwynqVQ~Ij z5_o;$Yd+y!UgLS5;6d)kh}Xa?i=g@N4%zT_j`<`tghG4AIMZsaO1<{VDtI1c9k_GBlvW)s$B zHI`=y7Gy4FW*R1CJjP%o{>4A|8^0_F?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d z+p`55vKA||42v=!voixzG7%hx+{X1> z!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EipejKDAq&YyDwuTOld%VsIJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-Ovu=b%J2-$ zVEjHSu=~K5e8k(l!m~Wa{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI z7>vZf_y>REmzjaxTR!7`-rz-^;$iOLR<7f6F5pZ~;%E+GUv^`AwqQfnVr7?|L{-#&L1-ZuaA7i$GpR&TPY`tjFrC zz>+M)+|0tXOvd<($;kYhAsK{Urw4ZL_?!=Tlb3j!N4S^UxSlJxkh3_MV>p!k*qt5N zl8soKRalnAn4dYAk*S!NaTtve7>2?5b6Vi_iLd#DcX^HHd4dPIi<`NIOF56zIe{ZN zh`rf`ZP|?VS%Vc>iiMenS(%Q>nSikvh2a>ALHTWJVE3Lc_>i}FnP+&E`?#GOxRQ%F zn^QQJ!`Poa*paQ+m~~i{6wBF8JkfVo}n3x-zNulANZ1wc$-&v zmdCiCJGhanxR`S|mE$;^1K5+D*qTjPm(^IFC0LNTn3-vql<^pYk@y$?;BWjgDX@FX zXS~lFyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyz2kN@%?{>k6@ zV`AX-k+1lecX*ZOc$^2glbg7jOE{O)IG!UokiFQMZP=9cSe+GEl7*O?S(ui|7@sj2 znSV1RgYfHw!0sKN^8s)25>N98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGY2y= z6%#WKqcH-*FgSmX54=9{HJ|Vpi?aZ8G80oX3F9(4BQh*Q@YmSD>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^ zE8DR-8?YuTu{4V?FS9W{Q!pW8Gb+O~G=uT`n85A>U-A)e^9s-M8257rH*ysha}K9+ z9EWoNd$JQ-vkB|68q2c;3o;ioGYyk69%C>P|KcC~jbBCwc5nHN_j!XCd5VX*hg-Rh z%ejCvIfHCJ2qzn)?_7?W)bFP zHl}9^CS+_zWq5{WFn%8z*nQwjKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Z zd6r;7=3-{1VN%9p3`XK#{DZ&o%aFkCEuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1fl zTd*N(u`7E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojLoPF&(I9U z@BIS14}8f-yv-{-%VXTn9o)!OT+BI~%5fad0qn_6Y|SRD%W5po5-iAE%*-@Q%6N>y zNc@X`@Hc+x8`!<&Gv4P7UgRkr<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbI zreq@i$A9?`|K#ud(I@cw$X9&KJG{zsJkA5$$xU3%C7jD?9M2IP$X@KsHf+jztj-E7 z$wJJ{EKJK}jL(>i%)c3uLHMMc#ylenQOR|^EjOoIFf_d zn_bwJ%~+o`Sdpbzn0c6$>6n}e7>iLDj-eQo-+Bgi@A-lcd5f2MhDW)N+qr=&xrnnl zg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD?25gC>t_^U_Y^_g$@l=pa@7kH9~xSLzJ zmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ48I|D~n!)(Jdtmp0FZqbKd4*?r zjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjk1-gDfAJ6g#xLChySIGC z`@F%6JjKJ@!>wG$4h`E`CX_<`i8IzIu zH$yTAzjg`i-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hj zG2<{ABQOku^JnM4>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w5 z53@2IlQRKhF$%*m6oc|xr@-z#U+^Js@iNcwDEDzYH*h5vaW^|@%AMrM?@GOsUKX-5=S8*}ta4N@f zI0vvNJFzvJur8~yJWH@3b1^g1Fe&3P1|#t={=wh)rF~%cmd|*fH+Ye!c$j;*mFu{i z3pkULIGRJ)m)+Q&E!dE?Sea#5l=+yQ8JLoZ_#gk}Km3!w^GCbD>my(BG4Jpy&+#}9 za3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3up|pHH?uG;lQBMHGBW>WNCx58wt?L{KIa48 zu%e_#3~p2<+bS8SnE3FY*)*a}T$29hY+fXL1rpa|rvg8{4x5 z8?qKFvkZ$eAG0$9Q!)|%63*o`j^_vt zWG{AR8#ZMbWF|!jKwGn$50H)Z%qQb_k6*Jyv55r z!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlmihz!dR{M9({`ph?c z%6q)d3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imq2jLPr~&0zfA zD6sp$mwd$Ayu!0Q#{JyEja~o_0o+qj-9xRA3rnPWJV{n(uy*piJ{ zn^jnr#h9Ntn31WNm~j}55g3NS`LkZ&^@*?fgm-z3=Xrt$xr>{*hD$k*(>Z}7If%X4 zg>Bi4^;v@zS&D_3hgq49$(ew$7=_^&ib46UZeaJGFZhtRc$sH-l>4}y8@Q5-IGa;A zmc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(dxKVHtwI>I7b&`G!wnoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt88JT}G zB!lp4jlk|5pYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu z4x=#w!!S61Ru8;B@im|DF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6 zE7LJK6EGH|FdRcMD8E$;?B4SQAMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oUvkt4W z9E-C6b21ZCGYR7|IwLYHL-1GC!0R*L@G0-{Ixp}f4{2qlGc<$odzHZM17GqHZ}SSz@)-AX2RCvR7jq7$avX@n8PKKlwX;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&G)7<;2ItQTf!8O# z<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`IwofV#$ptPV<-mY zxAKAAd%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4VO&OM zM22Mu{wf!EedZfJ>V|kWf zLFQs+reRXXV+=;(U;Kl=@k^P&?k%73K5y_MPw_DKa4XkwITvsyCvh}~urIr@JzKCL zYq2uRuqg8}J2NmP6Y)R(%YXPMf9H?Vf!9aA;$z<7Ri5K<9^g)H;%YA8Tu$S7j^IG{ zVrRBtQ`Td3R$xgMVs2((S|($B#$;sv&5#VjucZRJcYMwVyva*E%_H2)ZCuY4T*z6R z%rP9we(cT;Y{^Ef%_=O*V$9DR%*a$s%s7n32n@sE{8=*a`o!0K!n?f2^E|72lk9K_!2!nSP2`mDimllOj$5C7!v{81$E`p8#&%safwb3D!i+{sN`%_W@6X&lcH9LQem%rjaA5b2&-s8id5NcagnPM->$!ppIg67yhC|tp-PwUH*@(4S zg=JZc`I&96F8EC*qdG0 zmd#k7HCU0QSeSX3mFbwA2^fn}7>=PBl-~*lcJKLu4|$81d4@;1kK4I{E4hfXIfY|6 zjQ!bz9odSFS%+0wj>TDkIhl#6nS^l}oe>$9A^596;Pshr_>}i}ofmkLhq#+txR%Q} zpEEd-qd1s-*p=LfiL-pw|RwUd5rtH zgB!Vui#dl=IgZ0QfIZoXt=WWiS&ijcf(4n2nVE)38ILg-iGT4A{>Cr)0=u_-#{0a% zi#)}{+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3&luX3`_%HwApZuLa@&;ZX z`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrg=v|L@fnkm`8Pu{ z2*2hD?B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yX z8Y3_agY#$Z!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqKE3y;|GY_*e z9g{NwV=)TDF%*OHTdu(FJzwx4Z}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_guqw;3 zI14Z*Gch%jFfOArBEvESf8`9kKJyKq@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV z0c)}nOS1^`G8@w~1rsthqcS{0GZ??;2<$%aB_HuNukb97aX)u(BUf=T=Wr^=aX1IC zCp)n?FaE*b_$7N__mIiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWRW*kOi1cqU7{>&11ed23A z;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMNawcFbMqxOHVo-j| z9N4|*3qIs6UgjAdEZsA%k<9yEGM2_NM_F-4HV{>hkx>S{zxBqedH@X<{e(;IUeT$?&Kz}<`T~3G>+#84rDKO zW*atTJyvH0mSiF3W)`MpGR9|2M&{oP$sqiiF0gyY=X}7Myu{Ny!oA$a^<2S)oW;o; z!=dcQ?(D#pY{c5E!m=#J{LI0OOvS{E!)T1aFbvM0X#=lMe9b4k%WFK(6FkUW+{`sx z%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPQf498Fm%5P}`yZ3y-hrGqhJj0{h z$L-v}m0ZNxoWijj#{TTVj%>xoti!4-$Kou&oXo`3Ov1Q~&WH@l5d4)o@cPU*e9C*g z&I>%rL)^_RT+3yg&l#M^Q5?)Z?8N-WJH%*$*{&lF6^*o?~X49#Hto+_~W zz?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_ijK>&^#J~6l zf8&>wf!$j^<9*)XMV{he?%`Ih<8m(GOitox4q;z*V|%t>L)KztmSIumV|Hd>N+#le z{FndmPyWsyDFUyLe8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T* z!n91r_>9TO{F@;egkO^fcJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ? zmc^K#Ihc{Dn3!=GjS(1z!TB>;;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{ zjP+TA6(yTu^5Hn7>YspEoor)o-g>2w|JRnc$E9Nog284i#VH8IF`fM zpFP--t=O1#Se4~ioCTPZnV6bM7?;r*kzpBvzmf!ApZSJQd5_n5fhT#0ySasHxs3BU zgA+N5gV~2&*^bTGfHhf(rCEe|nT_e0f(aR$Q5l}08I0c(2X-I$l8<dykf5s2IKJhi5@Gh_MJWuc-cX2b2eCK1uq~UhK5MWdOR+HXFe}qB zITJ7zqc9vpF(|*q3+&$W1t0PjFY^qKav!&I16OhpXLAb2av1xw2RpJA8?z3pvK))E z0CO@EQ!@$UGCCtNEJN^D+`#KI-|#8#@j5T?BoA>nw{R_&aXx2oB1dsB`>-q9u{j&C zCM&Tti!d*%}#L*nWzU;>KY{7=C#mX$h zqRht}%*1p|$s~-+XbjH~{E;~D`p8#&%safwb3D!i+{sN`%_W@6X&lcH9LQem%r<2n@-e2?MWBe9b4k%WFK(6FkUW+{`sx%6Xj5 z2^`5m?9DE0%Vw<48m!1tEX+L2#=rRoe`g}bW)y~HFn&uA*uCcqKIAQ4<{2L4K5pj* zuH+)l<`jOj$7gO^$#%ByhWGMcMA9#J{8$RVdUgrg# z_kl0@ zh_`u#XL*eKxq}qIea~X_$-&7?Y70nnCy_ zZeaJ8&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`Iv*5n2sr#gmD>- z;TeKI;sjnF`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrl^L0q z$(fL`7@1)hlwV^9cJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ?mc^K# zIhmR1nTkmnkI@-{A^9^_;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{jP+TA z6TOD;w-@b_%HurYW~LfjKPQu#a}T3ug`qLr@Y7Oyugz@#NFJ&wOq#eoWY44 z#lh^uu58EVY`~hV#L_Inyv)vj_$N~^G2<{Q!!bC&M-S{i@FgGdHm~q3k8wYDa3fc7 zG3Rh9$8k6ZuqQjQHJh+5tFb&wupo0W3o|eclQ98fG7>{G2){%N?B4Pj@AC#P@)Qqq z54Un1mvaGUauP>#2>Y@d+p`55vKA||42v=!b1)OrF(s2QE~7C#L-0q`!0RJl@iFi4 zD$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*ma^BhxZD6EYSfGYo_BYm~t5 z9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y81pkHGc!F?F)8CQIwLS7 ze?|_xKJhi5@Gh_MJWuc-cX2b2eCK1uq~UhK5MWdOR+HXFdP5oAN-w( z7@JWTmcjTfQegL4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1^6HT zn_IY+%Q&AiIFX|`n0?rl?bw_RSd*1l znnjqG+4&FuWC|u`97bh02Iuz(f!znb?@G=^sg{s+#84rDKOW*atTJyvH0mSiF3W>#ioS|(>g#$sfKVNiYz8`!<$b3WirUgBvU;a+az zdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%Fmre`W9Wjsb_1cv0#FoD-6zUC9&>i>dh=<1+>$G8BJ> z3cNn^4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54*A*o3jCHvJy+P2=g*K|KXoZ!NiQi zs0_#8{2nr}`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z#VpLg zG)%?>jLAq0%^>^|BCvbQXS~lFyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#> ze9Xa2OvjW=!nlma@C?Bp!2_?4e8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq z>a4($EX3T*%8X3Q(miY&##%)@N_n}6_kCSq(xVOR#^w;+Mtd%oa9-r{AR;Zg46c5dKG zF5+xX;aCo1fA(NUwqj$}VO5r6aTefz{Fi?*HGgA##$ZH-;;&!3{{Q;SH+;%_yv_?e z$wS=DEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1BEBFxL|{D*%s1rsw4qcR+W^ZU=h?gL-) z5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?6I-(h>#`clvjht=7qc(}(=ZtmFeW20G=uQV zkHGFNpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i^DzfAF&$Gf3F9&v z!!rbbd=I=n@)aNR4zKbYkMjU`auZi`3FmSe$8!V+vKKqE4V$tatFr=2vJi7KD>E`J zlQSV>F*3t2D8GIS?B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Ke zb22m2GZm9E9-}h?L-Oa>!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqK zE3y;|GY_-zZ~npGnTW9&g<%*Z z*@}%>hgDgQ#aV#=@n8PM)clR{8G{iSioZSwUZ44fPkE2md4VT+h`YIkYq^Z`IfD~9 zii6pQUD=M!*?=`!iKSVDd6}L6@K2^-V#Z-qhGTGk{}kAL;7dN@ZC>G79^-!Q;6|?E zV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$7G_`?CSwA|WF&@W5Pta>*uCX5-scToIiF61mu<`@oTKXzvawqzsLW)+rYG3IAZW@dV(Vp7IqbVguE z{(KjBed23A;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VK)BFKlnQn zF*c(xEQ9ge+raKUU+^Js@iNcwDEDzYH*h5vaW@FWj$H@9#tmvKI4a3V)>F#E78+p#$tuqG?9 zG>b4Vv-2PR$rMb?IE>1049@Sb1G^7=$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv| zCalY9EYA`w$Xv|A3{1mhOu(3o#Lx`FFRuc-w|vI?yuph+#lzggtz5_DT)>%}#L*nW zzU;>KY{7=C#mX$hqRht}%*1p|$s~-+XbjH~{P8mI`p8#&%safwb3D!i+{sN`%_W@6 zX&lcH9LQem%r<2n@-e&jYVde9b4k%WFK( z6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2#=rRoe`g}bW)y~HFn)U$*uCcq zKIAQ4<{2L4K5pj*uH+)l<`jOj$7gO^$#%ByhWGMc6 z8hCx?8$RVdUgrg#?_kl0@h_`u#XL*eKxq}qIea~ zX_$-&7?Y70nnC#GabWkB&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhYnPpg% z`Iv*5n2sr#gmD>-;TeKI9tB<>`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I z)mechS%|rrl^L0q$(fL`7@1)hlwThPcJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM9 z9oUkMSesQ?mc^K#IhmR1nTkmnkI@-{A^Gz`;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAU zBRPn@*@bP{jP+TA6TOD;w-@b_%HurYW~LfjKPQu#b5UVug`qLr@Y7Oyugz@ z#NFJ&wOq#eoWY44#lh^uu58EVY`~hV#L_Inyv)vj_$N~^G2<{Q!!bC&-wo_O@FgGd zHm~q3k8wYDa3fc7G3Rh9$8k6ZuqQjQHJh+5tFb&wupo0W3o|eclQ98fG7>{G2*2D3 z?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d+p`55vKA||42v=!b1)OrF(s2QE~7C# zL-5D#!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*ma^BhxZD z6EYSfGYo_B>#e}<9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y81pkH zGc!F?F)8CQIwLS7f8GqdKJhi5@Gh_MJWuc-cX2b2eCK1uq~UhK5MWd zOR+HXFdP5oAN-w(7@JWTmcjV#Mqu}zFZhtRc$sH-l>4}y8@Q5-IGa;Amc!VeJ=l@0 z*qC)#mE~BR1^6HTw4hznQ!=%_jsKbc#?;>n_IY+%Q&AiIFX|` zn0?rl?bw_RSd*1lnnjqG+4&FuWC|u`97bh02Iu!{f!znb?@G=^sg{+#84rDKOW*atTJyvH0mSiF3W>#ioS|(>g#$sfKVNia(9N4|% zb3WirUgBvU;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%Fmre`W9Wjsb_1cv0# zOM%xXzUC9&> zi>dh=<1+>$G8BJZ2)sV?4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54*A*o3jCHvJy+P z2=g*K|KXoZ!NiQis0_#8{C+;L`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%W zx~#_XEWv`z#VpLgG)%?>jLAq0%^>`8F0gycXS~lFyvS2L%st%7bzIH`oXJTX%^~c| zZfwsMY{*)y%rY#>e9Xa2OvjW=!nlma@C?BpX9KT~e8tDS!>c^U<2=Bf+{D#f!nvHr z@f^W{?8VM(!=|jq>a4($EX3T*%8X3Q(miY&##%)@N_n}6_kCSq(xVOR#^w^M=Ld%oa9 z-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTefz{Fi?*HGgA##$ZH-;;)l| z*Jr-rQ{LlsUf@X{;%;u?S}x;!&fr9j;$Ze+SGHqwHegLwVrdp(US{V%{F5n|m~j}D z;TW9XPXu-!_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7xg&CNJ z$(VpK8Hu48gkO#ac5nHN_j!XCd5VX*hg-Rh%ejCvIfz4KaT`npZJv0*p|&$pEX#KrC6AGn2mq)5B|d%VsIJjp}c z%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_7Xp?EHs+G6fSe4x=(0gY)~r!0rQI@)2+I z3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8eNj1Jf`W6EG$tF*Jkl%Yne| zEuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N(u`qgOR^AiGb=MPEt4}L zV=*$rFetz73+&$UIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x)KXWoO z(=!#5G9IHd0z>lW-oWbTDk|M6e`#nk+b@fm{=8H&Gl2VS4~hEI8q*Li^_d5F8Yg=@Kt^ErbPIf{eX zhh5o@&Dnr8S&5}tgn5~r|L{+yU}DB$REA@4e%}??ec($z;%#2xSsvql?%+nQ;$qI> zRF30t4q#7qVrw>GT~=dxmS92VVism#8YW``#$+UhW)Oba8Q8t$Gv4P7UgRkr<{ob4 zIxgn|&g3MH<`DK}H@0UBHe@YUW*HV`KIUL1rejJbVO&OIc!uDQ9f8+JzT#uv;Z>gF zaUS4KZsKY#;apDRc#hye_F`wYVN=#)byi?W7GiE@Wk#lDawcRfMrIfW<=5?j-8(+# z1K#8%p5_tm#6Z zn!hnVV=y8^@z<8X>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V? zFSGL>{>cwG$&l;@AQY_3o%*Ma@2Y+WG#%2_TWiWnQ7udb$3qIs6 zUgjAdHCJ2qzn)?_7?W)bFPcK*XZnSzNKhfx`h z!TEhnVE2J9`G~i9g=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbsma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$ zC0U5MnUxutmdTlru^5?Q7?fXE26pfGoDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ogLVc zjaZviSeC_@pE;SC>6wa28IRE!fg$;GMd0;`ula;`d5!0Jf(N;ao4JNdIgishfg?GH zz1f9r*^KpBgB4kdg_(!h_&5LH?@YwljKZ)C#&635yZ3y-hrGqhJj0{h$L-v}m0ZNx zoWijj#{TTVj%>xoti!4-$Kou&|M)NeVru@z_>94b48>o|07E*>%72|JjC7H z!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1ARfA}X;FfrpWD#I~2zb_5!KJXT@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdG9%M6ITJD# zBQp$x^6R3&?j4`=0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKaF-Co?lW zQ!y#yF*+kKB!4apyguru|8|CB1^F_ z^DrC#<{$i>i5Qzv7?#2KZ9!o7o-g>2w|JRnc$E9Nog284i#VH8IF`fMpFP--t=O1# zSe4~ioCWwF|K(py&EFWGF&L4d_-lUP^_g$@l=pa@7kH9~xSLzJmdiMwGdPi>IGBCd zmF?J^4Oo+vSeiwcm)ZFb|6~d#W*kOkI0onUd4b&rzT_j`<`tghG4AIMZsaO1<{VDt zI1c9k_GBlvW)s$BHI`=y7Gy4FVFspQGA3Y5Mq+3N;g`9A-CI86ecs?jp5kHd;a0BW zaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|4rXFHreqSvWi*Co2>zH8czxt6KIR=>(LeAo3j^R-DV|R97OEzL{R$*BdV}9mjW~OH1fF zG8n(j4D8A0$;QT&4u=~K5e8k(l!m~Wa{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+ z@+`rE%*8Csz%)$81dPc@49y_?GA*!s%V)gL8@$LR%j8VRSd7dt49c%l0=sv7&Ii27OFYdZ+{xeoIq>?#*L=deyvFl9!Gqkz z&0NE!oX6>$z>yrp-t5A*Y{vSm!HO)!!py^L{F{I9cP3(NMqyY6^L*C+L zp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV{sPXfBct!F*Sc6ns97?;r)o+0>ST;TPQulSgEc$MdPoCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM; zg_xUJnUQIkoCz6=kr{?T`E_hy_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}Xfi2mH zwONH_S&aFalbM;GshE`U7@ZLql0U};UZ41yPk5Ktc%CPCkh{2Fed6vkJ{52}@`ph?c%6q)d3p~j~+|4aq z%VnI;8Jx&b9LzrK%64qd2CT_SEX^X!%k2Dze=-FVGY+FN9E0=w$iVIcU-A)e^9s-M z8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c;3o;k8Fay&t851xjBQZ3C@XLt6?k%73 zK5y_MPw_DKa4XkwITvsyCvh}~urIr@JzKCLYq2uRuqg8}2Qx7pQ!)wTG8)4(1b++< zygu?3AM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL36m0!y+Gb2BS5GA)xcA!9Kz z!!Rhn4h!tw@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDKF+X!MGt)B_ zlQJHoGXg{M=g`3G6JPTQ@A4YY^8^oa7dLYamvSDba{@9Y%jqw?S5gCfV1_xfB`G!wmVN`}=aDE>Y*nQwjKH_a&;aMKze(vB#uHs_O;Z%;} za1LNkc4BKbVO>^Zd6r;7=3*9RU>YW40>)${hGr0c85r2T?x5I}#!=zu{aCxKmNdrn2f~G48kwH0=u_-#{0a%i#)}{+{3M0$K_nWnViJY9Kycr#`bK% zhOEWPEW@JA#~jSWbWF)4jLT>Y&k+34Gw}MzSA5JnyvlPt&I8=ZO^Y|479&I&BaLd?yq%*eD%&V-D`$PB}v{MsY1d&lQ|z?;0p(>%hx+{X1>!G)Z~ z$sEI>?8olxz?N*p+N{E|EXMrI$;?d8R7}cvjLrxQ$)DW=uTOllWC(=Lh~wR%JOBX951lfB6?v^Ebw43`S%q{^}ZdedZfJ z9>CJ=uw^*@SgjjpbQ_1(}Okn1N}Sj0qT% zkrS&!9OfhAdp zxtWz2nU=|!kg*t|_?!=Tlb3j!N4S^UxSlJxkh3_MV>p!k*qt5Nl8soK zRalnAn4dYBndzB|Ng0pP8G#}BvqRwZiLd#DcX^HHd4dPIi<`NIOF56zIe{ZNh`rf` zZP|?VS%Vc>iiMen+4wjA;O|Vt*o?xk490Km1H1Qp!H2xX%RIxQ+{f+Qz?EFY*_^_$ z9LE0a!H#Uj#;n7tEXU$3!2kF!|6*$X#`uiEhz!MF?E^|@%AMrM?@GOsU zKX-5=S8*}ta4N@fI0vvNJFzvJur8~yJWH@3b1@4uFb$J20b?=}Lo*1!vN98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGbb}MJyS6$ z<1soTFeHDr47@(^HJ|V}i}ofmkLhq#+txR%Q}pEEd-qd1s-*p=L)KztmSIumV-99wI;Lb2#$_~yX9)gi5_o;&D?a8OUgbF+=K=2I zCa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9XQW@K6>XF|qeWQJi-er+7sz2kE};7wlQ zX&&KTZsU5c;6l#gWRBrb_G5Q;U`sY)ZB}7f7Gr+qWM-ykDkfz-MrQ$8s3^vj;n}6&te-tFj!6vjG3&zx<1-`5WUi z1|u>Qe>DiaKJyKq@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`GCTj_ zpG?8TjKio5$Kd>4Kd}42mwd$Ayu!0Q#{JyEja z&TPY`tjFrCz>+M)+|0_1Ov~g<$XJZbFbvACbppG0e9i~F$xA%VBizevT+bC;$XT4s zF&xT%?9L8s$wsWrDlE%l%+H+6%=Apfq>RVtjKGlmSv&Ch#MgYnyS&EpJi&w9#m!v9 zrJTpP7M26z8nt|76zTs2e z<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV{Mc#ylenQOR|^EjOoIFf_dn_bwJ z%~+o`Sdpbzn0c6ufAbIi&P0sOC=APB{8l-zd(Rhq$XmS3Gd#+D+|CVL$wi#aDICjT z?9U$T$X0C3I;_faEY1S_kN@&7rsi*q&lrrzQ2bRX@cPU*e9C*g&I>%rL)^_RT+3yg z&l#M^Q5?)Z?8N-WJH%**Wjhkr5!6EhB@G8}{Rd&R)+17GqHZ}SSz@)-AX z2RCvR7jq7$avX54=9| z6(92suksv^^8j~p6IXKy=W-gya|8#n7dx{Jo3b9OvjR)95OXstGcqlcGa+L!GQ%(^ zzm^N^-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQGBeXN6_YX^ zqcZ|S@@Lt=>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w553})a z{=wgwh_M-kVHu3y$^>@r`GOC5iyid*@GR~ij7%^RauV3 zS%ClXU;f3^{EhJ$gAo~uze)#QpZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~2&*^bTG zfHhf(rCEe|nVtXePo`jE#$i;3V{m>i71({?OFrUlUg23D<9_boMy}#w&f!#!<8TgO zPj+H!Hep>>V|kWfLFQr>W?&j7V*U?!$xN+w}kMq_w};Exi4*GInMW8UFap5t*I;7)Gh zYA)eiPUCov;6V0bXSQKe)?;;6U`ZBYZf0dhre$&_WGqHz7zX9n;(^^eKIa48nw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*<^B?}n z6im!GjLL8f&hLc-yAOQHN4(7|Jj-L;&mG*zRb0$DoXT+=&H?PnPHfF4tjlUF&k`)i zT+G4@Ov7YMz?h80&`e8&5{!HYb_!`#EIT*u{Hz?q!H(Hz3Q?8f$N!G^5G z$}Gd8%*Pze#B@x_B#g^w49^h!Q84iO$X9&KJG{zsJkA5$$xU3%C7jD?9M2IP$X@Ks zHf+jztj-E7$wJJ{tjx%?OwNRi#mEf9p!`}OuzSbne88K$#M3;&z1+t2T)~B$#mOAQ zq3p-*?7)_6#M-RFvMk2@%*o75&s0pxc#O^n49TDQ1Fuhf%_qFeYdp^rJjh+#%r#uf zd7RGwaXe1}R2T{XK(lSzw%uyA)oR(TR?D_++qP}nwr$(>-aS9(|4iUW4q|V1VOut1 z1J-60mSZUvWjP7M26z8Vu9CZzTs2e<8@x(Ngm>EZsA%k<9yEG zM2_NM_F-4HV{LXAWj$Dkf$eMrAk#=l7z4-3PwpBi`l}p5-y_=MHY< zDlX<6PUScb=K%I(C$?r2)@MytVp*1CVdi00reks@U`$40Xa?bzB7xmoKI47f;6< z2n@-e1p}{7e9b4k%WFK(6FkUW+{`sx%6Xj52^`5m?9DE0%VuoA+N{EIEXAVC$L!3& zluX3fjKZ)C#%~1zyZ3y-hrGqhJj0{h$L-v}m0ZNxoWijj#{TTVj%>xotj8Lx$TBR! zLd?x9Ov_}9&lrrzQ2doY@cPU*e9C*g&I>%rL)^_RT+3yg&l#M^Q5?)Z?81H5T+RiY$w?f| zA?(X;Y|j?_k9Ap%fAbF(X94D9CZ=W*#$_~yX9)ht6L@{(D?a8OUgbF+=K=2ICa&fZ z&gC?Y=LimDFLq`dHs!yp#mfAPzq1JQG8@w~1rstBBQp$x@@wwE?j4`=0dMjWPxA=( zavRrk1s8G_CvyykvLCy%16#5Y|6z4j;Gg`B1(}PPnTAOjkI@-{A^9^`;Pr{G`Gj|Q zjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{j15?uRalOtSd{sgof(*ti5Qzv7?#2KEoWf& zo-g>2w|JRnc$E9Nog284i#VH8IF`fMpFP--t=O3LSc4T=h9y{txtWD&nT+ungAo~u zzj6d#pZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~2&*^bTGkabv<nSe1FiJ=*UU$O;uZ~2V(d4m^uiif#}Te*(Qxqve{iK97$ec6re*@FMEF01ix z{=wobz?{s))J(#-jK=T`!5>)zuaA7i$GpR&TPY` z{Fk*@nSb$j7GYjyV|u1wLdIfbhG9^C%@WwX<8waXO(LeAo3j^R-D zV|R97OE%&^tj-GjlfSVbb1^g1Fe&3PIwLS7e`XH6KJhi5@Gh_MJWuc-cX2b2eCK1uq~Uh0c*1g%dr%TG9R-u15+{)V>1fFG8n&Q3hdtV1t0PjFY^qKav!&I z16OhpXLAb2av1xw2RpJA8?zp3up-N_1Pd`YvoI}_F+O83B17?4#=z?{-|#8#@j5T? zBoA>nw{R_&aXx2oB1dsB`>-q9u{j&E4y&>}OS2gBGY2y=6%#WKqcR+W^LvKC?gL-) z5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?6I-(h>$4^+u`ElnF!L}g(=j;{FeW20G=uO< z`oQijpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6@ITgNHU7;%SeylzlbM*BNf?*W z7@i^cBVFM2k+1lecX*ZOc$^2glbg7jOE{O)IG!UokiFQMZP=9mvKA}zFaFLV%*$*{ z&lF6^Sd7dt49c%*1G{&8&Ii27OFYdZ+{S%H7@ zHx^_rW@Z{DWjsb_1cv0#G=bMAzUC9&N+x1#MqyY6^L*C+Lp5amM<92S~N-pATPT^P%V}JHw zN48>P)?*D;WEqxVA?9Wlre!k5XADMUDE>+nczxy@KIJ`L=LMeRA@1fDuH`b$=L}Bd zC=O;Hc4a#@XG7LuRhDOI7Gr+qU`D25V#Z-qhGTGkPZ`*K;7dN@ZC>G79^-!Q;6|?E zV$R`Ij^l6+U{7{pYc^qh)?_7?Wl0uh9%f}aCT9Z1WF&@W5PnG!*uCX5-scTozxfA?vjB546H_w@<1!k+&wRtDyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7XY{%wo$U3ab z@+{3_%+DOm$W%1049@R~0=o}<$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv| zCalkzti-Y`$->OTtW3w`Ou(3o#Lx`FF9`#?w|vI?yuph+#lzggtz5_DT)>%}#L*nW zzU;>KY{CCnm(}<;|6p+zU`}RYY9?V^Mq_w};Ex1>*GInMW8UFap5t*I;7)GhYA)ei zPUCov;6V0bXSQKe{>xgd%)j_Mi!d*z4KjQ^npZJv0*p|)MfVEkLqIe6n}e7?Y70nnCy_R$%v*&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj_#f-C8vo`W zEY1SV$xKYmB#g^w49^h!5i{`m$X9&KJG{zsJkA5$$xU3%C7jD?9M2IP$X@KsHf+j& zS&NnV7k_6F=4CdfX9^}{EJkJ+2Ibcnf!#Yk=L6p4C7$LH?&UVF=L#<5EKcSa4rM=f zX9u=qBmTqctiV6{8w)ZQGcyg7G9IHd0z>j=^uX&AU-Jp?@*2#+tavJ6YG5OXsN(=r+3GX^6v6n{kxygu^{pYk5B^8!!u z5O;G6*K!%>a|S1J6bG{pyRsddvmxuSD$BDpi!ncQFe6hjG2<{Q!!bC&M+xjc@FgGd zHm~q3k8wYDa3fc7G3Rh9$8k6ZuqQjQHJh+LYqAo{vLp*L53@2IlQRKhG7>{G2){%Q z?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d+p`7#V_jC`-~5BcS%5j2iK&@{aT$%_ z8G=6|1zsQdijR4RS9y-dd4M~)iL1GUb2*LUIf4V(i=EkqP5Cctu`>VS?<~T+%*OOg z!Gw&($PB}v{2DQ^d&lQ|z?;0p(>%hx+{X1>!G)Z~$sEI>?8olxz?N*pe^{Lr_$Pm3 zLFQs+reRXXV{}GfNdAlvczxn)KH*(n<9VLoLGI#auHjP7<8)5oNDg9ec41pKV*}P^ z6_#Tu7G*wWX9lKZBF1JEhGj5*3m@3M=Li05)?h`JVF?yuZf0RxCS!cYU_^%EuW*6aXTIT6-s5#%;7K0hZf@aPF5`U8;6#q% zVD@2GwqtWPWF1yzd6s4|=4TFOWGW_R97bh02Iu#%f!znbmy(BG4Jpy z&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!|79&!=3o4sMVOb_n4T$^kg*tp!k*qt5Nl8yKetFr?CTOL z(k#aO%)yLI#l(!ms0_#8{2nZ@`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%W z`mD)HEX$HC%skA>bWF|!jLAq0%^>^|G_ZTiXS~lFyvS2L%st%7bzIH`oXJTX%^~c| zZfwsM{Eu~6jeqkG7H0wGWG1F&62@gThGz)=2oiXG63*o` zj^_vtWG{AR8#d*?ti{Uwi@&o7^D-OLGX)be79%qZgYxUIo&Vpx<8waXO(LeAo3j^R-DV|R97OE%&^tj-GjlfSVbb1^g1Fe&3PIwLS7fBp=-KJhi5@Gh_M zJWuc-cX2b2eCK1uq~Uh0c*1g%dr%TG9R-u15+{)V>1fFG8n)82<+bT z1t0PjFY^qKav!&I16OhpXLAb2av1xw2RpJA8?zp3up-N_1Pd`YvoI}_F+O83B17@l z_rU8j-|#8#@j5T?BoA>nw{R_&aXx2oB1dsB`>-q9u{j&E4y&>}OS2gBGY2y=6%#WK zqcR+W^ZU2J?gL-)5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?6I-(h>$4^+u`ElnF!L}g z(=j;{FeW20G=uQV*TC*ApYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6@ITgNHU7;% zSeylzlbM*BNf?*W7@i^c<4fT6k+1lecX*ZOc$^2glbg7jOE{O)IG!UokiFQMZP=9m zvKA}zFaFLV%*$*{&lF6^Sd7dt49c&c1G{&8&Ii27OFYdZ+{S%H7@Hx^_rW@Z{DWjsb_1cv0#Pl4AbzUC9&N+x1#MqyY6^L*C+Lp5amM<92S~ zN-pATPT^P%V}JHwN48>P)?*D;WEqxVA?9Wlre!k5XADMUDE|5oczxy@KIJ`L=LMeR zA@1fDuH`b$=L}BdC=O;Hc4a#@XG7LuRhDOI7Gr+qU`D25V#Z-qhGTGke;?R=;7dN@ zZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{pYc^qh)?_7?Wl0uh9%f}aCT9Z1WF&@W5Po?V z*uCX5-scTozxfA?vjB546H_w@<1!k< zGX#IU4ZJ?`6(92suksv^^8j~p6IXKy=W-gya|8#n7dx{JoAO`QVrBlt-&urtnT_e0 zf(aRmkr{?T`Snd;_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}Xfi2mH|FAkM@K656 zg3QItOv9v%$LNf}ko@^N@cP8pe8RiD#`8SEgWSc_@0-Q2>pT*mpF!HFEj z!R*7XY{%wo$U3ab@+{3_%+DOm$W%1049@Q_0=o}<$w$1+D?H0%+|M1{$W>g- zIh@LI9L@pk$xdv|Calkzti-Y`$->OTtW3w`Ou(3o#Lx`FFV6$Jw|vI?yuph+#lzgg ztz5_DT)>%}#L*nWzU;>KY{CCnm(}<;|6p+zU`}RYY9?V^Mq_w};E!j4*GInMW8UFa zp5t*I;7)GhYA)eiPUCov;6V0bXSQKe{>xgd%)j_Mi!d*N z@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^&V{R%ZqN$=_IzxtN)0n3VAtoe>z4 zKc56%pZJv0*p|)MfVEkLqIe6n}e7?Y70nnC#GL16cm&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^ z-PoQj_#f-C8vo`WEY1SV$xKYmB#g^w49^h!aX;|-$X9&KJG{zsJkA5$$xU3%C7jD? z9M2IP$X@KsHf+j&S&NnV7k_6F=4CdfX9^}{EJkJ+2Ibd#f!#Yk=L6p4C7$LH?&UVF z=L#<5EKcSa4rM=fX9u=qBmTqctiV6{8w)ZQGcyg7G9IHd0z>lW-N5S;U-Jp?@*2#+tavJ6YG5OXsN(=r+3GX^6v6o1_g zygu^{pYk5B^8!!u5O;G6*K!%>a|S1J6bG{pyRsddvmxuSD$BDpi!ncQFe6hjG2<{Q z!!bC&-wNzL@FgGdHm~q3k8wYDa3fc7G3Rh9$8k6ZuqQjQHJh+LYqAo{vLp*L53@2I zlQRKhG7>{G2*2D6?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d+p`7#V_jC`-~5Bc zS%5j2iK&@{aT$%_8G=7<1YRHcijR4RS9y-dd4M~)iL1GUb2*LUIf4V(i=EkqP5Cct zu`>VS?<~T+%*OOg!Gw&($PB}v{CYjGd&lQ|z?;0p(>%hx+{X1>!G)Z~$sEI>?8olx zz?N*pe^{Lr_$Pm3LFQs+reRXXV{}GfNdCMQczxn)KH*(n<9VLoLGI#auHjP7<8)5o zNDg9ec41pKV*}P^6_#Tu7G*wWX9lKZBF1JEhGj5*yBgTN=Li05)?h`JVF?yuZf0RxCS!cYU_^%EuPcGqXTIT6-s5#%;7K0h zZf@aPF5`U8;6#q%VD@2GwqtWPWF1yzd6s4|=4TFOWGW_R97bh02Iu$7f!znbmy(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!|79&!=3o4sMVOb_n4T$^ zkg*tp!k*qt5Nl8yKetFr?CTOL(k#aO%)yLI#l(!ms0_#8{C*~|`@olc#M`{WvpmNA+`)}p#l@V% zsT{}Q9KfFJ#MW%W`mD)HEX$HC%skA>bWF|!jLAq0%^>`8I63*o`j^_vtWG{AR8#d*?ti{Uwi@&o7^D-OLGX)be79%qZgYxUi!0sKN z^8s)25>N98_i`K8a|IW27AJEIhq52LvjbbQ5&vOzR^XrfjRl#DnVE)38IRE!fg$zx!n^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@r zHCc&eS(1gBhgq49$(evL8Hu48gkO#Xc5nHN_j!XCd5VX*hg-Rh%ejCvIf(+SebwEcNSq@W@CD$U_!=XWQJi-emxY}z2kE};7wlQX&&KTZsU5c z;6l#gWRBrb_G5Q;U`saQKdjCQ{FA@2AagM@(=aLHF*+kKB!3ru>otd3d^w+i!vXxGXqmH5o0q7!!j7Z9SH2+^93LB z7BBM*k8&Tka|2g$5odD>$8s3^vj;n}6&tf2Yp^2AumlS+H?uG;lQBMHFd{?o*Z#ok zGvDwj@9{b>@FWj$H@9#tmvKI4a3V)>F#E78+p#$tvJR`VJWI0}^D_rCG8Gdu4x=(0 zgY)~o!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1^aE3qs~vM}>7E7LJK z6EG$tF*Jkl%ih55EuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1flTkt>DWi|fIKUkav zn3I{9nn@U!(HNc~_+wAt^^vdmn0I)U=Xjh4xRaZ>noBsB(>R_ZIFP;AnQhpV|FRY< z^Dq9+BFxKdOwSZd$XJZbFbvACy92v-e9i~F$xA%VBizevT+bC;$XT4sF&xT%?9L8s z$wvH#)medm@;4S_E@oyLCS^QEX9R}i&s~AnC%)zr-sLr(=LsIRF30t4q#7qVrw>Geb!_pmSss6W*%l`IwofV#$+UhW)Oba7TCSz zGv4P7UgRkr<{ob4Ixgn|&g3MH<`DK}H@0UB{>Qqk#=rRoi?aZ8G80oX3F9&v!!rbb zYz@3V@)aNR4zKbYkMjU`auZi`3FmSe$8!V+vKKqE4V&^`)?#J;#ot+kd6|vrnSu!! zi;)?ILHTt{VE2yC`G7ZhiKlsld%2D4xq=Hhi<3EqL)nkr*?}$Di2txUEAUVL#)8bn z%uK_ijK}DVz>xg8Iq>?#*L=deyvFl9!Gqkz&0NE!oX6>$z>yrp-t5A*Y{mwx%_=O% zQY^}R%+3r<$wZ9JC=APB{I)5ud(Rhq$XmS3Gd#+D+|CVL$wi#aDICjT?9U$T$X0C3 zdaS{UEW;8k#N5onv`ohMjKPQu#a|l(ug`qLr@Y7Oyugz@#NFJ&wOq#eoWY44#lh^u zu58EVY{)vS%JMADV$9DR%*a$s%s7n7a174x8v?rze91?=%_}_1W8BXj+{jg2%sHIO zaU9M8?8#1S%_gkRnykdKEXl&m!>mllwG$ z>pEw{bmJa3N=LGRJTz`>{Jauq7MuA691t{>k51khz$dX_%Dp7@ZLql0Vl3 zUZ41yPk5Ktc%CPCkh{2a^MVXJ;nSm*ph_M-k zVHu3yRtI+P`GOC5iyid*@GR~ij7&1HCT~lSb~L^n^~Ba z$rzt87?Gj)YgOR&nQ!=%_jsKbc#?;>n_IY+%Q&AiIFX|`n0?rl?bw_RS%+0wo~2og z`I&;$g!NgI zl~|S~S(tg4mFbwA2^f=+7@9%&Wkq23md|*fH+Ye!c$j;*mFu{i3pkULIGRJ)m)+Q& zE%+bnvKs&9A1uxS%*jkl%_NM=XbjH~{INXn`p8#&%safwb3D!i+{sN`%_W@6X&lcH z9LQem%ra4&&`5Ox|7c(;rlQJHoGXg{M=hDFI6JPTQ@A4YY^8^oa z7dLYamvSDba{@$G8BI;4!l0| z4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54*A*o3kP7uqw;5G>b7mb1)-QF)`yXD#I~2 zzb^{xKJX-;TeKI76e`&`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aohE4e|Yq2u_ z;_ocNyv)Y*Ou>YV#mEf9p!_;NuzSbne88K$#M3;&z1+t2T)~B$#mOAQq3p-*?7)_6 z#D7?w75FEAV?pL(W~O0M#$$9wU`YO)7kGW*Yd+y!UgLS5;6d)o+qj-9xRA3rnPWJV{n(uy*piL-5392R|Kx8h$Xv|K zG)&5PjLrxQ$)D2$uTOld%VsIJjp}c%`IHZWt`6$oXAle%s%YO zc5Kduti!4-&(bW${LI0OOvS{E!>A0$;QT%%u=~K5e8k(l!m~Wa{oKKgT*bwl!>Js{ z;T*u8?8Me=!uqVqN-WEgEX+L2%5+T51dPc@49y_?GC8n&%V)gL8@$L+#84rDKOW*au;zpTZ|{ENS{2=g)<(=!DVG8Q8<41@CP#K7(ypYs84 z@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJwAbbynb?{EY>fii}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+nDtnL6(yTF&T-W8H8WP1a@!vjQ4qi7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj z|FJHs@o)aY;w-?N%*518!nlma@C?BpqXVyxe8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{ z?8VM(!>0U~wOE;d@pl$sUS?x@reH$GVq}J4P<|a1*uCR(KHyDW;%Oe?UT))huHZt> z;$)8DQ1)YYc3?|3;yoec* zDev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?p|ovOG((81pj+GcpwuGY+FN9E0=w zu)yvEU-A)e^9s-M8257rH*ysha}K9+9EWoNd$JQ-vkB|7CM&TlOR_NYFe}qBITJ7@ zBQZ3C@XOG^?k%73K5y_MPw_DKa4XkwITvsyCvh}~urIr@JzMZU)@3#R%|BS21(=hW zn3_o#m(duWA^2lR;PsKO_?UNimFIYz2e^})xSC5im(w_&BRG(~*qLqEl>f38EAub@ z&LYgqY)sD-OvqS_%rFefuY&`-cYMwVyva*E%_H2)ZCuY4T*z6R%rP9we(cT;Y{^Fa zht*kufATjLWG-fA8YX2tMrQ~W)`MpGR9{NMr0`d8W4DW<{LicJznPpp5!6!<`%By zGS24=PUI*KW*>HCJ2q!S)?rnaXK5B=e&%3Creb2oVN`}=aDML}*nQwjKH_a&;aMKz ze(vB#uHs_O;Z%;}a1LNkc4BKbVSUzQC6;AL7G@r1WjZEj0>)${hGr0c=@;0&9%}gn5~b>6wBF8H$!ppIg67yhC|tp-PwUH*@*wJIxFx`{>FmL#mr2@ zq>RVtjKGlm**oz1#MgYnyS&EpJi&w9#m!v9rJTp94b48>nP1Fz3~!>7E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{ z=4{A1tjh8%&0@^Y9L&g6Ow2fp%5V(M?>z#$4}8f-yv-{-%VXTn9o)!OT+BI~%5fad z0qn_6Y|SRD&zh{nvMkBM%)_iq$K*`Fn2f~G48kwn1G~3;#{0a%i#)}{+{3M0$K_nW znViJY9Kycr#`bK%|5%sR_&5JxaTZ`sW@2h4VO&OIc!uDQZh_ZFzT#uv;Z>gFaUS4K zZsKY#;apDRc#hye_F`wYVN?FgTCB{!_&bX*FS9W{Q!pW8F*3t2D8F_M?B4M?AMhqG z@idQcFSl_$S8yR`aWcnnDEqNHJFq1i@gG)a1^&t3Sdh7xnQ54m@fe*E7?MA`1YV!` znooF_*La>Mc#ylenQOR|^EjOoIFf_dn_bwJ&DemoS%u|Tiba`^*_nYUnTW9&g<%*Z*@}%>k2P44WmtlRn44LcmdO~O zF&L4d_^VUk^_g$@l=pa@7kH9~xSLzJmdiMwGdPi>IGBCdmF?J^4Oxd(S)Qd?jQN>^ z8JUWS8HZ6Bj=}l8V_^4zFZqbKd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^*@X33la*MO zC0Uqxn3d_6oCz3{kr#`dE<{vE10?f%wOwA;W%V-SG5d6_T@cPJCe9Sw%%5yx<1Ki0?T+Jn%%V`|X5gf=~ z?94W7%70mlmH8KcXA$OQHl}9^CS)u|W*7$L*LH#3J3i+F-sB~o<`M4YHm>IiF61mu z<`@oTKXzvawqzsz!|JTSKlvLAG8Z#54U;k+qcZ|S@@Lz?>l0t|3Geb6&+`Niau+vq z4VQ8rr*i^Fau9p73)`|88?ZL3upCRVDDyEpGcY9+F*c(xEQ9e|o51cpU+^Js@iNcw zDEDzYH*h5vaW#!=zvown_KXWi6Q!z2)Fe<|_IKQ_F z>^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJus&ma`JGqIgxrB2$jpI3j1KEq6*@jK|FKe+f|Kjf~ z!o1AJ^i08ojK#jtq zIGRH^fW6s;?bwQqS%+0wj>TDkIhl#6nS^l}jo}%BKUxJ|ANh)pd52edj>ma`JGqIg zxrB2$jpI3jgV>Kf*pY46oDEo$l~|fZn3vg@o++4+u^5?Q7?fXI26pfGoDX=Dmw1{- zxR=|wo-4SJvpAV!IFtj~hh5p8t=WWiS&ijcf(4n2nVE)38IRE!fg$;`Md0;`ula;` zd5!0Jf(N;ao4JNdIgishfg?GX{n?Y9*p@BWkhNHuWmuH?n4KAzl8G3bQ5crN_^o+h z_nt5Kkhgf5XLywRxSbogl8ZQ-Q#h8x_z(NC8~@~QY|479&I&BaLd?x9Ov_}9&lrrz zQ2f;_@cPU*e9C*g&I>%rL)^_RT+3yg&l#M^QT&g8vllz_54L0@)@Bu!WijSw4rXL3 zCT1K)WjF@s_oji}2fpMZ-sTmaT@G8&oI1g|qH*qzWa4x5DJV$U4`>_W* zvJIQF0c)}nOS1^`G8@w~1rstBBQp$x@@u2O?j4`=0dMjWPxA=(avRrk1s8G_Cvyyk zav=M#E8DX*o3Jjcu{=w#AagM@(=aLHF*+kKB!4yxygu$8s3|VPAIRpZtwYS&!9OfhAdpxtWD&nT+ungAo~uzv>5GpZSJQd5_n5 zfhT#0ySasHxs3BUgA+N5|M743VrTxrmTbh@tirM^#{A5|j7-JEjKio5$Kd>4FR=T- zmwd$Ayu!0Q#{JyEjaz%Oczxt6KIR=>(LeAo3j^R)aWFK~Ad$wj1)@3!8 zX9*T$E@oyLCS^QEX9R}i&su@kC%)zr-sLr(=LsInw{R_&aXx2o zB1iE*{>@(O%s<$YjaZviSeC_@pE;P3shF5?7?t4|oZqVlb|3hXk9eC`c$UYwpF6mb ztGJkRIF;i#od5DKc4r6v&StF78m!1tEX+L2%5+T51dPc@49y_?QZ2B1%V)gL8@$L< zJj^}Z%5_}M1)RxA9L*sdz~1b_c5KDQti!4-$Kou&oXo`3Ov1Q~#_$ZmA5{adk9@_) zyu+(J$KyP}o!rFLT*A4W#_=4%LF~sK?8r83&IYW>N-WJH%*$*{&lF6^Sd7dt49c%n z0=sv7&Ii27OFYdZ+{(-4)@;JMtj6*z!Gg@i%uK_ijK}DV zz>xe|Iq>?#*L=deyvFl9!Gqkz&0NE!oX6>$z>yrx{_M$4Y|9pG$Xcw-GAzn`%+3r< z$wZ9JC=APB{8lNjd(Rhq$XmS3Gd#+D+|CVL$wi#aDICjT{D*znjeqhtHf23lX9bpI zA?9Wlre!k5XADMUDE_J#czxy@KIJ`L=LMeRA@1fDuH`b$=L}BdDE`O4*^8a|2V1fc zYqJW=vKaF-2QxAi6EhB@G8}{RdxgO617GqHZ}SSz@)-AX2RCvR7jq7$avX>AU;f4J z?7-jIjP+TA6(yTF&T-W8H8WT2X=4yjQ4qi7kP?@xrbZ1j?1}#GdYQ) zIfMh)n_bwBt=O1#Se4~ioCTPZnV6bM7?;r)o+0?7T;TPQulSgEc$MdPoCmm*o4A@w zIG58no+CJj{n&#Y*@n&8fHhf(rCEe|nT_e0f(aRmkr{?T`L%3d_m0o`fH!%Gr+I{X zxsB_&f(to|lR1V%IgowWmF?M@O<0%JSe_+Vkhz$dX_%Dp7@ZLql0VA?UZ41yPk5Kt zc%CPCkh{2yifurIsuPyWWHtjFrCz>+M)+|0tXOvd<(!H5jS zU!?-C&wRtDyvOUjz>_@0-Q2>pT*mpF!HFEj|M)k1u`~Z*OEzL{R$*BdV}9mfMy6t7 z#$i;3V{m>i8Q6W`OFrUlUg23D<9_boMy}#w&f!#!<8c1Vzu27}_&b}iK5MWdOR+HX zFe}qBITJ7@BQZ3C@Jorn?k%73K5y_MPw_DKa4XkwITvsyCvh}~Z~%L=3)`_38?z3p zvK))E0CO@EQ!@$UG8)4(1b-9{ygu?3AM*~c@*I!z0C#c|S91yHavH~T1P8Gnd$1$h zusIvBCM&Tti!d*#`clvjht=7c(;rlQJHoGXg{MXVJjx6JPTQ@A4YY^8^oa7dLYamvSDb za{@)${hGr0c zDHzzj!U~hI|JGNqD)?rnaV{sN>PG(|iCShDg zV|a$(j{fP z#y|NRo3b9OvjR)95OXsN(=r+3GX^6v6o2Ijygu^{pYk5B^8!!u5O;G6*K!%>a|S1J z6#wJj?8VOfgDu&JwONH_S&aFagBh8Mi5Z7c8IHmEJ$GRDfiL-pw|RwUd5rtHgB!Vu zi#dl=IgZ2mFaKh9cHr-9#`>(miY&##%)_iq$K*`Fn2f~G48kwD0=u_-#{0a%i#)}{ z+{3M0$K_nWnViJY9Kr$Y%`R-mR&2~VtjcmM&H~KIOiaxrjLT>Y&k+2PGw}MzSA5Jn zyvlPt&I8=ZO%hx+{X1>!G)Z~$sEI>9LPTG%Jyu{CalY9EYA`w$Xv|KG)&5PjLrxQ z$)DK+uTOlpxp*@s=(o~_x0byi}FnP+&E`?#GOxRQ%Fn^QQJ!}t&TvK#;8Z*0nXtj-E7$wJJ{EKJK}jL#U1$WZ*1 zF7W!yH+;%_yv_?e$wS=DEnLfGoX;7Y$Wi={f3p`m^AEOUBi3dWmSr*KXAWj$Dkf$e zMrAk#=l8UM-3PwpBi`l}p5-y_=MHY#!=z zu{aAbCo?fMlQ1r$F+4-?N9w@qBVX|`@9-+m@i-4~CpU35mvAnpaXd$G5c{zQJF*R% zvjJN98_i`K8a|IW27AJEIhjJkM zuq)fMHJh+5tFb&wupo0WGt)3B<1soTFeHDb47@(^HJ|V4h`E`CX_<`i8G{iSiocQvUZ44fPkE2md4VT+ zh`YIkYq^Z`IfD~9ivRI%_F`xL!Io^q+N{E|EXMrI!Hi7B#EiqJ49DR7o-DBYz?Xc) z+q}ZFJjVUp!HrzS#hk;b9LM4Omw&N4JMeclV|~_OMV4Y==3!Q*V{#^7Oh#g82H}^a zf!$j^<9*)XMV{he?%`Ih<8m(GOitox4&eayW*4?&D>h~wR%JOBX94D9CZ=W*#$_~y zX9)gC5_o;&D?a8OUgbF+=K=2ICa&fZ&gC?Y=LimBKlWfpwqbKNU`#;g3up|pHH?uG;lQBMHFd{?oSAxLnGvDwj@9{b>@FWj$H@9#tmvKI4a3V+X zKmN^L?94ydl8soKRalnAn4dYAk*S!NaTt~17@XhZ2X-I$l8<_hx~#_XEWv`z#mr2@q>RVtjKGlm z89VU$#MgYnyS&EpJi&w9#m!v9rJTpL}jPHf8-Y{*)y%rY#>e9X=aOvyxy z%_t1ZVEh&8$RVdUgrg#*?=`!iKSVDd6|vrnSu!!i;)?ILHRXmVE2yC`G7ZhiKlsld%2D4 zxq=Hhi<3EqLphLr*p=M zc#ylenQOR|^EjOoIFf_epFP=$ZP|hiS&NlfhDDi=*_nYUnTW9&g<%d$BYBU`sY)ZB}7f7Gr+qU`D25V#Z-q zhGTGkj~Li};7dN@ZC>G79^-!Q;6|?EV$R`Ij^l9t%fHy29r!z&u|8|CB1^F_^DryZ zF*y@3CL=L4gYZj)!0s)d@jh?xB2V!!_i!uMaXA-oCMR(;hj0LUvkTj?6&te-tFj!6 zvjB546H_w@<1!kb4VvoSqWFd<_xGQ%(^zlIC!-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz2eJ>l zvOQa~3G1>N%d-RvG8Z#54U;k+qcZ|S@@Lq<>l0t|3Geb6&+`Niau+vq4VQ8rr*i^F zaxnX|Cp)n%Td*N(u` zn_IY+%Q&AiIFY0HAOB`AcIF>!$wsWrDlE%l%+DOm$W%1049@SN0=o}<$w$1+ zD?H0%+|M1{$W>g-Ih@LI9L|6F7rV0qe`hn+XAM?lDHdiPW@S1iX9C7#B!*@XehC@a zz2!6B=M7%uDIVq?Zsj^I=K{{;B#!0~4q$I~VLP^BW7c6+mSb@iU`}RYY9?V^Mq_w} z;Exc2*GInMW8UFap5t*I;7)GhYA)eiPUCov;2`#64|Zf5HfICYWF?kn5$0t!re_K! zWGqHz7zX9n;DOycKIa48J8O;%h$PU0&mPp5Q_5;%2VlQqJRaPT)umW`Fi%C$?n^He@YU zW*HV`K4xbIreq?$G8BIW3A{e@4WIHJuk!*=@(_1(3)gZP=W_-pauomL z-|WTC{DUpoh_zXTWm$~*nS&XbiisJAQ5lZG`Tf_9|L;EVB_HuNukb97aX)u(BUf=T z=Wr^=aXA0wU+m5f{GH8MpEX#KrC6AGn3d_6oCz3{krpxp*@s=(o~_x0byi}FnP+&E`?#GOxRQ%Fn^QQJ!}t&TvK#;8Z*0nXtj-E7$wJJ{ zEKJK}jL#U1$WZ+CCGh&pH+;%_yv_?e$wS=DEnLfGoX;7Y$Wi={f3p`m^AEOUBi3dW zmSr*KXAWj$Dkf$eMrAk#=l9Qn-3PwpBi`l}p5-y_=MHY#!=zu{aAbCo?fMlQ1r$F+4-?$H&0yBVX|`@9-+m@i-4~CpU35mvAnp zaXd$G5c{zQJF*R%vjJN98_i`K8 za|IW27AJEIhjJkMuq)fMHJh+5tFb&wupo0WGt)3B<1soTFeHDz54=9{HJ|V4h`E`CX_<`i8G{iSiof0l zUZ44fPkE2md4VT+h`YIkYq^Z`IfD~9ivRI%_F`xL!Io^q+N{E|EXMrI!Hi7B#EiqJ z49DR7{wA>dz?Xc)+q}ZFJjVUp!HrzS#hk;b9LM4Omw&N4JMeclV|~_OMV4Y==3!Q* zV{#^7Oh#g82H}_2f!$j^<9*)XMV{he?%`Ih<8m(GOitox4&eayW*4?&D>h~wR%JOB zX94D9CZ=W*#$_~yX9)gy6?lE*D?a8OUgbF+=K=2ICa&fZ&gC?Y=LimBKlWfpwqbKN zU`#;g3up|pHH?uG;lQBMHFd{?o*R#OuGvDwj@9{b>@FWj$ zH@9#tmvKI4a3V+XKmN^L?94ydl8soKRalnAn4dYAk*S!NaTt~17@Xgq26i9#l8<`Qe9i~F$xA%VBizevT+bC;$XT4sF&xT)?8B~X&(>_hx~#_XEWv`z z#mr2@q>RVtjKGlm`7rSM#MgYnyS&EpJi&w9#m!v9rJTpL}jPHf8-Y{*)y z%rY#>e9X=aOvyxy%_t1ZVEpzVuzSxJe8^k8%riX7eca9sT**b8%_$tqVf=@E*^Phl zH#TKGR%Zp4WFh8e7N%t~#%ByhWGMc+A9#J{8$RVdUgrg#*?=`!iKSVDd6|vrnSu!!i;)?ILHYG|VE2yC z`G7ZhiKlsld%2D4xq=Hhi<3EqLphLr*p=Mc#ylenQOR|^EjOoIFf_epFP=$ZP|hiS&NlfhDDi=*_nYUnTW9& zg<%d$BYBU`sY)ZB}7f z7Gr+qU`D25V#Z-qhGTGkzaH3q;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l9t%fHy29r!z& zu|8|CB1^F_^DryZF*y@3CL=L4gYe6>!0s)d@jh?xB2V!!_i!uMaXA-oCMR(;hj0LU zvkTj?6&te-tFj!6vjB546H_w@<1!kb4VvoSqWFd<_xGQ%(^zg`LK-tjpf@Fp+uG>>pEw{bmJ za3N=LGRJTz2eJ>lvOQa~3G1>N%d-RvG8Z#54U;k+qcZ|S^5^Bi>l0t|3Geb6&+`Ni zau+vq4VQ8rr*i^FaxnX|Cp)n%Td*N(u`tf*b znQ!=%_jsKbc#?;>n_IY+%Q&AiIFY0HAOB`AcIF>!$wsWrDlE%l%+DOm$W%10 z49@Qt0=o}<$w$1+D?H0%+|M1{$W>g-Ih@LI9L|6F7rV0qe`hn+XAM?lDHdiPW@S1i zX9C7#B!*@XemNi5z2!6B=M7%uDIVq?Zsj^I=K{{;B#!0~4q$I~VLP^BW7c6+mSb@i zU`}RYY9?V^Mq_w};E!{G*GInMW8UFap5t*I;7)GhYA)eiPUCov;2`#64|Zf5HfICY zWF?kn5$0t!re_K!WGqHz7zX9nvw__^KIa48$G8BKE3cNn^4WIHJuk!*=@(_1( z3)gZP=W_-pauomL-|WTC{DUpoh_zXTWm$~*nS&XbiisJAQ5lZG`Tb;I_kl0@h_`u# zXL*eKxq}q`7i%scXr_KY{vSm!HO)!!py_0OvmI*z?h80&r`Y`~hV#L_Inyv)Y*Ou>YV z#mEf9p!|9)uzSbne88K$#M3;&z1+t2T)~B$#mOAQp&ZCQ?8^3R%_gkNYAnwZEXZ8U z%rs2Oc#O^n49TBI1Fuhf%_qFeYdp^rJjh+#%r#ufd7RD(9Ld4#&z|hWwrs(Mti{SK z!=lW`?99NFOvKoX!mtd+Z$|>V_k6*Jyv55r!=v2C?cBhXT*TR&!m%92f7qAZ_$Pm3 zQ`Td3R$xgMVs2((S|($B#$ZH-;;+Mj*Jr-rQ{LlsUf@X{;%;u?S}x;!&fr9j;(z>` zz1W$5uq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&9}4U~@FgGdHm~q3k8wYDa3fc7G3Rh9 z$8k9SFed6<>yn4Ae1laUyjLHOlhVE2~Kc%L_Tk*9c=d$^VB zxSR_(lan}_LpXrF*@f-cij7%^RauV3S%5j2iK&@{aT$%_8G=6!1YRHcijR4RS9y-d zd4M~)iL1GUb2*LUIf8@Ok3HCtZP=U*Sd*1lnnjqG*_fUwn2@m;nPC`|U-t)g@A#Y# zc$1fSnn$>o+qj-9xRA3rnPWJV1KEdN*`BT0gmqbs{*hD$k*(>Z}7Ihg&~lbzU>E!dE?Sea#5l=+yQ8JLoZ7@JWT zmcjUKZ(#SHFZhtRc$sH-l>4}y8@Q5-IGa;Amc#fD`?4GVd%VsIJjp}c%`IHZWt`6$oXAo9kAJflJM#~=WFyvQ6_#Z& z=4TFOWGW_R97bh02Iu$Pf!znbS6c2L`w{jhqa{*^^5=V0g2e3E0 zupL{mG3&4@%dt2MFefuHHIpzdqcJ=~@W;-;>my(BG4Jpy&+#}9a3?o$HJ5NMr*S+- za1i^k2RpJ2o3jCHvJy+P2=g)<(=!DVG8Q8<41@CPj==66pYs84@)A$;2={Uu*K-9I zauz3Z42N-q9vo)KrE~~LTORykwF*DOJDdRCZBQPX?ZV$XZ@im|DF0b)CPw*gj zaWmI&Dd%xICvYSOvp;*X6Wg){8?qKFvkZ$eAG0$9Q!)`_GYZ2p7{6@`?B4SQAMzG2 z^9+x2AGdP@S8@?&a|*|D82@2kcH^J?jZImP)mechS%|rrg=v|L@fm{=8H&HQ240`} zhEI8q*Li^_d5F8Yg=@Kt^ErbPIg0=BZ}wtm{=t@P#M-RFvMk2@%)yLI#l(!ms0_#8 z{Jtfy`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q{Fi^RJ3H`qHe-F(U`3W63*o`j^_vtVn6m^N48;eHegLw zVrdp(US?x@reH$GVq}J4P=4JQ*uCR(KHyDW;%Oe?UT))huHZt>;$)8DP!41tc4d3E zW)s$BHI`=y7Gy4FW*R1CJVs{(hUCu;f!8O#<`drKHJ;}Q9^@`=<{B>LJWl5Xj^tqW zXHRxwTee_B)?#IrVNvE|c4lBoCSq(xVOR#^xAlSDd%oa9-r{AR;Zg46c5dKGF5+xX z;aCpiKkUnH{FA@2DeJL1E3hOBF*ma?Et4@mV=y8^@z=V*>oec*Dev(*FYqJ}aW}Vc zEthdVXK*4%@jw2}UhK?2*piJ{n^jnr#h9Ntn31WNm~j}D;TW9X*9LYU_>zx!n^$<2 z$GD$6xRI;4m~%Ll<2aoE@-KF02ma1xtj`*($WkoKJj}{;OwI(1$w&;%ApEi>uzSmA zyw4lF$WuJbJ>1H5T+RiY$w?f|AsoQo?80_z#m20|sw~IiEWn)1#MDf}xQxc|48b3( z1Fw&K#mBtEt31c!JiwjY#MNBFxtzxF9Kk{C#~$p+Hf+uYtjS6&%_7XpY)sD-OvqS_ z%rFefud4#PcYMwVyva*E%_H2)ZCuY4T*z6R%rP9wf$YPsY|qwg!n&-+@+`rE%*D)1 z!=#MI=#0RS{JApl`o!0K!n?f2^E|72lk9L)ag$xdv`7Hr5`tjsbj z%6!bu3{1&HjLj$v%V7MrBCvbU7ktQDyv#E^%6;6<4P41ZoXsg5%VGS7ec6qF@;5eR zJyvH0mSiF3W)`MpGR9{NMr0`dS{`_P<{LicJznPpp5!6!<`%ByGS24=PUI;5$G_Q& zo%sh_vJq>u3d^z>^D_rCG8Gdu4x=(0gY)~c!0rQI@)2+I3eWNw_j3m~aupYI4ySS) zhx1?l#qR9D-`R}yS%Vc>iiMenS(%Q>nSe1FiJ=*UUzP@TZ~2V(d4m^uiif#}Te*(Q zxqve{iK97$1K68g*p98(m~~i{noBsB(>R_ZIEek&gB{t1&Dnr8S&5}tgn5~b>6wBF8H$!ppIg67yhC?}!eb|-l*_usQm(^IFC0LNTn3-vql<^py5g3v`7X@CQ z_?l06m)CfnCwP#%xS4CXl=C>96F8EC*`GbxiEY_}4OxqoS%yWKkJ*`lDVd0|8HHgP zjNcXpcJKLu4|$81d4@;1kK4I{E4hfXIfY|6jQ_ANyYWx{#-^;t>a4($EX3T*!n91r z_>94b48>my07E*>%72|JjC7H!nIt+`JBOt9L4|mH+!)&|6oftVr^DoSr%h{ z=3qvqVq(T&REA@4exD!Mec($z;%#2xSsvql?%+nQ;$qI>RF30t{>#7EogMf)o3TD? zup&#bF!L}g(=j;{FeW20G=uQVyuj`)pYc9#@FGv~F!yjP*Ks))a3&{lG>32id$SAM zu@xJ$4y&>pi?aZ8G80oX3F9&v!!rbb%niIg@)aNR4zKbYkMjU`auZi`3FmSe$8!V+ zu^)S|Bipb!8?YuTu{4V?FS9W{Q!pW8F*3t2D8J4L?B4M?AMhqG@idQcFSl_$S8yR` zaWcnnCk6il=WDh6_#gjfFLvf1Y{^Ef%_=O*V$9DR%*a$s%s7n7a174x zGXlF0e91?=%_}_1W8BXj+{jg2%sHIOaU9Nn`4_vh1Ak{T)@Kb?WGNPA9%f}aCT9Z1 zWF&@W5Pq2+*uCX5-scToIiF61mu<`@p;K=xr*wr6WL zVO>^Zd6r;7=3-{1VN%9pbVguE{+tqced23A;ay(id7j`w?&4;y;Zn}ybWY$%4rYJ$ zWGA*|3pQjeR%RI%WjqgOR^AiGYiu)8RIhsBQg|!O$xj|^9`T!9%}#L*nW0qo5#Y{yn?%sQ;faxBgQ%*jkl%_NM=XbjH~{4qZ8 z`p8#&%safwb3D!i+{sN`%_W@6X&lcH9K?R?!H#Uh=4`;4ti;kR!o1AJ^i08ojK#<2n@-eV*{^Ge9b4k%WFK(6FkUW+{`sx%6Xj52^`76?9ZO;#I|g~hOEWPEW@JA z$L!3&luX3fjKZ)C#&2T+yZ3y-hrGqhJj0{h$L-v}m0ZNxoWijj#(&tC-S{VeV^h{+ zbyi?W7GiE@VOl0*e8ylzhT^Z$f!Alg;Zxq@bza~}9^!6p;aV=^e9quRj^cm(o4weX zf3PJRu{Nu)EQ>Keb1)-QF)`yXD#I~2zmE#+KJX6n}e7?Y70nnCzwWMKD}&v>6Vc#)@gn0vUD>$sc? zIFpk&nnO5%z1fBB*ouu=hgDgQ#aVzknTe^HgmD>-;TeKIMg(3T`HGKuhgW%y$9aG| zxrwW}gmXEK<2izZ*pEHfk!{$V4Oo+vSeiwcm)V$}DVUJ47@1)hlwXGjcJKI{4|tQ8 zc$!DJm)p3WE4YxeIGJNOlmpp^UD=+k*@SgjjpbQ_1(}PPnTAOjkI@-{A^CGy;Pr{G z`Gj|QjpuoS2f2%zxrR$QkJCAUBRQD;*^`~vmMz$jwOE;DSd{sgof(*ti5Qzv7?#2K zZD?Tko-g>2w|JRnc$E9Nog4T+j^`^Y|479&I&BaLd?x9Ov_}9&lrrzQ2aGE@cPU*e9C*g z&I>%rL)^_RT+3x##5tVC2^_1H5T+YRu%julRu^h(!?7@y~#m20|sw~IiEWn)1#MDf} zxQxc|48b3x0b4V zvoSqWFd<_xGQ%(^zm5#--tjpf@Fp+uG>>pEw{bmJ@E`uo8T^yKaX1ICCp)n2w|JRnc$E9Nog284OE`}+If>&q zf&S&!9OfhAdpxtWD&nT+ungAo~uzlH@~pZSJQd5_n5fhT#0ySasHxr~cA zhtoKLV>p!k*qt5Nl8soKRalnAn4dYAk*S!NaTt~17@XgS26i9#l8<iiMenS(%Q>nSe1FiJ=*UUxoyBZ~2V(d4m^u ziif#}Te*(QxtMb~ofA2h!`Poa*paQ+m~~i{n*VYEXLAaF=O_+lA9iIsHfICYWF?kn5$0t!re_K!WGqHz7zX9n zL4n;nKIa48O#1fFG8n%N2<+bT1t0PjFY^qKav!&I16Ohh=W!+{aU4f*AbYVh+psC?u{tZT zBnvS&voI}_F+O83B17?4|G?`r-|#8#@j5T?BoA>nw{R_&aS`Wm8YgfJhq52LvjbbQ z5o@yw%d!~rGY2y=6%#WKqcR+W^LxL*?gL-)5pVMf&+-`ea|bta6_;{8XK^yeb0i0` zH@mPco3TD?up&#bF!L}g(=j;{FeW20G=uO<-@xuIpYc9#@FGv~F!yjP*Ks))b1tWI zBFAzV`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&v!!rbb^a;E^@)aNR4zKbYkMjU`auZkc zUoPNmPT}ty#lh^uu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9p#0i9uzSbne88K$#M3;& zz1+t2T)}_%H)rrq{>I@Pz@F^H)@;JMtj6*z!Gg@i%uK_ijK}DVz>xgeEAaZn*L=de zyvFl9!Gqkz&0NF(xR8HwD*xbU4q;z*V|%t>L)KztmSIumV|Hd>N+x1#MqyY6^L*C+Lp5amM<92S~N-p6%&g3MH;|LC9FLq`dHf23lX9bpIA?9Wlre!k5XADMU zDE{gZczxy@KIJ`L=LMeRA@1fDuH`Z=;v7!n1dicQ_G5Q;U`sY)ZB}7f7Gr+qU`D25 zV#Z-qhGTGk?;hBF;7dN@ZC>G79^-!Q;6|?EQqJcrPUd)yo+qj-9_z(Z)4F1XA zIGh96lbzU_O<0%JSe_+Vkhz$dX_%Dp7@ZLql0Q2KUZ41yPk5Ktc%CPCkh{2&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSUmXLl&wRtDyvOUj zz>_@0-Q2>pT*gJ5!)ctrF&xT%?9L8s$wsWrDlE%l%+DOm$W%1049@Qz0=o}< z$w$1+D?H0%+|M1{$W>g*`JBbc9M6#)#NO<}wrs}wtig&b#lp#`cl zvjht=7c(;rlQJHoGXg{MXPdz56JPTQ@A4YY^8^oa7dLYa|Kmdb#i{&*qdA0q*^TYl zf(==Vm05;GnUC3-fhn1Yu^EM78I0dr2X^oIf)9C%mwARqxsThqfh)O$^Ei`}IF2JY zkiFQMZP=9cSe+GEl7*O?S(ui|7@sj1k)imjRp9lRZ}^n=c%2t`l83mPTez0XxQKH& zjT1PAL)nkr*?}$Dh_zXTWm$~*nS&XbiisJAQ5lZG`MqUe_kl0@h_`u#XL*eKxq}6n}e7?Y70nnC!bMPT=q&v>6Vc#)@g zn0vUD>$seYIhWHpkz+ZG{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKIng?DV`HGKu zhgW%y$9aG|xrwX!FBfn&r|@@<;$Ze+SGHqwHegLwVrdp(US?x@reH$GVq}J4P=0L| z*uCR(KHyDW;%Oe?UT))huHZlXn=|+)f8%ftU{7{pYc^qBR%3aVU_s_$W~O0M#$$9w zU`YOK8hCx;Yd+y!UgLS5;6d)XL1t9aRdjl7dx{Jo3b9OvjR)9 z5OXsN(=r+3GX^6v6n`}iygu^{pYk5B^8!!u5O;G6*K!#baSo?(0>^MD`>{Jauq7L@ zHmk5Ki!ncQFe6hjG2<{Q!!bC&Hwx@N@FgGdHm~q3k8wYDa3fc7Dd%$*Cv!YUau9p7 z3)`|8>$3(cvJ?w553@2IlQRKhG7>{G2){H8?B4Pj@AC#P@)Qqq54Un1mvb@aayln+ zEQhf_d$1#0u`%ngD$B7r3os`$F*TDgE~7C#L-0p~!0RJl@iFi4D$nsa4{#?paW((t z0?y_X{?1Vx%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFefuk{1FcYMwVyva*E%_H2) zZCuY4{D*&Y2LI%59L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ$)EKCuTOlF!pB;c4R9yW*t^# zITmLD=42+OW)j9_G=^sg{-_yvedH@X<{e(;IUeT$?&Kz}=D%FP*_^`PIf{eXhh5o@ z&Dnr8S&5}tgn5~b>6wBF8H$!se@NdrGpZtx( zIebWF|!jLAq0%^>_z zIk0=nXS~lFyvS2L%st%7bzIKHoXhE)$gv#8{_MeyY{kZ`!>TOD;w-?N%*518!nlma z@C?Bpl>)Die8tDS!>c^U<2=Bf+{D%VmkT(XQ}{baaWMO^E8DR-8?YuTu{4V?FS9W{ zQ!pW8F*3t2D8E(=?B4M?AMhqG@idQcFSl_$SMVSH%^CcYzi~JRuqQjQHJh+5tFb&w zupo0WGt)3B<1soTFeHCg2)sV=HJ|V4h`E`CX_<`i8G{iSioePQUZ44fPkE2md4VT+h`YIkYq^YzIET|X zfnzw7{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D;TW9X%LaBI_>zx!n^$<2$GD$6xRI;4 zl=C@@lR2IvIf%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkQ=8c5nHN_j!XCd5VX* zhg-Rh%ek0yIh_+Zmc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^4+o;PsKO_?UNi zmFIYz2e^})xSIcR0cUdxf9EI;W*>HCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*HVGq zJ3i+F-sB~o<`M4YHm>Ii{=>gHgMacj4(9;&WGA*}6V_!lmS+hTWG-fA8YX2tMrQ#;g3up|pH zH?uG;lQBMHFd{?oSMk8>GvDwj@9{b>@FWj$H@9#tmvIs2a2h9Y42QBGyR!pZvJq>u z3d^z>^D_rCG8Gdu4x=(0gY$c_!0rQI@)2+I3eWNw_j3m~aut_yK4)<<$8#hHu{XQ0 zEt|1EYp^0qu`u&6E7LJK6EG$tF*JklOVPmYEuZl|Z}1{d@i6yrE7x&37jrJBb0Wub z82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAULe-sJ4KJpbG^A4}_9FOw=cXAU~^ItCD zY);|t9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#RVtjKGlmSt#)O#MgYnyS&Ep zJi&w9#m!v9|G1EUaVr1dXbxdtc4K?CU_;hoWtL%4=3{ndU`i%pY(`;N2IIGaf!%w) z;6vWxWuDgFaUS4KZsKbG%LSaxDg2$IIGBCdmF?J^ z4Oo+vSeiwcm)V$}DVUJ47@1)hlwb1%cJKI{4|tQ8c$!DJm)p3WEBFup<_!MH-#DBD z*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?MA82VS4}nooF_*La>Mc#ylenQQnT7xFJo zK$Xcw-GAzn`%+3r<$wZ9JC=APB{FW=Qd(Rhq$XmS3Gd#+D+|CVL z$t9e}nViIN9KnI?#m;QQrmV;6tiX~i#N5onv`ohMjKPQu#a}rCug`qLr@Y7Oyugz@ z#NFJ&wOqzUoWp6Hz%d-ke(cT;Y{^Ef%_=O*V$9DR%*a$s%s7n7a174xIRd*6e91?= z%_}_1W8BXj+{jg2%K4nd$sEs-9K_!2!nSP2`mDimllwG$N%d-Rv zG8Z#54U;k+qcZ|S@@JO7>l0t|3Geb6&+`Niau+vq4gcdp{>7>MgQGcwec6re*@6vO zin_IY+%eaVhIE@oH zhC|tp-PwUH*@(4Sg=JZc`I&TDkIhl#6nS^l}jo}%BKhg(YANh)pd52ed zj>ma`JGqIg`7al6HmC4+j^beUVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVNiZe7udby zb3WirUgBvU;a+azdamF<{F^iQCx7E`4q#7qVrw>GT~=dxmS92VVrHgcQpRI+Mqo(( zOdEK8;%h$PU0&mPp5Q_5;%2Vle_Y7FIF)~JG>5P+yRki6upw))GRv?i^D#R!FeMW) zHlr{sgYjFM!0tU?@F8#UGSBcR_i;Nna3z;;9%phA$8iJ)vKKqE4V$tatFr=2vJi7K z3)3$G8BKM4!l0|4WIHJuk!*=@(_1(3)gZP7jX`!aRSG1DEqNHJFq1iu{Nu) zEQ>Keb1)-QF)`yXD#I~2zo!c9KJX7AJE&M{*E*vkTj@ z8SAqKE3y;|GY_*e9g{NwV=@v$GYG$=4D8T@G8&oI1g|qH*q!p{#-CI86ecs?jp5kHd;a0BWaxUgvPUl39wVIczxt6KIR=>;$gmqbs{*hW~LP|Ke2s z!OKY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;@dCT|e8Gpj#mhXyquj^s+`yGw z!g-v@NgT%!9LQem%rd%VsIJjp}c z%`IHZWn9ELoW=A0$;QSsZu=~K5e8k(l z!m~Wa{oKKgT*alF&sm(z@f^uP?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?5<9Sa z%V)gL8@$Lxoti!4-$Kou&oXo`3Ov1Q~#_$Zm zAF%?jk9@_)yu+(J$KyP}o!rFL{Fe(jn^X8ZM{zLwuq)fKIUBGhE3q_-FfX$)JyS3t zV=*$rFetyq4D8wa4)xUJy-A_{>>TulfQ8|2e2nQu{E2pE~~LTORykw zF*DOJDdRCZBQPX?#t6JV@im|DF0b)CPw*gjaWmKOKQ827oXS5qnnT!^-PoQj*pRhY znPpg%`Iwyi}FnP+&E`?#GOxROgak25)m<2Zr?*^8ao zhD}+I)mechS%|rrg=v|L@fm{=8H&H61zw-|hEI8q*Li^_d5F8Yg=@Kti#UhVIDun0 zl>OM99oUkMSesQ?mc^K#Ihc{Dn3!=GmEjni-=hY0ANZ1wc$-&vmdCiCJGhanxRmob zi<3E?BRPn@*@bP{jP+TA6(yTF&T-W8H8V=1a@!vjQ4qi7kP?@xrbZ1 zj?1~2b2*(8IhMoNpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o+0=na^UrmulSgEc$MdP zoCmm*o4A_)asg*^3V-J)4rU*AWji)!1J-0EmSz#=Wj3Z~3MOPMMrIfW<=04o-8(+# z1K#8%p5_tmY@d+p`55vKA||42v=!voixzG7)1l z3d1rOzeNb_-tz??@)j@i43Bajw{rtmatY^gCMR(mM{po}u`}DSDeJL1E3hOBF*ma? zEt4@mV=y8^@mKi3>oec*Dev(*FYqJ}aW}VcEthc-=WrS)a14jCAG@;yTe1;rvkJ?y z81pj+GcpwuGY+FN9E07Hygu?3AM*~c@*I!z0C#c|SMy&k;A~Fe z?;OR!?8B~X$L4InnykdqEW*6Z#`H|Vgp9?=48x%O8al9h$LD;&o4mx+Ji@))#`Rpm zfA}|N@K656;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS{240n`o!0K!n?f2^E|)${hGr0c2^QGBP)?rnaV{sN> zPG(|iCShDgV|a$(kD!6qN50}?-r-fA<8dC~PHy6A{>ufN%_;nyqd1s-*p=l0t|3Geb6&+`Niau+vq4gcdp{>7>M zgQGcwec6re*@6vOiqp@AnQ!=%_jsKbc#?;> zn_IY+%eaVhIE@oHhC|tp-PwUH*@(4Sg=JZc`I&TDkIhl#6nS^l}jo}%B zKfVTDANh)pd52edj>ma`JGqIg`7al6HmC4+j^beUVOO?eb2ea2R$^%uVP0lqdZu7P z#$sfKVNibk64<@tb3WirUgBvU;a+azdamF<{F^iQCx7E`4q#7qVrw>GT~=dxmS92V zVrHgcQpRI+Mqo(({2X|F;%h$PU0&mPp5Q_5;%2Vle_Y7FIF)~JG>5P+yRki6upw)) zGRv?i^D#R!FeMW)Hlr{sgYny^!0tU?@F8#UGSBcR_i;Nna3z;;9%phA$8iJ)vKKqE z4V$tatFr=2vJi7K3)3$G8BJ(47@(`4WIHJuk!*=@(_1(3)gZP7jX`!aRSG1 zDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zkdkqKJX z7AJE&M{*E*vkTj@8SAqKE3y;|GY_*e9g{NwV=@v$GYG%D5A5FZ8SnE3FY*)*a}T$2 z9hY-4=W;qHax90jKYOqvTd^_guqw;3I14Z*Gch%jFfOApJVWruyTI!sU-2>T@G8&o zI1g|qH*q!py5;czxt6KIR=>;$gmqbs{*hW~LP|Ke2s!OKY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;PXfF5e8Gpj z#mhXyquj^s+`yGw!g-v@NgT%!9LQem%rd%VsIJjp}c%`IHZWn9ELoW=A0$ z;Qan5u=~K5e8k(l!m~Wa{oKKgT*alF&sm(z@f^uP?9DE0%Vw<48m!1tEX+L2%5+T5 z1dPc@49y_?@-VP_%V)gL8@$Lxoti!4-$Kou& zoXo`3Ov1Q~#_$Zm9}fbrk9@_)yu+(J$KyP}o!rFL{Fe(jn^X8ZM{zLwuq)fKIUBGh zE3q_-FfX$)JyS3tV=*$rFety?5A5FYIUn#QFYz>wa4)xUJy-A_{>>TulfQ8|2e2nQ zu{E2pE~~LTORykwF*DOJDdRCZBQPX?-V3}w@im|DF0b)CPw*gjaWmKOKQ827oXS5q znnT!^-PoQj*pRhYnPpg%`Iwyi}FnP+&E`?#GOxROga zk25)m<2Zr?*^8aohD}+I)mechS%|rrg=v|L@fm{=8H&H|1YV!{hEI8q*Li^_d5F8Y zg=@Kti#UhVIDun0l>OM99oUkMSesQ?mc^K#Ihc{Dn3!=GmEjni-){$YANZ1wc$-&v zmdCiCJGhanxRmobi<3E?BRPn@*@bP{jP+TA6(yTF&T-W8H8VM1$J-w zjQ4qi7kP?@xrbZ1j?1~2b2*(8IhMoNpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o+0?- zX5jUaulSgEc$MdPoCmm*o4A_)asg*^3V-J)4rU*AWji)!1J-0EmSz#=Wj3Z~3MOPM zMrIfW<<}d5-8(+#1K#8%p5_tmY@d+p`55vKA|| z42v=!voixzG7)1l3d1rOzg-LL-tz??@)j@i43Bajw{rtmatY^gCMR(mM{po}u`}DS zDeJL1E3hOBF*ma?Et4@mV=y8^@z>SB>oec*Dev(*FYqJ}aW}VcEthc-=WrS)a14jC zAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN9E0=wmB8);U-A)e^9s-M8257rH*yu1az1Bq zGRJcy2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@XO`E?k%73K5y_MPw_DKa4Xkw zITv#-r*k65av1xw2RpJA8?z3pvK))E0CO@EQ!@$UG8)4(1b)${hGr0cITP5uP)?rnaV{sN>PG(|iCShDgV|a$(kJEwIN50}?-r-fA<8dC~PHy6A{>ufN%_;ny zqd1s-*p=e9X=aOvyxy%_t1ZVElF>uzSxJe8^k8 z%riX7eca9sT*)Pz$C;eOaU8*c?8VM(!=|jq>a4($EX3T*!n91r_>94b48>o^1Fz3~ z!>7E*>%72|JjC7H!nIt+MV!NFoWL<0%6{z54s6Lrtj#Jc%VNyW9L&g6Ow2fp%5V(M z@5chW4}8f-yv-{-%VXTn9o)!OT*~>J#mOAcksQR{?83He#`>(miY&##%)_iq$K*`F zn2f~G48ku*1G~3;#{0a%i#)}{+{3M0$K_nixtz|49Lr(s&mQc^R&2~VtjcmM&H~KI zOiaxrjLT>Y&k+1^B=GvkSA5JnyvlPt&I8=ZO^8JUWS8HZ6Bj=}kTe_;24FZqbKd4*?r zjQhER8@Y;0IiIsQnd3Qv0*p|&$pEX#KrC6AGn3d_6oCz3{kral2IgI_;gB{t5jai3PS&qe7fH|3oshNav8I9o?f(Km40B_$Pnka1LNkc4BKbVO>^Zd6r;7=3-{1 zVN%9pbVguE{@fjSed23A;ay(id7j`w?&4;y;eTAnzc`hDa5RUoFT1flTd*N(u`qgOR^AiGYiu)8RIhsBQg|!?F_s=^9`T!9^|@%AMrM?@GOsUKX-5=S8*xla~3Ca zJV$a6d$SAMvKi~M1}m}@3o{S1G98mM0b?=}Lo*1!Y!B?-@)_^*1~2jy4|5N#!=zu{aAbCo?fMlQ1r$F+4-?$F{)hBVX|`@9-+m@i-4~ zCpU35|K$SC<`n+UQ5?)Z?8N-WJH%*$*{&lF6^Sd7dt49c%t1G{&8&Ii27 zOFYdZ+{<2n@-eTLQ07 ze9b4k%WFK(6FkUW+{`unj|=%1r}7Vu<`DK}H@0UBHe@YUW*HV`K4xbIreq?h~wR%JOBX94D9CZ=W*#$_~yX9)gSA9#J_D?a8OUgbF+=K=2ICa&hcT)^3!!rwWH zgV~2&*^bTGfHhf(rCEe|nT_e0f(aRmkr{?T`E^}j_m0o`fH!%Gr+I{XxsB_&g8%Su z&fuT?jl(&BJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^CG{;Pr{G`Gj|QjpuoS2f2%z zxrYC7A^+l3{=v~4!oKXr_H4n1ti{SK!=lW`?99NFOvKoX!mtd+Z)*a(_k6*Jyv55r z!=v2C?cBhXT*7&r$w?f?5gf=~?94W7%6hEM3M|P&%*`xJ%Vdnt7>vkJ{Ixpp`ph?c z%6q)d3p~j~+|4aq%Vk`|Ih@7`9K)gP$L{RFmTbh@tirM^#{A5|j7-JEjKio5$Kd?F zDzN*&mwd$Ayu!0Q#{JyEja&l;@AQY_3o%*u33&IF9f zNDR#&{IW8zd&_6M&l|kRQ#{N)+{$%a&c&R|>72;19LE0a!H#Uj#;n7tEXU$3z?{s) z)J(#-jK=T`!5=FEuaA7i$GpRHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L z*A0Q)J3i+F-sB~o=20HtZf@g7uHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9p zbVguE{#+k;ed23A;ay(id7k7E?&U6S;W{qo0?yc5dQoF5z5G<9LqXK=xv1wqaA&V|7+w zNfu&mW?@<;V|>P7M26z8wSm`XzTs2e<8@x(DgMKK{DZ%9Jy&ocXK^yea47q+J3Fu? z8?iR4uq=x)KXWi6Q!z2)Fe<|_IKQt6>^|@%AMrM?@GOt>5dY#1{>C+2%6Xj52^`5m z?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?vO2JP%V)gL8@$N>_%HYKPj2M~uH+)l z<`j`1- z%(Yy``JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#<2n@-eD*~@ie9b4k z%WFK(lRUz`+{G^Y|479&I&BaLd?x9Ov_}9&lrrz zQ2ezl@cPU*e9C*g&I>%nf4Gl-@OQ4~3NGX(yTF&T-W8H8V!1a@!vjQ4qi7x^Fm<$nIjt=zzsT*TR&!m%92{_MeyY{kZ` z!>TOD;w-?N%*518!nlma@C?BpivzEZe8tDS!>c^U6Fkhnxs#i@mdiMwGdPi>IGBCd zmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwTJGcJKI{4|tQ8c$!CffV;Vk8@Y;$Ifqj@ zj>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^CG*;Pr{G`Gj|QjpuoiN4S@}xP|Mu zoC`RUlQ^0~*q7bdo-NprwOE;DSd{sgof(*ti5Qzv7?#2KZ9!o7o-g>2w|JRnc#H?R zhugV{tGR@8IgR5vf&S&!9OfhAdpxtWD&nT+ungAo~uzvc&CpZSJQd5_n5 zfv5Nn_wf(@&h=cug`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-JEjKio5$Kd=vFR=T- zmwd$Ayu!0Q&O`i*JNO&da4F|;Iwx=>2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C z@XOr5?k%73K5y_M|Kq>h&p)}98@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o# zm(duWA^2lX;PsKO_?UNimFIYZhxs>max>R*8Rv5bCvp@Avk$wn9h+Hbp9iQ_7Z}JjP^C%B+H@9&kS8*}ta4N@fI0vvNJFzvJur8~y zJWH@3b1^g1Fe&3PIwLS7f6fZLKJhi5@Gh_MJWuin_i`7va2=O(0cUa&M{@}KvK!m8 z1sk#!E3*uXG9R-u15+{)V>1fFG8n(j4D8)${hGr0cnHJc+L)KztmSIumV|Hd> zN+x1#MqyY6^L*C+Lp5ZYb(miY&##%)_iq$K*`Fn2f~G48kwt1G~3;#{0a%i~NuOazFp%R&L-*F5+xX z;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQae>!IzT#uv;Z>gF2_EL(+{w*c z%VnI;8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%CBPsyLWuf2fWEkJk6s# zz}?)&ja&TPY`tjFrCz>+M)+|0tXOvd<(!H5jS zU!wxA&wRtDyvOUjz*GE(`}hZc=X$Q-LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7 z#$i;3V{m>S8Q6W`OFrUlUg23D=OO;Z9sG@JxRmoaof9~cgV>v0*p|&$pEX#KrC6AG zn3d_6oCz3{kr<3_mz4KZgchpZJ%e#J{+Mzi|zhavrC10!MNXd$SAMvKi~M1}m}@3o{S1G98mM0b?=}Lo*1! z3=Hhv@)_^*1~2kI{>%ORlUuogE4hfXIfY|6jQ!bz9odSFS%+0wj>TDkIhl#6nS^l} zjo}%BKL!L|ANh)pd52edjwg7Se{&}{b1j!~K4)+uM{zLwuq)fKIUBGhE3q_-FfX$) zJyS3tV=*$rFetzF5A5FYIUn#QFYz>w@&I>p8#i(l7jq7$avXj=zrgDgU-Jp?@*2ufiL-pw|RwUd7Ov%7kBVC zuHjP7<8)5oNDg9ec41pKV|~_OMV4Y==3!Q*V{#^7Oh#g82H}@pf!$j^<9*)XMgGTs zxu1V>D>rZ@7jZVHa4d(hKYOqvTd^_guqw;3I14Z*Gch%jFfOApJVWqD&%o;=U-2>T z@G8&o1P}9X?&M~!=;BIc?My}#w&f!#!<8TgOPj+H!Hep>>V|kWfLFQs+reRXXV{}Gf zNdD{|czxn)KH*(n<9VLs5$@$KZs9sE=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKZ zBF1JEhGj5*>lWC(=L3G6=bB_HuNukb97^AP{y4*te9T*`Tz&IugJLF~;g zY|Cb>&l;@AQY_3o%*u33&IF9fNDR#&{L(qFd&_6M&l|kR|M)NW^G|N&2Cn2H&gK-3 z$34czxt6KIR=>xoti!4- z$Kou&oXo`3Ov1Q~#_$ZmAFTtgk9@_)yu+(J#}hovzqyl}xt7Z~pEEd-qd1s-*p=4h`E`CX_<`i8G{iSioco%UZ44fPkE2md4Z?+ z5BKp8{?7GW!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ49DR7-Yl^Dz?Xc) z+q}ZFJkCS>i#zxm*KjH4aXKe(BnPoKyRa>ru|8|CB1^F_^DryZF*y@3CL=L4gYZk! z!0s)d@jh?xBLCyR+|NI`l^eK{i#VH8IF`fMpFP--t=O1#Se4~ioCTPZnV6bM7?;r) zo+0?7N#OO7ulSgEc$MdPf`|DxcXBh=avA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~ z1rstBBQp$x@@wP3?j4`=0dMjWPxB}ba5uMcBUf=T=Wr^=aX1ICCp)n#;g3up|pHH?uG;lQBMHFd{?oSA)RoGvDwj@9{b>@D%^yKK{Yqxt=Sykh3_M zV>p!k*qt5Nl8soKRalnAn4dYAk*S!NaTt~17@Xhh2X-I$l8<16OhpXLAb2av1xw2RpJA8?z3pvK))E0CO@EQ!@$UG8)4(1b@^Gygu?3AM*~c z@*Gd_F#qOGZsuAp<9yEGM2_NM_F-4HV{8$RVdUgrg#;y>KSKlnS>a|IW27AJEIhq52LvjbbQ5o@yw z%d!~rGY2y=6%#WKqcR+W^LvfJ?gL-)5pVMf&+<4A@h|S+Z(PHroX6>$z>yrp-t5A* zY{vSm!HO)!!py_0OvmI*z?h80&P)?rnaV{sN>PG(|iCShDgV|a$(k7|L}N50}?-r-fA;|U(--`vT~T+3yg z&l#M^Q5?)Z?8N-WJH%*$*{&lF6^Sd7dt49c%n1G{&8&Ii27OFYe^Jiy)D z#*JLX#hk;b9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_ijK}DVz>xe|CGh&h*L=deyvFl9 z$s^p$UEIQTT+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=APB{8l-zd(Rhq z$XmS3Gd#wF+{5kM#MNBFxtzxF9KnI?#m;QQrmV;6tiX~i#N5onv`ohMjKPQu#b1>I zug`qLr@Y7OyuefZhx_;kf9HCx;6l#gWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-q zhGTGkuNc^U;7dN@ZC>G79_Jzc#U1>OYq*s2IGqzXl7rZrUD%e*Sf4dmk)>Fed6<>y zn4Ae1laUyjLHMOYVE2~Kc%L_Tk^k{u?&qJ}$_-q}MV!qk9Lr(s&mQc^R&2~VtjcmM z&H~KIOiaxrjLT>Y&k+1kKJfa;SA5JnyvlPt!NdHUJGq%_xs3BUgA+N5gV~2&*^bTG zfHhf(rCEe|nT_e0f(aRmkr{?T`L$eN_m0o`fH!%Gr+JhIxSQL!k*m0vb2ydbIGh96 zlbzU_O<0%JSe_+Vkhz$dX_%Dp7@ZLql0VA^UZ41yPk5Ktc%CPDgnPM*TeyzPxqve{ ziK97$ec6re*@6vOi@r`GOC5iR_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?Gj)t90P?nQ!=%_jsKbc#8jU zAOGO*T+bC;$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%1049@SR0=o}<$w$1+ zD?H2NJjB1agTHYNmvSDba{@SKmN=8{F7U`fh)O)vpI!hIgI_;gB{t5jai3PS&qe7fH|3oshNav8I9o? zf-q9u{j&CCM&Tti!d*#`clvjht= z7c(;rlQJHoGXg{MXR*NR6JPTQ@A4YY^CXXOFL!YZ*Ks))a3&{lG>5P+yRki6upw)) zGRv?i^D#R!FeMW)Hlr{sgYjF@!0tU?@F8#UGSBcB4{{H;a}!r{3FmSe$8!V+vKKqE z4V$tatFr=2vJi7K3)3$G8BIm3A{e@4WIHJuk!*=@gMHvAN-x`xq=Hhi<3Eq zL)nkr*?}$Dh_zXTWm$~*nS&XbiisJAQ5lZG`Mq#p_kl0@h_`u#XL+25_!oEZH?HAQ z&f|1W;7AT)Z+2l@He-F(U`3W#!=zu{aAbCo?fMlQ1r$F+4-?N5R1BBVX|`@9-+m z@dOX^Z|>w~uH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{EJkJ+2IbcRf!#Yk z=L6p4C7$L{9^h_n<3_IHV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$W~O0M#$$9wU`YPV zA9#J@Yd+y!UgLS5{Jauq7L@Hmk5K zi!ncQFe6hjG2<{Q!!bC&=LzgS@FgGdHm~q3kMj`!;tu}CHC)PhoX!ax$wBPRE^NzY ztj`*($WkoKJj}{;OwI(1$w&;%ApDX$uzSmAyw4lF$p82+_w!F~h~wR%JOBX94D9CZ=W*#$_~yX9)ht6?lE*D?a8OUgbHS;9>sFo!rc|T*mpF z!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($PB}v{F*bcd&lQ|z?;0p(>%%p+|6y= z$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ$)7m_uTOl%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;*#o=xe8Gpj z#mhXyV?4+`+|Es0%_W@6X&lcH9LQem%rd%VsIJjH*wkALuYuICCaiiMenS(%Q> znSe1FiJ=*UU$O*tZ~2V(d4m`EAOGck{>iP}z?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3 zz?{s))J(#-jK=T`!5^6euaA7i$GpRqIe$sc?IFpk& znnT!^-PoQj*pRhYnPpg%`Iwyi}FnP+&62f2saxrwW} zgmXEK<2ix@*^8aohD}+I)mechS%|rrg=v|L@fm{=8H&Hs2VS4~hEI8q*Li`b_z(B- z5B|>eT)~B$#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8{GKkb`@olc#M`{W zvpmj2{EIvI8`p3t=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=uO<+Q9BD zpYc9#@FM@?zueD1xs@BZl8ZQ-Q#h8x*q=Svk*(O6by$_a|S1J6bG{pyRsddvjJN9e4{$fPaU)l8G3Rh9$8k6ZuqQjQHJh+5tFb&wupo0W zGt)3B<1soTFeHDb3cNn?HJ|V#2>Y@d+p`55vKA|| z42v=!voixzG7)1l3d1rOzoiW9-tz??@)j@i43F_3_i#HmaW$84E~jxkM{po}u`}DS zDeJL1E3hOBF*ma?Et4@mV=y8^@mGq#>oec*Dev(*FYpxq;XeMs-?^SExRA3rnPWJV z{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D;TW9XlLvMm_>zx!n^$<2$9af$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!k+#84rDKOW*atTJyvH0mSiF3W)`Mp zGR9{NMr0`dN*H*3<{LicJznPpp5i~;$3OTx*K-9Iauz3Z42QBGyR!pZvJq>u3d^z> z^D_rCG8Gdu4x=(0gY$cW!0rQI@)2+I3eWO55AiSV;BQ>RrJTpRVtjKGlm87J`i#MgYnyS&EpJjo;6 z%U#^UbzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1ZVEh(4uzSxJe8^k8 z%riX3gWSXI+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r_>94b48>ou07E*>%72I{D=Ga2Y=^!uHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4 zevcX0ec($z;%#2xSsv#h{>2^qjcd4+^EjOoIFf_dn_bwJ%~+o`Sdpbzn0c6$>6n}e z7?Y70nnCy_Mqu}r&v>6Vc#;3{U+(9h+{z7H$wi#aDICjT?9U$T$X0C3I;_faEY1SV z$xKYmB#g^w49^h!5k2tw$X9&KJG{zsJi){Kn>)FgYq^Z`IfD~9ii6pQUD=M!*?=`! ziKSVDd6|vrnSu!!i;)?ILHRXWVE2yC`G7ZhiKls#2e_NtxRI;4m~%Ll<2alH*pr>u znoU@j)mWY-Sdh7xnQ54m@fe*E7?MAu240`|nooF_*La>Md4zkpi(9yk%ejCvIf$3(cvJ?w553@2IlQRKhG7>{G2){%O?B4Pj z@AC#P@<0B|{rr<#xq&OWh_g9`V>yid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8G=6| z1YRHcijR4RS9y*nc$j~4CpU8~mvKI4a3V)>F#E78+p#$tuqG?9G>b4VvoSqWFd<_x zGQ%(^zlIO&-tjpf@Fp+uG>`HCcXJyzaupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#5 z4U;k+qcZ|S@@Kff>l0t|3Geb6&+{aYa4&ap3)gWu7jPygaWsdpFT1flTd*N(u`qgOR^AiGYiu)8RIhsBQg|!g$cYq^9`T!9$!ppIg67yhC|tp z-PwUH*@(4Sg=JZc`I&e{w4~ za3vRUHm7hbhp|6my(BG4Jpy&+!Bg z^Kb6tX0GKj&gTqHRF30t4q#7qVrw>GT~=dxmS92VVrHgcQpRI+Mqo((3?6uW z;%h$PU0&mPp5zhkKe zb1)-QF)`yXD#I~2zXu8IKJXbWF|!jLAq0%^>{pYxniP}z?EFY*_^_$9LE0a z!H#Uj#;n7tEXU$3z?{s))J(#-jK=T`!5=>ZuaA7i$GpRqIe$sc?IFpk&nnT!^-PoQj*pRhYnPpg%`Iwyi}F znP+&62f2saxrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrg=v|L@fm{=8H&HY240`} zhEI8q*Li`b_z(B-5B|>eT)~B$#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8 z{Qf1d`@olc#M`{Wvpmj2{EIvI8`p3t=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{ zFeW20G=uQV=fLhQpYc9#@FM@?zueD1xs@BZl8ZQ-Q#h8x*q=Svk*(O6by$_a|S1J6bG{pyRsddvjJN9e4{$fPaU)l8G3Rh9$8k6ZuqQjQ zHJh+5tFb&wupo0WGt)3B<1soTFeHC|2)sV=HJ|V# z2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rOzr7Fa-tz??@)j@i43F_3_i#HmaW$84 zE~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@z=Y+>oec*Dev(*FYpxq;XeMs z-?^SExRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D;TW9X-v)Lc_>zx!n^$<2 z$9af$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!k+#84rDKOW*atT zJyvH0mSiF3W)`MpGR9{NMr0`ddLDRv<{LicJznPpp5i~;$3OTx*K-9Iauz3Z42QBG zyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY)~d!0rQI@)2+I3eWO55AiSV;BQ>RrJTp< zoWPMB#NO<}wrs}wtig&b#lpRVtjKGlm`6%%E z#MgYnyS&EpJjo;6%U#^UbzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1Z zVEpzluzSxJe8^k8%riX3gWSXI+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r z_>94b48>m$07E*>%72I{D=Ga2Y=^!uHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{ z=3qvqVq(T&REA@4e!m~sec($z;%#2xSsv#h{>2^qjcd4+^EjOoIFf_dn_bwJ%~+o` zSdpbzn0c6$>6n}e7?Y70nnC#GUSRi@&v>6Vc#;3{U+(9h+{z7H$wi#aDICjT?9U$T z$X0C3I;_faEY1SV$xKYmB#g^w49^h!aX0Y#$X9&KJG{zsJi){Kn>)FgYq^Z`IfD~9 zii6pQUD=M!*?=`!iKSVDd6|vrnSu!!i;)?ILHYGgVE2yC`G7ZhiKls#2e_NtxRI;4 zm~%Ll<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?MA42VS4}nooF_*La>Md4zkp zi(9yk%ejCvIf$3(cvJ?w553@2IlQRKh zG7>{G2)|qp?B4Pj@AC#P@<0B|{rr<#xq&OWh_g9`V>yid*@GR~ij7%^RauV3S%5j2 ziK&@{aT$%_8G=8q1zsQdijR4RS9y*nc$j~4CpU8~mvKI4a3V)>F#E78+p#$tuqG?9 zG>b4VvoSqWFd<_xGQ%(^zg`XO-tjpf@Fp+uG>`HCcXJyzaupYI4ySS)hjRdXvJ+dg z3G1>N%d-RvG8Z#54U;k+qcZ|S^5>Pn>l0t|3Geb6&+{aYa4&ap3)gWu7jPygaWsdp zFT1flTd*N(u`qgOR^AiGYiu)8RIhsBQg|!T?)KD^9`T!9$!ppIg67yhC|tp-PwUH*@(4Sg=JZc`I&e{w4~a3vRUHm7hbhp|6my(BG4Jpy&+!Bg^Kb6tX0GKj&gTqHRF30t4q#7qVrw>GT~=dxmS92VVrHgc zQpRI+Mqo((JR5j@;%h$PU0&mPp5zhkA0$;QW3$u=~K*e9HU0&8s}m6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!1t zEX+L2%5+T51dPc@49y_?aw)KT%a?q_yS%~6Jj0{h$L-v}m0ZNxoWijj#{TTVj%>xo zti!4-$Kou&oXo`3Ov1Q~#_$Zm9~T3!k9@;te84-r#tS^jL)^_RT+3yg&l#M^Q5?)Z z?8N-WJH%*$*{&lF6^Sd7dt49c$;0=sv7#mBtIo4mraJjVUp!HrzS#hk;b z9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_ijK}DVz>xfTKJfa)fBBq$^AG;ci#)}{+{3M0 z$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3&luX3fjKZ)C#&72WyZ8KuPxu#a@i(61 zaUS4KZsKY#;apDRc#hye_F`wYVN=#)byi?W7GiE@VOl0*e8ylzhT^ZYf!AmL#}|Ca zKY5*(c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ?mc^K#Ihc{Dn3!=GmEjni-_Hbg zANZP2d7rm=mFIba2f2%zxrR$QkJCAUBRPn@*@bP{jP+TA6(yTF&T-W z8H8U>2X=4yl8<vkJ{B2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@XL|F?k!*P5%2N_ zFY^qKav!&I16OhpXLAb2av1xw2RpJA8?z3pvK))E0CO@EQ!@$UG8)4(1b-Y3ygu>` zpYZ|j@ER}hBoA>nw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*#`clvjht=7c(;rlQJHo zGXg{M=fS}16aVFN{>?x5J1_DS4|5N1fFG8n%d2<+bTA3otma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$ zC0U5MnT2VYjPV(R5gCfV_6J^{`5#~KA^+rcUgBvU;a+azdamF?&f;W_;ZXKtcXnV) zHezj7VObVqe&%3Creb2oVN`}=aDLwx*nQw@KIMJh=2f2O2_EDwZsr;;)${hGr0c*&EosP)?rnaV{sN>PG(|iCShDgV|a$(k3E6cN50`RKHwc*;{~4NA@1fD zuH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{EJkJ+2Ibe?f!#a4;$z<9OL)KztmSIumV|Hd>N+x1#MqyY6(miY&## z%)_iq$K*`Fn2f~G48kwl0=u_-$w$1)8@$XjJj#9C&JA42MV!qk9Lr(s&mQc^R&2~V ztjcmM&H~KIOiaxrjLT>Y&k+2vHSqe#H+;qiyu)j}z>_@0-Q2>pT*mpF!HFEj!R*7X zY{%woz?!VY(k#Nf%*OOg!Gw&($PB}v{JJHud&gIN%zM1aD?H0%+|M1{$W>g-Ih@LI z9L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ$)B48uTT7!&-pk1;P1T1Q#{N)+{$%a z&IO#wNgT}~?8|O!&lYURTCB`6EXsV$&J0Y+M2yWS49j5rwkfcC&wu!YfAJQ7<2fGZ z0q*1`uI3WX^8JUWS8HZ6Bj=}kTLtyuT zulbbsd7D>xo+o&aySSNaxRmoaof9~cgV>v0*p|&$pEX#KrC6AGn3d_6oCz3{krqIewa4)xUJy&oc zXK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!z2)Fe<|_IKQt9>^|@{pYlF$^D58t1P^i- zH**b_avrC10!MNXd$SAMvKi~M1}m}@3o{S1G98mM0b?=}Lo*1!tO)Gh@+BYfE^qKM z&+sVsaXU9~B^Plvr*JHXu|IpTBU`aC>#!=zu{aAbCo?fMlQ1r$F+4-?$MV4IBj4~D zAMg&Z@d8is5O;G6*K!%>a|S1J6bG{pyRsddvjJ@;k8wYDa3fc7G3Rh9$8k6ZuqQjQHJh+5tFb&wupo0WGt)3B<1soT zFeHC24ZJ?_Uq0vG{DZ&qB2V!!_i!uMaXA-oCMR(;hp;cZu{~R`A#1TR%djZ(F*`Fb zB@;0=qcALk@!OKX?mhqE6aK|p{Eg>$oCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM; zg_xUJn3l;HpD`Gbq4;ZY;PsjR@dY39PhRIGp5_tmh~wR%JOBX94D9CZ=W*#$_~yX9)gS5O{s$8$RO$-r+S~;7K0hZf@aP zF5`U8;6#q%VD@2GwqtWPU`Q zf6WQJKJ!1m;6wh&>%7F%Ji@))#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-JE zjKio5$Kd=vJFxq}*L=$Ryv?gT&l5bzUEItyT*`Tz&IugJLF~;gY|Cb>&l;@AQY_3o z%*u33&IF9fNDR#&{4y)Bd&`%6#Jjw~%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7t zEXU$3z?{s))J(#-jK=T`!5=dNuaA7gXMDgryv7SW$wS=DEnLfGoX;7Y$Wa{3KJ3bN zY|aL($x1BEBFxKdOwSZd$XJZbFbvACGXlGJe8tDS$D6#uvpmNA+`)}p#l@V%sT{}Q z9KfFJ#MW%Wx~#_XEWv`z#mr2@q>RVtjKGlmIX&?D#DDpmfAbIi&Wk+7!`#EIT*u{H zz?q!H(Hz3Q?8f$N!G^5G$}Gd8%*X7^z?4kH*o?xk490KM0=xJ8hfnwyZ}B&t<8dC~ zPHy6AF5z5G<9LqXK=xv1wqaA&V|7+wNfu&mW?@<;V|>P7M26z8se#vL{>K-5$Uk|V zmw1{-xR=|wo-4SJvpAV!IF$X^ogLVcjaZviSeC_@pE;P3shF5?7?t4|oZqJeb|3hf zPkEoWd6nmRf(N;ao4JNdIgishfg?GHz1f9r*^KpBgB4kdg_(z0nU2YsfH4_~p&5i< zCI@zJ`I3)#mp6EsXLywRxSbogl8ZQ-Q#h8x*q=Svk*(O6by$_yc!4K*h`YIkYq^Z`IfD~9ii6pQUD=M!*?=`!iKSVDd6|vr znSu!!i;)?ILHTuJVE2x%_?Y*2lUI0_$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY- zSdh7xnQ54m@fe*E7?M9H1YV!`FQ4;o{=wgQk*9c=d$^VBxSR_(lan}_L)e$y*q$xe zkhNHuWmuH?n4KAzl8G3bQ5crN_-%Y(_n!ao3IF0P{>F1W&I8=ZO^Y|479&I&BaLd?x9Ov_}9&lrrzQ2aG6@cPXE_<|4lC$IAoPxA=(avRrk1s8G_ zCvyykvLCy%16#5YYqJW=vKaF-2QxAi6EhB@G8}{R``Ezl17Gtg@AEdV@;p!QAa`*y z*KjH4aXKe(BnPoKyRa>ru|8|CB1^F_^DryZF*y@3CL=L4gYe6k!0s(y@)7Uy1~2mr zk8&Tka|2g$5odD>$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!kF#E78+p#$tuqG?9G>b4VvoSqWFd<_xGQ%(^zm5v* z-tiS5^B!;V3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcZ|S z^5@9F>l6RwbNS&!9OfhAdp zxtWD&nT+ungAo~uzlH~1pZOnO@FD-?bzb6W9^qbY<9e>(LeAo3j^R-DV|R97OEzL{ zR$*BdV}9mfMy6t7#$i;3V{m>S7TA5@Yd+RF30t4q#7qVrw>GT~=dxmS92VVrHgcQpRI+Mqo((929tc;=g>(zxfA$ z=S804Vea8puH$kp;7m^9Xbxdtc4K?CU_;hoWtL%4=3{ndU`i%pY(`;N2IIGZf!%xl z!zcWUxA+^+@i-4~CpU35mvAnpaXd$GAbYVh+psC?u{tZTBnvS&voI}_F+O83B17@l zfWYfB|Kkfj$z>yrp-t5A*Y{vSm!HO)!!py_0 zOvmI*z?h80&YV#mEf9p#0h=uzSZ>e9U{i$tyg|W8BXj+{jg2%sHIOaU9M8 z?8#1S%_gkNYAnwZEXZ8U%rs2Oc#O^n49TCp1Fui~m(Te(|KRVu$WuJbJ>1H5T+RiY z$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=APB{MIY5d(VIPgn#iCf8#kG=K=2I zCa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5XADMUDE{ghczx!7e8GqOlh=8P zr+I{XxsB_&f(to|lR1V%*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c8IHmEy+>g8fv@?L z_j#LFd7dYDkh{2Fed6<>yn4Ae1laUyjLHMP6 zVE2|U`G|LUgO_=RN4byNxq&OWh_g9`V>yid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_ z8G=8$1zsQdhR^tbcX*8#c#?;>n_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUw zn2@m;nPC`|U%Li&@A!(3d5<@Fg=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbs z&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSU!4N4&-{-s_>h0{Ixq1wk8m%yaXnXXA!l(i z$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v_>4D3GeHJ|c6Z}Te8^8^oa7dLYa zmvSDba{@m%Rr86WTt zukiv;@(_1(3)gZP=W_-pauf%%54*A*o3jCHvJy+P2=g)<(=!DVG8Q8<41@A(yTI-p zU-2>T@g}eEERS(NcW@(DaWUs`D#vj+2e2nQu{E2pE~~LTORykwF*DOJDdRCZBQPX? zwhg>K@n1gY-~5BW^CD02F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i^D#R!FeMW) zHlr{sgYjFN!0tW&;S>JFTl|gZc$^2glbg7jOE{O)IG!UokiFQMZP=9cSe+GEl7*O? zS(ui|7@sj1k)imjb>Q`x|M3MM@=sppC7$LH?&UVF=L#<5EKcSa4rM=fX9u=qBi3dW zmSr*KXAWj$Dkf$eMrAk#=l52D-3PwrQ{LxoUgde7;6d)%hx+{X1>!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ z49DR7-Z-%Pz}I}r`@GGoJkJw6$X(pbHC)PhoX!ax$wBPRE^NzYtj`*($WkoKJj}{; zOwI(1$w&;%ApFuOuzSmwe8juF!OJ|uquj^s+`yGw#Mzv}u^h(!?7@y~#m20|sw~Ii zEWn)1#MDf}xQxc|48b1_1Fw&K!)JWJJG{mVJjp}c%`IHZWt`6$oXAle%s%YOc5KcD ztjS6&%_7XpY)sD-OvqS_%rFefuMGmbcYMXiyvLio!m~Wa{oKKgT*bwl!>Js{;T*u8 z?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS{8>Nn`ow?voPYBV{?3a$#lzggtz5_DT)>%} z#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;^#Z&1{D)8Y7jN-5p5t*I;7)Gh zYA)eiPUCov;6V0bXSQKe)?;;6U`ZBYZf0RxCS!cYU_^%EueyQPXa2_*e8@j}otJo; zN4S^UxSlJxkh3_MV>p!k*qt5Nl8soKRalnAn4dYAk*S!NaTt~17@Xhh1a=?znooJ3 zw|SN4d4dPIi<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1FiJ=*UUup+- zZ~2msc$YVLnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{6wBF z8H$sc?IFpk&nnT!^-PoQj*pRhY znPpg%`IwyN98_i`K8a|IW27AJEI zhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+W^Ly36?gL-*Dev<(ukt)k@E~__GuLn_ z=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=uOpi?aZ8G80oX3F9&v!!rbbR1Um8@(rKy0q^h{ zFYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2D8E(;?B4Me zAM+k>@(R!L8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c;3o;ioGYyk69-}h?L-J?E z!0QwL<#YbcKlnQ@@)Qqq54Un1mvaGUauP>#2>Y@d+p`55vKA||42v=!voixzG7)1l z3d1rOzf}nA-t!+m;a|MP-*}G4d4M~)iL1GUb2*LUIf4V(i=EkqO<9lCS%D>4h`E`C zX_<`i8G{iSioePSUZ43NU+^LS8;ANiSQSRe*Zs1BT;%rXgSPo-< z_FzZ0Vq?}}RhDCM7GO?hVrnK~Tt;JfhTxAff!9aA;WIwq9bV%Fp5!6!<`%ByGS24= zPUI*KW*>HCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*V2LAJHFy$-s4SP;aMKze(vB# zuHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9pbVguE{wx)Eed51-&cFEwf9FM> z;$iOLR<7f6F5pZ~;%E+GUv^`AwqQfnVr7#;g3up|pHH?uG;lQBMHFd{?oSBb#u zGymfYKIEUg&PzPaBizevT+bC;$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%10 z49@Sx1G^7=&8NK2+q}y2Ji&w9#m!v9rJTp(+{=4`;4 zti;kR!o1AJ^i08ojK#<2n@-eg#)io{Fl%9H~--8yvS2L%st%7bzIH`oXJTX z%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1ZVEk4nuzSyc_=JD)7JuV89_In> z63*o`j^_vtWG{AR8#ZM6n}e7?Y70nnCy_e_;2P zFZqafd4rdEhDW)N+qr=&xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKI z@&#TW`G(KIGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ4 z7@1)hlwb1(cJKI#k9m(bd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PP znTAOjkI@-{A^9^;;Pr|B@;U$JAN-vcd5VX*hg-Rh%ejCvIf82JiwjY#MNBFxtzxF9KnI?#m;QQ zrmV;6tiX~i#N5onv`ohMjKPQu#b3Dsuh0CCFZhsu@;Wc^G>>pEw{bmJa3N=LGRJTz z`>{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&=M3yV@HL$3(cvJ?w553@2IlQRKhG7>{G2*2bA?B4PvAMq}4@G{TvDEDzY zH*h5vaWnoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba z$rzt87?Gj)D|6uWng8(xAM#IL=Ov!z5$@$SuICCaShp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T z)?h`JVqxZCR;FWeCSXiPVrT~8myChkTfXEY-sKHm<{2L4K5pj*uH+)l<`jTt`edHTH;{)E|HD2IJ9^!6p;aV=^e9quR zj^beUVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVNiZeAK1O)D?a8u-sBaY$h5n}6_kUgRkr z<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbIreq?$G8BKM3A{e@ zKfd5Y{>kgS#M3;&z1+t2T)~B$#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8 z{GK|n`@q+H%KN;{t31yWJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA>bWF|! zjLAq0%^>`eDzJOYmwd##yur&n!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N z%*518!nlma@C?BpDFd&Me8Xpaz&pIg3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd2CT_S zEX^X!%WO=~6imoijLa|$%C9K`yLWuW$Gpdzyu!0Q#{JyEjawG$SH=g5h9^g)H;%YA8 zTu$S7j^IG{VrRBtQ`Td3R$xgMVs2((S|($B#$ZH-;;*EE*Ju967ktP+d7YPdnn$>o z+qj-9xRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D;TW9XlLU4j_?l07pSO9H z=Xrt$xr>{*hD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkKT|c5nHT zk9e0ic$sH-l>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^0Ov z;PsJj_>2#Dhu3(4CwYjwxrJ-FjPp5z6FG{5*@s=(j?LMCHCc(JS%i6+jp>z4KNAFApZG7I^Kbsa-+7Uzc$j;*mFu{i3pkULIGRJ)m)+Q&E!dE?Sea#5 zl=+yQ8JLoZ7@JWTmcjTfeqi^W|L_U_;w}Ehb3D!i+{sN`%_W@6X&lcH9LQem%rVd;5BVpr^Ab<<2={Uu*K-9Iauz3Z42QBG zyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY$db!0rQI^C|E1Hm~wLPw*gjaWmI&Dd%xI zCvYSOu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$tF*JklOPs*&Eno5x@A3vO^9+x2AGdP@ zS8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAULf5Z;FKJpEp@d5Af8ZYo9 z4{j=%)sjt z|K)T3%|G}%FY*)*a}T$29hY+fXL1rpa|rvg8{4x58?qKFvkZ$eAG0$9Q!)`_GYZ2p z7{A2`?B4SqKH*=y#ou_2$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rrg=v|L z@fm{=8H&H62VS4~A7Ahx|KxRE;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{ z=3qvqVq(T&REA@4evcN|ec)?8<$d1fRi5Vw9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGf zR%9s_W*%l`IwofV#$+UhW)Oaf8rZ$%OFrUV-r!}P;Zg46c5dKGF5+xX;aCo1fA(NU zwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQD1p~UzTq=I;2mD$1)k&~?&cP*>V|kWfLFQs+reRXXV{}GfNdAlzczxo(e9pi52Y=^9p5kHd z;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lBoCSq(xVOR#^w}^q=d;Y^G{EN5v z8_)4L4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@mGYv>ofo3 z3qItZyv|EJ%_H2)ZCuY4T*z6R%rP9we(cT;Y{^Ef%_=O*V$9DR%*a$s%s7n7a174x z;RCx5e9fo4&)dAp^E|72lk9K_!2!nSP2`mDimllV+#84rDKOW*atTJyvH0mSiF3W)`MpGR9{NMr0`d3K@8P=6`&_hy0V*d5NcagnPM- z>$!ppIg67yhC|tp-PwUH*@(4Sg=JZc`I&96F8EC*qdG0md#k7HCU0QSeSX3mFbwA2^f=+7@9%&C3s->mM{5; zcX@-Cd4@;1kK4I{E4hfXIfY|6jQ!bz9odSFS%+0wj>TDkIhl#6nS^l}jo}%BKY|5b zANhvQ_<(nKjTd;5hq#+txR%Q}pEEd-qd1s-*p=7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj4OxqoS%yWK zkJ*`lDVd0|8HHgPjNg9k`~U7e|KSt<#asN1=Xjh4xRaZ>noBsB(>R_ZIFP;AnQhpV z^;n%1SdxX9n^~Ba$rzt87?Gj)>u2Egng8(xAM#IL=Ov!z5$@$SuICCaShp5Q_5;%2VlQqJRa zPT)umVsCa~TQ*~T)?h`JVqxZCR;FWeCSXiPVrT~8m+yhyTfXEY-sKHm<{2L4K5pj* zuH+)l<`j$h5n}6_kUgRkr<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbIreq?$G8BJ(3cNn^Kfd5Y{>kgS#M3;&z1+t2T)~B$#mOAQq3p-*?7)_6#M-RFvMk2@ z%)yLI#l(!ms0_#8{Qfbp`@q+H%KN;{t31yWJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q| ztjJO<%skA>bWF|!jLAq0%^>{pA+USPmwd##yur&n!=v2C?cBhXT*TR&!m%92{_Mey zY{kZ`!>TOD;w-?N%*518!nlma@C?Bp?*p%oe8Xpaz&pIg3p~j~+|4aq%VnI;8Jx&b z9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%CGMNyLWuW$Gpdz|KoU`!muy^006F9 zty*o_wr$(CZQHhO+qP}nwzarg?fdWL-jC;aoCmm*o4A@wIG58no+CJrz1W#;*p&5H zofTM;g_xUJn3l;HpD`GbVHli0KLlQ1_>Rx{fH!%Gr+I{XxsB_&f(to|lR1V%*^k}X zfi2mHwONH_S&aFagBh8Mi5Z7c8IGYCl;7V6b|3kgPk5Ktc%CPCkh{2Fed6<>yn4Ae1laUyfA^7WE;PsX7`GOC5iyid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8JfZP<85H~iEsFn_jsKbc#?;> zn_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nSb#Q{>E=_0=o}<$w$1+ zD?H0%+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLr!BlfU!7*MZk( zzU4FC=M7%uDIVq?Zsj^I=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKZBF1JE{>_jK z!hc@{cK`4dAM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL36m0!y+Gb2AImG8yAD z1|u>IgY)Oh!0QX&@i`yxCNJ?ck8m%yaXnXXA!l(i$8ae7u{%4kB^$9etFSDKF+X!K zBU3Rk<1i}2F%*OH`-{NtBVY3g@A4YY^8^oa7dLYamvSDba{@qIeP7M22B-{(Ka8ec?Mk z=L6p4C7$LH?&UVF=L#<5EKcSa4rM=fX9u=qBi3dWmSr*KXAWj$Dkf$eMrAmLVo-j6 z7}$N}Yd+y!UgLS5;6d)^Y|479&I&BaLd?x9Ov_}9&lrrzFbvM0w*#*)e8=Z}z?;0p(>%hx+{X1> z!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ498Fm%I~)VyN`U$C%nsRJkJw6 z$X(pbHC)PhoX!ax$wBPRE^NzYtj`*($WkoKJj}{;OwI(1$w&;#5d3vB@cPR4e8Gpj z#mhXyquj^s+`yGw#Mzv}u^h(!?7@y~#m20|sw~IiEWn)1#MDf}xQxc|49#HtaU-z% z#5a7(d%VsIJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%)j^t zf8)37f!znb6$=~_kwZQ8$-|`vn^9C>S6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXx zGXqmH5o0q7|7J)A;lEb{yMOqKk9mhzd5*_S&!9O zfhAdpxtWD&nT+ungAo~q!TIw_;Pr*?_?!=Tlb3j!N4S^UxSlJxkh3_MV>p!k*qt5N zl8soKRalnAn4dYAk*S!NaTt~17>Ysp{c>RUk+1oLcX^HHd4dPIi<`NIOF56zIe{ZN zh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1FiD4Onzb*w{U-_Od_>i}FnP+&E`?#GOxRQ%F zn^QQJ!`Poa*paQ+m~~i{6wBF8HRVtjKDwnJO4W$czxzu zKI47f;6N98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGY2y= z6%#WKqcR*rF(|*E3G6=dHJ|VA>qN-}40@@)j@i43Bajw{rtmauH{93deF7`?Ci-vK1S% z4y&>pi?aZ8G80oX3F9&v!!tC4@yDsa?i1heDev(*FYqJ}aW}VcEthdVXK*4%aWMO^ zE8DR-8?YuTu{4V?FS9W{Q!pW8F*5(+AN-BqP6l=#_>zx!n^$<2$GD$6xRI;4m~%Ll z<2alH*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E_$Pnoe1H5 zT+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JDEylt8HE2H5A6QoD?a8OUgbF+ z=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5XADMU7zXFhV}aKfzTv<}czxx2zTiXN;$@!UQSRe*Zs1BT;%rXgSPo-<_FzZ0Vq?}}RhDCM7GO?hVrnK~ zTt;JfhGsDSI2_o0;u}8YJznPpp5!6!<`%ByGS24=PUI*KW*>HCJ2qzn)?_7?W)bFP zHl}9^CS)u|=3o4Szwz6l!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N z%d-RvG8Z#54U;k+qcZ~k&TPY`tjFrCz>+M)+|0tXOvd<(!H5jQ;QYBi@cP1ce9i~F$xA%VBizevT+bC; z$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%1048@@QzAv!*$k%+ryS&EpJi&w9 z#m!v9rJTp7E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#?Oi+}Jp ze%l?`ec($z;%#2xSsvql?%+nQ;$qI>RF30t4q#7qVrw>GT~=dxmS92VVrHgcQpRI+ zM&O_Po&W6$ygu_SpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i^D#R! zFeMW)Hly%whGY=_yECx+hp+gUcX*ZOc$^2glbg7jOE{O)IG!UokiFQMZP=9cSe+GE zl7*O?S(ui|7@sj1kzp8|KX(LPU-*vC`G7ZhiKlsld%2D4xq=Hhi<3EqL)nkr*?}$D zh_zXTWm$~*nS&XbiisJAQ5lY*7?j_)2X-I%nooF_*La>Mc#ylenQOR|^EjOoIFf_d zn_bwJ%~+o`Sdpbzn0c6$>6n}e7?Y70mLd3STj2GT@A-lcd5f2MhDW)N+qr=&xrnnl zg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>-;Tf92_+x8e_la-#l=pa@7kH9~xSLzJ zmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ47@2?Z5B|n)TLQZee91?=%_}_1 zW8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZEXZ8U%rs2Oc#O^n{FA@)zs-TyXTIe# z-scTo>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hj zG2<{Q!!Z$3(cvJ?w5 z53@2IlQRKhG7`fw1b?j$yuR{1U+^Js@iNcwDEDzYH*h5vaW;$gmqbsqw|vI?yuph+#lzggtz5_D zT)>%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&zZsH2`0wh#?jOG5W8UFap5t*I z;7)GhYA)eiPUCov;6V0bXSQKe)?;;6U`ZBYZf0RxCS!cYU_^#taQ<8sczxkJKIa48 z6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj z*pRhYnPpg%`IwybWF|!jLAq0%MkpvF!1`y_k6*Jyv55r z!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?mh{IMXg`@}bV z%6q)d3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLg6I2Y=(Y z`GMUBzT_j`<`tghG4AIMZsaO1<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW*R1CJVs{( z{>k6@-@L%#2>Y@d+p`55vKA||42v=!voixz zG7)1l3jbzE2I0SR1G|6tijR4RS9y-dd4M~)iL1GUb2*LUIf4V(i=EkqO<9lCS%D>4 zh`E`CX_<`i8G{iShQaxBPT=*0@A#Y#c$1fSnn$>o+qj-9xRA3rnPWJV{n(uy*piJ{ zn^jnr#h9Ntn31WNm~j}D;TVcR`F(a^_mQvpgm-z3=Xrt$xr>{*hD$k*(>Z}7If%X4 zg>Bi4^;v@zS&D_3hgq49$(evL8Hr&Tg1=@3USIj1FZhtRc$sH-l>4}y8@Q5-IGa;A zmc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWp&5)nW(Ibj_=Zn;kJovDCwYjwxrJ-F zjPp5z6FG{5*@s=(j?LMCHCc(JS%i6+jp>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0QW`8)rc9(aA`TR!7` z-rz-^;$iOLR<7f6F5pZ~;%E+GUv^`AwqQfnVr7#;g3up|pHH?uG;lQBMHFe1Y+ zIDbwJyuR=qpYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu z4x=(0Loq17PYLWk@-?6EF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6 zE7LJK6EG$tF)Tyy*W|$KE8p`4AMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oUvkt4W z9E-C6b21ZCGYR7|8pAU*gYn0t!0r>@@G0-{Ixp}f4{e9X=aOvyxy%_#hvAsK}Kjt}hq;VVAo9bV-*9_In> z63*o`j^_vtWG{AR8#ZM;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA?H2Icp$f!#;G z<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`IwofV#$+UhWeENn z6L@{)d%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4VO&OI zc!p*${umwDec~HF72lk9K_!2!nSP2`mDimll^Zd6r;7=3-{1VN%9pbVlHx z{GI;|3cNn^EuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N(u`noBsB(>R_ZIFP;AnQhpV^;n%1SdxX9 zn^~Ba$rzt87?EKZoIeKyUSIf*&-s8id5NcagnPM->$!ppIg67yhC|tp-PwUH*@(4S zg=JZc`I&96F8EC*qdG0 zmd#k7HCU0QSeSX3mFbwA2^f=+7?vUUt6$*tmGAk24|$81d4@;1kK4I{E4hfXIfY|6 zjQ!bz9odSFS%+0wj>TDkIhl#6nS^l}jo}%Z!T6(ZVE2h{_>}i}ofmkLhq#+txR%Q} zpEEd-qd1s-*p=<2>g@3^S|DK*Jr-vGv4P7 zUgRkr<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbIreq?$G7N+B zXV1Xv3*YfMAMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yX zD#I}pgYtWi!0sbo^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqKE3y;|GY_*e z9g{NwV=@xMG6a8h54^teJzwx4Z}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_guqw;3 zI14Z*Gch%jFfOApJVP@We{>7%KJg8o@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV z0c)}nOS1^`G8@w~1rstBBl9o*!Qc3;Yhd?*FZqbKd4*?rjQhER8@Y;$Ifqj@j>9>C zJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{fAV+!*Cp`!%(r~T`@F%6JjKJ@!>wG$IiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWRW*kOkIEG?Se(xCAedKFC z;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMNawcF*Mq*fo;I9sW z*H^yh3qIs6UgjAdEZsA%k<9yEGM2_NM_F-4HV{4A|8^5&+>^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJur8~yJWH@3 zb1^g1Fe&3PIwSB;{?7l}240`}md|*fH+Ye!c$j;*mFu{i3pkULIGRJ)m)+Q&E!dE? zSea#5l=+yQ8JLoZ7@JY}H$yTA|7{c4{liy$%safwb3D!i+{sN`%_W@6X&lcH9LQem z%rA0$Pz=iNtpdA`e9b4k%WFK(6FkUW+{`sx z%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49gJw)iUt<%J+Q1hrGqhJj0{h z$L-v}m0ZNxoWijj#{TTVj%>xoti!4-$Kou&oXo`3Ov1Q~#_$ZyVEoY{u=~U}e9C*g z&I>%rL)^_RT+3yg&l#M^Q5?)Z?8N-WJH%*$*{&lF6^Sd7fS_y>REx8{M} z2fpMZ-sTmaoec-8SnE3FY*)*a}T$29hY+fXL1rpa|rvg8{4x58?qKFvkZ$eAG0$9Q!)`_ zGYbD^NCx4*O#{1s_==BthgW%y$9aG|xrwW}gmXEK<2ix@*^8aohD}+I)mechS%|rr zg=v|L@fm{=8HU06vq|9fh41*B4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ? zmc^K#Ihc{Dn3!=GmEjnQLHWILVE2))`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{ zjP+TA6(yTF&T+r8G^qW1zunIo-g>2w|JRnc$E9Nog284i#VH8IF`fM zpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o}n3xKN<#hpZJDPd5_n5fhT#0ySasHxs3BU zgA+N5gV~2&*^bTGfHhf(rCEe|nT_e0f(aRmk@*+@;BWlaAh7$umwd$Ayu!0Q#{JyE zjaoM=374Fecs?j zp5kHd;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lBoCSq(x;ol6&ApEypVD}GS z@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=yAaFgSnK z4ZOba9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN z978cEzt;)uKJqo6@Gh_MJWuc-cX2b2eCK1uq~UhK5MWdOR+HXFe}qB zITJ7@BQY#P@K^1?>nq>$1t0PjFY^qKav!&I16OhpXLAb2av1xw2RpJA8?z3pvK))E z0CO@EQ!@$UG8)4(G=uR+t-$UR-|#8#@j5T?BoA>nw{R_&aXx2oB1dsB`>-q9u{j&C zCM&Tti!d*+#84rDKOW*atTJyvH0mSiF3W)`MpGR9{NMr0TU=g(?^*B8Fyb3WirUgBvU z;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb2oVN`}=C)${hGhu;suFm8 z<$J#1L*C+Lp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV{sN>PG(|iCShDgV|a#U zF#f0<*nQ#~KIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{ zEJo&E{DZ&oTcyD617GqHZ}SSz@)-AX2RCvR7jq7$avXc^U<2=Bf+{D#f!nvHr@f^W{?8VM( z!=|jq>a4($EX3T*!n91r_>94b48!33Sw8Uk!gqYm2fWEkJk2BA%WYiG6(miY&##%)_iq$K*`Fn2f}*48dPz1Fx@q&lh~iTfEFOJj#9C z&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y&(I9UA7ui&Pkh6tyvOUj zz>_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($oz|c@Hc)d9oT)~ zOFrUlUg23D<9_boMy}#w&f!#!<8TgOPj+H!Hep>>V|kWfLFQs+reRXXV{}H~pZuNw zl?uE*^DUq8K5y_MPw_DKa4XkwITvsyCvh}~urIr@JzKCLYq2uRuqg8}J2NmP6EQZU z@Nb4>5dK>-u=|Iv_?UNimFIYz2e^})xSC5im(w_&BRG(~*qLqEl=WDh6^8JUWS8HZ6Bj-eQo--`!!ANiV3c$e3Bo+o&aySSNaxRmoaof9~cgV>v0*p|&$ zpEX#KrC6AGn3d_6oCz3{krqgOR^AiGYiu)8RIhsBQgww^Jl@p z>kHrUIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!z2)Fe<|_ z6oc}6fxzw~U-Jp?@*2#!=zu{aAb zCo?fMlQ1r$F+4*v7=Ppo>^|`gpYk5B^8!!u5O;G6*K!%>a|S1J6bG{pyRsddvjJgFaUS4KZsKY# z;apDRc#hye_F`wYVN=#)byi?W7GiE@VOl0*e8ylzhGB62%oTWj;X6L(1K#8%p5_tm zh~wR%JOBX94D9CZ=W*#$_~yXJ`iF zkL-cnC%)lR-s5#%;7K0hZf@aPF5`U8;6#q%VD@2GwqtWPU`;Cz*!{y-e9Sw%%5yx<1Ki0?T+Jn%%V`|X5gf=~?94W7 z%6hEM3M|P&%*`xJ%Vdnt7>vj;49=gK1FtW9$LD;&o4mx+Ji@))#`Rpmg`CC79K)gP z$L{RFmTbh@tirM^#{A5|j7-JEjKio5$50H)@0kL-k9^H1yvu7m&l5bzUEItyT*`Tz z&IugJLF~;gY|Cb>&l;@AQY_3o%*u33&IF9fNDRvm{FO2A`pWlw!H2xX%RIxQ+{f+Q zz?EFY*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s))J(#-jK=T`&0zeIA+Y1f> zW=IC%zi9)zfB1@zd52edj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2VY zjPV(R5gCTT`7=%6^@Z>FoDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ogLVcjaZviSeC_@ zpE;P3shF5?7?t4|ib453bzt|Aula;`d5!0Jf(N;ao4JNdIgishfg?GHz1f9r*^KpB zgB4kdg_(z0nU2YsfH4_~VHtwIQUzXL`JONMkhgf5XLywRxSbogl8ZQ-Q#h8x*q=Sv zk*(O6by$_L)KztmSIumV|Hd>N+x1#M&aKK$sqhUSzz}MU-2>T z@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UN^|}}pYSfP@jOrPAa`*y*KjH4aXKe(BnPoKyRa>ru|8|CB1^F_^DryZF*y@3 zCL=K{L-1GP!0RjD^93LB7BBM*k8&Tka|2g$5odD>$8s3^vj;n}6&te-tFj!6vjB54 z6H_w@<1!k@FWj$H@9#tmvKI4a3V)>F#E78+p#$tuqG?9 zG>b4VvoSqWFd<_xGXLTq{Egod26i9#l8<(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V<-mY_qc)GN51A0-sLr( z=LsI#`clvjht=7c(;r zlQJHoGXnqQ@BA-j;Pshr`Hc5@gBN*$ zz>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z?h80unfUpQ3J29e9sqr$XmS3Gd#+D+|CVL z$wi#aDICjT?9U$T$X0C3I;_faEY1SV$xKYmB#g^w4A0OE#vf4vyH9+>r@Z$+$MY0G z2cZA}bhcGfZH;Y>HQTmr+qP}nwr$(CZR@>ze$M~l6`tiW?&l6}+#84rDKOW*atTJyvH0mSiF3W)`MrN+xD}#$sfKVNiaJ9@xF(b3WirUgBvU z;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3CreSg>WE@6k1cv0#Xo1%!zUC9& z5`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEWv`z z#mr2{6imc;jLAq0%^>^|DX@FXXS~lFyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y z%rY#>e9X=aOwD9Wz}Sq&@C?Bp5d*J}e8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{?8VM( z!=|jq>a4($EX3T*!t_kZ#Ej2ajLa|$%C8XuyLWuf2fWEkJk2BA%WYiG6(miY&##%)_kwm;W#c|KM+o!mtd+Z{Y&F_k6*Jyv55r!=v2C z?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*3?(n}0DbV=y8^@mJWu>oec*Dev(* zFYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FSGGKreae5$=?~3;TW9X!vuC8 z_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7xndz8^8JUL3nUHZ9oe>z4KSKmwpZJv0*p|&$ zpEX#KrC6AGn3ezXA12`+{Ebl4}y8@Q5-IGa;Amc!Ve zJ=l@0*qC)#mE~BR1(=hWn3jL@FUDmIMr0`d3Kn>M<{LicJznPpp5!6!<`%ByGS24= zPUI*KW*>HCJ2qzn)?_7?W)bFPHvY#{Ov*p`JEJljgY$dP!0rQI@)2+I3eWNw_j3m~ zaupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#59aAt7<1r>9F*JklOOU|sEuZl|Z}1{d z@i6yrE7x&37jPygaWsdpFT1flTd*N(u`W*7$L z*PnsiJ3i+F-sB~o<`M4YHm>IiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@H*BXF|qd zbVguE{`?Vmed23A;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOIXj zf0%@S@Ha+bSO(*_?}6QWzTiXN;$@!UQSRe*Zs1BT;%rXgSPo-<_FzZ0Vq?}}RhDCM z7GO?hVp{&qzZjP>7?Gj)>s#RUnQ!=%_jsKbc#?;>n_IY+%Q&AiIFX|`n0?rl?bw_R zSd*1lnnjqG+4vt*F)9D#?~KZD49@Rg1G^7=$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk z$xdv|CalY9EYA`w$Xv|KbWFiSjK`Ra#Lx`FFJA(?w|vI?yuph+#lzggtz5_DT)>%} z#L*nWzU;>KY{7=C#mX$hqRhwa%)r!4#srMbXbjH~{P8*P`p8#&%safwb3D!i+{sN` z%_W@6X&lcH9LQem%rqIe6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhY znPpg%`IwyOM99oUkMSesQ?mc^K#Ihc`Yn4Ae2htU~*Z*@}%>hgDgQ#aVzknTcunH~(T>#$ZH-;;$Eh*Jr-rQ{Lls zUf@X{;%;u?S}x;!&fr9j;$Ze+SGHqwHegLwVrdp(US{KeOvR-9lfN@6!!bC&KM(9a z@FgGdHm~q3k8wYDa3fc7G3Rh9$8k6ZuqQjQHJh+5tFb&wupo0WGt)5z6EPlRG7>{G z2){fF?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d+p`55vKA||42v=!voixzGZ_;w zHlr~-L-5Db!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*ma? zJyS9<<1-c`GYo_B>yyCl9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y z81pj+Gcpa6Ga=(JIwLS7e?AVpKJhi5@Gh_MJWuc-cX2b2eCK1uq~Uh zK5MWdOR+HXFf0G%KTN_u_#2}zEQ9geqrmPxU+^Js@iNcwDEDzYH*h5vaWd%VsIJjp}c%`IHZWt`6$ zoXAle%s%YOc5KcDtjS6&%_7XpZ2XU@n3R9=cSdD62Iuz&f!znb+#84rDKOW*atTJyvH0mSiF3W)`MrN+xD}#$sfKVNia( z8`!<$b3WirUgBvU;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3CreSg>WE@6k z1cv0#JAv0HzUC9&`8Bd~kRXS~lFyvS2L%st%7bzIH`oXJTX z%^~c|ZfwsMY{*)y%rY#>e9X=aOwD9Wz}Sq&@C?Bp*8{JQe8tDS!>c^U<2=Bf+{D#f z!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!t_kZ#Ej2ajLa|$%CFY~yLWuf2fWEkJk2BA z%WYiG6(miY&##%)_kwm;W#c|KM+o!mtd+Z&w1l z_k6*Jyv55r!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*3?(n}0DbV=y8^ z@z>?R>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FSGGKreae5 z$=?~3;TW9XF9miV_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7x zndz8^8JUL3nUHZ9oe>z4KhFhTpZJv0*p|&$pEX#KrC6AGn3ezXA12`+{Ebl4}y z8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3jL@FUDmIMr0`dIum$(<{LicJznPp zp5!6!<`%ByGS24=PUI*KW*>HCJ2qzn)?_7?W)bFPHvY#{Ov*p`JEJljgY*08!0rQI z@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#59aAt7<1r>9F*Jkl z%c;QbEuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N(u`qgOR^AiGYiu* zB@;6~V=*$rFetyC2<+bRIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x) zKXWi6(=a&`G7h6N0z>lW@xbd7U-Jp?@*2aQFF$%*n7{470?B4SQAMzG2^9+x2AGdP@S8@?&a|*|D82hsa zJF*oUvkt4W9E-C6b21at@^AjdxQxMw48>nZ1Fz3~!>7E*>%72|JjC7H!nIt+`JBOt z9L2%x!>(+{=4`;4ti;kR!o1AJ|CowN`6qv8REA@4em@e}ec($z;%#2xSsvql?%+nQ z;$qI>RF30t4q#7qVrw>GT~=dxmS92VVrHge3MOJa#$+UhW)OZk9N4|(Gv4P7UgRkr z<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbIre-oGU~EQXc!uDQLxI;vzT#uv z;Z>gFaUS4KZsKY#;apDRc#hye_F`wYVN=#)byi?W7GiE@VS1)yV#a4IMrIfW<=2CO z-8(+#1K#8%p5_tmIGBCdmF?J^4Oo+v zSeiwcm)ZCqQ!y$3wG$9HK48x%Ox+}1I$LD;&o4mx+Ji@)) z#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-DiOvpHl&Ik<2pF0DuPkhZMyvu7m z&l5bzUEItyT*`Tz&IugJLF~;gY|Cb>&l;@AQY_3o%*ucH50mf@{>CT_%V7MrBd~kV z7ktQDyv#E^%6;6<4P41ZoXsg5%VF%#9_+|gY|J{W%5p5u0?f%wOv}Id7vnMpBQg|! zZ4bOY^9`T!9} zolzN%!TEh#VE2J9`G~i9g=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbsMn1Hbvjo}%BKehy3ANh)pd52edj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7 zkJVX$C0U5MnT6?@l8G6gu^5?Q7?fW(2X^oHoDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ zogLVcjaZviSeC_@pE;P3X_%Y|8Hdpsfg$;GQ{eT9ula;`d5!0Jf(N;ao4JNdIgish zfg?GHz1f9r*^KpBgB4kdg_(z0`7i%r68^#87=>XOjNdi}cJKLu4|$81d4@;1kK4I{ zE4hfXIfY|6jQ!bz9odSFS%+0wj>TDkIhl!R`8WS!T*hEThT^Xcf!Alg;Zxq@bza~} z9^!6p;aV=^e9quRj^beUVOO?eb2ea2R$^%uVP0nAe@w-s{FA>kD#I~2zpoGMKJXT@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFg;T; zG2=59BQp$x^6Q$w?j4`=0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKaF- z2QxAalQSXXFghbJB!8|Byguru|8|C zB1^F_^Dry_vkJ{IxRh`ph?c%6q)d3p~j~+|4aq%VnI;8Jx&b z9LzrK%64qd2CT_SEX^X!%WV9QshE_1@^?mMI0onU6@lFczT_j`<`tghG4AIMZsaO1 z<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW;&)|BF1A(Mq+3N;g{us-CI86ecs?jp5kHd z;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lB|CSwA|W;BLp2>w_Wczxt6KIR=> z(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6qMCS)8&X9R}i z&n1D^C%)zr-sLr(=LsI;QYQYu=~K5e8k(l!m~Wa{oKKgT*bwl!>Js{;T*u8?8Me= z!n&-+@+`rE%*D)1#}rJ&c#O$N49y_?vLLW~%V)gL8@$LxeoH}Lwz*L=deyvFl9 z!Gqkz&0NE!oX6>$z>yrp-t5A*Y{vSm!HO)!!py_0{FnbQ3IE`4jKZ)C#&2^1yZ3y- zhrGqhJj0{h$L-v}m0ZNxoWijj#{TTVj%>xoti!4-$Kou&oXo_u{F{Fk4N zmEjni-)9AOANZ1wc$-&vmdCiCJGhanxR`S|mE$;^1K5+D*qTjPm(^IFC0LNTn3?IA zf{7T9F&T-W8H8VE26k`xjQ4qi7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj4OxqoS%yWK zkJ*`lshNxk7@N@;o+0>SM&R|4ulSgEc$MdPoCmm*o4A@wIG58no+CJrz1W#;*p&5H zofTM;g_xUJn4T$_nDH5lkr{?T`E`0=_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}X zfi2mHwONH_S&aFagBh8I$(fLG7@ZLql0T;fUZ41yPk5Ktc%CPCkh{2Fed6<>|@*gJQAN-9`7?#2KZE9fmo-g>2w|JRnc$E9Nog284 zi#VH8IF`fMpFP--t=O1#Se4~ioCTPZnV6P;^Do9_3`S%q{+beaedZfJYhz!MFV*{_xe8Z=_$LqYnlRU)T+`_e7#`&DVi5$hj z?8B~X$L4InnykdqEW*6Z#{Za#N%<##XHX*nQwjKH_a&;aMKze(vB#uHs_O z;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1V+tl>JjP@shGr0c86DWYy)ugn#fi zMqyY6^L*C+Lp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV{sN>PG(|S z{>{G_moXTTq4;Z9;Pshr_>}i}ofmkLhq#+txR%Q}pEEd-qd1s-*p=^Y|479&I&BaLd?x9OwW`|%=nDO$PB}v{5mMGd&lQ|z?;0p(>%hx+{X1> z!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi79QfAtT% zKJyKq@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8_M6DkkNh{GCx5 zj=}l8UtsrvFZqbKd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnT{!# zi18SckrS&!9O zfhAdpxtWFOnUaYapRpL3VHlKOdk1#!_?!=Tlb3j!N4S^UxSlJxkh3_MV>p!k*qt5N zl8soKRalnAn4dYAk!hHm2^ojc8G#}Bvsd8tiLd#DcX^HHd4dPIi<`NIOF56zIe{ZN zh`rf`ZP|?VS%Vc>iiMenS@|#jVG{nq-x!5q8I0e026pfHf)9C%mwARqxsThqfh)O) zvpI!hIgI_;gB{t5jai3PS&qe7fH|3oY56z*VqC^xM26z89)Z_qzTs2e<8@x(Ngm>E zZsA%k<9yEGM2_NM_F-4HV{^|@%AMrM? z@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJur8~yJWH@3b1^g1F$EJb9%C{RLo*1!bPMd> z@)_^*1~2jy4|5NN98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGY2y= z4U;n=<1jiSFeHC=4!l0`HJ|V#!=zu{aAbCo?fE|K?we%NUHvQ2f;~@cPU*e9C*g&I>%rL)^_RT+3yg&l#M^Q5?)Z z?8N-WJH%*$;2kExiHfAV)mWjF@s_YQ&G2fpMZ-sTmaL)KztmSIumV|Hd>Y9?a>#%45zX9)gi7kGW-D?a8OUgbF+ z=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre{hfW_-qCWQJi-er+4rz2kE} z;7wlQX&&KTZsU5c;6l#gWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D24awcRPMrQS2Y+J} zhGj5*YaQ6V=Lh~wR%JOBX94D9CZ^@z z{EKlJgAo~uzgh)epZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf(rCEe| znT`K36_fH${?4cj$Kd?lGO+u=mwd$Ayu!0Q#{JyEja&TPY`tjFrCz>+M)+|0uCOv%KI&sdDiFbvAC%>ui3e9i~F$xA%VBizevT+bC; z$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$TUpOgp9-JjKGlm*);I_#MgYnyS&EpJi&w9 z#m!v9rJTpnw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*<@js?wQvS)`8I|D} zoZlM-b|3hXk9eC`c$UYwpF6mbtGJkRIF;i#oCDaCo!FX9SeMmUo+Vh2xtN*hn1YEI zk1-jEp&5i<8U}W6`Hc5@gBN*Mc#ylenQOR|^EjOoIFf_d zn_bwJ%~+o`Sdpbzn0c6$|MDLu;UD~sQ5crN_^obW_nt5Kkhgf5XLywRxSbogl8ZQ- zQ#h8x*q=Svk*(O6by$_24VGX#Is z47@(_6(92suksv^^8j~p6IXKy=W-gya|8#n7dx{Jo3b9OvjR)95OXsN(=#O#Gd^Q6 zGQ%(^zt#xs-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFeB42 zITJDtqcZ|S@@MtH>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w5 z53}-L{=+2vgTFBf!!j7ZRSWFi^93LB7BBM*k8&Tka|2g$5odD>$8s3^vj;n}6&te- ztFj!6vjB546Vvi<{>8YA!H5jSUsVII&wRtDyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7X zY{%woz?!VY(k#Nf%*Owiib?q=e`i#NV{m@264-s>V|kWfLFQs+reg{wVm!uVB!*@XeyJSTz2!6B=M7%uDIVq?Zsj^I z=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKbGA3YbMq_w};Ezgy*GInMW8UFap5t*I z;7)GhYA)eiPUCov;6V0bXSQKe)?;;6U`ZBYZf0S6retEqXDmi$7zX9nihn1p}uH%4Jt z2IIH#f!%w);6vWxWuD(y z7?&{^k)imjT;TPYZ}^n=c%2t`l83mPTez0XIG-~(k)t@6eb|-l*qjYmla*MSMVOb_ z_#aa-DgWf}jLL8f&hKRdyAOQHN4(7|Jj-L;&mG*zRb0$DoXT+=&H?PnPHfF4tjlUF z&k`)iT+GaLOu5}1dPpS49^h!Q9AJY$X9&KJG{zsJkA5$$xU3%C7jD?9M2IP z$X@KsHf+jztj-E7$wJJ{EKJXoOw9O<#mEf9p!`}YuzSbne88K$#M3;&z1+t2T)~B$ z#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI!{kiJIE>B+49TA*1Fuhf%_qFeYdp^rJjh+# z%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA>fB6rS@DKjRC=APB{8l2cd(Rhq$XmS3 zGd#+D+|CVL$wi#aDICjT?9U$T$X0C3I;_faEY1SV$xKYkzxfyAG6o|u6n_;Dygu^{ zpYk5B^8!!u5O;G6*K!%>a|S1J6bG{pyRsddvjJ4 zh`E`C>6wy=8K1EjnPC`|Uke9z@A#Y#c$1fSnn$>o+qj-9xRA3rnPWJV{n(uy*piJ{ zn^jnr#h9Ntn2~9ioCz6+(HVgu`Lj^q^@*?fgm-z3=Xrt$xr>{*hD$k*(>Z}7If%X4 zg>Bi4^;v@zS&D_3hgtbA|6vmT!QU8#VHu3y3I=xX`GOC5iyid*@GR~ij7%^RauV3S%5j2iD~&a|6*LmU_^%EuL6PBXTIT6-s5#%;7K0hZf@aP zF5`U8;6#q%VD@2GwqtWPU`S6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXxGXqmI851xzqcJ=~@JHUj z>my(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3up|pHH?uH3Q!+8*GZrH= z41@A(p1|%MpYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG7Xb6 zA>%MQBQPX?<_^3*@im|DF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6 zEC1y`Ou|3-8>28RgYjFg!0tU?@F8#UGSBcR_i;Nna3vRUHm7hbhp|6)-EhGz)=$QF2g z63*o`j^_vtWG{AR8#ZM;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVR9y997bmZhUCvIf!8O# z=KnaJrvNGp1puJgwr#ssTdkJeYPDtCwr$(CZQHhO8}HrobNRF30t4q#7qVrw>GT~=cymSIsAU>;^=IwofV#$+Uh zW)ObK8Q8t$Gv4P7UgRkr<{ob4Ixgn|&g3MH<`DK}H@0UBHe@aS%L**XzxX?IG80oX z3F9&v!!rbbxfzE%5rp*L=deyvFl9!Gqkz&0NE!oX6>$z>yrp-t5A* zY{vSm!OASh;w;F#%+3r<$wZ9JC=APB{FXJad(Rhq$XmS3Gd#+D+|CVL$wi#aDICjT z?9U$T$X0C3I;_fyEX^X!&)m$yv`ohMjKPQu#a~$hug`qLr@Y7Oyugz@#NFJ&wOq#e zoWY44#lh^uu58EVY`~hV!tyM^Ld?e;%*a$s%s7n7a174xnFG5Ie91?=%_}_1W8BXj z+{jg2%sHIOaU9M8?8#1S%_gkNYOKUEEXo4R!>mllwG$fhGADe`ii+VrnK~Tt;JfhTxBkf!9aA z;$z<7Ri5K<9^g)H;%YA8Tu$S7j^IG{VrRBtQ`Td3{=>2?#y|NRvoSqWFd<_xGQ%(^ zzh(&R-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hvi+_EXBh7gSnWQX_%Dp z7@ZLql0VZ2UZ41yPk5Ktc%CPCkh{2yid*@GR~ij7%^Raudx zS%mqSn^~Ba$rzt87?Gj)D{bKQnQ!=%_jsKbc#?;>n_IY+%Q&AiIFX|`n0?rl?bw_R zSd&#)o+Vg_`Iv(lnTm-Shfx`h!TCK+VE2J9`G~i9g=cw;`?-S~xr&Q9hf_I@!#RLG z*@>;$gmqbsl~{&FS%7(%mFbwA2^f=+7@9%&C3Rr;md|*fH+Ye!c$j;*mFu{i3pkUL zIGRJ)m)+Q&E!dE?_%AE4B>&>?%*jkl%_NM=XbjH~{E;f~`p8#&%safwb3D!i+{sN` z%_W@6X&lcH9LQem%r7c(;rlQJHoGXg{MXNth<6JPTQ z@A4YY^8^oa7dLYamvSDba{@$ zG8BI$3%ow_4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54*A*o3jCHvI@(y1Pd`Ab1)-Q zF)`yXD#I~2zb6gsKJX-;TeKI5(i!%`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8ao zhD}+I)%g$0vKas5Z_LK@Ou>YV#mEf9p!}LBuzSbne88K$#M3;&z1+t2T)~B$#mOAQ zq3p-*?7)_6#M=Cif3p+|^AF}?W~O0M#$$9wU`YN<7@rnzcVK@F*TDg zE~7C#L-0qO!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1|6y4co+qj-9xRA3rnPWJV{n(uy*piJ{oB#1| zmSSQ4!CcJDG)&5PjLrxQ$)B+TuTOld%VsIJjp}c%`IHZWt`6$ zoXAle%s%YOc5KcDtjQ`Y&k`)ee9Xa&OvS{E!>A0$;QSsvu=~K5e8k(l!m~Wa{oKKg zT*bwl!>Js{;T*u8?8Me=!n&-+N-V>oEWkX>%5+T51dPc@49y_?5-qTM%V)gL8@$L< zJj^}Z%5_}M1)RxA9L*u@%WiDX7Hr5`{FfD2l7I1c=42+OW)j9_G=^sg{)ifQedH@X z<{e(;IUeT$?&Kz}<`T~3G>+#84rDKOW*atTJyz#GEX!j2lfN+=(=!DVG8Q8<41@A( zl)&yCpYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq?ZKmN^9EX+TciTD!d6}IV zn39PYn^72+!T2pwVE3Lc_>i}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{6(yTF&T-W8H8WL2X=4yjQ4qi7kP?@xrbZ1j?1}#GdYQ) zIfQ-LjqTZj4Oxr-vI0x;FaFM)%*518!nlma@C?Bp;R3IZe8tDS!>c^U<2=Bf+{D#f z!nvHr@f^W{?8VM(!=|jq>imagS&V=3H)dmcreH$GVq}J4P<{;?*uCR(KHyDW;%Oe? zUT))huHZt>;$)8DQ1)YYc3?|3Vr~A%zgdcf`3G|`Gt)3B<1soTFeHD53A{e>HJ|V< zukk!j@E~__GuLn_=W#kGa3lw@H@mPco3TD?urkZBI14f_voixzG7)1l3d1rOzl9F$ z-tz??@)j@i43Bajw{rtmauH{93deF7`?Ci-vK1S%4y&>vOS1^`GdHs^Et4@mV=y8^ z@mHw8>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?Yv;usln!5c4qyGcpwu zGY+FN9E0mllwG$fhGADe`ii+VrnK~ zTt;JfhTxCyf!9aA;$z<7Ri5K<9^g)H;%YA8Tu$S7j^IG{VrRBtQ`Td3{=>2?#y|NR zvoSqWFd<_xGQ%(^zkUns-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hvi+_ zEXBh7gSnWQX_%Dp7@ZLql0Ux&UZ41yPk5Ktc%CPCkh{2yid z*@GR~ij7%^RaudxS%mqSn^~Ba$rzt87?Gj)>vQ1snQ!=%_jsKbc#?;>n_IY+%Q&Ai zIFX|`n0?rl?bw_RSd&#)o+Vg_`Iv(lnTm-Shfx`h!TJ4DVE2J9`G~i9g=cw;`?-S~ zxr&Q9hf_I@!#RLG*@>;$gmqbsl~{&FS%7(%mFbwA2^f=+7@9%&&>?%*jkl%_NM=XbjH~{P7|1`p8#& z%safwb3D!i+{sN`%_W@6X&lcH9LQem%r7c(;rlQJHo zGXg{M=exk`6JPTQ@A4YY^8^oa7dLYamvSDba{@$G8BKk3A{e@4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54*A*o3jCH zvI@(y1Pd`Ab1)-QF)`yXD#I~2zrPObKJX-;TeKIUItzt`HGKuhgW%y$9aG|xrwW} zgmXEK<2ix@*^8aohD}+I)%g$0vKas5Z_LK@Ou>YV#mEf9p#1tGuzSbne88K$#M3;& zz1+t2T)~B$#mOAQq3p-*?7)_6#M=Cif3p+|^AF}?W~O0M#$$9wU`YOa9(aA?Yd+y! zUgLS5;6d)@rnzcVK@F*TDgE~7C#L-5C=!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DS zDeJL1|6y4co+qj-9xRA3rnPWJV z{n(uy*piJ{oB#1|mSSQ4!CcJDG)&5PjLrxQ$)67buTOld%VsI zJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjQ`Y&k`)ee9Xa&OvS{E!>A0$;QW3!u=~K5 ze8k(l!m~Wa{oKKgT*bwl!>Js{;T*u8?8Me=!n&-+N-V>oEWkX>%5+T51dPc@49y_? zawo8R%V)gL8@$L+#84rDKOW*atTJyz#GEX!j2lfN+= z(=!DVG8Q8<41@CPt-$UbpYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq?ZKmN^9 zEX+TciTD!d6}IVn39PYn^72+!T9Y)VE3Lc_>i}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa z*paQ+m~~i{6(IBANZ1wc$-&vmdCiCJGhan zxR`S|mE$;^1K5+D*qTjPm(^H_WmuF2n1@-Jj>(yTF&T-W8H8W126k`xjQ4qi7kP?@ zxrbZ1j?1}#GdYQ)IfQ-LjqTZj4Oxr-vI0x;FaFM)%*518!nlma@C?BpR|2n(e8tDS z!>c^U<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>imagS&V=3H)dmcreH$GVq}J4P=37} z*uCR(KHyDW;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr~A%zgdcf`3G|`Gt)3B<1soT zFeHCo3cNn?HJ|VvOS1^` zGdHs^Et4@mV=y8^@z;gG>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?Yv; zusln!5c4qyGcpwuGY+FN9E0=w`M~Z2U-A)e^9s-M8257rH*ysha}K9+9EWoNd$JQ- zvkB|68Y{63i?RUoFe}qBITJ7@BQZ3C@XNWt?k%73K5y_MPw_DKa4XkwITvsyCvh}~ zurIr@JzKCLYw=%JU`hVP-QA*C)Q_6W--D zp63Z3HCJ2qzn)?^iyX9*T!KIULXreb2o zVN`}=aDG1#*nQwjKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc4BKbVO>^ZC6-}P7GNG` zWjZEj0>)${hGr0cIUd-(ut1 z$-nqJb21ZCGYR7|8pAULe;fomSr*i$={fb>6wBF8H$!ppIg67yhC|tp z-PwUH*@(6IAOB`47Umz!#mr2@q>RVtjKGlmc_i@q#MgYnyS&EpJi&w9#m!v9rJTp< zoWPMB#NO<}wrs}wtij4G$Kou=yv)uFOvyxy%_t1ZVElGCuzSxJe8^k8%riX7eca9s zT**b8%_$tqVeHQy?8sJZ%sQ;fiY(0{%+K7+!n91r_>94b48>oE07E*>%72| zJjC7H!nIt+`JBOt9L2%x!>(+{=4`;4titjv!9vW(9L&g6Ow2fp%5V(M?*{|B4}8f- zyv-{-%VXTn9o)!OT+BI~%5fad0qn_6Y|SRD%WAB|GAzmh%)_iq$K*`Fn2f~G48ku5 z0=u_-#{0a%i#)}{+{3M0$K_nWnViJY9Kycr#`bK%hOEVZS%D?_7k_6?W@2h4VO&OI zc!uDQ{ejmgFaUS4KZsKY#;apDRc#hye_F`wYVN=#)b^gP$EXF_i8?!Mz zQ!pW8F*3t2D8KFt?B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{QtX-z>$# z{DZlenQ54m@fe*E7?MBt240`|nooF_*La>Mc#ylenQOR|^EjOoIFf_dn_bwJ%~+o` zSefNmoCTSe*_nYUnTW9&g<%*Z z*@}%>hgDgTrCEgenVVUdmdO~OF&L4d_-l9I^_g$@l=pa@7kH9~xSLzJmdiMwGdPi> zIGBCdmF?J^4Oo*^Se_+Vi20a<8JUWS8HZ6Bj=}kTS77&nFZqbKd4*?rjQhER8@Y;$ zIfqj@j>9>CJ=uw^*@Sgjjg?r2MOlD(n3d_6oCz3{krIiF61mu<`@oTKXzvawqzsL=70Q~rC6AMFc&j34U;k+qcZ|S z^5?d|>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvmA@FAoDUiGcY9+ zF*c(xEQ9ge*1+yPU+^Js@iNcwDEDzYH*h5vaW^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJ zur8~y63ehC3os9}G98mM0b?=}Lo*1!Yzpk&@)_^*1~2jy4|5Nma`JGqIgxrB2$ zjpI3j1KEq6*@jJ7kJb4P%d!~%L)PNItiY1| zi@!4`Gch%jFfOApJVWrus=(_bU-2>T@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@Y zI{#r=7UQ4%joFxOM9 z9oUkMSeyUxZ0X*v(k#OK%*`xJ%Vdnt7>vkJ{Ix9b`ph?c%6q)d3p~j~ z+|4aq%VnI;8Jx&b9LzrK%64qd2CT^{EYA`w#C*)bj7-JEjKio5$Kd?FG_d=?mwd$A zyu!0Q#{JyEjaw_cczxt6KIR=>i8`Cod z6EYSfGYo_B>!QH!9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;r^FRL0QY_3r zn2VX2hDjNZ(HVgu`Ez05^@*?fgm-z3=Xrt$xr>{*hD$k*(>Z}7If%X4g>Bi4^;v_J zS&qe7ka?M%8JLoZ7@JWTmcjUKL16cuFZhtRc$sH-l>4}y8@Q5-IGa;Amc!VeJ=l@0 z*qC)#l@(c17GqHZ}SSz@)-AX2RCvR7jq7$avXSYT)&eulSgEc$MdPoCmm*o4A@wIG58n zo+CJrz1W#;*p&5Ho&T^bi}6qX#%xT_6imoijLa|$%CA!byLWuf2fWEkJk2BA%WYiG z6LJWl5Xj^rTrW*4?)GuCGfR%SUCXF=v=c4lBoCSq(xVOR#^w@HEBd%oa9 z-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO3USX%=CA=4KYAWirNR3`S%q{+bwg zedZfJ>VVRygu?3AM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL37R zAC_e?{>k5%jp>72lk z9K_!2!nSP2`mDjqEXU$3$h^$X3{1&HjLj$v%V7LAIwa4)xUJy&ocXK^yea47q+J3Fu?8?iS396F8EC*qdG0md#k7HCUPD zSeyl!m)V(tDVd0|8HHgPjNgU?cJKLu4|$81d4@;1kK4I{E4hfXIfY|6jQ!bz9odSF zS%+0wk)>IL`I(zpn3l;HpD`Gbq4;ZX;Pshr_>}i}ofmkLhq#+txR%Q}pEEd-qd1s- z*p=yn4Ae1laUyjLHK20VE2~Kc%L_Tk*9c=d$^VB zxSR_(lan}_L)e$y*q$xekhSY&k+1EAn^LgSA5JnyvlPt z&I8=ZO^Y|479&VN{z#rP+GV>YH|3MOPMMrIfW<=6g!-8(+# z1K#8%p5_tmb4lb2AIm zG8yAD1|u>QfAtBxKJyKq@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}f%d-Rv zF&}dS6c2L`w{jhqa{*^^5=V0g`?4F` zvjrQn7XM`hmgHajojI9_shNav8I9o?fS&!BE56iL`|KxAX#`H|Vgp9?=48x%O+9R-g$LD;&o4mx+Ji@))#`Rpm zg`CC79K)gP$L{RFmTbh@{EvUL6bthY=3-{1VN%9pbVguE{_Gxjed23A;ay(id7j`w z?&4;y;Zn}ybWY$%4q|V1VOut1eb!)QmSb@iWL{=x2Bu^p#%2_TWiWp07TCS#3qIs6 zUgjAdP7M26z8u7THQ zzTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV{~V-99yDkf$eMrAk# z=l3pw-3PwpBi`l}p5-y_=MHY<2n@-e9RjaUe9b4k%WFK(6FkUW+{`sx%6Xj52^`5m z?9DE0%Vw<48m!E6EY5<=%k0d+luX3fjKZ)C#&7KdyZ3y-hrGqhJj0{h$L-v}m0ZNx zoWijj#{TTVj%>xoti!6T$kHsr{LIZPOv_}9&lrrzQ2f;{@cPU*e9C*g&I>%rL)^_R zT+3yg&l#M^Q5?)Z?8DlE?uEW~`w!Hi7B#EiqJ49DR7-ZrrNz?Xc)+q}ZF zJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj0<#!=fy}Jj}{;OwI(1$w&;%ApFuMuzSmA zyw4lF$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K$XfiD6o-g>2w|JRnc$E9Nog284i#VH8IF`fMpFP--t=O1# zSd|r7nnjqOxtWD&nT+ungAo~uznTYLpZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~2& z*^bTGfHhf#nSe1FiJ=*UUz!GXZ~2V(d4m^uiif#}Te*(Q zxqve{iK97$ec6re*@6vOi~q6$OY$%N&YaA|)J(#-jK=T`!5>WmuaA7i$GpR&TPY`tjFs7hh(LeAo3j^R-DV|R97OEzL{{>Q&riiPMud zKJhi5@Gh_MJWuc-cX2b2eCK1uq~UhK5MWt%dt2MGB2|;15+{)V>1fF zG8n%#4D8nw{R_&aXx2oB1dsB`>-q9u{j&CCabVKORy00 zF$Xg;6%#WKqcR+W^Lzck?gL-)5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?6I-(h>#`av zu?&l{0P`>_(=j;{FeW20G=uO5P+yRki6 zupw*lUshmA{>9&!lbM*BNf?*W7@i^cqi*2!k+1lecX*ZOc$^2glbg7jOE{O)IG!Uo zkiFQMZP=9cSe^f{EQ|3^{>E%f&lF6^Sd7dt49c%{0=sv7&Ii27OFYdZ+{M_%}^L*C+L zp5amM<92S~N-pATPT^P%V}JHwN48>P)?rmvWN8**e&%Ktre!k5XADMUDE_J$czxy@ zKIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz`6_#fS7Ggf;U`D25V#Z-qhGTGk zuMyaN;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{pYc^qBR%0cWVNn)f9%f}aCT9Z1 zWF&@W5PqrtKaS@qfC@ta0BE*t+qP}ntyWvDwpzxrZQHhO+qP}jd-wdD{}b4~PG(|iCShDgV|a$(kNSbv zN50}?-r-fA<8dC~PHy6AF5z5G<9LqXK=xu6wqq+cV*}P?C6;Cp=4CdfX9^}{EJkJ+ z2Ibd!f!#Yk=L6p4C7$LH?&UVF=L#<5EKcSa4rM>~U`MuPOEzI$R%3aVU_s_$W~O0M z#$$9wU`YO~8+d)4h`E`CX_<`i8G{iSioa?HUZ44fPkE2md4VT+h`YIkYq^Z`IfD~9ii6pQ-S{v6 z;_qz4+N{E|EXMrI!Hi7B#EiqJ49DR7UMsNsz?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1t z!2j5p|L{-##`>(miY&##%)_iq$K*`Fn2f~G48kup1G~3;#{0a%i#)}{+{3M0$K_nW znViJY9Kycr&JJwD7HrHqtjcmM&H~KIOiaxrjLT>Y&k+1kBk=mjSA5JnyvlPt&I8=Z zO%hx+{X1>!G)Z~$sEI>?8hGL$hK_BCalY9EYA`w$Xv|KG)&5PjLrxQ$)D8%uTOl< zC%nsRJkJw6$X(pbHC)PhoX!ax$wBPRu58cNY|e(P#mX$hqRhwa%)pdP#Mq3&unfj; zRRg>Ce8Gpj#mhXyquj^s+`yGw#Mzv}u^h(!?8#32n}4t=>#;g3up|pHH?uG;lQBMH zFd{?oSCzo)GvDwj@9{b>@FWj$H@9#tmvKI4a3V)>F#E6@|K(r&osC$VRalnAn4dYA zk*S!NaTt~17@XfL2X-I$l8<k51pEX#K zrC6AGn3d_6oCz3{krp!k*n=I}mMz(Ybyi}FnP+&E z`?#GOxRQ%Fn^QQJ!`Poa*@=Ji4>n~zR%Zp4WFh8e7N%t~#%ByhWGMbB8+d)@8$RVd zUgrg##!=zu{aAbCo?fM zlQ1r$F+4-?N2$Q;BVX|`@9-+m@i-4~CpU35mvAnpaXd$GAbYV3+p!g!u>otc5=*lP z^D-OLGX)be79%qZgYs+1!0sKN^8s)25>N98_i`K8a|IW27AJEIhq51gup`^DC7ZA= ztFb&wupo0WGt)3B<1soTFeHDL2)sV=HJ|VG79^-!Q z;6|?EV$R`Ij^l6+;D7AQfA}YVV|~_OMV4Y==3!Q*V{#^7Oh#g82H}??f!$j^<9*)X zMV{he?%`Ih<8m(GOitox4q;z*X9u=n3pQpQR%JOBX94D9CZ=W*#$_~yX9)f%9C&@? zD?a8OUgbF+=K=2ICa&fZ&gC?Y=LimDFLq%&wqi3jU`n_IY+%Q&AiIFX|`n0?rd|MD;X z&PJ@wDlE%l%+DOm$W%1049@TQ0=o}<$w$1+D?H0%+|M1{$W>g-Ih@LI9L@p! zkDd7s|KxA1&l;@AQY_3o%*u33&IF9fNDR#&{E|1Yd&_6M&l|kRQ#{N)+{$%a&IO#w zNgT}~?91-#z&32b#;n7tEXU$3z?{s))J(#-jK=T`!5?`7uaA7i$GpRE^NnEY{mwx$x1BEBFxKdOwSZd$XJZbFbvACxdXd*e9i~F$xA%V zBizevT+bC;$XT4sF&xT%?7@y~%a&}yx~#_XEWv`z#mr2@q>RVtjKGlmnJe)6#MgYn zyS&EpJi&w9#m!v9rJTpe9X=aOvyxy%_t1ZVEmRd zuzSxJe8^k8%riX7eca9sT**b8%_$tqVeHSI?8LwM2b;1UtFr=2vJi7K3)3$ zG8BL12)sV?4WIHJuk!*=@(_1(3)gZP=W_-pauf%%54-VS{>9(fh_zXTWm$~*nS&Xb ziisJAQ5lZG`8|7J_kl0@h_`u#XL*eKxq}qIe`DMGymbA{EhWlgB4kd zg_(z0nU2YsfH4_~p&5iMc#ylenQOR| z^EjOoIFf_dn_bzSt=XInS&NlfhDDi=*_nYUnTW9&g<%*Jr-rQ{Lls zUf@X{;%;u?S}x;!&fr9j;$Ze+H~!1N_&Xc1Hmk5Ki!ncQFe6hjG2<{Q!!bC&X9(;* z@FgGdHm~q3k8wYDa3fc7G3Rh9$8k6Z@IQ9uKm3!wu|8|CB1^F_^DryZF*y@3CL=L4 zgYZlG!0s)d@jh?xB2V!!_i!uMaXA-oCMR(;hp;cZvjf|(1sk&ttFj!6vjB546H_w@ z<1!kTd^4%uqG?9G>b4V zvoSqWFd<_xGQ%(^zorfB-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz`>_W*vMpP(3G1>N z%d-RvG8Z#54U;k+qcZ|S@@JaB>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p7E8DX* zo3kNnu`cH+jU+^Js@iNcwDEDzYH*h5vaWd%VsIJjp}c%`IHZWt`6$ zoXAle%s%YKfB6@GXCu~T6_#Z&=4TFOWGW_R97bh02Iu#bf!znbmkzW7c6+mSb@iU`}RYY9?V^Mq_w};E&{i*GInM zW8UFap5t*I;7)GhYA)eiPUCov;6V0b7q(+7He&J*O!HO)!!py_0OvmI*z?h80&YV#mEf9p!^y?uzSbne88K$#M3;& zz1+t2T)~B$#mOAQq3p*V?8vrk$tJAJYAnwZEXZ8U%rs2Oc#O^n49TDI0= z_k6*Jyv55r!=v2C?cBhXT*TR&!m%92{_M$4{F{HUDeJL1E3hOBF*ma?Et4@mV=y8^ z@mHL{>oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^8~^2B{GE+hn^jnr#h9Ntn31WN zm~j}D;TW9XV+VF0_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH_#Zp-AO6YTSf4dmk)>Fe zd6<>yn4Ae1laUyjLHH$BVE2~Kc%L_Tk*9c=d$^VBxSR_(lan}_L)e$y*@11?f{j^+ zRauV3S%5j2iK&@{aT$%_8G=7z23{ZeijR4RS9y-dd4M~)iL1GUb2*LUIf4V(i(S}` zt=NnWSd*1lnnjqG*_fUwn2@m;nPC`|Uto+qj-9xRA3rnPWJV z{n&#Y*_JKYgmqbs{*hD$k* z(>Z}7If%X4mF?M@&DoH(Sea#5l=+yQ8JLoZ7@JWTmcjTfT448{FZhtRc$sH-l>4}y z8@Q5-IGa;Amc!VeJ=uwW^A9#Irzx<28vk_~v3d^z>^D_rCG8Gdu4x=(0gY$co!0rQI z@)2+I3eWNw_j3m~aupYI4ySS)hjRe`V`u)uKlvN$vj!`&6bmyCvoal%GXY~V5<@cx zzeEn~-trmm^9C>S6c2L`w{jhqa{*^^5=V0g`?5Pbunk+VG3&4@%dt2MFefuHHIpzd zqcJ=~@JFP;>my(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJ3)`_3o3R0FvJy+P2=g)< z(=!DVG8Q8<41@A(#K7(ypYs84@)A$;2={Uu*K-9Iauz3Z42QBGd$1$hvL&0aE~~LT zORykwF*DOJDdRCZBQPX?MhLt<@im|DF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ2JzKLm z8?qKFvkZ$eAG0$9Q!)`_GYZ2p7{7%N?B4SQAMzG2^9+x2AGdP@S8@?&a|*|D82hs) zJMnM+!KSRo>a4($EX3T*!n91r_>94b48>pJ07E*>%72|JjC7H!nIt+`JBOt z9L2%x!*2YSfAM!VVr^DoSr%h{=3qvqVq(T&REA@4eh(Yiec($z;%#2xSsvql?%+nQ z;$qI>RF30t4&Z<6%zyYNe`9^tU`3W63*o`j^_vtWG{AMJGNpoHegLwVrdp(US?x@reH$GVq}J4P<{;+ z*uCR(KHyDW;%Oe?UT))huHZt>;$)8DQ1)XFc4S+&WE0k9HI`=y7Gy4FW*R1CJVs{( zhUCwXf!8O#<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW>>anYc^*?)?#IrVNvE|c4lBo zCSq(xVOR#^w-ABdd%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(Z2{>?wwl=WDh6IGBCdjsNm5{?10M z%_=O*V$9DR%*a$s%s7n7a174x!2-Jve91?=%_}_1W8BXj+{jg2%sHIOaU9M8{Ewaa z5C7zEtj`*($WkoKJj}{;OwI(1$w&;%Ap81H5T+RiY$w?f| zA?(ZU?7%i`!N#n^sw~IiEWn)1#MDf}xQxc|48b2k0Mc#ylenQOR|^EjOoIFf_dn_bzSt=XInS&NlfhDDi=*_nYUnTW9&g<% zTd^4%uqG?9G>b4VvoSqWFd<_xGQ%(^zkUwv-tjpf@Fp+uG>>pEw{bmJa3N=LGRJTz z`>_W*vMpP(3G1>N%d-RvG8Z#54U;k+qcZ|S^5>_(>l0t|3Geb6&+`Niau+vq4VQ8r zr*i^Fau9p7E8DX*o3kNnu`d%VsI zJjp}c%`IHZWt`6$oXAle%s%YKfB6@GXCu~T6_#Z&=4TFOWGW_R97bh02Iu$pf!znb zmkzW7c6+mSb@iU`}RYY9?V^ zMq_w};E%U~*GInMW8UFap5t*I;7)GhYA)eiPUCov;6V0b7q(+7He&wdw;%h$PU0&mPp5Q_5;%2VlQqJRaPT)umVsCb3d$wkC zHe@YUW*HV`K4xbIreq?J*O!HO)!!py_0OvmI*z?h80&YV#mEf9p#1tY zuzSbne88K$#M3;&z1+t2T)~B$#mOAQq3p*V?8vrk$tJAJYAnwZEXZ8U%rs2Oc#O^n z49TBQ0oec*Dev(*FYqJ}aW}VcEthdVXK*4%aWMO^8~^2B{GE+h zn^jnr#h9Ntn31WNm~j}D;TW9X9|m?G_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH_#Zp- zAO6YTSf4dmk)>Fed6<>yn4Ae1laUyjLHOlCVE2~Kc%L_Tk*9c=d$^VBxSR_(lan}_ zL)e$y*@11?f{j^+RauV3S%5j2iK&@{aT$%_8G=9V2VNifijR4RS9y-dd4M~)iL1GU zb2*LUIf4V(i(S}`t=NnWSd*1lnnjqG*_fUwn2@m;nPC`|U+)EW@A#Y#c$1fSnn$>o z+qj-9xRA3rnPWJV{n&#Y*_JKYgmqbs{*hD$k*(>Z}7If%X4mF?M@&DoH(Sea#5l=+yQ8JLoZ7@JWTmcjV#PGI+* zFZhtRc$sH-l>4}y8@Q5-IGa;Amc!VeJ=uwW^A9#Irzx<28vk_~v3d^z>^D_rCG8Gdu z4x=(0gY)~X!0rQI@)2+I3eWNw_j3m~aupYI4ySS)hjRe`V`u)uKlvN$vj!`&6bmyC zvoal%GXY~V5<@cxzuXM$-trmm^9C>S6c2L`w{jhqa{*^^5=V0g`?5Pbunk+VG3&4@ z%dt2MFefuHHIpzdqcJ=~@W+k7>my(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJ3)`_3 zo3R0FvJy+P2=g)<(=!DVG8Q8<41@CP^}y~OpYs84@)A$;2={Uu*K-9Iauz3Z42QBG zd$1$hvL&0aE~~LTORykwF*DOJDdRCZBQPX?UJJZF@im|DF0b)CPw*gjaWmI&Dd%xI zCvYSOu{XQ2JzKLm8?qKFvkZ$eAG0$9Q!)`_GYZ2p7{6T&?B4SQAMzG2^9+x2AGdP@ zS8@?&a|*|D82hs)JMnM+!KSRo>a4($EX3T*!n91r_>94b48>np07E*>%72| zJjC7H!nIt+`JBOt9L2%x!*2YSfAM!VVr^DoSr%h{=3qvqVq(T&REA@4e!m>pec($z z;%#2xSsvql?%+nQ;$qI>RF30t4&Z<6%zyYNe`9^tU`3W63*o`j^_vtWG{AMJGNpoHegLwVrdp(US?x@ zreH$GVq}J4P=37-*uCR(KHyDW;%Oe?UT))huHZt>;$)8DQ1)XFc4S+&WE0k9HI`=y z7Gy4FW*R1CJVs{(hUCxlf!8O#<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW>>anYc^*? z)?#IrVNvE|c4lBoCSq(xVOR#^w{wBrd%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(Z2 z{>?wwl=WDh6 zIGBCdjsNm5{?10M%_=O*V$9DR%*a$s%s7n7a174xX9Bwqe91?=%_}_1W8BXj+{jg2 z%sHIOaU9M8{Ewaa5C7zEtj`*($WkoKJj}{;OwI(1$w&;%ApCMVuzSmAyw4lF$WuJb zJ>1H5T+RiY$w?f|A?(ZU?7%i`!N#n^sw~IiEWn)1#MDf}xQxc|48b3#072lk9K_!2%Jyu{=4{AXtjsbj%6!bu3{1&H zjLj$v%V7L=Jg|Gu7ktQDyv#E^%6;6<4P41ZoXsg5%VF%#p6tZG`3IY_9;>qgOR^Ai zGYiu)8RIhsBQg|!9SgiZ^9`T!9iiMenS(%Q>nSe1FiJ=*UUycNJZ~2V(d4m^uiif#}Te*(Qxqve{iK97$ zec7EI*oH0Gm~~i{noBsB z(>R_ZIFP;Ah3(ji&Del7S&5}tgn5~b>6wBF8H$!ppIg67yhC|tpJ=l?L*^*6Im(^IFC0LNTn3-vql<^py5g3v`4+dVJ_?l06m)Cfn zCwP#%xS4CXl=C>96F8EC*qdG1o~_xO4OxqoS%yWKkJ*`lDVd0|8HHgPjNc9fcJKLu z4|$81d4@;1kK4I{E4hfXIfY|6jQ!b@o%lEZU{ls(byi?W7GiE@VOl0*e8ylzhT^aN zf!Alg;Zxq@bza~}9^!6p;aV=^e9quRj^beUVK@HEzxX>Fu{Nu)EQ>Keb1)-QF)`yX zD#I~2zwZm|KJX5P+yR!q^umu~l4y&>p zi?aZ8G80oX3F9&v!!rbb>vkJ{Iw(S`ph?c%6q)d3p~j~ z+|4aq%VnI;8Jx&b9LzrK#(()2e`h1sW)+rYG3I9uW@IWRW*kOkI0onU?Sb6~zT_j` z<`tghG4AIMZsaO1<{VDtI1c9k{>RSzhkx=n)@Kb?WGNPA9%f}aCT9Z1WF&@W5PsPf z*uCX5-scToN}U}M%{RhDCM7GO?hVrnK~Tt;Jf zhTxB_f!9aA;$z<7Ri5K<9^g)H;%YA8Tu$S7j^IG{Vi&e!D>h>T)?_7?W)bFPHl}9^ zCS)u|W*7$L*DZnFJ3i+F-sB~o<`M4YHm>IiF61mu<`@oTKlWfpwq;8;VO>^Zd6r;7 z=3-{1VN%9pbVguE{@fgRed23A;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1WqY<}b2elx zR%RI%WjA0$;QYQJu=~K5e8k(l!m~Wa{oKKgT*bwl z!>Js{;T*vK*qQ(EPyWXGtig&b#lp%}#L*nWzU<2n@-e zYXYxNe9b4k%WFK(6FkUW+{`sx%6Xj52^`5m?9Hxh&(>_thOEWPEW@JA$L!3&luX3f zjKZ)C#&4?wyZ3y-hrGqhJj0{h$L-v}m0ZNxoWijj#{TTdPW+pHuqo@YIxDaw3o$pd zFfEfYK4UN6n}e7?Y70nnCzwMPT=q&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^ z-PwU{*n*8&hgDgQ#aVzknTe^HgmD>-;TeKImIq!R`HGKuhgW%y$9aG|xrwW}gmXEK z<2ix@*^6D+j;+{?4Oo+vSeiwcm)V$}DVUJ47@1)hlwX$xcJKI{4|tQ8c$!DJm)p3W zE4YxeIGJNOl>OL)9od#G*@SgjjpbQ_1(}PPnTAOjkI@-{A^CG@;Pr{G`Gj|QjpuoS z2f2%zxrR$QkJCAUBRPn@*_G|tn$6jewOE;DSd{sgof(*ti5Qzv7?#2KZAoDFo-g>2 zw|JRnc$E9Nog284i#VH8IF`fMpFP=$fAbGEWj$7B1(swX=4KYAWirNR3`S%q{#qP( zedZfJ$3(cvJ?w553@2I zlQRKhG7>{G2)`^0?B4Pj@AC#P@)Qqq54Un1mvaGUauP>#2>Y@-JFpE~urcefD$B7r z3os`$F*TDgE~7C#L-5Cf!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u?yR=6`QdE zYqAncvk3Dt8`Cod6EYSfGYo_B>-@m(9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAA7JP z+p;B_ur8~yJWH@3b1^g1Fe&3PIwLS7f6fcMKJhi5@Gh_MJWuc-cX2b z2eCK1vOQa~IUBMTE3*uXG9R-u15+{)V>1fFG8n(j4eZ|Y1t0PjFY^qKav!&I16Ohp zXLAb2av1xwCp++#84rDKOVLP^BGd5sNR$^%uVP0lqdZu7P z#$sfKVNiaZ5!k)sb3WirUgBvU;a+azdamF?&f;W_;ZXKt4|Zf*wqz65Wi^&(2^M57 zW@Z{DWjsb_1cv0#>4DcLzUC9&N+x1#MqyY6^L*C+Lp5amM<92S~N-pATPT^P%V}JH!C;rVp z*p&5HofTM;g_xUJn3l;HpD`Gbq4;ZR;Pshr_>}i}ofmkLhq#+txR%Q}pEEd-qd1s- z*p2`4FaFL(tj#Jc%VNyW9L&g6Ow2fp%5V(M?^6Q14}8f-yv-{-%VXTn9o)!OT+BI~ z%5fad0sN1h`49i(Z>-N6tjJO<%skA>bWF|!jLAq0%^>_TIk0=nXS~lFyvS2L%st%7 zbzIH`oXJTX%^~c|?(D!eY{AB?!>TOD;w-?N%*518!nlma@C?BplLD`ge8tDS!>c^U z<2=Bf+{D#f!nvHr@f^W{?8Po@$5w2{2CT_SEX^X!%WO=~6imoijLa|$%C8dxyLWuf z2fWEkJk2BA%WYiG6@8Y{I&%#_}w|g3QItOv9v%$LNf}ko-9z z@cP8pe8RiD#`8SEgWSc&lh~iTfEFOJj#9C&JA42MV!qk9Lr(s&z|hWzxfB7vL36m0!y+Gb2AIm zG8yAD1|u>Qe~k;gKJyKq@*c1A0#EV~cXJEZavA4y1}Ab92eS{m@n8PM-`R+@S%qa; zjQN>^8JUWS8HZ6Bj=}kTY+(0+FZqbKd4*?rjQhER8@Y;$Ifqj@j>9>C|FJXw;h+4C z^;v@zS&D_3hgq49$(evL8Hu48gkQ!4c5nHN_j!XCd5VX*hg-Rh%ejCvIfz4KSu^$pZJv0*`BT0oDErvm05;GnUC3-fhn1Yu^EM78I0dX1a|NFf)9C% zmwARqxsThqfh)O)vpI!hIgI_;lb!fC|6o(rV|7+wNfu&mW?@<;V|>P7M26z8;epp@ zzTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F*^v%fI+L8?iR4uq=x)KXWi6Q!z2)Fe<|_ zIKK}I>^|@%AMrM?@GOsUKX-5=S8*}ta4N@fI0x`QcIH3)lfSV(Yp^0qu`u&6E7LJK z6EG$tF*Jkl%h15?EuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1k?+pq;2vkt4W9E-C6 zb21ZCGYR7|8pAULe+&t{KJpbG^A4}_9FOw=cXAU~a|!2i8pm@42eKEtupL{m85^)B zE3q_-FfX$)JyS3tV=*$rFetwc4(#6XIUn#QFYz>wa4)xUJy&ocXK^yea47q+2RpJY zTe1o3vKq^?1Pd}3Gcyg7G9IHd0z>lWpup=BU-Jp?@*2%rL)^_R zT+3yg&l#M^Q5?)Z?8blj7k_6X)@Bu!WijSw4rXL3CT1K)WjF@s_x^$12fpMZ-sTma zgFaUS4KZsKY#;apDRc#hye_F@;dV=Fde1J-0EmSz#=Wj3Z~3MOPM zMrIfW<<~xe-8(+#1K#8%p5_tm{N48~4Hep>>V|kWfLFQs+ zreRXXV{}GfNdD{{czxn)KH*(n<9VLoLGI#auHjP7<8)5oNDg9ec4d3EW^*=VEmme3 z7G*wWX9lKZBF1JEhGnq-aXe1}R2T{XK(lSzwr$(CZM!Y5R$E-HmTlX%ZQHK*?)f?Y zhu;PVcJKLu4|$81d4@;1kK4I{E4hesIGvL?mLoWjz1W#;*p&5HofTM;g_xUJn3l;H zpD`Gbq4;Z1;Pshr_>}i}ofmkLhq#+txR%Q}pR+iH6F7=P*^k}Xfi2mHwONH_S&aFa zgBh8Mi5Z7c8IHmEePCesfiL-pw|RwUd5rtHgB!Vui#eAwIGN)(l7rZrUD%e*Sf4dm zk)>Fed6<>yn4Ae1laUyjLHK1rVE2~Kc%L_Tk*9c=d$^VBxSR_(n^QTFqdAQI*@GR~ zij7%^RauV3S%5j2iK&@{aT$%_8G=9h2VNifijR4RS9y-dd4M~)iL1GU|8XY&;&}eX z!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($PB}v{Ms+Dd&lQ|z?;0p(>%hx+{X1>!G-*n z)A%RHa5x9BCp)nQfAtQ$KJyKq z@*c1A0#EV~cXJEZavA4y7N>9mM{y|ou{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v{X z3hX}cB_HuNukb97aX)u(BUf=T=W+%oa~wx<5PP!=+p-z!vj!`&6bmyCvoal%GXY~V z5<@cxzw`|3-trmm^9C>S6c2L`w{jhqa{*^_DkpL@hp|6my(BG4Jpy&+#}9a3?o$HJ9)|&g5Sl&)+zheb|-l*qjYmla*MS zMVOb_n4T$^kg*tP7M26z8E`ir)zTs2e<8@x(Ngm>EZsA%k z<9yEI6i(nM4rM=fX9u=qBi3dWmSr*KXAWj$Dkf$eMrAk#=l9Nm-3PwpBi`l}p5-y_ z=MHY68^`T{EOrH8waxwyRsddvjJN98_i`K8a|IXjUrytn9K+!pz@F^H)@;JMtj6*z!Gg@i%uK_i zjK}DVz>xgeKJfa)*L=deyvFl9!Gqkz&0NE!oX3CoH~--89Kycr#`bK%hOEWPEW@JA z$L!3&luX3fjKZ)C#&7KcyZ3y-hrGqhJj0{h$L-v}m0ZL*oX$xc%Ml#NUhK>^Y|479 z&I&BaLd?x9Ov_}9&lrrzQ2f<4@cPU*e9C*g&I>%rL)^_RT+3yg&sm(p2^__t?8olx zz?N*p+N{E|EXMrI!Hi7B#EiqJ49DR7-X^g7z?Xc)+q}ZFJjVUp!HrzS#hl9-oXl|? z$wBPRE^NzYtj`*($WkoKJj}{;OwI(1$w&;%ApFuguzSmAyw4lF$WuJbJ>1H5T+RiY z&8eKo(HzG9?7@y~#m20|sw~IiEWn)1#MDf}xQxc|48b3*0aXf$HVD@2GwqtWPU`2w|JRnc$E9Nog284i#UhVIf-LAf&S&!9OfhAdpxtWD&nT+un zgAo~uznTSJpZSJQd5_n5fhT#0ySasHxs3BUi&Hp(qd1iP*qt5Nl8soKRalnAn4dYA zk*S!NaTt~17@Xgm26i9#l8<PIgTSah`rf`ZP|?VS%Vc> ziiMenS(%Q>nSe1FiJ=*UUz!AVZ~2V(d4m^uiif#}Te*(Qxq!1dl@mFd!`Poa*paQ+ zm~~i{noIZ}XYwzO=WiU$ zKJ3bNY|aL($x1BEBFxKdOwSZd$XJZbFbvACjRL!Oe9i~F$xA%VBizevT+bC;$bUJF ze{u|ma{zm?6I-(h>#`clvjht=7c(;rlQJHoGXg{MXT!kj6JPTQ@A4YY^8^oa7dLYa zmvSEe;otm&zjFxtvK!m81sk#!E3*uXG9R-u15+{)V>1fFG8n%#2<+bT1t0PjFY^qK zav!&I16Ohp=WseFaV$r0AbYVh+psC?u{tZTBnvS&voI}_F+O83B17?4{lM!p-|#8# z@j5T?BoA>nw{R_&aXx2p3MX(Bhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+W^LxF( z?gL-)5pVMf&+-`ea|bta6&G_ZXK*sdaU=(^H@mPco3TD?up&#bF!L}g(=j;{FeW20 zG=uO<-N5cGpYc9#@FGv~F!yjP*Ks))a5krMB1dx=`?Ci-vK1S%4y&>pi?aZ8G80oX z3F9&v!!rbb)Cs&k@)aNR4zKbYkMjU`auZi`3IF3v{>Ab9jf2^TUD=M!*?=`!iKSVD zd6|vrnSu!!i;)?ILHV_IVE2yC`G7ZhiKlsld%2D4xq=J%FQ@TOj^S_)U{7{pYc^qB zR%3aVU_s_$W~O0M#$$9wU`YO~6?lE(Yd+y!UgLS5;6d)L)KztmSIumV|Hd>N+x1#MqyY6^L*C+Lp5amM<92S~N-p9YPUj?! z

UBFLq`dHf23lX9bpIA?9Wlre!k5XADMUDE_Juczxy@KIJ`L=LMeRA@1fDuH`b$ z=PXX)1difR_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhGTGkuO8Ta;7dN@ZC>G79^-!Q z;6|?EV$S6ZPUbj{b4VvoSqWFd<_xGQ%(^ zzg7wC-tjpf@Fp+uG>>pEw{bmJa3TNYH2%pk9L@pk$xdv|CalY9EYA`w$Xv|KG)&5P zjLrxQ$)A-2uTOl&TPY`tjFrC zz>+M)+|0tXOvd<(!H5jSUljwd&wRtDyvOUjz>_@0-Q2>pT*mpF#VMS?Q5?#C?9L8s z$wsWrDlE%l%+DOm$W%1049@Qr0=o}<$w$1+D?H0%+|M1{$W>g-xtzht9LJFy z#NO<}wrs}wtig&b#lp6n}e7?Y70nnC!bL}2%p&v>6Vc#)@gn0vUD>$sc?IGa;Bk)t_`{n>*Z*@}%> zhgDgQ#aVzknTe^HgmD>-;TeKIiU(dF`HGKuhgW%y$9aG|xrwW}g#U3S|KfQ5#=-2v zu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9p!`}auzSbne88K$#M3;&z1+t2T)~C>m(%zs z$8b0YuqQjQHJh+5tFb&wupo0WGt)3B<1soTFeHB#4ZJ?_HJ|Va~7v?0!MKu`>{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&7Ygh? z@FgGdHm~q3k8wYDa3fc7G3RmyCvzM}au9p73)`|8>$3(cvJ?w553@2IlQRKhG7>{G z2)`5z?B4Pj@AC#P@)Qqq54Un1mvaGUb1EltG>5T2d$1#0u`%ngD$B7r3os`$F*TDg zE~7C#L-0p|!0RJl@iFi4D$nsa4{#?paW$9lKhES|9M9i4n0?rl?bw_RSd*1lnnjqG z*_fUwn2@m;nPC`|U-Jic@A#Y#c$1fSnn$>o+qj-9xRC#H8vo=N4(9;&WGA*}6V_!l zmS+hTWG-fA8YX2tMrQid2Y=@f_GLG= zXA3rDEmme37G*wWX9lKZBF1JEhGj5*%Ny9e=LT}4edH@X z<{e(;IUeT$?&Kz}<`VwLnf#06`5Onb54*A*o3jCHvJy+P2=g)<(=!DVG8Q8<41@A( zj==66pYs84@)A$;2={Uu*K-9I@?TElpB%&C9KfFJ#MW%Wx~#_XEWv`z#mr2@q>RVt zjKGlmnLY6O#MgYnyS&EpJi&w9#m!v9rJToq_&5LH?;OIu?8f$N!G^5G$}Gd8%*X7^ zz?4kH*o?xk490KS0=xHo!H2xX%RIxQ+{f+Qz?EFYIh@W(9Lo_L$X@KsHf+jztj-E7 z$wJJ{EKJK}jL#U1$WZ*1HSqe(H+;%_yv_?e$wS=DEnLfGoX=UD!U-J3q3p-*?7)_6 z#M-RFvMk2@%)yLI#l(!ms0_#8{GKJS`@olc#M`{WvpmNA+`)}p#l@V<8Jx^<9LYiK z%`R-qW~|Q|tjJO<%skA>bWF|!jLAq0%^>`eIk0=nXS~lFyvS2L%st%7bzIH`oXx46 z$k80e{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?BpnF6nme8tDS!>c^U<2=Bf+{D#f z!v8pve{np2<6!n-SGHqwHegLwVrdp(US?x@reH$GVq}J4P=3uA*uCR(KHyDW;%Oe? zUT))huHZuc%W3?RV>p}x*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7?M9T1YV!`nooF_ z*La>Mc#ylenQOR|^Y{<{<{$i>L)e$y*q$xekhNHuWmuH?n4KAzl8G3bQ5crN_$_^4 z_nt5Kkhgf5XLywRxSbogl8ZQp(>aM_If4V(i=EkqO<9lCS%D>4h`E`CX_<`i8G{iS zioenYUZ44fPkE2md4VT+h`YIkYq^Z`Ig3*`fulH-{n(uy*piJ{n^jnr#h9Ntn31WN zm~j}D;TW9X(*|}Q_>zx!n^$<2$GD$6xRI;4m~%OUlR1tfIf%X4g>Bi4^;v@zS&D_3 zhgq49$(evL8Hu48gkRDGc5nHN_j!XCd5VX*hg-Rh%ejEFIh7MRn#0(iJ=l@0*qC)# zmE~BR1(=hWn3_o#m(duWA^0P8;PsKO_?UNimFIYz2e^})xSC7&A7}C}j^}S2%s%YO zc5KcDtjS6&%_7XpY)sD-OvqS_%rFefuc-pNcYMwVyva*E%_H2)ZCuY4T*!Ypjel|s zhjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcZ|S@@LAx>l0t|3Geb6&+`Niau+vq4VQ8r z|KZ>KgTHeK`?4F`vjrQn7Avz1i!vXxGXqmH5o0q7!!j7Zr3mca^93LB7BBM*k8&Tk za|2g$5$A9^CvhxCa3FiJGuyB!>#;g3up|pHH?uG;lQBMHFd{?oSMtE?GvDwj@9{b> z@FWj$H@9#tmvKI4aSA7J6o;}OyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY$c`!0rQI z@)2+I3eWNw_j3m~aupYIE@yBu$8jVFu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$tF*Jkl zOVYsZEuZl|Z}1{d@i6yrE7x&37jQPGaw11_82hsaJF*oUvkt4W9E-C6b21ZCGYR7| z8pAULe6wBF8H$!pp`7fvOPmbYm4q#7qVrw>GT~=dx zmS92VVrHgcQpRI+Mqo((OcZ#1;%h$PU0&mPp5Q_5;%2VlQqJQ){F{I9cMf4+c4K?C zU_;hoWtL%4=3{ndU`i%pY(`;N2IIGcf!%w);6vWxWuDgFaUS4KZsKY#;eVXTzc`-1aWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2D8I%D z?B4M?AMhqG@idQcFSl_$S8yT!K$Xcw-GAzn`%+3r< z$wZ9JC=APB{1z*)d(Rhq$XmS3Gd#+D+|CVL$wi#Q>72x|9KnI?#m;QQrmV;6tiX~i z#N5onv`ohMjKPQu#a}T4ug`qLr@Y7Oyugz@#NFJ&wOq#eoW&`ez)>8^e(cT;Y{^Ef z%_=O*V$9DR%*a$s%s7n7a174xF#@{}e91?=%_}_1W8BXj+{jg2%(mllwG$@cPJCe9Sw%%5yx<1Ki0?T+Jo? zk2Cof$MZK1W*>HCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*QkNrJ3i+F-sB~o<`M4Y zHm>IiF66(Q#y>fR!#RLG*@>;$gmqbs{*hD$k*|L|}A!QVNAec6re*@6vOin_IY+%Q&C2IE529ibL6t-PwUH*@(4Sg=JZc`I&2Lmd|*fH+Ye!c$j;*mFu{i3pkroIgz6|jQ!bz9odSFS%+0w zj>TDkIhl#6nS^l}jo}%BKf(uIANh)pd52edj>ma`JGqIgxrG05Cja7i{>H)V!>(+{ z=4`;4ti;kR!o1AJ^i08ojK#?x5JBP3@yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYjFK!0tU?@F8#UGSBcR_i;Nn za3vRU4ySVx$8rP*vKKqE4V$tatFr=2vJi7K3)3$G8BJ>4!l0|4WIHJuk!*= z@(_1(3)gZP=W`aPZ~{khDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zlRF!KJXT@G8&oI1g|qH*qzW@ITJvUmVZhIGBCdmF?J^4Oo+vSeiwcm)V$} zDVUJ47@1)hlwX4fcJKI{4|tQ8c$!DJm)p3WE4YyVavJ~S7!KzE_GBlvW)s$BHI`=y z7Gy4FW*R1CJVs{(hUCv+f!8O#<`drKHJ;}Q9^@`=<{B>LJpRMK`3HaJ5cXv^wr2}A zWGz-^85U(eW@iSbWFp396ozFmehV7dz2^%)bWF|!jLAq0%^>{pGq8KhXS~lFyvS2L z%st%7bzIH`oXx46$k80e{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?BpKLW3he8tDS z!>c^U<2=Bf+{D#f!v8pve{np2<6!n-SGHqwHegLwVrdp(US?x@reH$GVq}J4P=5U$ z*uCR(KHyDW;%Oe?UT))huHZuc%W3?RV>p}x*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E z7?MA~1zw-{nooF_*La>Mc#ylenQOR|^Y{<{<{$i>L)e$y*q$xekhNHuWmuH?n4KAz zl8G3bQ5crN`0Z<8_nt5Kkhgf5XLywRxSbogl8ZQp(>aM_If4V(i=EkqO<9lCS%D>4 zh`E`CX_<`i8G{iSiod=DUZ44fPkE2md4VT+h`YIkYq^Z`Ig3*`fulH-{n(uy*piJ{ zn^jnr#h9Ntn31WNm~j}D;TW9XKL>Un_>zx!n^$<2$GD$6xRI;4m~%OUlR1tfIf%X4 zg>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkL@dc5nHN_j!XCd5VX*hg-Rh%ejEFIh7MR zn#0(iJ=l@0*qC)#mE~BR1(=hWn3_o#m(duWA^78C;PsKO_?UNimFIYz2e^})xSC7& zA7}C}j^}S2%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFefuO9-tcYMwVyva*E%_H2) zZCuY4T*!Ypjel|shjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcZ|S^5^@&>l0t|3Geb6 z&+`Niau+vq4VQ8r|KZ>KgTHeK`?4F`vjrQn7Avz1i!vXxGXqmH5o0q7!!j7Zy$kH# z^93LB7BBM*k8&Tka|2g$5$A9^CvhxCa3FiJGuyB!>#;g3up|pHH?uG;lQBMHFd{?o z*W1ABGvDwj@9{b>@FWj$H@9#tmvKI4aSA7J6o;}OyR!pZvJq>u3d^z>^D_rCG8Gdu z4x=(0gY)~F!0rQI@)2+I3eWNw_j3m~aupYIE@yBu$8jVFu{XQ0Et|1EYp^0qu`u&6 zE7LJK6EG$tF*Jkl%j>}IEuZl|Z}1{d@i6yrE7x&37jQPGaw11_82hsaJF*oUvkt4W z9E-C6b21ZCGYR7|8pAULf4mC3KJpbG^A4}_9FOw=cXAU~a|!?BO#a33{EdUzhh5o@ z&Dnr8S&5}tgn5~b>6wBF8H$!pp`7fvOPmbYm z4q#7qVrw>GT~=dxmS92VVrHgcQpRI+Mqo((d=Yqk;%h$PU0&mPp5Q_5;%2VlQqJQ) z{F{I9cMf4+c4K?CU_;hoWtL%4=3{ndU`i%pY(`;N2IIHqf!%w);6vWxWuDgFaUS4KZsKY#;eVXTzc`-1aWMO^E8DR-8?YuTu{4V?FS9W{ zQ!pW8F*3t2D8D`m?B4M?AMhqG@idQcFSl_$S8yT!K z$Xcw-GAzn`%+3r<$wZ9JC=APB{PrNQd(Rhq$XmS3Gd#+D+|CVL$wi#Q>72x|9KnI? z#m;QQrmV;6tiX~i#N5onv`ohMjKPQu#b5UWug`qLr@Y7Oyugz@#NFJ&wOq#eoW&`e zz)>8^e(cT;Y{^Ef%_=O*V$9DR%*a$s%s7n7a174x_X4{Qe91?=%_}_1W8BXj+{jg2 z%(mllwG$HCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*V}>J zJ3i+F-sB~o<`M4YHm>IiF66(Q#y>fR!#RLG*@>;$gmqbs{*hD$k*|L|}A!QVNAec6re*@6vOiqg-9nQ!=%_jsKbc#?;>n_IY+%Q&C2IE529ibL6t-PwUH*@(4S zg=JZc`I&TDkIhl#6nS^l}jo}%BKduH|ANh)pd52edj>ma`JGqIgxrG05 zCja7i{>H)V!>(+{=4`;4ti;kR!o1AJ^i08ojK#?x5JBP3@yRki6upw))GRv?i^D#R!FeMW)Hlr{sgYny?!0tU? z@F8#UGSBcR_i;Nna3vRU4ySVx$8rP*vKKqE4V$tatFr=2vJi7K3)3$G8BJZ z47@(`4WIHJuk!*=@(_1(3)gZP=W`aPZ~{khDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yX zD#I~2zh4OKKJXT@G8&oI1g|qH*qzW@ITJvUmVZhIGBCdmF?J^ z4Oo+vSeiwcm)V$}DVUJ47@1)hlwZ#VcJKI{4|tQ8c$!DJm)p3WE4YyVavJ~S7!KzE z_GBlvW)s$BHI`=y7Gy4FW*R1CJVs{(hUCvPf!8O#<`drKHJ;}Q9^@`=<{B>LJpRMK z`3HaJ5cXv^wr2}AWGz-^85U(eW@iSbWFp396ozFmemfo5z2^%)v)8czxt6KIR=><##@M@9iQ_7Z}JjP^9c8H8`pCM7xG_DKY{7=C z#mX$hqRhwa%)pdP#Mq3&unfj;M*_R|e8Gpj#mhXyquj^s+`yGw#5tVKNgT@&9LQem z%rd%VsIJjp}c%`IHZWt`7hoWcnl z#i8uS?(D#pY{c5E!m=#J{LI0OOvS{E!>A0$;QW3lu=~K5e8k(l!m~Wa{oKKgT*bwl z%Nd-^aU97(?9DE0%Vw<48m!1tEX+L2%5+T51dPc@49y_?axk!a%V)gL8@$Lxoti!4-$Kou&oXo`3Ov1Q~#_$Zm9|r=jk9@_)yu+(J z$KyP}o!rFLT*Ci2lYenMf8${GVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVNibEAK1O) zb3WirUgBvU;a+azdamF?{>y3nlVdoX1K5+D*qTjPm(^IFC0LNTn3-vql<^py5g3v` z_XS>`_?l06m)CfnCwP#%xS4CXl=Jux|K=b3okQ4{-PoQj*pRhYnPpg%`Iwyi}FnP+&E`?#GOxRQ%FhtoNUV>yBY*^8aohD}+I)mechS%|rr zg=v|L@fm{=8H&I51YV!{hEI8q*Li^_d5F8Yg=@Kt^Er!CIDw-$l>OM99oUkMSesQ? zmc^K#Ihc{Dn3!=GmEjni-**RgANZ1wc$-&vmdCiCJGhanxR`S}gOfRqBRPn@*@bP{ zjP+TA6(yTF&T-W8H8VU1$J-wjQ4qi7kP?@xrbZ1j?1}#vpJO$Ihw=R zpFP--t=O1#Se4~ioCTPZnV6bM7?;r)o+0>SXW;dbulSgEc$MdPoCmm*o4A@w_#bET zFOKJL9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%C9>DyLWuf2fWEkJk2BA%WYiG z6Y@d+p`55vKA||42v=!voixzG7)1l3d1rOzikWb-tz?? z@)j@i43Bajw{rtmauMfnIwx@~M{po}u`}DSDeJL1E3hOBF*ma?Et4@mV=y8^@z>VC z>oec*Dev(*FYqJ}aW}VcEthdVXK@NAa1@8KAG@;yTe1;rvkJ?y81pj+GcpwuGY+FN z9E0=wmcZ@^Zd6r;7=3-{1VN%9pbVguE{@f6Fed23A;ay(id7j`w?&4;y;Zn}yKm412 z@OKVjUv^`AwqQfnVr74rDKOW*atTJyvH0mSiF3W)`MpGR9{NMr0`dS{HbI<{LicJznPpp5!6! z<`%ByGS25LPT>TO;!yTucXnV)Hezj7VObVqe&%3Creb2oVN`}=aDHDK*nQwjKH_a& z;aMKze(vB#uHs_O)${hGr0cSrgd3 zP)?rnaV{sN>PG(|iCShDgV|a$( zkJW+KN50}?-r-fA<8dC~PHy6AF5!Qi$-g+Bzi}}8uq)fKIUBGhE3q_-FfX$)JyS3t zV=*$rFetyS3hdtTIUn#QFYz>wa4)xUJy&oc|K&9P$uS(x0qn_6Y|SRD%W5po5-iAE z%*-@Q%6N><2n@-eD+8}je9b4k%WFK(6FkUW+{`sx%6a^UfAbIi&LQl}ZfwsMY{*)y z%rY#>e9X=aOvyxy%_t1ZVEncsuzSxJe8^k8%riX7eca9sT**b8!|9yFu^hpH?8VM( z!=|jq>a4($EX3T*!n91r_>94b48>o|1Fz3~!>7E*>%72|JjC7H!nIt+`JBZmoWM~W z%6{z54s6Lrtj#Jc%VNyW9L&g6Ow2fp%5V(M@5=(a4}8f-yv-{-%VXTn9o)!OT+F$g z!O0xQksQR{?83He#`>(miY&##%)_iq$K*`Fn2f~G48ku<1G~3;#{0a%i#)}{+{3M0 z$K_nW*__IW9L-_u&mQc^R&2~VtjcmM&H~KIOiaxrjLT>Y&k+2vB=GvkSA5JnyvlPt z&I8=ZO^8JUWS8HZ6Bj=}kTeqi^3FZqbKd4*?rjQhER8@Y;$IhQjynd3N;gV>v0*p|&$ zpEX#KrC6AGn3d_6oCz3{krze$M|1&k+2vEb#isSA5JnyvlPt&I8=Ttz5@dT*mpF!HFEj!R*7XY{%woz?!VY z(k#Nf%*OOg!Gw&($PB}v{JJ!-d&lQ|z?;0p(>%g`+{sN`!xdc2Ih@LI9L@pk$xdv| zCalY9EYA`w$Xv|KG)&5PjLrxQ$)8ICuTOl%}#L*nW zzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;ivzp&e8Gpj#mhXyqukG3+|0FH$t9f2 zX&lcH9LQem%rd%VsIJjp}+hugV< zfATjjRS6c6)X?%+oL#oxJzvpI!hIgI_;gB{t5jai3PS&qe7fH|3oshNav8I9o?f$r-`IG-~(k)t@6eb|-l*qjYmla*MSMVOb_n4T$^kg*t< zVHlKO=LL4}_?!=Tlb3j!N4SqWxruAIf{QtaQ#p>qIei}FnP+&E`?-soxt1%rgmXEK<2ix@*^8aohD}+I z)mechS%|rrg=v|L@fm{=8H&GV2VS4~hEI8q*Li^_d5HgTJ2&u8{>Fuz#mOAQq3p-* z?7)_6#M-RFvMk2@%)yLI#l(!ms0_#8{5~tN`@olc#M`{WvpmNCxSLz}H~-*L&f|1W z;7AT)Z+2l@He-F(U`3W_r*JHXu|IpTBU`aC>#!=zu{aAbCo?fMlQ1r$F+4-?$Be-1BVX|`@9-+m@i-4~ z54Un1S8*BVa|S1J6bG{pyRsddvjJN98_i-mTaSc~+G3Rh9$8k6ZuqQjQHJh+5tFb&wupo0WGt)3B<1soTFeHCY3%ow@ zHJ|V#2>Y@d+p`55vKA||42v=!voixzG7)1l3d1rO zzfBG7-tz??@)j@i43Ba@cX2boec*Dev(*FYqJ}@gHvI2L8$4xRA3rnPWJV{n(uy*piJ{n^jnr#h9Nt zn31WNm~j}D;TW9XCkJ*P_>zx!n^$<2$M_$2a|{3GA6&|LoX!ax$wBPRE^NzYtj`*( z$WkoKJj}{;OwI(1$w&;%Ap9~ZuzSmAyw4lF$WuJbf4PGj`4@lZBF^R%j^!}+XAgE{ zD>h~wR%JOBX94D9CZ=W*#$_~yX9)h77`?zTiXN;$@!U zQSRq1ZsuC9+#84rDKOW*atTJyvH0mSiF3W)`MpGR9{NMr0`d8XI_h<{Lic zJznPpp5!6^!|mL_KlvLMauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY)~C z!0rQI@)2+I3eWNw|Ko0M;otm&OF56zIe{ZNh`rf`ZP|?VS%Vc>iiMenS(%Q>nSe1F ziJ=*UUq%OZZ~2V(d4m^uiii0xcW@*B;_qC<*_^_$9LE0a!H#Uj#;n7tEXU$3z?{s) z)J(#-jK=T`!5^anuaA7i$GpRRVtjKGlmIU?}-#MgYnyS&EpJi&w9%WYiG)m+X6oXJTX%^~c| zZfwsMY{*)y%rY#>e9X=aOvyxy%_t1ZVEi^buzSxJe8^k8%riX7{oKXPT+5YQ!nvHr z@f^W{?8VM(!=|jq>a4($EX3T*!n91r_>94b48>o=07E*>%72|Jj8#vog4Tk zf8#>V;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4ejggxec($z;%#2xSsvqm z+|4cgn}2XA=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=uQVkihOOpYc9# z@FGv~F#qKaZscG5or^e|Q#h8x*q=Svk*(O6by$_unoU@j)mWY-Sdh7xnQ54m z@fe*E7?M8+240`|nooF_*La>Mc#wO!jqACZ%ejCvIf$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!kF#E78+p#$tuqG?9G>b4VvoSqWFd<_xGQ%(^zxEF7-tjpf@Fp+u zG>>o}cXAWga0M504ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcZ|S@@KEW>l0t| z3Geb6&+`Niaxb@WJy&x%7jPygaWsdpFT1flTd*N(u`qgOR^AiGYiu)8RIhs zBQg|!^$5H^^9`T!9*GInMW8UFap5t*I;2v(}IGT~=dxmS92VVrHgcQpRI+Mqo((>>PM~;%h$PU0&mPp5Q_5Keb1)-QF)`yXD#I~2zjp}i zKJX6n}e7?Y70 znnC!bePH*N&v>6Vc#)@gnE!GIH}Wt3&PANfDICjT?9U$T$X0C3I;_faEY1SV$xKYm zB#g^w49^h!(Jt`%$X9&KJG{zsJkA5$!>wG$Rb0mToWY44#lh^uu58EVY`~hV#L_In zyv)Y*Ou>YV#mEf9p#0i4uzSbne88K$#M3;&ecZ`ST*DPy%sHIOaU9M8?8#1S%_gkN zYAnwZEXZ8U%rs2Oc#O^n49TBu0vkJ{M9P(`ph?c%6q)d3p~j~{D<4Qfq(Kh zF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWRW*kOkI0onUmVw;|zT_j`<`tghG5*Kh z+`_;42bXdlr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQRKhG7>{G2*0!l?B4Pj@AC#P z@)QsAU+&;W{>9(9h_g9`V>yid*@GR~ij7%^RauV3S%5j2iK&@{aT$%_8G=8W2VNif zijR4RS9y-dd4PMkmFu{Q%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2@m;nPC`| zUz-JX@A#Y#c$1fSnn$>gJGqH#xPps0hf_I@!#RLG*@>;$gmqbs3pkULIGRJ)m)+Q&E!dE?Sea#5l=+yQ z8JLoZ7@JWTmcjU~NnrP$FZhtRc$sH-l>51ho4J-NxrB2$jpI3j1KEq6*@jJ7kJVX$ zC0U5MnT2VYjPV(R5gCfV8V6pV`G!wA0$;QZbwu=~K5e8k(l!m~Wa|G1l5_&5LHQqJRaPT)um zVsCa~TQ*~T)?h`JVqxZCR;FWeCSXiPVrT~8mxh7eTR!7`-rz-^;$i;F9o)#j_&XPI zHm7hbhp|6my(BG4Jpy&+#}9a1Xa~ z9anJ~=W_-pauf%%54*A*o3jCHvJy+P2=g)<(=!DVG8Q8<41@A({lM-WpYs84@)A$; z2={R(H*pPDa53j_D#vj+2e2nQu{E2pE~~LTORykwF*DOJDdRCZBQPX?)(gBo@im|D zF0b)CPw*i3avRrkHJ5V%XL1rpa|rvg8{4x58?qKFvkZ$eAG0$9Q!)`_GYZ2p7{ApG z?B4SQAMzG2^9+x2KX-96*K#G7a4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UN< zL-ALg!0R*L@G0-{Ixp}f5Ah#v=LY`C-?)&oIGJNOl>OM99oUkMSesQ?mc^K#Ihc{D zn3!=GmEjni-)jeUANZ1wc$-&vmdE%XcXJE><{wbWF|!jLAq0%^>_zE3kXZXS~lFyvS2L%zwFq8~GQ1=OWJL6prOE_Gb@vWGgmi z9ad#I7H0wGWG1F&62@gThGz)=s2O;D;a0BWDlX%E&fr9j;$Ze+ zSGHqwHegLwVrdp(US?x@reH$GVq}J4P=2iu*uCR(KHyDW;%Oe?KJMfuuHgzU<{VDt zI1c9k_GBlvW)s$BHI`=y7Gy4FW*R1CJVs{(hUCxcf!8O#<`drKHJ;}Q9^_tb<9e>< zaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lBoCSq(xVOR#^w`zgid%oa9-r{AR;Zg4A zE^g*puH+KVyedZfJZ}7If%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu48 zgkLHLc5nHN_j!XCd5VYmFL!Vw|Kjgl#Mzv}u^h(!?7@y~#m20|sw~IiEWn)1#MDf} zxQxc|48b3j0Js{;T*u8?8Me=!n&-+ z@+`rE%*D)1!=#MI=#0RS{8=IJ`o!0K!n?f2^E|6wBF8HGdYQ)IfQ-LjqTZj4OxqoS%yWKkJ*`l zDVd0|8HHgPjNeKGcJKLu4|$81d4@;1pS!r3Yq^q3IG58no+CJrz1W#;*p&5HofTM; zg_xUJn3l;HpD`Gbq4=wK;Pshr_>}i}ofmkLhxiY-a|8e6Z(PV(oXjyC%6{z54s6Lr ztj#Jc%VNyW9L&g6Ow2fp%5V(M@5KVU4}8f-yv-{-%VYeHySasb^A9fNJWl5Xj^rTr zW*4?)GuCGfR%9s_W*%l`IwofV#$+UhW)OZU8rZ$%Gv4P7UgRkr=D*y*jr@zha}j5A z3deF7`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&v!!rbb6bZaO@)aNR4zKbYkMjWca4Xkw z6_;^7XK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2D8CjC?B4M?AMhqG@idQc zA9r#S*Kh?Fa}K9+9EWoNd$JQ-vkB|68q2c;3o;ioGYyk69-}h?L-J>#!0QuV^9k?r z8qf0t4{|TJaXnXaITvsyCvh}~urIr@JzKCLYq2uRuqg8}J2NmP6EQZUFf4=dTfxBY zJzwx4Z}BqE@F@3l7dLY)S8@sGavH~T1P8JgJF^X&vL36m0!y+Gb2AImG8yAD1|u>Q ze-#M4KJyKq@*c1A0#EV~|KWCS;Gg`B3ptCEIfg^okKNgUE!l{*S%qa;jQN>^8JUWS z8HZ6Bj=}joe_;24FZqbKd4*?rjQ?>rxA1TN!KIwX>72lk9K_!2!nSP2`mDimllHC zJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*F1sUJ3i+F-sB~o<`M4WPHy5FuHa(M;Z%;} za1LNkc4BKbVO>^Zd6r;7=3-{1VN%9pbVguE{>&YCed23A;ay(id7j`w?&UVF=V~tJ z0?yP7M26z8oPpP8zTs2e<8@x( zNgm=q+|CXBlfQ8xXK^yea47q+J3Fu?8?iR4uq=x)KXWi6Q!z2)Fe<|_IKSrz>^|@% zAMrM?@GOt?wQl=C>96F8EC*qdG0md#k7HCU0QSeSX3mFbwA2^f=+7@9%& zC3|4^md|*fH+Ye!c$oik2RHIB{?0|5%_$tqVeHQy?8sJZ%sQ;faxBgQ%*jkl%_NM= zXbjH~{E;p2`p8#&%safwb3D!i+{3M0$5mX$`JBOt9L2%x!>(+{=4`;4ti;kR!o1AJ z^i08ojK#<2n@-eSpu(5e9b4k%WFK(6FkVh+{X1>&E;IcnViJY9Kycr#`bK% zhOEWPEW@JA$L!3&luX3fjKZ)C#&4MeyZ3y-hrGqhJj0{h&t2TiwOq+1oXcq(&k-ER zUhK>^Y|479&I&BaLd?x9Ov_}9&lrrzQ2doC@cPU*e9C*g&I>%rL;Q!^xq*N3H!kEX zPUaX6Wj}Uj2exD*)@Bu!WijSw4rXL3CT1K)WjF@s_l$wv2fpMZ-sTmaz z`3IMB9;b5xM{*E*vkTj@8SAqKE3y;|GY_*e9g{NwV=@v$GYG$A2<+bS8SnE3FY*)* z^Iz`ZM*hX$xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>-;TeKI(g$82`HGKu zhgW%y$9aHzxRvX;ipw~kGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}DVUJ47@1)hlwZ>Y zcJKI{4|tQ8c$!DJk2|@EYq)}oIfqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{ zA^9_H;Pr{G`Gj|QjpuoS2f3HqxSp%IoC`RUlQ^0~*q7bdo-NprwOE;DSd{sgof(*t zi5Qzv7?#2KElpteo-g>2w|JRnc$E9Oi<`NYE4hSoIgR5vf&S&!9OfhAdp zxtWD&nT+ungAo~uzfuQYpZSJQd5_n5fhT#0|8P4u@K656g`CC79K)gP$L{RFmTbh@ ztirM^#{A5|j7-JEjKio5$Kd>)DzN*&mwd$Ayu!0Q#{amRTlhEs;8M=xbWY$%4q|V1 zVOut1eb!(_mSSP%VOFMNawcF*Mq+3N;g^(w-CI86ecs?jp5kHt%N^XvzxX>BaW1fFG8n%l4eZ|Y z1t0PjFY^qKazA%*GuLt@mvAnpaXd$GAbYVh+psC?u{tZTBnvS&voI}_F+O83B17?4 zlECXT-|#8#@j5T?BoFZ)Zs!L6$=|q;vpAV!IF$X^ogLVcjaZviSeC_@pE;P3shF5? z7?t4|oZk}%b|3hXk9eC`c$UZbA9r&L|K=ZD%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2 z%5+T51dPc@49y_?k|?ly%V)gL8@$LjedH@X<{e(;IUeT$?%`Ih<0>xWe9quRj^beUVOO?e zb2ea2R$^%uVP0lqdZu7P#$sfKVNiZe5ZJxrb3WirUgBvU;XdxL)KztmSIumV|Hd>N+x1#MqyY6^L*C+Lp5amM=PqvM zTCU_0&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5XADMUDE^8Yczxy@KIJ`L=LMeR zA^yYd+`vEi8y9jGCvyykvLCy%16#5YYqJW=vKaF-2QxAi6EhB@G8}{Rdz`@T17GqH zZ}SSz@)-Z)Zf@b<{DVt5kJCAUBRPn@*@bP{jP+TA6(yTF&T-W8H8VA z2X=4yjQ4qi7kP?@`7d{HBmd&>T*TR&!m%92{_MeyY{kZ`!>TOD;w-?N%*518!nlma z@C?Bpu>!A;e8tDS!>c^U<2=AU+{$%a#bun&8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~ z6imoijLa|$%C9j4yLWuf2fWEkJk2BA$DQ27HC(~PoWrRc$Kf2np6tZdY{I&%#_}w| zg3QItOv9v%$LNf}ko*}V@cP8pe8RiD#`8SEgWSt)T+h{9&IO#wNgT}~?8|O!&lYUR zTCB`6EXsV$&J0Y+M2yWS49j5r7Co?g&lh~iTfEFOJj(st#m!vHm0ZHPoW}7S!GY|> z&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSU(o`u&wRtDyvOUjz>_@0f4H3+_$PnkLeAo3 zj^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m?t8rXf{OFrUlUg23D2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@Jp1y?k%73K5y_MPw_DS zz4 zKO+WSpZJ)${hGr0c2^-kGwa36Pa z6W4GB7jq7$avXj=sKDzJU-Jp?@*2(miY&##%)_iq z$K*`Fn2f~G48kwL0=u_-#{0a%i#)}{{Fghpk$>@bF5+xX;aCo1fA(NUwqj$}VO5r6 zaTZ`sW@2h4VO&OIc!uDQpn=y%zT#uv;Z>gFaUS3vZsj_z;xf+X3{K=I4rU*AWji)! z1J-0EmSz#=Wj3Z~3MOPMMrIfW<<}sA-8(+#1K#8%p5_tm<4$hk8m{1C&f!#!<8TgO zPj+H!Hep>>V|kWfLFQs+reRXXV{}GfNdEk_`Tws^e9b4k%WFK(6FkVh+{X1>&E;Ic znViJY9Kycr#`bK%hOEWPEW@JA$L!3&luX3fjKZ)C#&16ZyZ3y-hrGqhJj0{h&t2Ti zwOq+1oXcq(&k-ERUhK>^Y|479&I&BaLd?x9Ov_}9&lrrzQ2g~H@cPU*e9C*g&I>%r zL;Q!^xq*N3H!kEXPUaX6Wj}Uj2exD*)@Bu!WijSw4rXL3CT1K)WjF@s_wRw-2fpMZ z-sTmaz`3IMB9;b5xM{*E*vkTj@8SAqKE3y;|GY_*e9g{NwV=@v$GYG$Y z3+&$V8SnE3FY*)*^Iz`ZM*hX$xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>- z;TeKIz6M?&`HGKuhgW%y$9aHzxRvX;ipw~kGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$} zDVUJ47@1)hlwZFDcJKI{4|tQ8c$!DJk2|@EYq)}oIfqj@j>9>CJ=uw^*@SgjjpbQ_ z1(}PPnTAOjkI@-{A^G!j;Pr{G`Gj|QjpuoS2f3HqxSp%IoC`RUlQ^0~*q7bdo-Npr zwOE;DSd{sgof(*ti5Qzv7?#2K?Nea)o-g>2w|JRnc$E9Oi<`NYE4hSoIgR5vf&S&!9OfhAdpxtWD&nT+ungAo~uzdiBaW)XKY z9iQ_7Z}JjP^9c8GCpU2oS8y@sa4N@fI0vvNJFzvJur8~yJWH@3b1^g1Fe&3PIwLS7 zf4&L4KJhi5@Gh_MJWuc-_i`K8b2XQ90cUa&M{@}KvK!m81sk#!E3*uXG9R-u15+{) zV>1fFG8n(T4(#6Z1t0PjFY^qKazA%*GuLt@mvAnpaXd$GAbYVh+psC?u{tZTBnvS& zvoI}_F+O83B17@ltHA3s-|#8#@j5T?BoFZ)Zs!L6$=|q;vpAV!IF$X^ogLVcjaZvi zSeC_@pE;P3shF5?7?t4|oZnvtb|3hXk9eC`c$UZbA9r&L|K=ZD%6Xj52^`5m?9DE0 z%Vw<48m!1tEX+L2%5+T51dPc@49y_?@*=Q%%V)gL8@$LxW ze9quRj^beUVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVNia37TCSxb3WirUgBvU;Xdx< zCa&QMF6JCgL)KztmSIumV|Hd>N+x1#MqyY6^ zL*C+Lp5amM=PqvMTCU_0&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5XADMUDE@jJ zczxy@KIJ`L=LMeRA^yYd+`vEi8y9jGCvyykvLCy%16#5YYqJW=vKaF-2QxAi6EhB@ zG8}{R`=h|_17GqHZ}SSz@)-Z)Zf@b<{DVt5kJCAUBRPn@*@bP{jP+TA6(yTF&T-W8H8UR26k`xjQ4qi7kP?@`7d{HBmd&>T*TR&!m%92{_MeyY{kZ`!>TOD z;w-?N%*518!nlma@C?Bp4+5``e8tDS!>c^U<2=AU+{$%a#bun&8Jx&b9LzrK%64qd z2CT_SEX^X!%WO=~6imoijLa|$%CGkWyLWuf2fWEkJk2BA$DQ27HC(~PoWrRc$Kf2n zp6tZdY{I&%#_}w|g3QItOv9v%$LNf}ko&TPY`tjFrCz>+M)+|0tXOvd<(!H5jSUv~np&wRtDyvOUjz>_@0 zf4H3+_$PnkLeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3V{m@I9oT)~OFrUl zUg23D2eCK1uq~UhK5MWdOR+HXFe}qBITJ7@BQZ3C@XM{h z?k%73K5y_MPw_DSz4Kd%Q~pZJ)${hGr0cxg6NNwa36Pa6W4GB7jq7$avXlW zg~00*U-Jp?@*2p?mb`dA#d?A&+sVsa~C&rEmv|0=W-gya|8#n7dx{Jo3b9OvjR)95OXsN z(=r+3GX^6v6n~uyygu^{pYk5B^8!!u5dYzJZs4E%jSD%8lR1V%*^k}Xfi2mHwONH_ zS&aFagBh8Mi5Z7c8IHmE{cK?OfiL-pw|RwUd5r&YH@EO_{=uc3$LXBFksQR{?83He z#`>(miY&##%)_iq$K*`Fn2f~G48kvG0=u_-#{0a%i#)}{{Fghpk$>@bF5+xX;aCo1 zfA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQ(}CAVzT#uv;Z>gFaUS3vZsj_z;xf+X z3{K=I4rU*AWji)!1J-0EmSz#=Wj3Z~3MOPMMrIfW<=0bz-8(+#1K#8%p5_tm<4$hk z8m{1C&f!#!<8TgOPj+H!Hep>>V|kWfLFQs+reRXXV{}GfNd7z-czxn)KH*(n<9VLo zLGI-?uIFkl=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKZBF1JEhGj5*I}zBu=Lv0*p|&$pEX#KrC6AGn3d_6 zoCz3{krk4$xU3t6B5=P7^+LjeG2wr$(CZQHhO+qP}n zTy3@5GPk&F`@MU9&i`QyMr0`dIvIF<<{Licecs|_p5rMV;a+azdamF?&f;W_;ZXKt zcXnV)Hezj7VObVqe&%3Creb2oVN`}=aDG1#*nQwjKH?o-=LMeO2_EDwZsr;;)${hGr0cIUd-(Gdp5{^R<92S~ zN-pATPT^P%V}JHwN48>P)?rnaV{sN>PG(|iCShDgV|a$(k7I$?N50}?-sKHmlWk-+N{ zU-Jp?@g^_vPyWWk+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3&luX3fjKZ)C z#&3rMyZ3y-|M)Mj@o)aY<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r z_>94b48>oE07E@TfEG3JjEm2%WYiG6(m ziY&##%)_iq$K*`Fn2f~G48ku50=u_-#s|F3D?HEBJj#9C&JA42MV!qk9Lr(s&mQc^ zR&2~VtjcmM&H~KIOiaxrjLT>Y&k+2vKk)jpT*mpF!HFEj z!R*7XY{%woz?!VY(k#Nf%*OOg!Gw&($PB}v{JJl&d&lQ|$bWd1fAM!7<9_boMy}#w z&f!#!<8TgOPj+H!Hep>>V|kWfLFQs+reRXXV{}GfNdDX#czxn)KH)vy^8JUWS8HZ6Bj=}kT zS77&nFZqafc%2t`h9`KCySSNaxRmoaof9~cgV>v0*p|&$pEX#KrC6AGn3d_6oCz3{ zkr<53lks{?23E&mG*zRb0$DoXT+=&H?PnPHfF4 ztjlUF&k`)iT+GZgOv-qS&Ik<2pW6bjPkhZMyvLio#6S5P4|5N1fFG8n&Y4eZ|Y1^?r}yvD!z2aodrcXAU~a|!2i z8pm@42eKDCvkjZF9;>qgOR^AiGYiu)8RIhsBQg|!Z3(^|@%AMp;a^8(NC z1P^i-H**b_avrC10!MNXd$SAMvKi~M1}m}@3o{S1G98mM0b?=}Lo*1!Yzpk&@);lS zHm~qJPxC1EaXU9~B^Plvr*JHXu|IpTBU`aC>#!=zu{aAbCo?fMlQ1r$F+4-?$Hu_x zBVX|`@A3vO@+?pC5O;G6*K!%>a|S1J6bG{pyRsddvjJL)KztmSIum zV|Hd>N+x1#MqyY6^fBcu%_&5LHaUS4KZsKY#;apDRc#hye_F`wYVN=#) zbyi?W7GiE@VOl0*e8ylzhT^Zaf!Alg;Zxq{Enen1p5hVih~wR%JOBX94D9CZ=W*#$_~yX9)gS6?lE*D?a93-rz-^LB+{$%a&IO#wNgT}~?8|O!&lYURTCB`6EXsV$&J0Y+M2yWS49j5r zwmh(V&lmiU|MD9D<{v!H1Ki0?T+Jn%%V`|X5gf=~?94W7%6hEM3M|P&%*`xJ%Vdnt z7>vkJ{Ix9b`ph?c%KN;<%RI+ZJi@))#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5| zj7-JEjKio5$Kd?FG_d=?mwd!Kyv_?e!xKEnUEItyT*`Tz&IugJLF~;gY|Cb>&l;@A zQY_3o%*u33&IF9fNDR#&{IVpld&_5hz}vjS^E}O?+{f+Qz?EFY*_^_$9LE0a!H#Uj z#;n7tEXU$3z?{s))J(#-jK=T`!5@nQuaA7i$GpoMyvVaW$wS=DEnLfGoX;7Y$Wa{3 zKJ3bNY|aL($x1BEBFxKdOwSZd$XJZbFbvACivqiMe9njbhgbO*f9Emo=MHYxeoEAaZn*L=czyva-alfUsW_i!uMaXA-oCMR(;hp;cZ zu{~R`A#1TR%djZ(F*`FbB@;0=qcALk@!QP6?mb`dKmN;W{F{I9I1g|qH*qzWa4x5D zJV$UKd$BXyuqo@YIxDaw3o$pdFfEfYK4UN17GqH@9;V=@C;Az zAa`*y*KjH4aXKe(BnPoKyRa>ru|8|CB1^F_^DryZF*y@3CL=L4gYe6=!0s)d@d0o1 z3eWR2k8&Tka|2g$5odD>$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!kF#E78+p#$tuqG?9G>b4VvoSqWFd<_xGQ%(^ zzfKA4-tjpf@*iI1U;LfNxSu(LeAo3j^R-DV|R97 zOEzL{R$*BdV}9mfMy6t7#$i;3V{m?-5ZHa-OFrTqUgrg#;Rzn(E^g);F6BH<=LC-A zAogY#wq-NcXAM?lDHdiPW@S1iX9C7#B!*@XeiE*GInMW8UQrUgTMxjy@ zzw;RPa|bta6&G_3r*a&Ja{zm?6I-(h>#`clvjht=7c(;rlQJHoGXg{M=a|6j6JPTQ z@9`!t@lXE7!`#EIT*u{Hz?q!H(Hz3Q?8f$N!G^5G$}Gd8%*X7^z?4kH*o?xk490Jx z1H1Qp!T$z>yrp-t5A*Y{vSm!HO)! z!py_0OvmI*z?h80&%(3+|CVL$wi#aDICjT?9U$T$X0C3 zI;_faEY1SV$xKYmB#g^w49^h!F+A}4$X9&KyS%}RJj;_j#NFJ&wOq#eoWY44#lh^u zu58EVY`~hV#L_Inyv)Y*Ou>YV#mEf9p!_;4uzSbne8_)zm4ESf9^-!Q;6|?EV$R`I zj^l6+U{7{pYc^qBR%3aVU_s_$W~O0M#$$9wU`YNP8hCx;Yd+yU-sC0z$=`UGd$^VB zxSR_(lan}_L)e$y*q$xekhNHuWmuH?n4KAzl8G3bQ5crN_-#mF_nt5KAOGbw{>?vl zoCmm*o4A@wIG58no+CJrz1W#;*p&5HofTM;g_xUJn3l;HpD`Gbq4;ZX;Pshr_>}i~ ziWxsB_&f(to|lR1V%*^k}Xfi2mHwONH_S&aFagBh8Mi5Z7c8IHmEeNbTc zfiL-pcX*u_c!noFed6<>yn4Ae1laUyj zLHK20VE2~K_<*;0h39#iN4byNxq&OWh_g9`V>yid*@GR~ij7%^RauV3S%5j2iK&@{ zaT$%_8G=6s1YRHcijR4hH+Yd}d6I{?n_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG z*_fUwn2@m;nPC`|U;77k@A#Y#`46x1FaFMB+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9 zEYA`w$Xv|KG)&5PjLrxQ$)EiKuTOlQfAtBxKJyKq@;-0zGSBf8k8m%yaXnXX zA!l(i$8ae7u{%4kB^$9etFSDKF+X!KBU3Rk<1i}2F*v{X4(vYgB_Ht)uk!-W@B|NX z7dLYamvSDba{@my(B zG4JvQFY+u;@(_1(3)gZP=W_-pauf%%54*A*o3jCHvJy+P2=g)<(=!DVG8Q8<41@A( zkHGF7pYtLA;Z^>{-+7Gtxq}qIeP7M26z8u7THQzTs2e=Ph35IiBJX?&UVF=L#<5EKcSa4rM=fX9u=q zBi3dWmSr*KXAWj$Dkf$eMrAk#=l3pw-3PwpBi`Y4Uf>y?;6d)1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=APB{MJ6O zd(RjAkN@%-|K=Y&&I8=ZO^Y|479&I&BaLd?x9Ov_}9&lrrz zQ2f;{@cPU*e9HU0#mhX$Q#``G+{X1>!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B z#EiqJ49DR7-ZrrNz?Xc)JG{;dJi`+_$X(pbHC)PhoX!ax$wBPRE^NzYtj`*($WkoK zJj}{;OwI(1$w&;%ApFuMuzSmAe8Ahh!t*@Mquj^s+`yGw#Mzv}u^h(!?7@y~#m20| zsw~IiEWn)1#MDf}xQxc|48b3*1Fw&K#mBtM8@$M~Jjp}c%`IHZWt`6$oXAle%s%YO zc5KcDtjS6&%_7XpY)sD-OvqS_%rFefudM>RcYMx={D)Wh7k}q5?&l6}S&!9OfhAdpxtWD&nT+ungAo~uznTYLpZSJQd7rm< zndf+lN4S^UxSlJxkh3_MV>p!k*qt5Nl8soKRalnAn4dYAk*S!NaTt~17@Xgm1$H0! zl8<iiMenS(%Q>nSe1FiJ=*U zUz!GXZ~2T5c$-&vo~L<~`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{6wBF8Hxr++`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_X zEWv`z#mr2@q>RVtjKGlm*(mV(#MgYnd%Vd@{FA@&F!yjP*Ks))a3&{lG>5P+yRki6 zupw))GRv?i^D#R!FeMW)Hlr{sgYjF#!0tU?@IU^`Yy6vk@Hh`}CpU35mvAnpaXd$G zAbYVh+psC?u{tZTBnvS&voI}_F+O83B17?4gTU)E-|#8#^A<1j98d8G_i`K8a|IW2 z7AJEIhq52LvjbbQ5o@yw%d!~rGY2y=6%#WKqcR+W^Lzck?gL-)5%2IiFYpXc@E~__ zGuLn_=W#kGa3lw@H@mPco3TD?up&#bF!L}g(=j;{FeW20G=uO>v0w{rtmauH{93deF7`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&v!!rbb)D65o@)aNR zE^qK6&+;S>aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8F*3t2D8JST z?B4M?AMzhwunoU@j)mWY-Sdh7xnQ54m@fe*E z7?MA02VS4}nooF-H+hMF@;4sl9&Y72F6RQy=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpI zA?9Wlre!k5XADMUDE_J$czxy@KIMJh;$@!WDIVcoZsU5c;6l#gWRBrb_G5Q;U`sY) zZB}7f7Gr+qU`D25V#Z-qhGTGkuMyaN;7dN@9bV@Jp5X}|HCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$L*Q$ZtJ3i+_{==*Mi@)<2 z_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54U;k+qcZ|S@@JL6>l0t|3GeYH zFY!3phtz5_DT)>%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfj;l>@u? ze8K&TPY`tjFrCz>+M)+|0tXOvd<(!H5jS zUzGx{&wRtDyw6*_%yT@&BizevT+bC;$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%1049@Qr1G^7=$w$1y>%71-Ji&w9#m!v9rJTp(+{ z=4`;4ti;kR!o1AJ^i08ojK#RF30t z4q#7qVrw>GT~=dxmS92VVrHgcQpRI+Mqo((EE{-z;%h$PJ>KLc{>k5Xn0vUD>$sc? zIFpk&nnT!^-PoQj*pRhYnPpg%`Iwy6n}e7?Y70nnC!b zWMKD}&-j41d4=bBnn$^h+qr=&xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzknTe^HgmD>- z;TeKIN(5dX`HGKump6EkXL*u`xSLzJmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$} zDVUJ47@1)hlwXSncJKI{5BU$T@-P0*W8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnwZ zEXZ8U%rs2Oc#O^n49TCx0#2>Y@d+p`55 zvKA||42v=!voixzG7)1l3d1rOzZDJa-tz_j{Jauq7L@Hmk5Ki!ncQFe6hjG2<{Q!!bC&7Y^(`@FgGd4zKe9&+r5fau+vq z4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w553@2IlQRKhG7>{G2)`5x?B4PjAMiG>@H|iR zDEDzYH*h5vaW;$gmqbsR;7)GhYA)eiPUCov;6V0bXSQKe)?;;6U`ZBY zZf0RxCS!cYU_^%Eue^cRXTIT6-sde|<~g3?5$@$SuICCa10K5pj*uH+)l<`jT-0edH@X=3U<4MV{qJ9^!6p;aV=^ ze9quRj^beUVOO?eb2ea2R$^%uVP0lqdZu7P#$sfKVNia}8Q8t!b3Wuhyvo1$JCAWc zcW@(DaWUs`D#vj+2e2nQu{E2pE~~LTORykwF*DOJDdRCZBQPX?<_Nq#@im|D9&hpz z|Kx8x%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1ZVEmRnuzSxJ z{Ez?g8vo`WJkA5$$xU3%C7jD?9M2IP$X@KsHf+jztj-E7$wJJ{EKJK}jL#U1$WZ*1 zE%5rxH+;(byv55r$5TAQz1+t2T)~B$#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI#l(!m zs0_#8{GK(i`@olc#5=ss3p~RUJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|tjJO<%skA> zbWF|!jLAq0%^>`eC9r$TXMDihyu$N5&7<7M?cBhXT*TR&!m%92{_MeyY{kZ`!>TOD z;w-?N%*518!nlma@C?BpnFFtne8tDS%NxANvpmT|+|4aq%VnI;8Jx&b9LzrK%64qd z2CT_SEX^X!%WO=~6imoijLa|$%CDIMyLWufhx~_E`4@lZG4AIMZsaO1<{VDtI1c9k z_GBlvW)s$BHI`=y7Gy4FW*R1CJVs{(hUCwTf!8O#<`drIO4h`E`CX_<`i8G{iSioenaUZ44fPkEoWc$w#T zibuGY+qj-9xRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D;TW9X(*<@P_>zx! zhu3+5XLy1Kxr>{*hD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hu48gkRDI zc5nHN4|tnbc%G+ul>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hWn3_o#m(duW zA^0Or;PsKO_?UNjgBN+0CwYjwxrJ-FjPp5z6FG{5*@s=(j?LMCHCc(JS%i6+jp>Js{;T*u8?8Me=!n&-+@+`rE z%*D)1!=#MI=#0RS{Fy57`o!0K!h5{QOZ=0+@i6yrE7x&37jPygaWsdpFT1flTd*N( zu`#;g3up|pHH?uG;lQBMHFd{?oSBk*vGvDwj@ADQf^Bhm{2={Uu*K-9Iauz3Z z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY$dx!0rQI@)7UwIxp}HPw*gjaWmI& zDd%xICvYSOu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$tF*JklOR~W3EuZlLZ}SSz^E8ig zAGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAULeoyWMJJGhanxR`S|mE$;^1K5+D*qTjPm(^IFC0LNTn3-vql<^py5g3v` z69-OiLjeqkG9_In>63*o`j^_vtWG{AR8#ZM;$)8DQ1)YYc3?|3Vr^Do zSr%h{=3qvqVq(T&REA@4eoqkCec($z;vHV+1)kvv9^@`=<{B>LJWl5Xj^rTrW*4?) zGuCGfR%9s_W*%l`IwofV#$+UhW)OafAK1O+Gd|#LUg3G3=27nBc5dKGF5+xX;aCo1 zfA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQc!AePzT#uvw!0QuV^9k?qCNJ?% z{>H=H!>wG$72lk9K_!2!nSP2`mDimll z^Zd6r;7=3-{1VN%9pbVguE{)`%Ued23A;XU5uCH~3Zc$j;*mFu{i3pkUL zIGRJ)m)+Q&E!dE?Sea#5l=+yQ8JLoZ7@JWTmcjTfN?`Y%FZdt- znoBsB(>R_ZIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?Gj)D{|oVnQ!=%_j!w#d5))e zgnPM->$!ppIg67yhC|tp-PwUH*@(4Sg=JZc`I&VE2J9`G|LT zofmk9CwP#%xS4CXl=C>96F8EC*qdG0md#k7HCU0QSeSX3mFbwA2^f=+7@9%&C1POr zme2Trw|RxTDkIhl#6nS^l}jo}%B zKOzKPANh)pd6zeMk!N|5hq#+txR%Q}pEEd-qd1s-*p=<2n@-e;R3Hue9b4k$D6#wKlvLEa}T$29hY+fXL1rpa|rvg8{4x58?qKF zvkZ$eAG0$9Q!)`_GYZ2p7{7%L?B4SQ|Kq>B#=rRokMjU`auZi`3FmSe$8!V+vKKqE z4V$tatFr=2vJi7K3)3$G8BJ>3A{e@4WIHpZ}BqE@f446FSl_$S8yR`aWcnn zDEqNHJFq1iu{Nu)EQ>Keb1)-QF)`yXD#I~2zlRR&KJXT@&+&R zEKl+fcXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~1rstBBQp$x@@t5|?j4`= zA^+i3{>9&UjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOjkI@-{A^9_S z;Pr{G`Gog)lb84>f8$~9;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lBoCSq(x zVOR#^w_t(Yd%oa*{Fm4GH~-*q9^g)H;%YA8Tu$S7j^IG{VrRBtQ`Td3R$xgMVs2(( zS|($B#$ZH-;;*2A*Jr-rQ{Lw-UgkNT;t}rUHm>IiF61mu<`@oTKXzvawqzsLW)+rY zG3I9uW@IWRW*kOkI0onUAc5TnzT_j`;dNf%8J^%l?&4;y;Zn}ybWY$%4q|V1VOut1 zeb!(_mSSP%VOFMNawcF*Mq+3N;g?@K{=a+6XMDihyu$N5&7<7M?cBhXT*TR&!m%92 z{_MeyY{kZ`!>TOD;w-?N%*518!nlma@C?BpKLf9ie8tDS%NxANvpmT|+|4aq%VnI; z8Jx&b9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$%CA2HyLWufhx~_E`4@lZG4AIM zZsaO1<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW*R1CJVs{(hUCxhf!8O#<`drIO4h`E`CX_<`i8G{iSiod=F zUZ44fPkEoWc$w#TibuGY+qj-9xRA3rnPWJV{n(uy*piJ{n^jnr#h9Ntn31WNm~j}D z;TW9XzXWz4_>zx!hu3+5XLy1Kxr>{*hD$k*(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49 z$(evL8Hu48gkL@fc5nHN4|tnbc%G+ul>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR z1(=hWn3_o#m(duWA^77{;PsKO_?UNjgBN+0CwYjwxrJ-FjPp5z6FG{5*@s=(j?LMC zHCc(JS%i6+jp>Js{;T*u8 z?8Me=!n&-+@+`rE%*D)1!=#MI=#0RS{P`j9`o!0K!h5{QOZ=0+@i6yrE7x&37jPyg zaWsdpFT1flTd*N(u`#;g3up|pHH?uG;lQBMHFd{?o*So;$GvDwj@ADQf^Bhm{ z2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gdu4x=(0gY)~_!0rQI@)7Uw zIxp}HPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6E7LJK6EG$tF*Jkl%bURN zEuZlLZ}SSz^E8igAGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAUL zf4mO7KJpbG^Db}jBG2+94{oyWMJJGhanxR`S|mE$;^1K5+D*qTjPm(^IFC0LNT zn3-vql<^py5g3v`Uj|;E_?l06k2iUVfATjT<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YU zW*HV`K4xbIreq?OiLjeqkG9_In>63*o`j^_vtWG{AR z8#ZM;$)8D zQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T&REA@4et#C&ec($z;vHV+1)kvv9^@`=<{B>L zJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`IwofV#$+UhW)OaP8rZ$%Gd|#LUg3G3=27nB zc5dKGF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!uDQCxO>TzT#uvRVtjKEL~${)`HyH9+>XS~lF zyvS2L%st%7bzIH`oXJTX%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy%_t1Z5d8Ht@cPF0 ze8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r_>94b49(y9 z?~}mpGympuKHyDW;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq(T& zREFap{Eh!S4(vYgFFxU2UgLS5;6d)+gx?zx!n^$<2$GD$6xRI;4m~%Ll<2alH z*pr>unoU@j)mWY-Sdh7xnQ54m@fe*E7>Ysp<9=ZGiEsFf_j!XCd5VX*hg-Rh%ejCv zIfT@!T8_p z!0QX&@&zCA7BBM*k8&Tka|2g$5odD>$8s3^vj;n}6&te-tFj!6vjB546H_w@<1!k< zGbDrX`>nw4BVY3=@9{b>@FWj$H@9#tmvKI4a3V)>F#E78+p#$tuqG?9G>b4VvoSqW zFd<_xGQ%)9f8GqdzVaPk@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-Rv zG8Z#54U;k+qcZ|SF(`lB2<$%b4WIEoZ}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N( zu`J-}4n8^A4}_9FOw=cXAU~a|!2i8pm@42eKDC zvkjZF9;>qgOR^AiGYiu)8RIhsBQi99=fBqiyU+Za&-s8id5NcagnPM->$!ppIg67y zhC|tp-PwUH*@(4Sg=JZc`I&iiMenS(%Q>nSe1FiGMN}|GN@+ec@Za;6vWxWuDRF30t4q#7qVrw>GT~=dxmS92VVrHgcQpRI+Mqnrg z<&TSj-6y``Gv4P7UgRkr<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbIreq?< zW)y~H2>!Ydczxr0zT#uv;Z>gFaUS4KZsKY#;apDRc#hye_F`wYVN=#)byi?W7GiE@ zVOl0*e8ylzhUV}5_k3XYnSb*+AMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu) zEQ>Keb1)-QF)`yXD#P&){>FdK1$H0!7oYGhukk!j@E~__GuLn_=W#kGa3lw@H@mPc zo3TD?up&#bF!L}g(=j;{FeW4MPX^YV#mEf9;QVwG$J ze9Sw%%5yx<1Ki0?T+Jn%%V`|X5gf=~?94W7%6hEM3M|P&%*`xJ%Vdnt7>vl!{GI=v z2<$%dZ$9S(-sB~o<`M4YHm>IiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWRW*kOk zIR3%k_|Ngc?gRhg6W--Dp63Z3yid*@GR~ij7%^RauV3 zS%5j2iK&@{aT$%_8InQx{b*qKk+1ob_jsKbc#?;>n_IY+%Q&AiIFX|`n0?rl?bw_R zSd*1lnnjqG*_fUwn2@m;nPC{5KaT`nU-^zN`G~i9g=cw;`?-S~xr&Q9hf_I@!#RLG z*@>;$gmqbs$MhR=APH+Ye!c$j;*mFu{i3pkUL zIGRJ)m)+Q&E!dE?Sea#5l=+yQ8JLoZ7@JWTmLd4-P~i2A@A-<4d52edj>ma`JGqIg zxrB2$jpI3j1KEq6*@jJ7kJVX$C0U5MnT2VYjPV(R5gD4l^WTGk-Dm#I=X}7Myu{Ny z!oA$a^<2S)oW;o;!=dcQ?(D#pY{c5E!m=#J{LI0OOvS{E!>A0$KlmH}IS|-=;9q>g zyS&EpJi&w9#m!v9rJTpT@G8&oI1g|qH*qzWa4x5DJV$UKd$BXy zuqo@YIxDaw3o$pdFfEfYK4UNOM99oUkMSesQ?mc^K#Ihc{Dn3!=GmErgYf8#$p1G^9Wi%)o$*La>Mc#ylenQOR| z^EjOoIFf_dn_bwJ%~+o`Sdpbzn0c6$>6n}e7?Y9sCxh|79f8*uzU2!($NH=pwXZ}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y z81pj+GcpwuGY+FN9RJ{N{AW{O_kn-$3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8 z>$3(cvJ?w553@2IlQRKhG7|q}F#fkO@cP2He8Gpj#mhXyquj^s+`yGw#Mzv}u^h(! z?7@y~#m20|sw~IiEWn)1#MDf}xQxc|49Ot;z9F#t$k%+zd%VsIJjp}c%`IHZWt`6$ zoXAle%s%YOc5KcDtjS6&%_7XpY)sD-OvqS_%rFejpX&p!uYAXse8k(l!m~Wa{oKKg zT*bwl!>Js{;T*u8?8Me=!n&-+@+`rE%*D)1!=#MI=#0Qn49Xwt0=rLq!)LtD8@$L< zJj^}Z%5_}M1)RxA9L*u@%WiDX7Hr5`tjsbj%6!bu3{1&HjLj$v%MkpvHt_n!_k6|2 zyu+(J$KyP}o!rFLT*A4W#_=4%f$YW3Y{RCk$Lg%Wk}SmB%)+!x#`uiEhz!l&`R|&* z?lb@9b3WirUgBvU;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb2oVN{0W zAN-B~tPbox@Gm~$U0&mPp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T)?h`JVqxZCR;FWe zCSXiP;-3u0|5gQFU-*_U_>i}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{6wBF8HbWF|!jLAs+lfn4k;=t<* z-|__?@)j@i43Bajw{rtmauH{93deF7`?Ci-vK1S%4y&>pi?aZ8G80oX3F9&v!!sm< z@cW{`?jv9GDev(*FYqJ}aW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!pW8 zF*3t2IDak-yuR`sU-A)e^9s-M8257rH*ysha}K9+9EWoNd$JQ-vkB|68q2c;3o;io zGYyk69-}h?Loq0SEC}pA@eQBxK5y_MPw_DKa4XkwITvsyCvh}~urIr@JzKCLYq2uR zuqg8}J2NmP6EQZUFf2px*Zjci8{hL4AM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X& zvL36m0!y+Gb2AImG8yAD1|u>wf9JpR0=v)ro6q@xH+hMtd4zkpjqACB3ptCEIfg^o zkKNgUE!l{*S%qa;jQN>^8JUWS8HZ6Bj(_ks{xdhQ`@p~Wgm-z3=Xrt$xr>{*hD$k* z(>Z}7If%X4g>Bi4^;v@zS&D_3hgq49$(evL8Hs-~82_6SczxkpzTiXN;$@!UQSRe* zZs1BT;%rXgSPo-<_FzZ0Vq?}}RhDCM7GO?hVrnK~Tt;JfhGYnJHCJ2qzn)?_7?W)bFPHl}9^CS)u|W*7$N&sl-jSH9y* zKH_a&;aMKze(vB#uHs_O;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9pbVgt(2IY^L zf!!y*;WOUn4PN9a9_AiyP7M26wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x) zKXWi6Q!z2)Fe=0G5B|n~rUiB%_!pn>F0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1E zYp^0qu`u&6E7LJK6EG$t@lOWhe^UdmFMP`ve8^k8%riX7eca9sT**b8%_$tqVeHQy z?8sJZ%sQ;faxBgQ%*jkl%_NM=XbjJg48reI0=tiV&8NJ_>%72|JjC7H!nIt+`JBOt z9L2%x!>(+{=4`;4ti;kR!o1AJ^i08ojK#?*cYMi5yv-{-%VXTn9o)!O zT+BI~%5fad0qn_6Y|SRD%W5po5-iAE%*-@Q%6N><2n@xb{4pu8`@}bV#{0a%i#)}{ z+{3M0$K_nWnViJY9Kycr#`bK%hOEWPEW@JA$L!3&luX3fjKZ)C!Cw;tuWx+MSA5Jn zyvlPt&I8=ZO^Y|479&I&BaLd?x9Ov_}9&lrrz(EOeMP6+Hi z^KU-q1K#8%p5_tmLJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`IwofV z#$+V^$zc3%T;TPEZ~1}`d5f2MhDW)N+qr=&xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzk znTe^HgmD>-;Te)a_IGBCdmF?J^4Oo+v zSeiwcm)V$}DVUJ47@1)hoIl3|USIi+FZqbKd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^ z*@SgjjpbQ_1(}PPnTAOjkI@-{p%|1uMhAAE_=eATpEr1sr+AoqxRvX;oC`RUlQ^0~ z*q7bdo-NprwOE;DSd{sgof(*ti5Qzv7?vUUYgFL%jqmx2k9mhzd5*_S&!9OfhAdpxtWD&nT+ungAo~;zw_Ubf!$~R&F6f;o4mx+Ji@)) z#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-JEjKio5$3OTR{}~b3ec)ew!n?f2 z^E|72lk9K_!2!nSP2`mDimll@@EPy(1~2jy4|5N1fFG6a7O4!pkcJzw!L@9-+m@i-4~CpU35mvAnpaXd$GAbYVh+psC? zu{tZTBnvS&voI}_F+O83B17|c{yQkJ`^>-joDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ zogLVcjaZviSeC_@pE;P3shF5?7?t7p2Y=%~0|UDc{EJU`m)CfnCwP#%xS4CXl=C>9 z6F8EC*qdG0md#k7HCU0QSeSX3mFbwA2^f=+_$Pz$zX5^Q7rx~SKIAQ4<{2L4K5pj* zuH+)l<`jL)KztmSIumV|Hd>N+x1#MqyZn z;IBS`*EhcBD?a8OUgbF+=K=2ICa&fZ&gC?Y=LimDFLq`dHf23lX9bpIA?9Wlre!k5 zXADMUX#UQBdk1!(`8S{Q0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKaF- z2QxAi6EhB@G93TlZ~UiMVE2K4@d@wp8qf0t4{{eba}Aer9;b5xM{*E*vkTj@8SAqK zE3y;|GY_*e9g{NwV=@x|WHA2MGw}Mtw|v2eyv55r!=v2C?cBhXT*TR&!m%92{_Mey zY{kZ`!>TOD;w-?N%*518!nlma@C?Zy{N5w5`^eXP%6q)d3p~j~+|4aq%VnI;8Jx&b z9LzrK%64qd2CT_SEX^X!%WO=~6imoijLa|$&Y#@_udjT^mwd$Ayu!0Q#{JyEja1$GpR< zJjdfaz@6O0)m*~4oW}7S!GY|>&TPY`tjFrCz>+M)+|0tXOvd<(!H5ja-}!Hs!0t2u z=5s#aO(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7#$i;3;~)Hu z|8x%QKJYI-;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMNawcF* zM&h3g#{W76USIf@FZhtRc$sH-l>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hW zn3_o#m(duWAsK|y{LHVP7VE2h{_>A{?gBN*3M}%WFK( z6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!1tEX+L2%5+T51dPc@{FA}>U+ci@3*Yhu zAMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYR7|8pAUrgYbK+ z!0sbo^C|D~Ixp}f4{l@$m6(92suksv^^8j~p6IXKy=W-gya|8#n7dx{Jo3b9O zvjR)95OXsN(=r+3GX^6vG=Jy6%>uj6{F~4DfH!%Gr+I{XxsB_&f(to|lR1V%*^k}X zfi2mHwONH_S&aFagBh8Mi5Z7c8IFJOH~!N!u=~Kj_=I(yTF&T+}G8q4B5_o;#TfX2!-r{AR;Zg46c5dKG zF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4VO&OIc!p#Ues3JuedKFC>V|kWfLFQs+reRXXV{}GfC2eCK1uq~UhK5MWd zOR+HXFe}qBITJ7@Bk@lL<9~GnuP=Pd7ktQDyv#E^%6;6<4P41ZoXsg5%VF%#9_+|g zY|J{W%5p5u0?f%wOwA;W%V-SGkPO1_bppGOe9fo4$LqYnlRU)T+`_e7#`&DVi5$hj z?8B~X$L4InnykdqEW*6Z#`H|Vgp9?=48!33Sv&Ch%6ELpN4(7|Jj-L;&mG*zRb0$D zoXT+=&H?PnPHfF4tjlUF&k`)iT+GZgOv-qS&Ik;}p!`uQu=~U}e8&5{!HYb_!`#EI zT*u{Hz?q!H(Hz3Q?8f$N!G^5G$}Gd8%*X7^z?4kH*o?xk48dPD1Fvs<&sTiRJG{zs zJkA5$$xU3%C7jD?9M2IP$X@KsHf+jztj-E7$wJJ{EKJK}jL#U1$k6)${ z{>fncuUg>sg>U(S4|$81d4@;1kK4I{E4hfXIfY|6jQ!bz9odSFS%+0wj>TDkIhl#6 znS^l}jo}%RLHNCDVE2))`IPr~ofmkLhq#+txR%Q}pEEd-qd1s-*p=4h`E`CX_<`i8G{iSn!oekih|rnz?;0p(>%hx+{X1> z!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#EiqJ497qC8~>>g*nQw%e8RiD#`8SE zgWSc(miY&##%)_iq$K*`Fn2f|f8I1px54^tcEnn~< zZ}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_guqw;3I14Z*Gch%jFfOApJVP=Fzn2T_ zKJqo6@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~1rstBBQp$x z^Jm$>>nq>!B_HuNukb97aX)u(BUf=T=Wr^=aX1ICCp)nS6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXx zGXqmH5o0q7!!iVal@7eV@jYMhG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3 zup|pHH?uG;lQBMHFd{?qcm7){u=~uv`J4}Ulb3j!N4S^UxSlJxkh3_MV>p!k*qt5N zl8soKRalnAn4dYAk*S!NaTt~1_y>REKP3aZ5B!Tyc$e3Bo+o&aySSNaxRmoaof9~c zgV>v0*p|&$pEX#KrC6AGn3d_6oCz3{k@zQr@xKy**B8F!3qIs6UgjAdE zZsA%k<9yEGM2_NM_F-4HV{63*o`j^_vtWG{AR8#ZMN98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGY2y= z6%#WKqcR--;BWk=P+<3gfAIxo zti!4-$Kou&oXo`3Ov1Q~#_$ZuApBk+u=~i@e9C*g&I>%rL)^_RT+3yg&l#M^Q5?)Z z?8N-WJH%*$*{&lF6^Sd7dt49=hV1Fx@q$CrG>+q}ZFJjVUp!HrzS#hk;b z9LM1tz@F^H)@;JMtj6*z!Gg@i%uK_ijK}DVz)%dzANc~iPkh5?yw4lF$WuJbJ>1H5 zT+RiY$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9JC=AOG{FOKG`o{Ns#mBtEt31c! zJiwjY#MNBFxtzxF9KnI?#m;QQrmV;6tiX~i#N5onv`ohMjKPQu&ENTNp1|%i|K@W( z;7wlQX&&KTZsU5c;6l#gWRBrb_G5Q;U`sY)ZB}7f7Gr+qU`D25V#Z-qhT|XnjsN5h z>^|@>KH*(n<9VLoLGI#auHjP7<8)5oNDg9ec41pKV|~_OMV4Y==3!Q*V{#^7Oh)3L z495R*1zunHmM{2_w|JRnc$E9Nog284i#VH8IF`fMpFP--t=O1#Se4~ioCTPZnV6bM z7?;r)o*@~8-*X0bANiV3d5_n5fhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf(rCEe| znT_e0f(aRmkr{@;`7=l0^_B1Vl8<_@1x$n0I)U=Xjh4xRaZ>noBsB(>R_Z zIFP;AnQhpV^;n%1SdxX9n^~Ba$rzt87?Gj*JO9lZ*nQ^Te9i~F$xA%VBizevT+bC; z$XT4sF&xT%?9L8s$wsWrDlE%l%+DOm$W%10{DZ&opDcmh2mZw;yvu7m&l5bz zUEItyT*`Tz&IugJLF~;gY|Cb>&l;@AQY_3o%*u33&IF9fNc@w*_+RG0>kHrV1t0Pj zFY^qKav!&I16OhpXLAb2av1xw2RpJA8?z3pvK))E0CO@EQ!@$UG8)4(B!lpKroiqa zU-K#N@j5T?BoA>nw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*T(@*Q9D5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?6I-(h>#`clvjht=7c(;rlQJHo zGXg^~D1T%K>^|`gpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i^D#R! zFeMW)Hlr{sL-1Gn!0Q{|^A#WS4zKbYkMjU`auZi`3FmSe$8!V+vKKqE4V$tatFr=2 zvJi7K3)3$GBkhZzv%+I&-|Ou`G7ZhiKlsld%2D4xq=Hhi<3EqL)nkr*?}$D zh_zXTWm$~*nS&XbiisJAQ5lYZ@HhUGHn97^zxafAd5!0Jf(N;ao4JNdIgishfg?GH zz1f9r*^KpBgB4kdg_(z0nU2YsfH4_~e=->VOA~l~;ak4oL*C+Lp5amM<92S~N-pAT zPT^P%V}JHwN48>P)?rnaV{sN>PG(|iCShDgV|a#S5PnY`*nQ+{KIJ`L=LMeRA@1fD zuH`b$=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{EJkJ+2ItRIf!9~Q<4Zo`ZC>G7 z9^-!Q;6|?EV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$W~O0M#$$9wU?>LVkCcJkC%)k` z-scTo>pEw{bmJa3N=LGRJTz`>{Jauq7L@Hmk5Ki!ncQFe6hj zG2<{Q!|@OP#($Cpb|3f`pYSfP@jOrPAa`*y*KjH4aXKe(BnPoKyRa>ru|8|CB1^F_ z^DryZF*y@3CL{4r2IGH81FtW9%NKmeTfEFOJj#9C&JA42MV!qk9Lr(s&mQc^R&2~V ztjcmM&H~KIOiaxrjLT>Y&yWnl?@0o?k9^IiyvOUjz>_@0-Q2>pT*mpF!HFEj!R*7X zY{%woz?!VY(k#Nf%*OOg!Gw&($PB~a{FylL`pS2F$w$1+D?H0%+|M1{$W>g-Ih@LI z9L@pk$xdv|CalY9EYA`w$Xv|KG)&5PjLrxQ#i0C=D6sp)H+;tXyuph+#lzggtz5_D zT)>%}#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#Mq3&unfUp2?MWhe9u>W%safwb3D!i z+{sN`%_W@6X&lcH9LQem%r^}2vKIa48 zu@@ z{4ZYM^@VTwf)9C%mwARqxsThqfh)O)vpI!hIgI_;gB{t5jai3PS&qe7fH|3oshNav z8I9o?l0o=AZeaJ3ulbbsc%2t`l83mPTez0XIG-~(k)t@6eb|-l*qjYmla*MSMVOb_ zn4T$^kg*tqIe6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj z*pRhYnPpg%`Iwy$z>yrp-t5A*Y{vSm!HO)!!py_0OvmI*z?h80KN*bwMGw5b@GW2PA#d?A z&+sVsaXU9~B^Plvr*JHXu|IpTBU`aC>#!=zu{aAbCo?fMlQ1r$F+4*u2){=Q>^|}} zpYk5B^8!!u5O;G6*K!%>a|S1J6bG{pyRsddvjJ#2>Y@d+p`55vKA||42v=!voixz zG7)1l3d1r4e?<o+qj-9xRA3rnPWJV{n(uy*piJ{ zn^jnr#h9Ntn31WNm~j}D;rIuC<3AAtyAS+}Pk5Ktc%CPCkh{2Fed6<>yn4Ae1lacr*gYmxzf!7zlh~wR%JOBX94D9CZ=W*#$_~yXGjL&_wa$;N51A$-s5#%;7K0hZf@aP zF5`U8;6#q%VD@2GwqtWPU`+#84rDKOW*atTJyvH0mSiF3W)}X>@jL}kVJH9q z&D?6awpwkqY}>YN+qP}nwr$(CZM*mG`8oe51rstZV=@xMF*v`659~hhB_HuNukb97 zaX)u(BUf=T=Wr^=aX1ICCp)nS6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXxGXqmH5#uoyBQrch@JHCd z>my(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3up|pHH?uG;lQ99~FghbL z41@A(n85BGpYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^z>^D_rCG8Gf^ zAO6WG{EZ>`Gj!nfiLd#DcX^HHd4dPIi<`NIOF56zIe{ZNh`rf`ZP|?VS%Vc>iiMen zS(%Q>`5*sg4F18e490Jv0=xHo!H2xX%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7t zEXU$3z?{s))J(#E`4^+|cZTAxkb&1{zTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4H zV{ z63*o`j^_vtWG{AR8#ZM*uCR(KHyDW z;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq*ToKN*F;F(iKm3A{e> zHJ|V!#^LHYG-VE2yC`G7ZhiKlsld%2D4xq=Hh zi<3EqL)nkr*?}$Dh_zXTWm$~*nS&Xbii!CT|6~;Y#*qB^CGh&h*L=deyvFl9!Gqkz z&0NE!oX6>$z>yrp-t5A*Y{vSm!HO)!!py_0OvmK>kAE`;|6o`K^L*C+L zp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV{sN>PG(|iCgH#Qi&6PIL-E(A!0R*L z@G0-{Ixp}f4{>pEw{bmJa3N=LGRJTz`>{Jauq7L@ zHmk5Ki!ncQFe6hjG5_J8jKbd-l0V-DUZ41yPk5Ktc%CPCkh{2Fed6<>yn4JIdZ^qys49j5r_9n1<&lh~iTfEFOJj#9C&JA42MV!qk z9Lr(s&mQc^R&2~VtjcmM&H~KIOiaxr{Fi?*Dt~7v{(2pFedZfJ>V|kWfLFQs+reRXXXKY4e1cqi1et8+#z2!6B z=M7%uDIVq?Zsj^I=K{{;B#!0~_GLG=XA3rDEmme37G*wWX9lKZBF1AZMrL@1;Exx9 z*GInMW8UFap5t*I;7)GhYA)eiPUCov;6V0bXSQKe)?;;6U`ZBYZf0RxCSwA|VRS}h z7zX9n=YicjKIa48{5e8&5{!HYb_!`#EIT*u{H zz?q!H(Hz3Q?8f$N!G^5G$}Gd8%*X7^z?4kHc#Or!49^h!@i6fE$X9&KJG{zsJkA5$ z$xU3%C7jD?9M2IP$X@KsHf+jztj-E7$wJJ{EKJK}Ou#sd&WH@dp#1tEuzSbne88K$ z#M3;&z1+t2T)~B$#mOAQq3p-*?7)_6#M-RFvMk2@%)yLI#l-xFe=-VxV@UqIA9#J@ zYd+y!UgLS5;6d)#!=zu{aAbCo?fMlki{u z#i;z9q4?`=;Pshr_>}i}ofmkLhq#+txR%Q}pEEd-qd1s-*p=>dD{Z3%_fiL-pw|RwUd5rtHgB!Vui#dl=IgZ0QfIZoXt=WWiS&ijc zf(4n2nVE)38K1EkjS(1{LHOl%VE2~Kc%L_Tk*9c=d$^VBxSR_(lan}_L)e$y*q$xe zkhNHuWmuH?n4KAzl8G3Pu^5@*8G=7<1zsQdijR4RS9y-dd4M~)iL1GUb2*LUIf4V( zi=EkqO<9lCS%D>4h`E`CX_<@(7>Cgrkzp8=UvCC>@A#Y#c$1fSnn$>o+qj-9xRA3r znPWJV{n(uy*piJ{n^jnr#h9Ntn31WNnE&ukM&WM^$)7g@uTOlh~wR%JOBX94D9CZ=W*{>#4@mA^9-e_ac_KJyKq z@*c1A0#EV~cXJEZavA4y1}Ab92eS{mvK^bV0c)}nOS1^`G8@w~1rstZV=@xMF*v_p z4eUPfB_HuNukb97aX)u(BUf=T=Wr^=aX1ICCp)nS6c2L`w{jhqa{*^^5=V0g`?4F`vjrQn7Avz1i!vXxGXqmH z5#uoyBQrch@Wmy(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3up|pH zH?uG;lQ99~FghbL41@CPrNHhTpYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u z3d^z>^D_rCG8Gf^AO6WG{EZ>`^J3ujiLd#DcX^HHd4dPIi<`NIOF56zIe{ZNh`rf` zZP|?VS%Vc>iiMenS(%Q>`5*sg4F18e490I40=xHo!H2xX%RIxQ+{f+Qz?EFY*_^_$ z9LE0a!H#Uj#;n7tEXU$3z?{s))J(#E`4^+|cZTAx^MTiAzTs2e<8@x(Ngm>EZsA%k z<9yEGM2_NM_F-4HV{63*o`j^_vtWG{AR8#ZM;$)8DQ1)YYc3?|3Vr^DoSr%h{=3qvqVq*To zKN*F;F(iMU3cNn?HJ|V!%rL)^_RT+3yg&l#M^Q5?)Z?8N-WJH%*$*{&lF6^xQxk249DR7emt=Iz?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1t zz@F^H)@;JMtj6*z!Gg@i%uK_ijL+DN#t00}ApCMHuzSmAyw4lF$WuJbJ>1H5T+RiY z$w?f|A?(X;Y|j>K$Xcw-GAzn`%+3r<$wZ9DSd7f@48b2q1Fw&K#mBtEt31c!JiwjY z#MNBFxtzxF9KnI?#m;QQrmV;6tiX~i#N5onv`oeXjKk=R$S@4buSWvAcYMwVyva*E z%_H2)ZCuY4T*z6R%rP9we(cT;Y{^Ef%_=O*V$9DR%*a$s%zyYNqwqI|$8s3^vj;n}6&te-tFj!6vjB546H_w@|K(qd z%HJ7^zYYdopZSJQd5_n5fhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf(rCEe|nT_e0 zf(aRyF&T;B7@Xe^1a=?zl8<noBsB(>R_ZIFP;A znQhpV^;n%1SdxX9n^~Ba$(Vp~7@ZLrhC%stZ(#S1&-s8id5NcagnPM->$!ppIg67y zhC|tp-PwUH*@(4Sg=JZc`I&G5}xhL@Y#MgYnyS&EpJi&w9#m!v9 zrJTpnw{R_&aXx2oB1dsB`>-q9u{j&CCM&Tti!d*%S8BQYF<^ZU-g z?gL-)5pVMf&+-`ea|bta6&G_3r*a&Ja{zm?6I-(h>#`clvjht=7c(;rlQKSIGa4f> zG=uQVj==6MpYc9#@FGv~F!yjP*Ks))a3&{lG>5P+yRki6upw))GRv?i^D#R!FeMW) z9%C^w!!rbbY!AFX@)aNR4zKbYkMjU`auZi`3FmSe$8!V+vKKqE4V$tatFr=2vJi7K z3)3Keb1)-QF){z)pNzua7?MA?240`|nooF_*La>Mc#ylenQOR|^EjOoIFf_dn_bwJ z%~+o`Sdpbzn0c6$>6o1V@o&c99}LT2{I(^qd(Rhq$XmS3Gd#+D+|CVL$wi#aDICjT z?9U$T$X0C3I;_faEY1SV$xKYmB>b0uF)Dv&DE`_Uczxy@KIJ`L=LMeRA@1fDuH`b$ z=L}BdC=O;Hc4a#@X9Lz`C6;Cp=4CdfX9^}{T*hQ1hGTGk-xSz=;7dN@ZC>G79^-!Q z;6|?EV$R`Ij^l6+U{7{pYc^qBR%3aVU_s_$W~O0M#%F9sV+4j~5PsPh*uCX5-scTo zIiF61mu<`@oTKXzvawqzsLW)+rYG3I9uW@IWR=0E(C zQTQ7}^5?q1>l0t|3Geb6&+`Niau+vq4VQ8rr*i^Fau9p73)`|8>$3(cvJ?w553@2I zlk-3R%^3WHVHu3y)&_R(`GOC5iyid*@GR~ij7%^RauV3 zS%5j2iK&@{|MD+J_@0-Q2>pT*mpF!HFEj!R*7XY{%wo zz?!VY(k#Nf%*OOg!Gw&g-Ih@LI9L@pk z$xdv|CalY9EYA`w$Xv|KG)&6)jLm3_z|aiBFRKE(w|vI?yuph+#lzggtz5_DT)>%} z#L*nWzU;>KY{7=C#mX$hqRhwa%)pdP#CVLw$PCXA{IN3d`p8#&%safwb3D!i+{sN` z%_W@6X&lcH9LQem%rQ%=gMTnAgYnz4 z!0tU?@F8#UGSBcR_i;Nna3vRUHm7hbhp|67;L zouT+^Y2fvlZ}^n=c%2t`l83mPTez0XIG-~(k)t@6eb|-l*qjYmla*MSMVOb_n4T$^ zkZ~E4krqIe6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*pRhY znPpg%`IwyOM99oUkMSesQ?mc^K#Ihc{Dn3(_YPe$Qy49TAh0bWG0w_%~zl4~Athew!cIz2^%)6o1VNygu^{pYk5B z^8!!u5O;G6*K!%>a|S1J6bG{pyRsddvjJ#2>Y@d+p`55vKA||42v=!voixzG7;l3 z79%q}L-5D!!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DSDeJL1E3hOBF*ma? zEt4?;<1jiSG7N+A>#V@;9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y z81pj+Gcpwu^B?}nDEy5f`EzFA^@*?fgm-z3=Xrt$xr>{*hD$k*(>Z}7If%X4g>Bi4 z^;v@zS&D_3hgq49$@w4uW(@wpunfj;GXlH!e8Gpj#mhXyquj^s+`yGw#Mzv}u^h(! z?7@y~#m20|sw~IiEWn)1#MDf}fB6@q@^^;fujzr;XTIT6-s5#%;7K0hZf@aPF5`U8 z;6#q%VD@2GwqtWPU`TR!7`-rz-^ z;$iOLR<7f6F5pZ~;%E+GUv^`AwqQfnVr7+#84rDKOW*atTJyvH0mSiF3W)`MpGA3XgMrTBZVNiaZ z9N4|%b3WirUgBvU;a+azdamF?&f;W_;ZXKtcXnV)Hezj7VObVqe&%3Creb3L!#^2? zzcD0#P71s}@im|DF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qu`u&6E7LJK z|Ks0`!9N(5!T4=rVE3Lc_>i}FnP+&E`?#GOxRQ%Fn^QQJ!`Poa*paQ+m~~i{RtljK&BI%^>_TF0gycXS~lFyvS2L%st%7bzIH`oXJTX z%^~c|ZfwsMY{*)y%rY#>e9X=aOvyxy$5@Qa@C?BpV*{^`e8tDS!>c^U<2=Bf+{D#f z!nvHr@f^W{?8VM(!=|jq>a4($EX3T*!n91r1dPMzjL0wy%CBPryLWuf2fWEkJk2BA z%WYiG6LJWl5Xj^rTrW*4?)GuCGfR%9s_W*%l`Iwt3T{F^cO2g5QLzl{p) z-tz??@)j@i43Bajw{rtmauH{93deF7`?Ci-vK1S%4y&>pi?aZ8G80oX3IF9^jLP2` zioZq%UZ44fPkE2md4VT+h`YIkYq^Z`IfD~9ii6pQUD=M!*?=`!iKSVDd6|vrnSu!! zmoXWM;TW9XM+9~s_>zx!n^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWY-Sdh7x znQ54m@fn-Z7=fV~gkOdSc5nHN_j!XCd5VX*hg-Rh%ejCvIf^8JUWS`49hO6#mAL{5d4>`o!0K!n?f2^E|72lk9K_!2!nSP2`mDimll z@FWj$H@9#tmvKI4a3V)>F#E78+p#$tuqG?9G>b4VvoSqWFd^eICL=K%gY)~q!0rQI z@)2+I3eWNw_j3m~aupYI4ySS)hjRdXvJ+dg3G1>N%d-RvG8Z#54U;lHV>22fFf@bk z%YeY{EuZl|Z}1{d@i6yrE7x&37jPygaWsdpFT1flTd*N(u`qgOR^AiGYiu) z851xLqcbAIFetzF3+&$UIUn#QFYz>wa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq=x) zKXWi6Q!z3B;h&7c-x!iV`vzX0_?l06m)CfnCwP#%xS4CXl=C>96F8EC*qdG0md#k7 zHCU0QSeSX3mFbwA|M73e;2#XjVEoo6uzSxJe8^k8%riX7eca9sT**b8%_$tqVeHQy z?8sJZ%sQ;faxBgQ%*jkl%_RJne=#b5XDI&a9e91_8$RVdUgrg#RF30t4q#7qVrw>GT~=dxmS92VVrHgcQpRU&Mq>nqW)Obq8Q8t$Gv4P7UgRkr z<{ob4Ixgn|&g3MH<`DK}H@0UBHe@YUW*HV`K4xbIreq?gFaUS4KZsKY#;apDRc#hye_F`wYVN=#)byi?W7GiE@VOl0*0>)u>QtgJBtr-?|2N@A-lcd5f2MhDW)N+qr=&xrnnlg=0C4{n>*Z*@}%>hgDgQ#aVzk znTe^Hg#Yp{M&<7e#a~?lug`qLr@Y7Oyugz@#NFJ&wOq#eoWY44#lh^uu58EVY`~hV z#L_Inyv)Y*Ou>YV%b1MBa174xoddfMe91?=%_}_1W8BXj+{jg2%sHIOaU9M8?8#1S z%_gkNYAnwZEXZ8U%rs2O_>9eHjKI(g!Y`cyySIGC`@F%6JjKJ@!>wG$DS48x%O+99xe$LD;&o4mx+Ji@)) z#`Rpmg`CC79K)gP$L{RFmTbh@tirM^#{A5|j7-JE{D*%s3V&lr{%jw3ed23A;ay(i zd7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mSSP%VOFMNa{kA^8H0Z?EQ9e|yTI-} zU+^Js@iNcwDEDzYH*h5vaWn_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lnnjqG*_fUwn2>Q9 zlaUyX!TG&SVE2J9`G~i9g=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbs}_Snc*3NKUxJ|ANh)pd52edj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7 zkJVX$C0U5MnT2VYj0qTr(HW6p7?fXI26pfGoDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ zogLVcjaZviSeC_@pE;P3shF7m@J~kJZw$$wEdsAke9b4k%WFK(6FkUW+{`sx%6Xj5 z2^`5m?9DE0%Vw<48m!1tEX+L2%5+T5|M)j!@DGM%Fn((u*uCcqKIAQ4<{2L4K5pj* zuH+)l<`j62mb#zc&r+KJXT@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxDaw3o$pdFfEfY z0pl<_BQgww@@u2O?j4`=0dMjWPxA=(avRrk1s8G_CvyykvLCy%16#5YYqJW=vKaF- z2QxAi6Z0Sb$te7dA^Edm;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@*@bP{jP+TA z6-8S|7HyS!LSU*Zw&&w_k6*Jyv55r!=v2C?cBhXT*TR&!m%92{_Mey zY{kZ`!>TOD;w-?N%*518!hiV}qw;r#;;;IF*Jr-rQ{LlsUf@X{;%;u?S}x;!&fr9j z;$Ze+SGHqwHegLwVrdp(US?x@reH$GWlTn5I0onUdV$>szT_j`<`tghG4AIMZsaO1 z<{VDtI1c9k_GBlvW)s$BHI`=y7Gy4FW*R1Ce8y%pMqp?L;g`CB-CI86ecs?jp5kHd z;a0BWaxUOZPU2_|VPAG*d$wRh)?#IrVNvE|c4lBoCSp9sVq}JA2>z%Oczxt6KIR=> z(LeAo3j^R-DV|R97OEzL{R$*BdV}9mfMy6t7{=+{Rg}*T* zf7S}TKJhi5@Gh_MJWuc-cX2b2eCK1uq~UhK5MWdOR+HXFe}qBIsfC| zjKMz`mcjU~W?=W8FZhtRc$sH-l>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BR1(=hW zn3_rWFaKgx{?1VRRU`2F%r|_>d%VsIJjp}c%`IHZWt`6$oXAle%s%YOc5KcDtjS6& z%_7XpY)sD-Ovt#5$w&;x;QU@au=~K5e8k(l!m~Wa{oKKgT*bwl!>Js{;T*u8?8Me= z!n&-+@+`rE%*D)1!=#MQ*o?*q49y_?QZ2B1%V)gL8@$LzUC9&7{65t?B4SQ zAMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oUvkt4W9E-C6b21ZCGYS9YUyRD%8H&Fu z240`}hEI8q*Li^_d5F8Yg=@Kt^ErbPIf{eXhh5o@&Dnr8S&5}tgn5~b>6wBF8J95` ziQyQW-zx-mANZ1wc$-&vmdCiCJGhanxR`S|mE$;^1K5+D*qTjPm(^IFC0LNTn3-vq zl<^sx(HMcD8H8WT2X=4yjQ4qi7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj4OxqoS%yWK zkJ*`lDVd1z7>kh^o+0?7T;TPQulSgEc$MdPoCmm*o4A@wIG58no+CJrz1W#;*p&5H zofTM;g_xUJn3la|5gCR-`L%3d_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}X zfi2mHwONH_S&aFagBh8MiTMxzWEB3!ko;LD@cP8pe8RiD#`8SEgWSc(miY&##%)_iq$K?Eve=`REU|0s@x6*;#d%oa9-r{AR;Zg46c5dKG zF5+xX;aCo1fA(NUwqj$}VO5r6aTZ`sW@2h4;lKQgQTaPV@mHz9>oec*Dev(*FYqJ} zaW}VcEthdVXK*4%aWMO^E8DR-8?YuTu{4V?FS9W{Q!pXpGA1K29E0v0*p|&$pEX#K zrC6AGn3d_6od5A}#^4_e%V7LgB(QtW7ktQDyv#E^%6;6<4P41ZoXsg5%VF%#9_+|g zY|J{W%5p5u0?f%wOwAHCJ2qzn)?_7?W)bFPHl}9^CS+X3WF&@TaDFco*nQwjKH_a&;aMKze(vB#uHs_O z;Z%;}a1LNkc4BKbVO>^Zd6r;7=3-{1VN%9tY(`@QhGr0cDHzzjTDkIhl#6 znS}rHFGl6>48>o007E*>%72|JjC7H!nIt+`JBOt9L2%x!>(+{=4`;4ti;kR z!o1AJ^i08ojLVpe#BdDG@3{lJ4}8f-yv-{-%VXTn9o)!OT+BI~%5fad0qn_6Y|SRD z%W5po5-iAE%*-@Q%J_`UXpF$n48kwD0=u_-#{0a%i#)}{+{3M0$K_nWnViJY9Kycr z#`bK%hOEWPEW@JA$L!3&luX2UjK#^Y|479&I&BaLd?x9Ov_|Uz&MP~hz!G^{F)=Md&lQ|z?;0p(>%hx+{X1> z!G)Z~$sEI>?8olxz?N*p+N{E|EXMrI!Hi7B#QcYUG75iVNdC+oczxn)KH*(n<9VLo zLGI#auHjP7<8)5oNDg9ec41pKV|~_OMV4Y==3!Q*V{-n-zZrvnFf4=dTeiUNJzwx4 zZ}BqE@F@3jJ2!A87jZVHa4d(hKYOqvTd^_guqw;3I14Z*Gch%j@L&GLsQjIw_$zDR z^_g$@l=pa@7kH9~xSLzJmdiMwGdPi>IGBCdmF?J^4Oo+vSeiwcm)V$}DVUIP8IzG1 zj=}joOJMhbFZqbKd4*?rjQhER8@Y;$Ifqj@j>9>CJ=uw^*@SgjjpbQ_1(}PPnTAOj zpRpN@5g3|5_$6~-_mS&!9O zfhAdpxtWD&nT!b-htV04VHlKOGX{3=_?!=Tlb3j!N4S^UxSlJxkh3_MV>p!k*qt5N zl8soKRalnAn4dYAk*S!N|L{*n;cpDdpBVzLPkhZMyvu7m&l5bzUEItyT*`Tz&IugJ zLF~;gY|Cb>&l;@AQY_3o%*u33&j0u~WAG1#WiWnAAK1O;3qIs6UgjAd^|@%AMrM? z@GOsUKX-5=S8*}ta4N@fI0vvNJFzvJur8~yJWH@3b1^g1Fe&3RHlr~DLo*1!qzUZa z@)_^*1~2jy4|5NN98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!~rGspip zo~HmR3My2E@ov0req?_zV}9ml zHfCfhCT1K)WjF@s_w<3?2fpMZ-sTmai9g{NwV=@v$GYG$=3+&$V8SnE3FY*)*a}T$29hY+fXL1rpa|rvg8{4x5 z8?qKF^FJ160p{T!%*518!nlma@C?BpX#=m1e8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{ z?8VM(!=|jq>a4(jS%m*ECx2&preH$GVq}J4P<~Al*uCR(KHyDW;%Oe?UT))huHZt> z;$)8DQ1)YYc3?|3Vr^DoS(acy{>ALf%rs2Oc#O^n49TCV1Fuhf%_qFeYdp^rJjh+# z%r#ufd7RD(9LYiK%`R-qW~|Q|tjN+V%6!bltjxfaOvKoX!mtd+Z>a*i_k6*Jyv55r z!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TODk}Sl$%)u;7%Vdnt7>vkJ{FO5B`ph?c z%6q)d3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd2CT_SEW={V&)m$$j7-JEjKio5$Kd>) zBCz|wmwd$Ayu!0Q#{JyEja{*hD$k*(>Z}7If%X4 zg>Bi4^;v@zS(-(ekGYtY8JLoZ7@JWTmcjTfabWkJFZhtRc$sH-l>4}y8@Q5-IGa;A zmc!VeJ=l@0*qC)#mE~BHg_xH)n1yMXjPV(R5gCfV5(QqL`G!wG zKJpbG^A4}_9FOw=cXAU~a|!2i8pm@42eKDCvkjZF9;>qg|78*W!<_t`>6wBF8H$!ppIg67yhC|tp-PwUH*@(4Sg=JZS1^E}VGc(gL zDdRCZBQPX?#tpna@im|DF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0Et|1EYp^0qvnca1 z7qc=0Q!)`_GYZ2p7{A2{?B4SQAMzG2^9+x2AGdP@S8@?&a|*|D82hsaJF*oUvkt4W z980ng^D+msFfEfYK4UNk5%j>(yTF&T-W8H8VA26k`xjQ4qi7kP?@xrbZ1j?1}# zGdYQ)IfQ-LjqTZj4Oxqo`5%k30Q2wgFaUS4K zZsKY#;apDRc#hye_F`wYVN=#)byncNEW&@7lfN@PQ!pW8F*3t2D8EJz?B4M?AMhqG z@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EK9H;|6+D#W*R1CJVs{(hUCv^f!8O# z<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGfR%B@wWj^L&R%T#ICSq(xVOR#^ zx2S>Ld%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6Nfu&W=3o}4WirNR z3`S%q{)!TKedZfJ>V|kWh zVgAiO`5V(QITJ7@BQZ3C@Jpn??k%73K5y_MPw_DKa4XkwITvsyCvh}~urIr@JzKCL zYq2u_V{sN>9{#~hOwA;W%V-SG5d0A_@cPJCe9Sw%%5yx<1Ki0?T+Jn%%V`|X5gf=~ z?94W7%6hEM3jCKv_z!dPccy0wCS)u|W*7$L*9d{#J3i+F-sB~o<`M4YHm>IiF61mu z<`@oTKXzvawqzsLW)+rY2^QpE%+AbA!=#MI=#0RS{24y*`o!0K!n?f2^E|72lk9K_!2!nSP2`mDi%{h0>)${ zhGr0c2_4wI!&H~KCKbVQB znS^l}jo}%BKSBjwANh)pd52edj>ma`JGqIgxrB2$jpI3j1KEq6*@jJ7kJVX$|FQ`G zVNU+e^i08ojK#96F8EC*qdG0 zmd#k7HCU0QS(N#hi&>e0DVd0|8HHgPjNgI>cJKLu4|$81d4@;1kK4I{E4hfXIfY|6 zjQ!bz9odSFS%+0wjwM-$d6|P*n3l;HpD`Gbq4+CU;Pshr_>}i}ofmkLhq#+txR%Q} zpEEd-qd1s-*p=$K*`Fn2f~G48ku#0=u_-#{0a% zi#)}{+{3M0$K_nWnViJY9Kycr#`bK%hOEWP{Ex+1fO+@_Gch%jFfOApJVWruueJYw zedH@X<{e(;IUeT$?&Kz}<`T~3G>+#84rDKOW*atTJyvH0{>vi#hdKE>(=!DVG8Q8< z41@CP&%o{-pYs84@)A$;2={Uu*K-9Iauz3Z42QBGyR!pZvJq>u3d^zt3-T{!XJ)2h zQpRI+Mqo(({1JG4;%h$PU0&mPp5Q_5;%2VlQqJRaPT)umVsCa~TQ*~T)?h`JW>My2 zE@ov0req?_zV}9mlHfCfhCT1K)WjF@s_pgE72fpMZ-sTmai9g{NwV=@v$GYG$Y3GCkT8SnE3FY*)*a}T$29hY+f zXL1rpa|rvg8{4x58?qKF^FJ160p{T!%*518!nlma@C?Bpp98Ote8tDS!>c^U<2=Bf z+{D#f!nvHr@f^W{?8VM(!=|jq>a4(jS%m*ECx2&preH$GVq}J4P=5Us*uCR(KHyDW z;%Oe?UT))huHZt>;$)8DQ1)YYc3?|3Vr^DoS(acy{>ALf%rs2Oc#O^n49TA#1Fuhf z%_qFeYdp^rJjh+#%r#ufd7RD(9LYiK%`R-qW~|Q|tjN+V%6!bltjxfaOvKoX!mtd+ zZyy4?_k6*Jyv55r!=v2C?cBhXT*TR&!m%92{_MeyY{kZ`!>TODk}Sl$%)u;7%Vdnt z7>vkJ{PjNY`ph?c%6q)d3p~j~+|4aq%VnI;8Jx&b9LzrK%64qd2CT_SEW={V&)m$$ zj7-JEjKio5$Kd?_F0lK+mwd$Ayu!0Q#{JyEja;PsKO_?UNimFIYz2e^})xSC5im(w_&BRG(~ z*qLqEl=WDh75FcU@E_*n?@Z4WOvqS_%rFefudf5UcYMwVyva*E%_H2)ZCuY4T*z6R z%rP9we(cT;Y{^Ef%_=O*5-iBSn4OuKhDjNZ(HVgu`SVra^@*?fgm-z3=Xrt$xr>{* zhD$k*(>Z}7If%X4g>Bi4^;v@zS(-(ekGYtY8JLoZ7@JWTmcjV#WnlN7FZhtRc$sH- zl>4}y8@Q5-IGa;Amc!VeJ=l@0*qC)#mE~BHg_xH)n1yMXjPV(R5gCfVUIbpB`G!w< zkJovDCwYjwxrJ-FjPp5z6FG{5*@s=(j?LMCHCc&eSd96Zo7tF=shF5?7?t4|oZp`Z zb|3hXk9eC`c$UYwpF6mbtGJkRIF;i#oCDaCo!FX9SeMmUo~2lrfAdfN#&k^11dPc@ z49y_?@+`1>%V)gL8@$L@GmKJpbG^A4}_9FOw=cXAU~a|!2i8pm@42eKDCvkjZF9;>qg|78*W z!<_t`>6wBF8H$!ppIg67yhC|tp-PwUH*@(4S zg=JZS1^E}VGc(gLDdRCZBQPX?J`TJ-@im|DF0b)CPw*gjaWmI&Dd%xICvYSOu{XQ0 zEt|1EYp^0qvnca17qc=0Q!)`_GYZ2p7{5IV?B4SQAMzG2^9+x2AGdP@S8@?&a|*|D z82hsaJF*oUvkt4W980ng^D+msFfEfYK4UNk5%j>(yTF&T-W8H8W%2X=4yjQ4qi z7kP?@xrbZ1j?1}#GdYQ)IfQ-LjqTZj4Oxqo`5%k30Q2wgFaUS4KZsKY#;apDRc#hye_F`wYVN=#)byncNEW&@7lfN@PQ!pW8F*3t2 zD8Jqf?B4M?AMhqG@idQcFSl_$S8yR`aWcnnDEqNHJFq1iu{Nu)EK9H;|6+D#W*R1C zJVs{(hUCvXf!8O#<`drKHJ;}Q9^@`=<{B>LJWl5Xj^rTrW*4?)GuCGfR%B@wWj^L& zR%T#ICSq(xVOR#^x7&f;d%oa9-r{AR;Zg46c5dKGF5+xX;aCo1fA(NUwqj$}VO5r6 zNfu&W=3o}4WirNR3`S%q{<;--edZfJ>V|kWhVgAiO`5V(QITJ7@BQZ3C@XL+B?k%73K5y_MPw_DKa4XkwITvsy zCvh}~urIr@JzKCLYq2u_V{sN>9{#~hOwA;W%V-SG5d3jH@cPJCe9Sw%%5yx<1Ki0? zT+Jn%%V`|X5gf=~?94W7%6hEM3jCKv_z!dPccy0wCS)u|W*7$L*K2{@J3i+F-sB~o z<`M4YHm>IiF61mu<`@oTKXzvawqzsLW)+rY2^QpE%+AbA!=#MI=#0RS{CPF-`o!0K z!n?f2^E|72lk9K_!2!nSP2`mDi%{h0>)${hGr0cxfs~J!&H~KCKbVQBnS^l}jo}%BKQ07bANh)pd52edj>ma`JGqIgxrB2$jpI3j1KEq6 z*@jJ7kJVX$|FQ`GVNU+e^i08ojK#96F8EC*qdG0md#k7HCU0QS(N#hi&>e0DVd0|8HHgPjNi@%cJKLu4|$81d4@;1 zkK4I{E4hfXIfY|6jQ!bz9odSFS%+0wjwM-$d6|P*n3l;HpD`Gbq4?`e;Pshr_>}i} zofmkLhq#+txR%Q}pEEd-qd1s-*p=$K*`Fn2f~G z48kv`0=u_-#{0a%i#)}{+{3M0$K_nWnViJY9Kycr#`bK%hOEWP{Ex+1fO+@_Gch%j zFfOApJVWru$-wI)U-2>T@G8&oI1g|qH*qzWa4x5DJV$UKd$BXyuqo@YIxFyB7U4h4 z$={itDVUJ47@1)hlwVH-cJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUkMSesQ? zmL*t_e=$2VGYyk69-}h?L-ObG!0QuV^9k?r8qf0t4{{eba}Aer9;b5xM{*E*vkTj@ z8SAqKE3!0;G9Pm>D>E=96EQZUFf4=d+p)mzJzwx4Z}BqE@F@3jJ2!A87jZVHa4d(h zKYOqvTd^_guqw;3BnvSwb1)0jG8yAD1|u>Qe;p0HKJyKq@*c1A0#EV~cXJEZavA4y z1}Ab92eS{mvK^bV0c)}n%di;pGdHs_BU3Rk<1i}2F*v^;3G6=bB_HuNukb97aX)u( zBUf=T=Wr^=aX1ICCp)nv(}czxt6 zKIR=>%qY89iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTe1;rvkJ?y1Pk&nW@l!mVN%9p zbVguE{yY$Ped23A;ay(id7j`w?&4;y;Zn}ybWY$%4q|V1VOut1eb!(_mS$1rV=iW8 z2Bu^p#%2_TWiWo*AK1O;3qIs6UgjAdP7M26z8eSz0!zTs2e<8@x(Ngm>EZsA%k<9yEGM2_NM_F-4HV{<2n@-eI|Hvze9b4k z%WFK(6FkUW+{`sx%6Xj52^`5m?9DE0%Vw<48m!3DEXsV$#jMQ0luX3fjKZ)C#&0_U zyZ3y-hrGqhJj0{h$L-v}m0ZNxoWijj#{TTVj%>xoti!4-$C50>yv)HYOv_}9&lrrz zQ2ez$@cPU*e9C*g&I>%rL)^_RT+3yg&l#M^Q5?)Z?8N-V=-%+K7+#*9qG z#EiqJ49DR7zAdo(z?Xc)+q}ZFJjVUp!HrzS#hk;b9LM1tz@F^H)@;JMtj6*z#lrlX zfATk`V{#^7Oh#g82H}^jf!$j^<9*)XMV{he?%`Ih<8m(GOitox4q;z*V|%t>L)Kzt z{>S1hz&!kenV6bM7?;r)o+0>SOW^g9ulSgEc$MdPoCmm*o4A@wIG58no+CJrz1W#; z*p&5HofY^mi|`-j2w|JRnc$E9N zog284i#VH8IF`fMpFP--t=O1#Se4~il7*O;IhciMnT+ungAo~uzcvJ3pZSJQd5_n5 zfhT#0ySasHxs3BUgA+N5gV~2&*^bTGfHhf(Wmt^)nVZ>|k*S!NaTt~17@XhN2X-I$ zl8<F4n&IF9fNDR#& z{IV{vd&_6M&l|kRQ#{N)+{$%a&IO#wNgT}~?8|O!&lYURTCB|fSeylzhkq~=Q!@$U zG8)4(1b?gzygu?3AM*~c@*I!z0C#c|S91yHavH~T1P8JgJF^X&vL36m0{>+Z{==O7 zo#~l^2^ou#8HPdmbxmORj?ejkH+hMtd4zkpjqACB3ptCEIfg^okKNgUE!l{*S%qa; zf(7{(vokZ(Fe&3PIwLS7f36O^KJhi5@Gh_MJWuc-cX2b2eCK1uq~Uh zK5MWdOS35RF&DEk15+{)V>1fFG8n(D3hdtV1t0PjFY^qKav!&I16OhpXLAb2av1xw z2RpJA8?z3pvK&jY5c4tzvoI}_F+O83B17@l%E0S0-|#8#@j5T?BoA>nw{R_&aXx2o zB1dsB`>-q9u{j&CCM&TFi!ncQGaEB96%#WKqcR+W^ZSax?gL-)5pVMf&+-`ea|bta z6&G_3r*a&Ja{zm?6I-(h>#`clvlI*SZ~n>On2yPrfH4_~p&5iwa4)xUJy&ocXK^yea47q+J3Fu?8?iR4uq;ckApc@^W@Z{DWjsb_ z1cv0#C4tu`zUC9&Vpe8g zN+x1#MqyY6^L*C+Lp5amM<92S~N-pATPT^P%V}JHwN48>P)?rnaV@Vcb zUglsHre!k5XADMUDE?X$czxy@KIJ`L=LMeRA@1fDuH`b$=L}BdC=O;Hc4a#@X9Lz` zC6-|^=4WnZV@9T8V#Z-qhGTGkUl`bZ;7dN@ZC>G79^-!Q;6|?EV$R`Ij^l6+U{7{p zYc^qBR%3aVVqyNxKlvNeF*y@3CL=L4gYe6O!0s)d@jh?xB2V!!_i!uMaXA-oCMR(; zhp;cZu{~R`A#1TR|6_3$U>^R#OiaxrjLT>Y&k+1EKk)j^Y|479&I(miY(2d%*R~J$_z}&M2yWS49j5rHYc!q z&lh~iTfEFOJj#9C&JA42MV!qk9Lr(s&mQc^R&2~VtjcmM$wJJ_9L&PBOvd<(!H5jS zU$X_@0-Q2>pT*mpF!HFEj!R*7XY{%woz?!VYGAzdY%*|}f$W%1049@Sf0=o}<$w$1+D?H0%+|M1{$W>g-Ih@LI9L@pk$xdv|CalY9EYDIb%)j|3 ze`7i(X9C7#B!*@Xewi8Az2!6B=M7%uDIVq?Zsj^I=K{{;B#!0~_GLG=XA3rDEmr1# zEY1SV!#|jbshNav8I9o?f zS&!9Of&a1y|6xx4&h$*dgp9?=48x%OIz6y^$LD;&o4mx+Ji@))#`Rpmg`CC79K)gP z$L{RFmTbh@tirM^!GipY*_oMXn3VAtoe>z4Kc@v=pZJv0*p|&$pEX#KrCF5un2TANfhn1Yu^EM78I0ei26pfHf)9C%mwARqxsThq zfh)O)vpI!hIgI_;gB{t5jai3PS&k)HhqIelQ1r$ zF+4-?$Hc(vBVX|`@9-+m@i-4~CpU35mvAnpaXd$GAbYVh+psC?u{ta8Ul!p%%*o%G zo++4+u^5?Q7?fWp1a|NEoDX=Dmw1{-xR=|wo-4SJvpAV!IF$X^ogLVcjaZviSe7MN zkbf~dGcyg7G9IHd0z>lW_`vHEU-Jp?@*2#!=zu_OyIFLN*p(=r+3GX^6v6n~8kygu^{pYk5B^8!!u5O;G6*K!%>a|S1J z6bG{pyRsddvjJh~wR%JPsWFh8d z4rXCmCS!cYU_^%EuVI1LXTIT6-s5#%;7K0hZf@aPF5`U8;6#q%VD@2GwqtWPU`S6c2L`w{jhqa{*^^5=V0g z`?4F`vjrQn7Ax~V7H0wG;UCPz)J(#-jK=T`!5@PIuaA7i$GpR&TPY`tjFrCz<*hU|1c+iXL_b!LdIfbhG9^C9TeET<8waXO(LeAo3j^R-DV|R97OEzL{R$*C|U_t)H?99wGOv-qS&Ik<2p92H0PkhZMyvu7m z&l5bzUEItyT*`Tz&IugJLF~;gY|Cb>&l;@A(k#k+%*CwCz?4kH*o?xk490H*0=xHo z!H2xX%RIxQ+{f+Qz?EFY*_^_$9LE0a!H#Uj#;n7tEXR^8#JtSGEKJK}jL#U1$WZ*% zKk)j@H+;%_yv_?e$wS=DEnLfGoX;7Y$Wa{3KJ3bNY|aL($x1B4V$9Fn%*KpN#l(!m zs0_#8{N69H`@olc#M`{WvpmNA+`)}p#l@V%sT{}Q9KfFJ#MW%Wx~#_XEXBh7n}6~* zreks@U`$40Xa?bzzJc9aKI47f;6zx! zn^$<2$GD$6xRI;4m~%Ll<2alH*pr>unoU@j)mWaTSeSqFPyWVqOwI(1$w&;%ApFuT zuzSmAyw4lF$WuJbJ>1H5T+RiY$w?f|A?(X;Y|j>K$Xcw-|5%&_n1_Eb6H_w@<1!k< zGX#Hh4ZJ?`6(92suksv^^8j~p6IXKy=W-gya|8#n7dx{Jo3b9OvjYER5&pxR{GI8U zf(aRmkr{?T`L#=6_m0o`fH!%Gr+I{XxsB_&f(to|lR1V%*^k}Xfi2mHwONH_S%L-m z7qc@n(=aLHF*+kKB!6}eyguru|8|C zB1^L<^D!5*G6PdG5o0q7!!j7Zbqeg>^93LB7BBM*k8&Tka|2g$5odD>$8s3^vj;n} z6&te-tFjzRvJmq!2eU9OlQBMHFd{?oSI5BXGvDwj@9{b>@FWj$H@9#tmvKI4a3V)> zF#E78+p#$tuqG?942v;8b2A$=G8Gdu4x=(0gY$cb!0rQI@)2+I3eWNw_j3m~aupYI z4ySS)hjRdXvJ+dg3G1>N%d-><^Kbsi-6?lE-8$RVdUgrg#RF30t4q#7qVrw>G zT~=dxmSSQ4%|H1Y(=j;{FeW20G=uO5P+ zyRki6upw))GXG<77GNI!!AwleB#g^w49^h!(LC__$X9&KJG{zsJkA5$$xU3%C7jD? z9M2IP$X@KsHf+jztj-GjmqqvwbMkklX9^}{EJkJ+2Ibdgf!#Yk=L6p4C7$LH?&UVF z=L#<5EKcSa4rM=fX9u=qBi3dWmSqVRxgeH1PVw*L=deyvFl9 z!Gqkz&0NE!oX6>$z>yrp-t5A*Y{vSm!HO)+qRhu!%*qT*$wZ9JC=APB{MIC}d(Rhq z$XmS3Gd#+D+|CVL$wi#aDICjT?9U$T$X0C3I;_faEXhL5%N)$Yv`ohMjKPQu#b1pB zug`qLr@Y7Oyugz@#NFJ&wOq#eoWY44#lh^uu58EVY`~hV#4;?#{LIa4%*a$s%s7n7 za174xjRLz5e91?=%_}_1W8BXj+{jg2%sHIOaU9M8?8#1S%_gkNYAnxEEX=?8Cx2r) zCT9Z1WF&@W5PoSG*uCX5-scTovJiK&@{aT$%_8G=6=1YRHcijR4RS9y-dd4M~)iL1GUb2*LUIf4V(i=EkqO<9lC zS%Lqu2>)SD{?7DF!Gw&($PB}v{8~S-d&lQ|z?;0p(>%hx+{X1>!G)Z~$sEI>?8olx zz?N*p+N{E|EWv{Oi`ki(X_%Dp7@ZLql0WMOUZ41yPk5Ktc%CPCkh{2Ib`Iw7YnSm*ph_M-kVHu3y>IQc2`GOC5iyid*@GR~ij7%^RauTDS%`U=gISoC$rzt87?Gj)t4`qcnQ!=%_jsKbc#?;> zn_IY+%Q&AiIFX|`n0?rl?bw_RSd*1lhQ*klxtWa_nTm-Shfx`h!TG&*VE2J9`G~i9 zg=cw;`?-S~xr&Q9hf_I@!#RLG*@>;$gmqbs%}#L*nWzU;>KY{7=C#mfAT#aV!P_y;pFHIpzdqcJ=~ z@JG$S>my(BG4Jpy&+#}9a3?o$HJ5NMr*S+-a3FiJGuyB!>#;g3@Lv|;Kg`MBnVu<_ zkg*tp!k*qt5Nl8soKRallKSdf1) zJ2Nv4lQJHoGXg{MXZ67A6JPTQ@A4YY^8^oa7dLYamvSDba{@bAHb1^G3FeMW)Hlr{sgYjFn!0tU?@F8#UGSBcR_i;Nna3vRUHm7hbhp|6$G8BJR4ZJ?{4WIHJuk!*=@(_1(3)gZP=W_-pauf%% z54*A*o3jCHvJ%U%81pkXvoRx6F)`yXD#I~2zgG$DKJX6n}e7?Y70nnC!ba$xtC&v>6Vc#)@gn0vUD z>$sc?IFpk&nnT!^-PoQj*pRhYng6jk3osA=U?!$!62@gThGz)=s1$g863*o`j^_vtWG{AR8#ZMN98_i`K8a|IW27AJEIhq52LvjbbQ5o@yw%d!Lu@-Jp*W~O0M#$$9wU`YO~ z5O{s!Yd+y!UgLS5;6d)7{*U8%3ZTMJ005e8+qP}nwOZV2wbkOXZQHhO+qP}ny?4*g`9Gytn0c6$>6n}e z7?Y70nnC!bYGC)4&v>6Vc#)@gn0vUD>$sc?IFpk&nnT!^-PoQj*^~`gn^jqk#aVzk znTe^HgmD>-;TeKIssvsi`HGKuhgW%y$9aG|xrwW}gmXEK<2ix@*^8aomd)9i^;naY zSeiwcm)V$}DVUJ47@1)hlwT_ccJKI{4|tQ8c$!DJm)p3WE4YxeIGJNOl>OM99oUM^ z*obvljpbQ_1(}PPnTAOjkI@-{A^EdX;Pr{G`Gj|QjpuoS2f2%zxrR$QkJCAUBRPn@ z*@f-cf=yVTwOE;DSd{sgof(*ti5Qzv7?#2KtzuyJo-g>2w|JRnc$E9Nog284i#VH8 zIF`fMpFP--t@$_q;P0%?3M|P&%*`xJ%Vdnt7>vkJ{8b_F`ph?c%6q)d3p~j~+|4aq z%VnI;8Jx&b9LzrK%K!K;|6&9F#wsk!V$9DR%*a$s%s7n7a174x#_zbvJ?w553@2IlQRKhG7>{G2)~pI?B4Pj z@AC#P@)Qqq54Un1mvaGUauP>#2>Y@d+p{H`vLS1;D$B7r3os`$F*TDgE~7C#L-0r0 z!0RJl@iFi4D$nsa4{#?paW$84E~jxkM{po}u`}DUIUBPcYqAncvk3Dt8`Cod6EYSf zGYo_BYnj0A9iQ_7Z}JjP^9c8H8`pCM7jhOSa}0;FAG@;yTd^4%u@0-TJWH@3b1^g1 zFe&3PIwLS7f0hosKJhi5@Gh_MJWuc-cX2b2eCK1upL{l3G1^KE3*uX zG9R-u15+{)V>1fFG8n&=3hdtV1t0PjFY^qKav!&I16OhpXLAb2av1xw2RpJg|K=b3 zoz+=^C0U5MnT2VYjPV(R5gCfVN(Nq^`G!wE zAOGcFY{1`Gg=JZc`I&+#84rDKOW?MFAW7cC$R$^%uVP0lqdZu7P#$sfKVNiZ88rZ$#b3Wir zUgBvU;a+azdamF?&f;W_;ZXKtcXnVaHe(~!VKtU#2^M57W@Z{DWjsb_1cv0#B7xT@ zzUC9&N+x1#MqyY6 z^L*C+Lp5amM<92S~N-pATPT^P%V}JHwN4DnQ{DZ%Ke zb1)-QF)`yXD#I~2zZVSbKJXpRCIo ztjJO<%skA>bWF|!jLAq0%^>_zAh3JOXS~lFyvS2L%st%7bzIH`oXJTX%^~c|Zfwt% zY|4hL&8jTN;w-?N%*518!nlma@C?Bp`2(+ye8tDS!>c^U<2=Bf+{D#f!nvHr@f^W{ z?8VM(%jRs%daTJxEX^X!%WO=~6imoijLa|$%CGqXyLWuf2fWEkJk2BA%WYiG6mMAedZfJ z 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

%}!tor%q3q8d?8sJZ%sQ;f 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 z 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

UBFLq`dHf23l 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

    %}#Bm(Oq3q8d?8sJZ%sQ;f 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

    %}#L*naLF~is?8sJZ%sQ;f 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 z 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 z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5;&|7(X1NB{r;00jMi-Ht#fXuyC00|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd p0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkryIb|4N5gRTGo diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/stream.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/stream.bson deleted file mode 100644 index 69668e24f066601083c18b4d038555cb11540cb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5000 zcmeIyF%bX&2m(MC`d5|`Z0|q-4?fq6@B=+C0~C;ugd`*(2}wvo5|WUFBqSjTNw}2o E0Sm1Yi2wiq diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/stream_corrupt.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/stream_corrupt.bson deleted file mode 100644 index e4946691f36414cb52c2297632ed3a03bf744bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5001 zcmeIyF%bX&2m(MC`d5|`Z0|q-4?fq6@B=+C0~C;ugd`*(2}wvo5|WUFBqSjTNjR18 E0UtXPjsO4v diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test1.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test1.bson deleted file mode 100644 index 38942ab3dec461bdf53fc8cecbc3fe06409eb945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14 Tcmd;MU|Y|oRAPB*aei(p1EV2>F&KzA2pBOOVh2hw006Tw2Ydhk diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test13.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test13.bson deleted file mode 100644 index 74f6b99d9418ddd35654ec027677acbc521808e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35 ncmY#pU|?WLEGkN@j84kW&xvIa1PX8%Ffei$0%;=#Mg|4|eYOQ@ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test14.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test14.bson deleted file mode 100644 index f7daf3e04248d14b16b08384d2eb0c87654942c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmXqJU|?WLEGkN@j4m!I%FIiTWsnC7F&Qwh0jZ4CoSb|HCPOf%JijO>1ty#q_?(pMFcIlkjWo0K<^!Oxt*1>l z+nzJuS3@U3@nrdjb9HsXj>wcSv^@;PaDbs0jxZF%i6fPlV!_8He|4ePMk2D*53v%g v*_+@x!JO%Ga}6!m_g%0WQHg>!jgfb4N^PjI`LX55Bt9hCDvDF_)+xI$G_EGI diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test18.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test18.bson deleted file mode 100644 index 4ef3e534332d29d9740beab8a3714020953c6f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 Tcmd;KU|`_NNX^N~XJ7yT3p)ZU diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test19.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test19.bson deleted file mode 100644 index 3f0974ba5271110567f086fc603ad4417894e869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 Tcmd;KU|`@#%FoYXU}OLQ3IPGa diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test2.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test2.bson deleted file mode 100644 index ca51f05c1dffeb40d70816ace821c912bacb46b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20 WcmWe(U|o?n!c0u%%Qm5&D- diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test24.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test24.bson deleted file mode 100644 index efadae0c34aefbc533498e62b57a48539139f06c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22 bcmWe*U|?WP%FIhFs$^gRvKtJIj7=B-EP?~? diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test25.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test25.bson deleted file mode 100644 index 8965c8ed388e559507c43b966e0ed5688e8fea16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 XcmWe&U|?V?%}Ys5%gjqnVPF6N8+`-G diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test26.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test26.bson deleted file mode 100644 index 64a2ea0a1f56744d7f6ae26fa76be9f0d6c5b81a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 bcmWe-U|`@Z$;?fSFJTB^`CTZ_2owMSF=qsU diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test27.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test27.bson deleted file mode 100644 index 8133e3529388841ce54fd24e7be041d4ed7cc3cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22 dcmWe*U|`@bN=;9#V2DdhN={+O%&A~t0020M1#$oY diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test28.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test28.bson deleted file mode 100644 index 4356b12ff3f0d877f3092cf83ea7c7f9f59bee87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36 jcmY#kU|`@$Nh-+C%qvMPVqgJs)AI8f7?oF_g<%E&pvVdo diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test29.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test29.bson deleted file mode 100644 index 191eb8f2984415a68c7eea1abcb7232eb6fe50a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27 gcmb1UU|`@)&QD2Y-~qDA5{ncP6>Jr%Ypod=077R4N&o-= diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test3.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test3.bson deleted file mode 100644 index d9ae1a9918d1877b0b1547b6e3231fb1532e8906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmWe-U|?WO$uCXHNoCM(7rS}x`$u~Q06GN+C;$Ke diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test30.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test30.bson deleted file mode 100644 index 191eb8f2984415a68c7eea1abcb7232eb6fe50a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27 gcmb1UU|`@)&QD2Y-~qDA5{ncP6>Jr%Ypod=077R4N&o-= diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test31.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test31.bson deleted file mode 100644 index 24c2052570df30489ee28a8ce23674a5c5d66563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 xcmXqHU|`@+&QD2YPy@1ffVeENNFh0|TvwQabhkbJ8$(P=O z;Pw?Hh!G*g_4#-C#)$(vHmq1MW5S35Z}jNUqQMJK)Tr=4i2`@z$dDpIj0hpF4}Cas zV8@0P3ua6hG2o3J9a=Pa;fWd*9w<@ZjvN_MB#03q#1-hni32+}tXME(!iWKH^ytu{ Z!3$5+sPI6E0(a!dkRm~h2;ndPvL8EvSV;f? diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test39.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test39.bson deleted file mode 100644 index c2551567419885ebf20bfd4e26c83b7d2449c88f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 812 zcmci7k(+}60LJ0&76u1l7>40691f#BVHk#C7>40642RJ@;cyrp2Dj(l|KUD)<&$4_ z3WC!uNRc2$gb>H)-}47MUU*`|iU$_VxMRYI0X;gjXi%d_xZ;8WXXMC`B0-Gk&DSmX4&VOAegSA&S-SuL diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test4.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test4.bson deleted file mode 100644 index db626b34c998f1236d8844c1598f4983c808c1a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 YcmWe)U|`@ZElFnJp3$Ri%n0NG0331x_5c6? diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test40.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test40.bson deleted file mode 100644 index 8843698b4156d78326d06cb81911c6ff6880a947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 Pcmd;KU|?VZVh{iT0IUEH diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test41.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test41.bson deleted file mode 100644 index c6a6c66dffce64f57a3649f55345cfbb5a4f8096..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 XcmWe)U|?Wk_zwhW`T0qSMGOo8INt_} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test42.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test42.bson deleted file mode 100644 index 0717425e0b92fff4eb84bafc95263c4ffa9b20d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 Pcmd;KU|`?_Vh{iT0So{e diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test43.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test43.bson deleted file mode 100644 index 8b762fa9b42adf617e3bce2aeb0a607858ce457b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 XcmWe)U|`^5_zwhW`T0qSMGOo8Ifn+8 diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test44.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test44.bson deleted file mode 100644 index 8a5ccf1836783d3d5bf10dde1d82f1ad9af994be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 ccmb1OU|`?@Vju{L+?w?(`iA4Rh}fA705Wg}fdBvi diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test45.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test45.bson deleted file mode 100644 index e845a1f611d062cb7c9a1eb16e969e53e9486cb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30 kcmb1RU|`^3_zwhW`T0qSMGQfaTeE&e-*CJZ5j&Fs0J!T6`~Uy| diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test46.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test46.bson deleted file mode 100644 index f939b23c75b7100c2a3f999a2f8e4b65dbb5acfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 Pcmd;KU|`?{Vh{iT0R#XV diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test47.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test47.bson deleted file mode 100644 index 5200aee4bcdb00c02304dac824b842cd82de80f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 Rcmd;KU|`^7_zwgO3;+`H1Qq}Q diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test48.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test48.bson deleted file mode 100644 index 29d72f483489a81f92a4562c263a790d216b5dca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28 Ycmb1PU|`^95CxK8zyl1i07%sYOaK4? diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test5.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test5.bson deleted file mode 100644 index ae5b8287f5f5cb102c5a28dddbbcd70e7b008941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29 dcmb1TU|?V>E-A{)OK0E#vWxR`Qx%|m1^{1l2QB~r diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test50.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test50.bson deleted file mode 100644 index 01a780aa9fc4191784e8e1cef7a6a74eebb19ea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28 acmb1PU|`^95CxKqK+M1c#7rOt2mk;FA^=bT diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test51.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test51.bson deleted file mode 100644 index 7db1d9c24e44942d501fb1f1a044a03c1e9bf6f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28 ccmb1PU|`^95CxKqK+M1c#7qqTfdI$=038ejOaK4? diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test52.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test52.bson deleted file mode 100644 index d777df8f4d14128f56e0fc93eaa78cc66ea534b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 fcmb1OU|?WQ%g<-{{{R1f=A^_TMTYlqjTWbO$n diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test53.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test53.bson deleted file mode 100644 index f7351542fc281f119f397afdd944b7bba6ea081e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30 mcmb1RU|`^3c=!MR|Fr!4q{JeIpvbLRzoKtAUW diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test54.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test54.bson deleted file mode 100644 index 0a567ce2d27070f068ca20b2dcec9c71fa5cda2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22 dcmWe*U|?WP%FIhFs$}^5|Ns96LnC7o1^`XK2ipJu diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test55.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test55.bson deleted file mode 100644 index 0c0d33f8f8d5af90615f67ca46f14c0727ac9bd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 bcmb1OU|{(FA4u>6u|QH{5s>%4o`C@XMg0cn diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test56.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test56.bson deleted file mode 100644 index 7f49315300508f23f76c56d0cbdc124e2511964f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42 YcmdO5U|?W+)U*Z}F$e$!mC(c(0GgE)9RL6T diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test57.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test57.bson deleted file mode 100644 index b699c20442fa9c4d8c30b2dd00393d52957b2962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26 ecmb1QU|?WP%FIhFssyqa7?@aqgrSkK2?GE$egky? diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test58.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test58.bson deleted file mode 100644 index 671db10e16e958ca7aedbef92b841ae88a846c0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 Scmb1OU|?`IsgCw diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test7.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test7.bson deleted file mode 100644 index e103982c914f45751c4116c26a6e1a12c6feb595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmdOAU|?WLEGkN@j84ffP0C4)Wsn96F&Z#vw~O68_x+6zZo1D7yvtD B4vYW* diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test8.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test8.bson deleted file mode 100644 index 7ce525d5895d44fe62192fd11a2046ff28f6272d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29 gcmb1TU|?WQ$xklLP0cG|-~;jmGJy<6AcKJc09CjI>Hq)$ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test9.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/test9.bson deleted file mode 100644 index 81c3de82484e09576cf8c951ccfec2b4e0077ebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 Scmd;PU|`_NE6vGaU;qFJn*q@P diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/trailingnull.bson b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/binary/trailingnull.bson deleted file mode 100644 index 9f1c9c4dd128746d2505452f04d8a54d1c149e25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 VcmWe&U|?WMWMBbOiAl--82}6m0-XQ= diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.c deleted file mode 100644 index 0e34cf0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright 2016 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "corpus-test.h" - - -#ifdef _MSC_VER -#define SSCANF sscanf_s -#else -#define SSCANF sscanf -#endif - -void -corpus_test_print_description (const char *description) -{ - if (test_suite_debug_output ()) { - printf (" - %s\n", description); - fflush (stdout); - } -} - -uint8_t * -corpus_test_unhexlify (bson_iter_t *iter, uint32_t *bson_str_len) -{ - const char *hex_str; - uint8_t *data = NULL; - unsigned int byte; - uint32_t tmp; - int x = 0; - int i = 0; - - ASSERT (BSON_ITER_HOLDS_UTF8 (iter)); - hex_str = bson_iter_utf8 (iter, &tmp); - *bson_str_len = tmp / 2; - data = bson_malloc (*bson_str_len); - while (SSCANF (&hex_str[i], "%2x", &byte) == 1) { - data[x++] = (uint8_t) byte; - i += 2; - } - - return data; -} - - -void -corpus_test (bson_t *scenario, - test_bson_valid_cb valid, - test_bson_decode_error_cb decode_error, - test_bson_parse_error_cb parse_error) -{ - bson_iter_t iter; - bson_iter_t inner_iter; - const char *scenario_description = NULL; - bson_type_t bson_type; - - BSON_ASSERT (scenario); - - BSON_ASSERT (bson_iter_init_find (&iter, scenario, "description")); - scenario_description = bson_iter_utf8 (&iter, NULL); - - BSON_ASSERT (bson_iter_init_find (&iter, scenario, "bson_type")); - /* like "0x0C */ - if (sscanf (bson_iter_utf8 (&iter, NULL), "%i", (int *) &bson_type) != 1) { - fprintf ( - stderr, "Couldn't parse bson_type %s\n", bson_iter_utf8 (&iter, NULL)); - abort (); - } - - /* test valid BSON and Extended JSON */ - if (bson_iter_init_find (&iter, scenario, "valid")) { - BSON_ASSERT (bson_iter_recurse (&iter, &inner_iter)); - while (bson_iter_next (&inner_iter)) { - bson_iter_t test_iter; - test_bson_valid_type_t test = {scenario_description, bson_type, NULL}; - - BSON_ASSERT (bson_iter_recurse (&inner_iter, &test_iter)); - while (bson_iter_next (&test_iter)) { - const char *key = bson_iter_key (&test_iter); - - if (!strcmp (key, "description")) { - test.test_description = bson_iter_utf8 (&test_iter, NULL); - corpus_test_print_description (test.test_description); - } - - if (!strcmp (key, "canonical_bson")) { - test.cB = corpus_test_unhexlify (&test_iter, &test.cB_len); - } - - if (!strcmp (key, "degenerate_bson")) { - test.dB = corpus_test_unhexlify (&test_iter, &test.dB_len); - } - - if (!strcmp (key, "canonical_extjson")) { - test.cE = bson_iter_utf8 (&test_iter, NULL); - } - - if (!strcmp (key, "degenerate_extjson")) { - test.dE = bson_iter_utf8 (&test_iter, NULL); - } - - if (!strcmp (key, "relaxed_extjson")) { - test.rE = bson_iter_utf8 (&test_iter, NULL); - } - - if (!strcmp (key, "lossy")) { - test.lossy = bson_iter_bool (&test_iter); - } - } - - /* execute the test callback */ - valid (&test); - - bson_free (test.cB); - bson_free (test.dB); - } - } - - /* test decoding errors (i.e. invalid BSON) */ - if (bson_iter_init_find (&iter, scenario, "decodeErrors")) { - BSON_ASSERT (bson_iter_recurse (&iter, &inner_iter)); - while (bson_iter_next (&inner_iter)) { - bson_iter_t test_iter; - test_bson_decode_error_type_t test = { - scenario_description, bson_type, NULL}; - - BSON_ASSERT (bson_iter_recurse (&inner_iter, &test_iter)); - while (bson_iter_next (&test_iter)) { - if (!strcmp (bson_iter_key (&test_iter), "description")) { - test.test_description = bson_iter_utf8 (&test_iter, NULL); - corpus_test_print_description (test.test_description); - } - - if (!strcmp (bson_iter_key (&test_iter), "bson")) { - test.bson = corpus_test_unhexlify (&test_iter, &test.bson_len); - } - } - - /* execute the test callback */ - decode_error (&test); - - bson_free (test.bson); - } - } - - /* test parsing errors (e.g. invalid JSON or Decimal128 strings) */ - if (bson_iter_init_find (&iter, scenario, "parseErrors")) { - BSON_ASSERT (bson_iter_recurse (&iter, &inner_iter)); - while (bson_iter_next (&inner_iter)) { - bson_iter_t test_iter; - test_bson_parse_error_type_t test = { - scenario_description, bson_type, NULL}; - - BSON_ASSERT (bson_iter_recurse (&inner_iter, &test_iter)); - while (bson_iter_next (&test_iter)) { - if (!strcmp (bson_iter_key (&test_iter), "description")) { - test.test_description = bson_iter_utf8 (&test_iter, NULL); - corpus_test_print_description (test.test_description); - } - - if (!strcmp (bson_iter_key (&test_iter), "string")) { - test.str = bson_iter_utf8 (&test_iter, &test.str_len); - } - } - - /* execute the test callback */ - parse_error (&test); - } - } -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.h b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.h deleted file mode 100644 index 1474b2f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/corpus-test.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2017 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CORPUS_TEST_H -#define CORPUS_TEST_H - -#include "TestSuite.h" - -#include - -/* -See: -github.com/mongodb/specifications/blob/master/source/bson-corpus/bson-corpus.rst -#testing-validity -*/ -typedef struct _test_bson_valid_type_t { - const char *scenario_description; - bson_type_t bson_type; - const char *test_description; - uint8_t *cB; /* "canonical_bson" */ - uint32_t cB_len; - uint8_t *dB; /* "degenerate_bson" */ - uint32_t dB_len; - const char *cE; /* "canonical_extjson" */ - const char *rE; /* "relaxed_extjson" */ - const char *dE; /* "degenerate_extjson" */ - bool lossy; -} test_bson_valid_type_t; - -/* -See: -github.com/mongodb/specifications/blob/master/source/bson-corpus/bson-corpus.rst -#testing-decode-errors - */ -typedef struct _test_bson_decode_error_type_t { - const char *scenario_description; - bson_type_t bson_type; - const char *test_description; - uint8_t *bson; - uint32_t bson_len; -} test_bson_decode_error_type_t; - -/* -See: -github.com/mongodb/specifications/blob/master/source/bson-corpus/bson-corpus.rst -#testing-parsing-errors - */ -typedef struct _test_bson_parse_error_type_t { - const char *scenario_description; - bson_type_t bson_type; - const char *test_description; - const char *str; - uint32_t str_len; -} test_bson_parse_error_type_t; - -typedef void (*test_bson_valid_cb) (test_bson_valid_type_t *test); -typedef void (*test_bson_decode_error_cb) (test_bson_decode_error_type_t *test); -typedef void (*test_bson_parse_error_cb) (test_bson_parse_error_type_t *test); - -void -corpus_test_print_description (const char *description); -uint8_t * -corpus_test_unhexlify (bson_iter_t *iter, uint32_t *bson_str_len); -void -corpus_test (bson_t *scenario, - test_bson_valid_cb valid, - test_bson_decode_error_cb decode_error, - test_bson_parse_error_cb parse_error); - -#endif diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/array.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/array.json deleted file mode 100644 index 1c654cf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/array.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Array", - "bson_type": "0x04", - "test_key": "a", - "valid": [ - { - "description": "Empty", - "canonical_bson": "0D000000046100050000000000", - "canonical_extjson": "{\"a\" : []}" - }, - { - "description": "Single Element Array", - "canonical_bson": "140000000461000C0000001030000A0000000000", - "canonical_extjson": "{\"a\" : [{\"$numberInt\": \"10\"}]}" - }, - { - "description": "Single Element Array with index set incorrectly", - "degenerate_bson": "130000000461000B00000010000A0000000000", - "canonical_bson": "140000000461000C0000001030000A0000000000", - "canonical_extjson": "{\"a\" : [{\"$numberInt\": \"10\"}]}" - }, - { - "description": "Single Element Array with index set incorrectly", - "degenerate_bson": "150000000461000D000000106162000A0000000000", - "canonical_bson": "140000000461000C0000001030000A0000000000", - "canonical_extjson": "{\"a\" : [{\"$numberInt\": \"10\"}]}" - } - ], - "decodeErrors": [ - { - "description": "Array length too long: eats outer terminator", - "bson": "140000000461000D0000001030000A0000000000" - }, - { - "description": "Array length too short: leaks terminator", - "bson": "140000000461000B0000001030000A0000000000" - }, - { - "description": "Invalid Array: bad string length in field", - "bson": "1A00000004666F6F00100000000230000500000062617A000000" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/binary.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/binary.json deleted file mode 100644 index 90a15c1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/binary.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "description": "Binary type", - "bson_type": "0x05", - "test_key": "x", - "valid": [ - { - "description": "subtype 0x00 (Zero-length)", - "canonical_bson": "0D000000057800000000000000", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"\", \"subType\" : \"00\"}}}" - }, - { - "description": "subtype 0x00 (Zero-length, keys reversed)", - "canonical_bson": "0D000000057800000000000000", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"\", \"subType\" : \"00\"}}}", - "degenerate_extjson": "{\"x\" : { \"$binary\" : {\"subType\" : \"00\", \"base64\" : \"\"}}}" - }, - { - "description": "subtype 0x00", - "canonical_bson": "0F0000000578000200000000FFFF00", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"//8=\", \"subType\" : \"00\"}}}" - }, - { - "description": "subtype 0x01", - "canonical_bson": "0F0000000578000200000001FFFF00", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"//8=\", \"subType\" : \"01\"}}}" - }, - { - "description": "subtype 0x02", - "canonical_bson": "13000000057800060000000202000000FFFF00", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"//8=\", \"subType\" : \"02\"}}}" - }, - { - "description": "subtype 0x03", - "canonical_bson": "1D000000057800100000000373FFD26444B34C6990E8E7D1DFC035D400", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"c//SZESzTGmQ6OfR38A11A==\", \"subType\" : \"03\"}}}" - }, - { - "description": "subtype 0x04", - "canonical_bson": "1D000000057800100000000473FFD26444B34C6990E8E7D1DFC035D400", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"c//SZESzTGmQ6OfR38A11A==\", \"subType\" : \"04\"}}}" - }, - { - "description": "subtype 0x05", - "canonical_bson": "1D000000057800100000000573FFD26444B34C6990E8E7D1DFC035D400", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"c//SZESzTGmQ6OfR38A11A==\", \"subType\" : \"05\"}}}" - }, - { - "description": "subtype 0x80", - "canonical_bson": "0F0000000578000200000080FFFF00", - "canonical_extjson": "{\"x\" : { \"$binary\" : {\"base64\" : \"//8=\", \"subType\" : \"80\"}}}" - }, - { - "description": "$type query operator (conflicts with legacy $binary form with $type field)", - "canonical_bson": "1F000000037800170000000224747970650007000000737472696E67000000", - "canonical_extjson": "{\"x\" : { \"$type\" : \"string\"}}" - }, - { - "description": "$type query operator (conflicts with legacy $binary form with $type field)", - "canonical_bson": "180000000378001000000010247479706500020000000000", - "canonical_extjson": "{\"x\" : { \"$type\" : {\"$numberInt\": \"2\"}}}" - } - ], - "decodeErrors": [ - { - "description": "Length longer than document", - "bson": "1D000000057800FF0000000573FFD26444B34C6990E8E7D1DFC035D400" - }, - { - "description": "Negative length", - "bson": "0D000000057800FFFFFFFF0000" - }, - { - "description": "subtype 0x02 length too long ", - "bson": "13000000057800060000000203000000FFFF00" - }, - { - "description": "subtype 0x02 length too short", - "bson": "13000000057800060000000201000000FFFF00" - }, - { - "description": "subtype 0x02 length negative one", - "bson": "130000000578000600000002FFFFFFFFFFFF00" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/boolean.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/boolean.json deleted file mode 100644 index 84c2822..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/boolean.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "description": "Boolean", - "bson_type": "0x08", - "test_key": "b", - "valid": [ - { - "description": "True", - "canonical_bson": "090000000862000100", - "canonical_extjson": "{\"b\" : true}" - }, - { - "description": "False", - "canonical_bson": "090000000862000000", - "canonical_extjson": "{\"b\" : false}" - } - ], - "decodeErrors": [ - { - "description": "Invalid boolean value of 2", - "bson": "090000000862000200" - }, - { - "description": "Invalid boolean value of -1", - "bson": "09000000086200FF00" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code.json deleted file mode 100644 index 3ae3472..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "description": "Javascript Code", - "bson_type": "0x0D", - "test_key": "a", - "valid": [ - { - "description": "Empty string", - "canonical_bson": "0D0000000D6100010000000000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"\"}}" - }, - { - "description": "Single character", - "canonical_bson": "0E0000000D610002000000620000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"b\"}}" - }, - { - "description": "Multi-character", - "canonical_bson": "190000000D61000D0000006162616261626162616261620000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"abababababab\"}}" - }, - { - "description": "two-byte UTF-8 (\u00e9)", - "canonical_bson": "190000000261000D000000C3A9C3A9C3A9C3A9C3A9C3A90000", - "canonical_extjson": "{\"a\" : \"éééééé\"}" - }, - { - "description": "three-byte UTF-8 (\u2606)", - "canonical_bson": "190000000261000D000000E29886E29886E29886E298860000", - "canonical_extjson": "{\"a\" : \"☆☆☆☆\"}" - }, - { - "description": "Embedded nulls", - "canonical_bson": "190000000261000D0000006162006261620062616261620000", - "canonical_extjson": "{\"a\" : \"ab\\u0000bab\\u0000babab\"}" - } - ], - "decodeErrors": [ - { - "description": "bad code string length: 0 (but no 0x00 either)", - "bson": "0C0000000261000000000000" - }, - { - "description": "bad code string length: -1", - "bson": "0C000000026100FFFFFFFF00" - }, - { - "description": "bad code string length: eats terminator", - "bson": "10000000026100050000006200620000" - }, - { - "description": "bad code string length: longer than rest of document", - "bson": "120000000200FFFFFF00666F6F6261720000" - }, - { - "description": "code string is not null-terminated", - "bson": "1000000002610004000000616263FF00" - }, - { - "description": "empty code string, but extra null", - "bson": "0E00000002610001000000000000" - }, - { - "description": "invalid UTF-8", - "bson": "0E00000002610002000000E90000" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code_w_scope.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code_w_scope.json deleted file mode 100644 index 5f5fb57..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/code_w_scope.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "description": "Javascript Code with Scope", - "bson_type": "0x0F", - "test_key": "a", - "valid": [ - { - "description": "Empty code string, empty scope", - "canonical_bson": "160000000F61000E0000000100000000050000000000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"\", \"$scope\" : {}}}" - }, - { - "description": "Non-empty code string, empty scope", - "canonical_bson": "1A0000000F610012000000050000006162636400050000000000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"abcd\", \"$scope\" : {}}}" - }, - { - "description": "Empty code string, non-empty scope", - "canonical_bson": "1D0000000F61001500000001000000000C000000107800010000000000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"\", \"$scope\" : {\"x\" : {\"$numberInt\": \"1\"}}}}" - }, - { - "description": "Non-empty code string and non-empty scope", - "canonical_bson": "210000000F6100190000000500000061626364000C000000107800010000000000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"abcd\", \"$scope\" : {\"x\" : {\"$numberInt\": \"1\"}}}}" - }, - { - "description": "Unicode and embedded null in code string, empty scope", - "canonical_bson": "1A0000000F61001200000005000000C3A9006400050000000000", - "canonical_extjson": "{\"a\" : {\"$code\" : \"é\\u0000d\", \"$scope\" : {}}}" - } - ], - "decodeErrors": [ - { - "description": "field length zero", - "bson": "280000000F6100000000000500000061626364001300000010780001000000107900010000000000" - }, - { - "description": "field length negative", - "bson": "280000000F6100FFFFFFFF0500000061626364001300000010780001000000107900010000000000" - }, - { - "description": "field length too short (less than minimum size)", - "bson": "160000000F61000D0000000100000000050000000000" - }, - { - "description": "field length too short (truncates scope)", - "bson": "280000000F61001F0000000500000061626364001300000010780001000000107900010000000000" - }, - { - "description": "field length too long (clips outer doc)", - "bson": "280000000F6100210000000500000061626364001300000010780001000000107900010000000000" - }, - { - "description": "field length too long (longer than outer doc)", - "bson": "280000000F6100FF0000000500000061626364001300000010780001000000107900010000000000" - }, - { - "description": "bad code string: length too short", - "bson": "280000000F6100200000000400000061626364001300000010780001000000107900010000000000" - }, - { - "description": "bad code string: length too long (clips scope)", - "bson": "280000000F6100200000000600000061626364001300000010780001000000107900010000000000" - }, - { - "description": "bad code string: negative length", - "bson": "280000000F610020000000FFFFFFFF61626364001300000010780001000000107900010000000000" - }, - { - "description": "bad code string: length longer than field", - "bson": "280000000F610020000000FF00000061626364001300000010780001000000107900010000000000" - }, - { - "description": "bad scope doc (field has bad string length)", - "bson": "1C0000000F001500000001000000000C000000020000000000000000" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/datetime.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/datetime.json deleted file mode 100644 index 60506ce..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/datetime.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "description": "DateTime", - "bson_type": "0x09", - "test_key": "a", - "valid": [ - { - "description": "epoch", - "canonical_bson": "10000000096100000000000000000000", - "relaxed_extjson": "{\"a\" : {\"$date\" : \"1970-01-01T00:00:00Z\"}}", - "canonical_extjson": "{\"a\" : {\"$date\" : {\"$numberLong\" : \"0\"}}}" - }, - { - "description": "positive ms", - "canonical_bson": "10000000096100C5D8D6CC3B01000000", - "relaxed_extjson": "{\"a\" : {\"$date\" : \"2012-12-24T12:15:30.501Z\"}}", - "canonical_extjson": "{\"a\" : {\"$date\" : {\"$numberLong\" : \"1356351330501\"}}}" - }, - { - "description": "negative", - "canonical_bson": "10000000096100C33CE7B9BDFFFFFF00", - "relaxed_extjson": "{\"a\" : {\"$date\" : {\"$numberLong\" : \"-284643869501\"}}}", - "canonical_extjson": "{\"a\" : {\"$date\" : {\"$numberLong\" : \"-284643869501\"}}}" - }, - { - "description" : "Y10K", - "canonical_bson" : "1000000009610000DC1FD277E6000000", - "canonical_extjson" : "{\"a\":{\"$date\":{\"$numberLong\":\"253402300800000\"}}}" - } - ], - "decodeErrors": [ - { - "description": "datetime field truncated", - "bson": "0C0000000961001234567800" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbpointer.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbpointer.json deleted file mode 100644 index 377e556..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbpointer.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "description": "DBPointer type (deprecated)", - "bson_type": "0x0C", - "deprecated": true, - "test_key": "a", - "valid": [ - { - "description": "DBpointer", - "canonical_bson": "1A0000000C610002000000620056E1FC72E0C917E9C471416100", - "canonical_extjson": "{\"a\": {\"$dbPointer\": {\"$ref\": \"b\", \"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}}}}", - "converted_bson": "2a00000003610022000000022472656600020000006200072469640056e1fc72e0c917e9c47141610000", - "converted_extjson": "{\"a\": {\"$ref\": \"b\", \"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}}}" - }, - { - "description": "DBpointer with opposite key order", - "canonical_bson": "1A0000000C610002000000620056E1FC72E0C917E9C471416100", - "canonical_extjson": "{\"a\": {\"$dbPointer\": {\"$ref\": \"b\", \"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}}}}", - "degenerate_extjson": "{\"a\": {\"$dbPointer\": {\"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}, \"$ref\": \"b\"}}}", - "converted_bson": "2a00000003610022000000022472656600020000006200072469640056e1fc72e0c917e9c47141610000", - "converted_extjson": "{\"a\": {\"$ref\": \"b\", \"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}}}" - }, - { - "description": "With two-byte UTF-8", - "canonical_bson": "1B0000000C610003000000C3A90056E1FC72E0C917E9C471416100", - "canonical_extjson": "{\"a\": {\"$dbPointer\": {\"$ref\": \"é\", \"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}}}}", - "converted_bson": "2B0000000361002300000002247265660003000000C3A900072469640056E1FC72E0C917E9C47141610000", - "converted_extjson": "{\"a\": {\"$ref\": \"é\", \"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}}}" - } - ], - "decodeErrors": [ - { - "description": "String with negative length", - "bson": "1A0000000C6100FFFFFFFF620056E1FC72E0C917E9C471416100" - }, - { - "description": "String with zero length", - "bson": "1A0000000C610000000000620056E1FC72E0C917E9C471416100" - }, - { - "description": "String not null terminated", - "bson": "1A0000000C610002000000626256E1FC72E0C917E9C471416100" - }, - { - "description": "short OID (less than minimum length for field)", - "bson": "160000000C61000300000061620056E1FC72E0C91700" - }, - { - "description": "short OID (greater than minimum, but truncated)", - "bson": "1A0000000C61000300000061620056E1FC72E0C917E9C4716100" - }, - { - "description": "String with bad UTF-8", - "bson": "1A0000000C610002000000E90056E1FC72E0C917E9C471416100" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbref.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbref.json deleted file mode 100644 index 1fe12c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/dbref.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "description": "DBRef", - "bson_type": "0x03", - "valid": [ - { - "description": "DBRef", - "canonical_bson": "37000000036462726566002b0000000224726566000b000000636f6c6c656374696f6e00072469640058921b3e6e32ab156a22b59e0000", - "canonical_extjson": "{\"dbref\": {\"$ref\": \"collection\", \"$id\": {\"$oid\": \"58921b3e6e32ab156a22b59e\"}}}" - }, - { - "description": "DBRef with database", - "canonical_bson": "4300000003646272656600370000000224726566000b000000636f6c6c656374696f6e00072469640058921b3e6e32ab156a22b59e0224646200030000006462000000", - "canonical_extjson": "{\"dbref\": {\"$ref\": \"collection\", \"$id\": {\"$oid\": \"58921b3e6e32ab156a22b59e\"}, \"$db\": \"db\"}}" - }, - { - "description": "DBRef with database and additional fields", - "canonical_bson": "48000000036462726566003c0000000224726566000b000000636f6c6c656374696f6e0010246964002a00000002246462000300000064620002666f6f0004000000626172000000", - "canonical_extjson": "{\"dbref\": {\"$ref\": \"collection\", \"$id\": {\"$numberInt\": \"42\"}, \"$db\": \"db\", \"foo\": \"bar\"}}" - }, - { - "description": "DBRef with additional fields", - "canonical_bson": "4400000003646272656600380000000224726566000b000000636f6c6c656374696f6e00072469640058921b3e6e32ab156a22b59e02666f6f0004000000626172000000", - "canonical_extjson": "{\"dbref\": {\"$ref\": \"collection\", \"$id\": {\"$oid\": \"58921b3e6e32ab156a22b59e\"}, \"foo\": \"bar\"}}" - }, - { - "description": "Document with key names similar to those of a DBRef", - "canonical_bson": "3e0000000224726566000c0000006e6f742d612d646272656600072469640058921b3e6e32ab156a22b59e022462616e616e6100050000007065656c0000", - "canonical_extjson": "{\"$ref\": \"not-a-dbref\", \"$id\": {\"$oid\": \"58921b3e6e32ab156a22b59e\"}, \"$banana\": \"peel\"}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-1.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-1.json deleted file mode 100644 index 7eefec6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-1.json +++ /dev/null @@ -1,317 +0,0 @@ -{ - "description": "Decimal128", - "bson_type": "0x13", - "test_key": "d", - "valid": [ - { - "description": "Special - Canonical NaN", - "canonical_bson": "180000001364000000000000000000000000000000007C00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}" - }, - { - "description": "Special - Negative NaN", - "canonical_bson": "18000000136400000000000000000000000000000000FC00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}", - "lossy": true - }, - { - "description": "Special - Negative NaN", - "canonical_bson": "18000000136400000000000000000000000000000000FC00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-NaN\"}}", - "lossy": true - }, - { - "description": "Special - Canonical SNaN", - "canonical_bson": "180000001364000000000000000000000000000000007E00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}", - "lossy": true - }, - { - "description": "Special - Negative SNaN", - "canonical_bson": "18000000136400000000000000000000000000000000FE00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}", - "lossy": true - }, - { - "description": "Special - NaN with a payload", - "canonical_bson": "180000001364001200000000000000000000000000007E00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}", - "lossy": true - }, - { - "description": "Special - Canonical Positive Infinity", - "canonical_bson": "180000001364000000000000000000000000000000007800", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}" - }, - { - "description": "Special - Canonical Negative Infinity", - "canonical_bson": "18000000136400000000000000000000000000000000F800", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}" - }, - { - "description": "Special - Invalid representation treated as 0", - "canonical_bson": "180000001364000000000000000000000000000000106C00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}", - "lossy": true - }, - { - "description": "Special - Invalid representation treated as -0", - "canonical_bson": "18000000136400DCBA9876543210DEADBEEF00000010EC00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}", - "lossy": true - }, - { - "description": "Special - Invalid representation treated as 0E3", - "canonical_bson": "18000000136400FFFFFFFFFFFFFFFFFFFFFFFFFFFF116C00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+3\"}}", - "lossy": true - }, - { - "description": "Regular - Adjusted Exponent Limit", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CF22F00", - "canonical_extjson": "{\"d\": { \"$numberDecimal\": \"0.000001234567890123456789012345678901234\" }}" - }, - { - "description": "Regular - Smallest", - "canonical_bson": "18000000136400D204000000000000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.001234\"}}" - }, - { - "description": "Regular - Smallest with Trailing Zeros", - "canonical_bson": "1800000013640040EF5A07000000000000000000002A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00123400000\"}}" - }, - { - "description": "Regular - 0.1", - "canonical_bson": "1800000013640001000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1\"}}" - }, - { - "description": "Regular - 0.1234567890123456789012345678901234", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CFC2F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1234567890123456789012345678901234\"}}" - }, - { - "description": "Regular - 0", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "Regular - -0", - "canonical_bson": "18000000136400000000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}" - }, - { - "description": "Regular - -0.0", - "canonical_bson": "1800000013640000000000000000000000000000003EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0\"}}" - }, - { - "description": "Regular - 2", - "canonical_bson": "180000001364000200000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2\"}}" - }, - { - "description": "Regular - 2.000", - "canonical_bson": "18000000136400D0070000000000000000000000003A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2.000\"}}" - }, - { - "description": "Regular - Largest", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234567890123456789012345678901234\"}}" - }, - { - "description": "Scientific - Tiniest", - "canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09ED010000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.999999999999999999999999999999999E-6143\"}}" - }, - { - "description": "Scientific - Tiny", - "canonical_bson": "180000001364000100000000000000000000000000000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}" - }, - { - "description": "Scientific - Negative Tiny", - "canonical_bson": "180000001364000100000000000000000000000000008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}" - }, - { - "description": "Scientific - Adjusted Exponent Limit", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CF02F00", - "canonical_extjson": "{\"d\": { \"$numberDecimal\": \"1.234567890123456789012345678901234E-7\" }}" - }, - { - "description": "Scientific - Fractional", - "canonical_bson": "1800000013640064000000000000000000000000002CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00E-8\"}}" - }, - { - "description": "Scientific - 0 with Exponent", - "canonical_bson": "180000001364000000000000000000000000000000205F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6000\"}}" - }, - { - "description": "Scientific - 0 with Negative Exponent", - "canonical_bson": "1800000013640000000000000000000000000000007A2B00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-611\"}}" - }, - { - "description": "Scientific - No Decimal with Signed Exponent", - "canonical_bson": "180000001364000100000000000000000000000000463000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}" - }, - { - "description": "Scientific - Trailing Zero", - "canonical_bson": "180000001364001A04000000000000000000000000423000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.050E+4\"}}" - }, - { - "description": "Scientific - With Decimal", - "canonical_bson": "180000001364006900000000000000000000000000423000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.05E+3\"}}" - }, - { - "description": "Scientific - Full", - "canonical_bson": "18000000136400FFFFFFFFFFFFFFFFFFFFFFFFFFFF403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5192296858534827628530496329220095\"}}" - }, - { - "description": "Scientific - Large", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}" - }, - { - "description": "Scientific - Largest", - "canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09EDFF5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.999999999999999999999999999999999E+6144\"}}" - }, - { - "description": "Non-Canonical Parsing - Exponent Normalization", - "canonical_bson": "1800000013640064000000000000000000000000002CB000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-100E-10\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00E-8\"}}" - }, - { - "description": "Non-Canonical Parsing - Unsigned Positive Exponent", - "canonical_bson": "180000001364000100000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}" - }, - { - "description": "Non-Canonical Parsing - Lowercase Exponent Identifier", - "canonical_bson": "180000001364000100000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}" - }, - { - "description": "Non-Canonical Parsing - Long Significand with Exponent", - "canonical_bson": "1800000013640079D9E0F9763ADA429D0200000000583000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12345689012345789012345E+12\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.2345689012345789012345E+34\"}}" - }, - { - "description": "Non-Canonical Parsing - Positive Sign", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+1234567890123456789012345678901234\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234567890123456789012345678901234\"}}" - }, - { - "description": "Non-Canonical Parsing - Long Decimal String", - "canonical_bson": "180000001364000100000000000000000000000000722800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-999\"}}" - }, - { - "description": "Non-Canonical Parsing - nan", - "canonical_bson": "180000001364000000000000000000000000000000007C00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"nan\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}" - }, - { - "description": "Non-Canonical Parsing - nAn", - "canonical_bson": "180000001364000000000000000000000000000000007C00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"nAn\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}" - }, - { - "description": "Non-Canonical Parsing - +infinity", - "canonical_bson": "180000001364000000000000000000000000000000007800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+infinity\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - infinity", - "canonical_bson": "180000001364000000000000000000000000000000007800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"infinity\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - infiniTY", - "canonical_bson": "180000001364000000000000000000000000000000007800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"infiniTY\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - inf", - "canonical_bson": "180000001364000000000000000000000000000000007800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"inf\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - inF", - "canonical_bson": "180000001364000000000000000000000000000000007800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"inF\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - -infinity", - "canonical_bson": "18000000136400000000000000000000000000000000F800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-infinity\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - -infiniTy", - "canonical_bson": "18000000136400000000000000000000000000000000F800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-infiniTy\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - -Inf", - "canonical_bson": "18000000136400000000000000000000000000000000F800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - -inf", - "canonical_bson": "18000000136400000000000000000000000000000000F800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-inf\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}" - }, - { - "description": "Non-Canonical Parsing - -inF", - "canonical_bson": "18000000136400000000000000000000000000000000F800", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-inF\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}" - }, - { - "description": "Rounded Subnormal number", - "canonical_bson": "180000001364000100000000000000000000000000000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10E-6177\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}" - }, - { - "description": "Clamped", - "canonical_bson": "180000001364000a00000000000000000000000000fe5f00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E6112\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+6112\"}}" - }, - { - "description": "Exact rounding", - "canonical_bson": "18000000136400000000000a5bc138938d44c64d31cc3700", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+999\"}}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-2.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-2.json deleted file mode 100644 index 316d3b0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-2.json +++ /dev/null @@ -1,793 +0,0 @@ -{ - "description": "Decimal128", - "bson_type": "0x13", - "test_key": "d", - "valid": [ - { - "description": "[decq021] Normality", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C40B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1234567890123456789012345678901234\"}}" - }, - { - "description": "[decq823] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400010000800000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-2147483649\"}}" - }, - { - "description": "[decq822] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400000000800000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-2147483648\"}}" - }, - { - "description": "[decq821] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400FFFFFF7F0000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-2147483647\"}}" - }, - { - "description": "[decq820] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400FEFFFF7F0000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-2147483646\"}}" - }, - { - "description": "[decq152] fold-downs (more below)", - "canonical_bson": "18000000136400393000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-12345\"}}" - }, - { - "description": "[decq154] fold-downs (more below)", - "canonical_bson": "18000000136400D20400000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1234\"}}" - }, - { - "description": "[decq006] derivative canonical plain strings", - "canonical_bson": "18000000136400EE0200000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-750\"}}" - }, - { - "description": "[decq164] fold-downs (more below)", - "canonical_bson": "1800000013640039300000000000000000000000003CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-123.45\"}}" - }, - { - "description": "[decq156] fold-downs (more below)", - "canonical_bson": "180000001364007B0000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-123\"}}" - }, - { - "description": "[decq008] derivative canonical plain strings", - "canonical_bson": "18000000136400EE020000000000000000000000003EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-75.0\"}}" - }, - { - "description": "[decq158] fold-downs (more below)", - "canonical_bson": "180000001364000C0000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-12\"}}" - }, - { - "description": "[decq122] Nmax and similar", - "canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09EDFFDF00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-9.999999999999999999999999999999999E+6144\"}}" - }, - { - "description": "[decq002] (mostly derived from the Strawman 4 document and examples)", - "canonical_bson": "18000000136400EE020000000000000000000000003CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-7.50\"}}" - }, - { - "description": "[decq004] derivative canonical plain strings", - "canonical_bson": "18000000136400EE0200000000000000000000000042B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-7.50E+3\"}}" - }, - { - "description": "[decq018] derivative canonical plain strings", - "canonical_bson": "18000000136400EE020000000000000000000000002EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-7.50E-7\"}}" - }, - { - "description": "[decq125] Nmax and similar", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CFEDF00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.234567890123456789012345678901234E+6144\"}}" - }, - { - "description": "[decq131] fold-downs (more below)", - "canonical_bson": "18000000136400000000807F1BCF85B27059C8A43CFEDF00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.230000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq162] fold-downs (more below)", - "canonical_bson": "180000001364007B000000000000000000000000003CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.23\"}}" - }, - { - "description": "[decq176] Nmin and below", - "canonical_bson": "18000000136400010000000A5BC138938D44C64D31008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.000000000000000000000000000000001E-6143\"}}" - }, - { - "description": "[decq174] Nmin and below", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.000000000000000000000000000000000E-6143\"}}" - }, - { - "description": "[decq133] fold-downs (more below)", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FEDF00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.000000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq160] fold-downs (more below)", - "canonical_bson": "18000000136400010000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1\"}}" - }, - { - "description": "[decq172] Nmin and below", - "canonical_bson": "180000001364000100000000000000000000000000428000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6143\"}}" - }, - { - "description": "[decq010] derivative canonical plain strings", - "canonical_bson": "18000000136400EE020000000000000000000000003AB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.750\"}}" - }, - { - "description": "[decq012] derivative canonical plain strings", - "canonical_bson": "18000000136400EE0200000000000000000000000038B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0750\"}}" - }, - { - "description": "[decq014] derivative canonical plain strings", - "canonical_bson": "18000000136400EE0200000000000000000000000034B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000750\"}}" - }, - { - "description": "[decq016] derivative canonical plain strings", - "canonical_bson": "18000000136400EE0200000000000000000000000030B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00000750\"}}" - }, - { - "description": "[decq404] zeros", - "canonical_bson": "180000001364000000000000000000000000000000000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6176\"}}" - }, - { - "description": "[decq424] negative zeros", - "canonical_bson": "180000001364000000000000000000000000000000008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6176\"}}" - }, - { - "description": "[decq407] zeros", - "canonical_bson": "1800000013640000000000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00\"}}" - }, - { - "description": "[decq427] negative zeros", - "canonical_bson": "1800000013640000000000000000000000000000003CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00\"}}" - }, - { - "description": "[decq409] zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[decq428] negative zeros", - "canonical_bson": "18000000136400000000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}" - }, - { - "description": "[decq700] Selected DPD codes", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[decq406] zeros", - "canonical_bson": "1800000013640000000000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00\"}}" - }, - { - "description": "[decq426] negative zeros", - "canonical_bson": "1800000013640000000000000000000000000000003CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00\"}}" - }, - { - "description": "[decq410] zeros", - "canonical_bson": "180000001364000000000000000000000000000000463000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+3\"}}" - }, - { - "description": "[decq431] negative zeros", - "canonical_bson": "18000000136400000000000000000000000000000046B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+3\"}}" - }, - { - "description": "[decq419] clamped zeros...", - "canonical_bson": "180000001364000000000000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6111\"}}" - }, - { - "description": "[decq432] negative zeros", - "canonical_bson": "180000001364000000000000000000000000000000FEDF00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6111\"}}" - }, - { - "description": "[decq405] zeros", - "canonical_bson": "180000001364000000000000000000000000000000000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6176\"}}" - }, - { - "description": "[decq425] negative zeros", - "canonical_bson": "180000001364000000000000000000000000000000008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6176\"}}" - }, - { - "description": "[decq508] Specials", - "canonical_bson": "180000001364000000000000000000000000000000007800", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}" - }, - { - "description": "[decq528] Specials", - "canonical_bson": "18000000136400000000000000000000000000000000F800", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}" - }, - { - "description": "[decq541] Specials", - "canonical_bson": "180000001364000000000000000000000000000000007C00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}" - }, - { - "description": "[decq074] Nmin and below", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E-6143\"}}" - }, - { - "description": "[decq602] fold-down full sequence", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq604] fold-down full sequence", - "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000000E+6143\"}}" - }, - { - "description": "[decq606] fold-down full sequence", - "canonical_bson": "1800000013640000000080264B91C02220BE377E00FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000000000E+6142\"}}" - }, - { - "description": "[decq608] fold-down full sequence", - "canonical_bson": "1800000013640000000040EAED7446D09C2C9F0C00FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000E+6141\"}}" - }, - { - "description": "[decq610] fold-down full sequence", - "canonical_bson": "18000000136400000000A0CA17726DAE0F1E430100FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000E+6140\"}}" - }, - { - "description": "[decq612] fold-down full sequence", - "canonical_bson": "18000000136400000000106102253E5ECE4F200000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000000E+6139\"}}" - }, - { - "description": "[decq614] fold-down full sequence", - "canonical_bson": "18000000136400000000E83C80D09F3C2E3B030000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000E+6138\"}}" - }, - { - "description": "[decq616] fold-down full sequence", - "canonical_bson": "18000000136400000000E4D20CC8DCD2B752000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000E+6137\"}}" - }, - { - "description": "[decq618] fold-down full sequence", - "canonical_bson": "180000001364000000004A48011416954508000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000E+6136\"}}" - }, - { - "description": "[decq620] fold-down full sequence", - "canonical_bson": "18000000136400000000A1EDCCCE1BC2D300000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000E+6135\"}}" - }, - { - "description": "[decq622] fold-down full sequence", - "canonical_bson": "18000000136400000080F64AE1C7022D1500000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000E+6134\"}}" - }, - { - "description": "[decq624] fold-down full sequence", - "canonical_bson": "18000000136400000040B2BAC9E0191E0200000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000E+6133\"}}" - }, - { - "description": "[decq626] fold-down full sequence", - "canonical_bson": "180000001364000000A0DEC5ADC935360000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000E+6132\"}}" - }, - { - "description": "[decq628] fold-down full sequence", - "canonical_bson": "18000000136400000010632D5EC76B050000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000E+6131\"}}" - }, - { - "description": "[decq630] fold-down full sequence", - "canonical_bson": "180000001364000000E8890423C78A000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000E+6130\"}}" - }, - { - "description": "[decq632] fold-down full sequence", - "canonical_bson": "18000000136400000064A7B3B6E00D000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000E+6129\"}}" - }, - { - "description": "[decq634] fold-down full sequence", - "canonical_bson": "1800000013640000008A5D78456301000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000E+6128\"}}" - }, - { - "description": "[decq636] fold-down full sequence", - "canonical_bson": "180000001364000000C16FF2862300000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000E+6127\"}}" - }, - { - "description": "[decq638] fold-down full sequence", - "canonical_bson": "180000001364000080C6A47E8D0300000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000E+6126\"}}" - }, - { - "description": "[decq640] fold-down full sequence", - "canonical_bson": "1800000013640000407A10F35A0000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000E+6125\"}}" - }, - { - "description": "[decq642] fold-down full sequence", - "canonical_bson": "1800000013640000A0724E18090000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000E+6124\"}}" - }, - { - "description": "[decq644] fold-down full sequence", - "canonical_bson": "180000001364000010A5D4E8000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000E+6123\"}}" - }, - { - "description": "[decq646] fold-down full sequence", - "canonical_bson": "1800000013640000E8764817000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000E+6122\"}}" - }, - { - "description": "[decq648] fold-down full sequence", - "canonical_bson": "1800000013640000E40B5402000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000E+6121\"}}" - }, - { - "description": "[decq650] fold-down full sequence", - "canonical_bson": "1800000013640000CA9A3B00000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000E+6120\"}}" - }, - { - "description": "[decq652] fold-down full sequence", - "canonical_bson": "1800000013640000E1F50500000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000E+6119\"}}" - }, - { - "description": "[decq654] fold-down full sequence", - "canonical_bson": "180000001364008096980000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000E+6118\"}}" - }, - { - "description": "[decq656] fold-down full sequence", - "canonical_bson": "1800000013640040420F0000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000E+6117\"}}" - }, - { - "description": "[decq658] fold-down full sequence", - "canonical_bson": "18000000136400A086010000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000E+6116\"}}" - }, - { - "description": "[decq660] fold-down full sequence", - "canonical_bson": "180000001364001027000000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000E+6115\"}}" - }, - { - "description": "[decq662] fold-down full sequence", - "canonical_bson": "18000000136400E803000000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000E+6114\"}}" - }, - { - "description": "[decq664] fold-down full sequence", - "canonical_bson": "180000001364006400000000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00E+6113\"}}" - }, - { - "description": "[decq666] fold-down full sequence", - "canonical_bson": "180000001364000A00000000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+6112\"}}" - }, - { - "description": "[decq060] fold-downs (more below)", - "canonical_bson": "180000001364000100000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1\"}}" - }, - { - "description": "[decq670] fold-down full sequence", - "canonical_bson": "180000001364000100000000000000000000000000FC5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6110\"}}" - }, - { - "description": "[decq668] fold-down full sequence", - "canonical_bson": "180000001364000100000000000000000000000000FE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6111\"}}" - }, - { - "description": "[decq072] Nmin and below", - "canonical_bson": "180000001364000100000000000000000000000000420000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6143\"}}" - }, - { - "description": "[decq076] Nmin and below", - "canonical_bson": "18000000136400010000000A5BC138938D44C64D31000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000001E-6143\"}}" - }, - { - "description": "[decq036] fold-downs (more below)", - "canonical_bson": "18000000136400000000807F1BCF85B27059C8A43CFE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.230000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq062] fold-downs (more below)", - "canonical_bson": "180000001364007B000000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.23\"}}" - }, - { - "description": "[decq034] Nmax and similar", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CFE5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.234567890123456789012345678901234E+6144\"}}" - }, - { - "description": "[decq441] exponent lengths", - "canonical_bson": "180000001364000700000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7\"}}" - }, - { - "description": "[decq449] exponent lengths", - "canonical_bson": "1800000013640007000000000000000000000000001E5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+5999\"}}" - }, - { - "description": "[decq447] exponent lengths", - "canonical_bson": "1800000013640007000000000000000000000000000E3800", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+999\"}}" - }, - { - "description": "[decq445] exponent lengths", - "canonical_bson": "180000001364000700000000000000000000000000063100", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+99\"}}" - }, - { - "description": "[decq443] exponent lengths", - "canonical_bson": "180000001364000700000000000000000000000000523000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+9\"}}" - }, - { - "description": "[decq842] VG testcase", - "canonical_bson": "180000001364000000FED83F4E7C9FE4E269E38A5BCD1700", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7.049000000000010795488000000000000E-3097\"}}" - }, - { - "description": "[decq841] VG testcase", - "canonical_bson": "180000001364000000203B9DB5056F000000000000002400", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"8.000000000000000000E-1550\"}}" - }, - { - "description": "[decq840] VG testcase", - "canonical_bson": "180000001364003C17258419D710C42F0000000000002400", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"8.81125000000001349436E-1548\"}}" - }, - { - "description": "[decq701] Selected DPD codes", - "canonical_bson": "180000001364000900000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9\"}}" - }, - { - "description": "[decq032] Nmax and similar", - "canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09EDFF5F00", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.999999999999999999999999999999999E+6144\"}}" - }, - { - "description": "[decq702] Selected DPD codes", - "canonical_bson": "180000001364000A00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10\"}}" - }, - { - "description": "[decq057] fold-downs (more below)", - "canonical_bson": "180000001364000C00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12\"}}" - }, - { - "description": "[decq703] Selected DPD codes", - "canonical_bson": "180000001364001300000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"19\"}}" - }, - { - "description": "[decq704] Selected DPD codes", - "canonical_bson": "180000001364001400000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"20\"}}" - }, - { - "description": "[decq705] Selected DPD codes", - "canonical_bson": "180000001364001D00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"29\"}}" - }, - { - "description": "[decq706] Selected DPD codes", - "canonical_bson": "180000001364001E00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"30\"}}" - }, - { - "description": "[decq707] Selected DPD codes", - "canonical_bson": "180000001364002700000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"39\"}}" - }, - { - "description": "[decq708] Selected DPD codes", - "canonical_bson": "180000001364002800000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"40\"}}" - }, - { - "description": "[decq709] Selected DPD codes", - "canonical_bson": "180000001364003100000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"49\"}}" - }, - { - "description": "[decq710] Selected DPD codes", - "canonical_bson": "180000001364003200000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"50\"}}" - }, - { - "description": "[decq711] Selected DPD codes", - "canonical_bson": "180000001364003B00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"59\"}}" - }, - { - "description": "[decq712] Selected DPD codes", - "canonical_bson": "180000001364003C00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"60\"}}" - }, - { - "description": "[decq713] Selected DPD codes", - "canonical_bson": "180000001364004500000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"69\"}}" - }, - { - "description": "[decq714] Selected DPD codes", - "canonical_bson": "180000001364004600000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"70\"}}" - }, - { - "description": "[decq715] Selected DPD codes", - "canonical_bson": "180000001364004700000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"71\"}}" - }, - { - "description": "[decq716] Selected DPD codes", - "canonical_bson": "180000001364004800000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"72\"}}" - }, - { - "description": "[decq717] Selected DPD codes", - "canonical_bson": "180000001364004900000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"73\"}}" - }, - { - "description": "[decq718] Selected DPD codes", - "canonical_bson": "180000001364004A00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"74\"}}" - }, - { - "description": "[decq719] Selected DPD codes", - "canonical_bson": "180000001364004B00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"75\"}}" - }, - { - "description": "[decq720] Selected DPD codes", - "canonical_bson": "180000001364004C00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"76\"}}" - }, - { - "description": "[decq721] Selected DPD codes", - "canonical_bson": "180000001364004D00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"77\"}}" - }, - { - "description": "[decq722] Selected DPD codes", - "canonical_bson": "180000001364004E00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"78\"}}" - }, - { - "description": "[decq723] Selected DPD codes", - "canonical_bson": "180000001364004F00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"79\"}}" - }, - { - "description": "[decq056] fold-downs (more below)", - "canonical_bson": "180000001364007B00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"123\"}}" - }, - { - "description": "[decq064] fold-downs (more below)", - "canonical_bson": "1800000013640039300000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"123.45\"}}" - }, - { - "description": "[decq732] Selected DPD codes", - "canonical_bson": "180000001364000802000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"520\"}}" - }, - { - "description": "[decq733] Selected DPD codes", - "canonical_bson": "180000001364000902000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"521\"}}" - }, - { - "description": "[decq740] DPD: one of each of the huffman groups", - "canonical_bson": "180000001364000903000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"777\"}}" - }, - { - "description": "[decq741] DPD: one of each of the huffman groups", - "canonical_bson": "180000001364000A03000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"778\"}}" - }, - { - "description": "[decq742] DPD: one of each of the huffman groups", - "canonical_bson": "180000001364001303000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"787\"}}" - }, - { - "description": "[decq746] DPD: one of each of the huffman groups", - "canonical_bson": "180000001364001F03000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"799\"}}" - }, - { - "description": "[decq743] DPD: one of each of the huffman groups", - "canonical_bson": "180000001364006D03000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"877\"}}" - }, - { - "description": "[decq753] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "180000001364007803000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"888\"}}" - }, - { - "description": "[decq754] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "180000001364007903000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"889\"}}" - }, - { - "description": "[decq760] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "180000001364008203000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"898\"}}" - }, - { - "description": "[decq764] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "180000001364008303000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"899\"}}" - }, - { - "description": "[decq745] DPD: one of each of the huffman groups", - "canonical_bson": "18000000136400D303000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"979\"}}" - }, - { - "description": "[decq770] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "18000000136400DC03000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"988\"}}" - }, - { - "description": "[decq774] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "18000000136400DD03000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"989\"}}" - }, - { - "description": "[decq730] Selected DPD codes", - "canonical_bson": "18000000136400E203000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"994\"}}" - }, - { - "description": "[decq731] Selected DPD codes", - "canonical_bson": "18000000136400E303000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"995\"}}" - }, - { - "description": "[decq744] DPD: one of each of the huffman groups", - "canonical_bson": "18000000136400E503000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"997\"}}" - }, - { - "description": "[decq780] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "18000000136400E603000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"998\"}}" - }, - { - "description": "[decq787] DPD all-highs cases (includes the 24 redundant codes)", - "canonical_bson": "18000000136400E703000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"999\"}}" - }, - { - "description": "[decq053] fold-downs (more below)", - "canonical_bson": "18000000136400D204000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234\"}}" - }, - { - "description": "[decq052] fold-downs (more below)", - "canonical_bson": "180000001364003930000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12345\"}}" - }, - { - "description": "[decq792] Miscellaneous (testers' queries, etc.)", - "canonical_bson": "180000001364003075000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"30000\"}}" - }, - { - "description": "[decq793] Miscellaneous (testers' queries, etc.)", - "canonical_bson": "1800000013640090940D0000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"890000\"}}" - }, - { - "description": "[decq824] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400FEFFFF7F00000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2147483646\"}}" - }, - { - "description": "[decq825] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400FFFFFF7F00000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2147483647\"}}" - }, - { - "description": "[decq826] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "180000001364000000008000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2147483648\"}}" - }, - { - "description": "[decq827] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "180000001364000100008000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2147483649\"}}" - }, - { - "description": "[decq828] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400FEFFFFFF00000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"4294967294\"}}" - }, - { - "description": "[decq829] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "18000000136400FFFFFFFF00000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"4294967295\"}}" - }, - { - "description": "[decq830] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "180000001364000000000001000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"4294967296\"}}" - }, - { - "description": "[decq831] values around [u]int32 edges (zeros done earlier)", - "canonical_bson": "180000001364000100000001000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"4294967297\"}}" - }, - { - "description": "[decq022] Normality", - "canonical_bson": "18000000136400C7711CC7B548F377DC80A131C836403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1111111111111111111111111111111111\"}}" - }, - { - "description": "[decq020] Normality", - "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234567890123456789012345678901234\"}}" - }, - { - "description": "[decq550] Specials", - "canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09ED413000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9999999999999999999999999999999999\"}}" - } - ] -} - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-3.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-3.json deleted file mode 100644 index 9b01534..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-3.json +++ /dev/null @@ -1,1771 +0,0 @@ -{ - "description": "Decimal128", - "bson_type": "0x13", - "test_key": "d", - "valid": [ - { - "description": "[basx066] strings without E cannot generate E in result", - "canonical_bson": "18000000136400185C0ACE0000000000000000000038B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-00345678.5432\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-345678.5432\"}}" - }, - { - "description": "[basx065] strings without E cannot generate E in result", - "canonical_bson": "18000000136400185C0ACE0000000000000000000038B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0345678.5432\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-345678.5432\"}}" - }, - { - "description": "[basx064] strings without E cannot generate E in result", - "canonical_bson": "18000000136400185C0ACE0000000000000000000038B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-345678.5432\"}}" - }, - { - "description": "[basx041] strings without E cannot generate E in result", - "canonical_bson": "180000001364004C0000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-76\"}}" - }, - { - "description": "[basx027] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364000F270000000000000000000000003AB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-9.999\"}}" - }, - { - "description": "[basx026] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364009F230000000000000000000000003AB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-9.119\"}}" - }, - { - "description": "[basx025] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364008F030000000000000000000000003CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-9.11\"}}" - }, - { - "description": "[basx024] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364005B000000000000000000000000003EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-9.1\"}}" - }, - { - "description": "[dqbsr531] negatives (Rounded)", - "canonical_bson": "1800000013640099761CC7B548F377DC80A131C836FEAF00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.1111111111111111111111111111123450\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.111111111111111111111111111112345\"}}" - }, - { - "description": "[basx022] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364000A000000000000000000000000003EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.0\"}}" - }, - { - "description": "[basx021] conform to rules and exponent will be in permitted range).", - "canonical_bson": "18000000136400010000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1\"}}" - }, - { - "description": "[basx601] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000002E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-9\"}}" - }, - { - "description": "[basx622] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000002EB000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-9\"}}" - }, - { - "description": "[basx602] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000303000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-8\"}}" - }, - { - "description": "[basx621] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000030B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-8\"}}" - }, - { - "description": "[basx603] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-7\"}}" - }, - { - "description": "[basx620] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000032B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-7\"}}" - }, - { - "description": "[basx604] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000\"}}" - }, - { - "description": "[basx619] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000034B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000000\"}}" - }, - { - "description": "[basx605] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000363000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000\"}}" - }, - { - "description": "[basx618] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000036B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00000\"}}" - }, - { - "description": "[basx680] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"000000.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx606] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000383000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000\"}}" - }, - { - "description": "[basx617] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000038B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0000\"}}" - }, - { - "description": "[basx681] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"00000.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx686] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+00000.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx687] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000040B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-00000.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}" - }, - { - "description": "[basx019] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640000000000000000000000000000003CB000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-00.00\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00\"}}" - }, - { - "description": "[basx607] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000\"}}" - }, - { - "description": "[basx616] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003AB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000\"}}" - }, - { - "description": "[basx682] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0000.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx155] Numbers with E", - "canonical_bson": "1800000013640000000000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000e+0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000\"}}" - }, - { - "description": "[basx130] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000\"}}" - }, - { - "description": "[basx290] some more negative zeros [systematic tests below]", - "canonical_bson": "18000000136400000000000000000000000000000038B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0000\"}}" - }, - { - "description": "[basx131] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000\"}}" - }, - { - "description": "[basx291] some more negative zeros [systematic tests below]", - "canonical_bson": "18000000136400000000000000000000000000000036B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00000\"}}" - }, - { - "description": "[basx132] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000\"}}" - }, - { - "description": "[basx292] some more negative zeros [systematic tests below]", - "canonical_bson": "18000000136400000000000000000000000000000034B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000000\"}}" - }, - { - "description": "[basx133] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-7\"}}" - }, - { - "description": "[basx293] some more negative zeros [systematic tests below]", - "canonical_bson": "18000000136400000000000000000000000000000032B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-7\"}}" - }, - { - "description": "[basx608] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00\"}}" - }, - { - "description": "[basx615] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003CB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00\"}}" - }, - { - "description": "[basx683] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"000.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx630] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00\"}}" - }, - { - "description": "[basx670] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00\"}}" - }, - { - "description": "[basx631] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0\"}}" - }, - { - "description": "[basx671] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000\"}}" - }, - { - "description": "[basx134] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000\"}}" - }, - { - "description": "[basx294] some more negative zeros [systematic tests below]", - "canonical_bson": "18000000136400000000000000000000000000000038B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0000\"}}" - }, - { - "description": "[basx632] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx672] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000\"}}" - }, - { - "description": "[basx135] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000\"}}" - }, - { - "description": "[basx295] some more negative zeros [systematic tests below]", - "canonical_bson": "18000000136400000000000000000000000000000036B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00000\"}}" - }, - { - "description": "[basx633] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000423000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+1\"}}" - }, - { - "description": "[basx673] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000\"}}" - }, - { - "description": "[basx136] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000\"}}" - }, - { - "description": "[basx674] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000\"}}" - }, - { - "description": "[basx634] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000443000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+2\"}}" - }, - { - "description": "[basx137] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-7\"}}" - }, - { - "description": "[basx635] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+3\"}}" - }, - { - "description": "[basx675] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-7\"}}" - }, - { - "description": "[basx636] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000483000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+4\"}}" - }, - { - "description": "[basx676] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000303000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-8\"}}" - }, - { - "description": "[basx637] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+5\"}}" - }, - { - "description": "[basx677] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000002E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-9\"}}" - }, - { - "description": "[basx638] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6\"}}" - }, - { - "description": "[basx678] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000002C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-10\"}}" - }, - { - "description": "[basx149] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"000E+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+9\"}}" - }, - { - "description": "[basx639] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+7\"}}" - }, - { - "description": "[basx679] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000002A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00E-9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-11\"}}" - }, - { - "description": "[basx063] strings without E cannot generate E in result", - "canonical_bson": "18000000136400185C0ACE00000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+00345678.5432\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"345678.5432\"}}" - }, - { - "description": "[basx018] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640000000000000000000000000000003EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0\"}}" - }, - { - "description": "[basx609] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0\"}}" - }, - { - "description": "[basx614] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0\"}}" - }, - { - "description": "[basx684] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"00.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx640] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0\"}}" - }, - { - "description": "[basx660] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0\"}}" - }, - { - "description": "[basx641] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx661] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00\"}}" - }, - { - "description": "[basx296] some more negative zeros [systematic tests below]", - "canonical_bson": "1800000013640000000000000000000000000000003AB000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000\"}}" - }, - { - "description": "[basx642] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000423000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+1\"}}" - }, - { - "description": "[basx662] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000\"}}" - }, - { - "description": "[basx297] some more negative zeros [systematic tests below]", - "canonical_bson": "18000000136400000000000000000000000000000038B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0000\"}}" - }, - { - "description": "[basx643] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000443000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+2\"}}" - }, - { - "description": "[basx663] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000\"}}" - }, - { - "description": "[basx644] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+3\"}}" - }, - { - "description": "[basx664] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000\"}}" - }, - { - "description": "[basx645] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000483000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+4\"}}" - }, - { - "description": "[basx665] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000\"}}" - }, - { - "description": "[basx646] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+5\"}}" - }, - { - "description": "[basx666] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-7\"}}" - }, - { - "description": "[basx647] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6\"}}" - }, - { - "description": "[basx667] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000303000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-8\"}}" - }, - { - "description": "[basx648] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+7\"}}" - }, - { - "description": "[basx668] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000002E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-9\"}}" - }, - { - "description": "[basx160] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"00E+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+9\"}}" - }, - { - "description": "[basx161] Numbers with E", - "canonical_bson": "1800000013640000000000000000000000000000002E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"00E-9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-9\"}}" - }, - { - "description": "[basx649] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000503000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+8\"}}" - }, - { - "description": "[basx669] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000002C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0E-9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-10\"}}" - }, - { - "description": "[basx062] strings without E cannot generate E in result", - "canonical_bson": "18000000136400185C0ACE00000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+0345678.5432\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"345678.5432\"}}" - }, - { - "description": "[basx001] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx017] conform to rules and exponent will be in permitted range).", - "canonical_bson": "18000000136400000000000000000000000000000040B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}" - }, - { - "description": "[basx611] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx613] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000040B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}" - }, - { - "description": "[basx685] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx688] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+0.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx689] Zeros", - "canonical_bson": "18000000136400000000000000000000000000000040B000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}" - }, - { - "description": "[basx650] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}" - }, - { - "description": "[basx651] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000423000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+1\"}}" - }, - { - "description": "[basx298] some more negative zeros [systematic tests below]", - "canonical_bson": "1800000013640000000000000000000000000000003CB000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00\"}}" - }, - { - "description": "[basx652] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000443000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+2\"}}" - }, - { - "description": "[basx299] some more negative zeros [systematic tests below]", - "canonical_bson": "1800000013640000000000000000000000000000003AB000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000\"}}" - }, - { - "description": "[basx653] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000463000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+3\"}}" - }, - { - "description": "[basx654] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000483000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+4\"}}" - }, - { - "description": "[basx655] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+5\"}}" - }, - { - "description": "[basx656] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6\"}}" - }, - { - "description": "[basx657] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000004E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+7\"}}" - }, - { - "description": "[basx658] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000503000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+8\"}}" - }, - { - "description": "[basx138] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+0E+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+9\"}}" - }, - { - "description": "[basx139] Numbers with E", - "canonical_bson": "18000000136400000000000000000000000000000052B000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+9\"}}" - }, - { - "description": "[basx144] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000523000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+9\"}}" - }, - { - "description": "[basx154] Numbers with E", - "canonical_bson": "180000001364000000000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+9\"}}" - }, - { - "description": "[basx659] Zeros", - "canonical_bson": "180000001364000000000000000000000000000000523000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+9\"}}" - }, - { - "description": "[basx042] strings without E cannot generate E in result", - "canonical_bson": "18000000136400FC040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+12.76\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.76\"}}" - }, - { - "description": "[basx143] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+1E+009\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx061] strings without E cannot generate E in result", - "canonical_bson": "18000000136400185C0ACE00000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+345678.5432\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"345678.5432\"}}" - }, - { - "description": "[basx036] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640015CD5B0700000000000000000000203000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000000123456789\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.23456789E-8\"}}" - }, - { - "description": "[basx035] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640015CD5B0700000000000000000000223000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000123456789\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.23456789E-7\"}}" - }, - { - "description": "[basx034] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640015CD5B0700000000000000000000243000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000123456789\"}}" - }, - { - "description": "[basx053] strings without E cannot generate E in result", - "canonical_bson": "180000001364003200000000000000000000000000323000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000050\"}}" - }, - { - "description": "[basx033] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640015CD5B0700000000000000000000263000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000123456789\"}}" - }, - { - "description": "[basx016] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364000C000000000000000000000000003A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.012\"}}" - }, - { - "description": "[basx015] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364007B000000000000000000000000003A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.123\"}}" - }, - { - "description": "[basx037] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640078DF0D8648700000000000000000223000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.123456789012344\"}}" - }, - { - "description": "[basx038] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640079DF0D8648700000000000000000223000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.123456789012345\"}}" - }, - { - "description": "[basx250] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000383000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265\"}}" - }, - { - "description": "[basx257] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E-0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265\"}}" - }, - { - "description": "[basx256] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.01265\"}}" - }, - { - "description": "[basx258] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E+1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265\"}}" - }, - { - "description": "[basx251] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000103000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E-20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-21\"}}" - }, - { - "description": "[basx263] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000603000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E+20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+19\"}}" - }, - { - "description": "[basx255] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.001265\"}}" - }, - { - "description": "[basx259] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E+2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65\"}}" - }, - { - "description": "[basx254] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0001265\"}}" - }, - { - "description": "[basx260] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5\"}}" - }, - { - "description": "[basx253] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000303000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00001265\"}}" - }, - { - "description": "[basx261] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E+4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265\"}}" - }, - { - "description": "[basx252] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000283000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E-8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-9\"}}" - }, - { - "description": "[basx262] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000483000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265E+8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+7\"}}" - }, - { - "description": "[basx159] Numbers with E", - "canonical_bson": "1800000013640049000000000000000000000000002E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.73e-7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7.3E-8\"}}" - }, - { - "description": "[basx004] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640064000000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00\"}}" - }, - { - "description": "[basx003] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364000A000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0\"}}" - }, - { - "description": "[basx002] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364000100000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1\"}}" - }, - { - "description": "[basx148] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+009\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx153] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E009\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx141] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e+09\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx146] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+09\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx151] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e09\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx142] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000F43000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+90\"}}" - }, - { - "description": "[basx147] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000F43000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e+90\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+90\"}}" - }, - { - "description": "[basx152] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000F43000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E90\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+90\"}}" - }, - { - "description": "[basx140] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx150] Numbers with E", - "canonical_bson": "180000001364000100000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+9\"}}" - }, - { - "description": "[basx014] conform to rules and exponent will be in permitted range).", - "canonical_bson": "18000000136400D2040000000000000000000000003A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.234\"}}" - }, - { - "description": "[basx170] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265\"}}" - }, - { - "description": "[basx177] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265\"}}" - }, - { - "description": "[basx176] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265\"}}" - }, - { - "description": "[basx178] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65\"}}" - }, - { - "description": "[basx171] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000123000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-20\"}}" - }, - { - "description": "[basx183] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000623000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+20\"}}" - }, - { - "description": "[basx175] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.01265\"}}" - }, - { - "description": "[basx179] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5\"}}" - }, - { - "description": "[basx174] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.001265\"}}" - }, - { - "description": "[basx180] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265\"}}" - }, - { - "description": "[basx173] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0001265\"}}" - }, - { - "description": "[basx181] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000423000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+4\"}}" - }, - { - "description": "[basx172] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000002A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-8\"}}" - }, - { - "description": "[basx182] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000004A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+8\"}}" - }, - { - "description": "[basx157] Numbers with E", - "canonical_bson": "180000001364000400000000000000000000000000523000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"4E+9\"}}" - }, - { - "description": "[basx067] examples", - "canonical_bson": "180000001364000500000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"5E-6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000005\"}}" - }, - { - "description": "[basx069] examples", - "canonical_bson": "180000001364000500000000000000000000000000323000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5E-7\"}}" - }, - { - "description": "[basx385] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7\"}}" - }, - { - "description": "[basx365] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000543000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E10\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+10\"}}" - }, - { - "description": "[basx405] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000002C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-10\"}}" - }, - { - "description": "[basx363] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000563000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E11\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+11\"}}" - }, - { - "description": "[basx407] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000002A3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-11\"}}" - }, - { - "description": "[basx361] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000583000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E12\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+12\"}}" - }, - { - "description": "[basx409] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000283000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-12\"}}" - }, - { - "description": "[basx411] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000263000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-13\"}}" - }, - { - "description": "[basx383] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000423000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+1\"}}" - }, - { - "description": "[basx387] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.7\"}}" - }, - { - "description": "[basx381] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000443000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+2\"}}" - }, - { - "description": "[basx389] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.07\"}}" - }, - { - "description": "[basx379] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+3\"}}" - }, - { - "description": "[basx391] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.007\"}}" - }, - { - "description": "[basx377] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000483000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+4\"}}" - }, - { - "description": "[basx393] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0007\"}}" - }, - { - "description": "[basx375] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000004A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+5\"}}" - }, - { - "description": "[basx395] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00007\"}}" - }, - { - "description": "[basx373] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000004C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+6\"}}" - }, - { - "description": "[basx397] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000007\"}}" - }, - { - "description": "[basx371] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000004E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+7\"}}" - }, - { - "description": "[basx399] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000323000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-7\"}}" - }, - { - "description": "[basx369] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000503000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+8\"}}" - }, - { - "description": "[basx401] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000303000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-8\"}}" - }, - { - "description": "[basx367] Engineering notation tests", - "canonical_bson": "180000001364000700000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E+9\"}}" - }, - { - "description": "[basx403] Engineering notation tests", - "canonical_bson": "1800000013640007000000000000000000000000002E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"7E-9\"}}" - }, - { - "description": "[basx007] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640064000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10.0\"}}" - }, - { - "description": "[basx005] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364000A00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10\"}}" - }, - { - "description": "[basx165] Numbers with E", - "canonical_bson": "180000001364000A00000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10E+009\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+10\"}}" - }, - { - "description": "[basx163] Numbers with E", - "canonical_bson": "180000001364000A00000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10E+09\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+10\"}}" - }, - { - "description": "[basx325] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10\"}}" - }, - { - "description": "[basx305] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000543000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e10\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+11\"}}" - }, - { - "description": "[basx345] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000002C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-10\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-9\"}}" - }, - { - "description": "[basx303] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000563000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e11\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+12\"}}" - }, - { - "description": "[basx347] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000002A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-11\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-10\"}}" - }, - { - "description": "[basx301] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000583000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e12\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+13\"}}" - }, - { - "description": "[basx349] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000283000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-12\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-11\"}}" - }, - { - "description": "[basx351] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000263000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-13\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-12\"}}" - }, - { - "description": "[basx323] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000423000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+2\"}}" - }, - { - "description": "[basx327] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0\"}}" - }, - { - "description": "[basx321] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000443000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+3\"}}" - }, - { - "description": "[basx329] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.10\"}}" - }, - { - "description": "[basx319] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+4\"}}" - }, - { - "description": "[basx331] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.010\"}}" - }, - { - "description": "[basx317] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000483000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+5\"}}" - }, - { - "description": "[basx333] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0010\"}}" - }, - { - "description": "[basx315] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000004A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+6\"}}" - }, - { - "description": "[basx335] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00010\"}}" - }, - { - "description": "[basx313] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000004C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+7\"}}" - }, - { - "description": "[basx337] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-6\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000010\"}}" - }, - { - "description": "[basx311] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000004E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+8\"}}" - }, - { - "description": "[basx339] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000010\"}}" - }, - { - "description": "[basx309] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000503000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+9\"}}" - }, - { - "description": "[basx341] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000303000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-7\"}}" - }, - { - "description": "[basx164] Numbers with E", - "canonical_bson": "180000001364000A00000000000000000000000000F43000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e+90\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+91\"}}" - }, - { - "description": "[basx162] Numbers with E", - "canonical_bson": "180000001364000A00000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10E+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+10\"}}" - }, - { - "description": "[basx307] Engineering notation tests", - "canonical_bson": "180000001364000A00000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+10\"}}" - }, - { - "description": "[basx343] Engineering notation tests", - "canonical_bson": "180000001364000A000000000000000000000000002E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10e-9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-8\"}}" - }, - { - "description": "[basx008] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640065000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10.1\"}}" - }, - { - "description": "[basx009] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640068000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10.4\"}}" - }, - { - "description": "[basx010] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640069000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10.5\"}}" - }, - { - "description": "[basx011] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364006A000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10.6\"}}" - }, - { - "description": "[basx012] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364006D000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"10.9\"}}" - }, - { - "description": "[basx013] conform to rules and exponent will be in permitted range).", - "canonical_bson": "180000001364006E000000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"11.0\"}}" - }, - { - "description": "[basx040] strings without E cannot generate E in result", - "canonical_bson": "180000001364000C00000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12\"}}" - }, - { - "description": "[basx190] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65\"}}" - }, - { - "description": "[basx197] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E-0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65\"}}" - }, - { - "description": "[basx196] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265\"}}" - }, - { - "description": "[basx198] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E+1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5\"}}" - }, - { - "description": "[basx191] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000143000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E-20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-19\"}}" - }, - { - "description": "[basx203] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000643000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E+20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+21\"}}" - }, - { - "description": "[basx195] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265\"}}" - }, - { - "description": "[basx199] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E+2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265\"}}" - }, - { - "description": "[basx194] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.01265\"}}" - }, - { - "description": "[basx200] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000423000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+4\"}}" - }, - { - "description": "[basx193] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000343000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.001265\"}}" - }, - { - "description": "[basx201] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000443000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E+4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+5\"}}" - }, - { - "description": "[basx192] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000002C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E-8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-7\"}}" - }, - { - "description": "[basx202] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000004C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65E+8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+9\"}}" - }, - { - "description": "[basx044] strings without E cannot generate E in result", - "canonical_bson": "18000000136400FC040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"012.76\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.76\"}}" - }, - { - "description": "[basx042] strings without E cannot generate E in result", - "canonical_bson": "18000000136400FC040000000000000000000000003C3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.76\"}}" - }, - { - "description": "[basx046] strings without E cannot generate E in result", - "canonical_bson": "180000001364001100000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"17.\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"17\"}}" - }, - { - "description": "[basx049] strings without E cannot generate E in result", - "canonical_bson": "180000001364002C00000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0044\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"44\"}}" - }, - { - "description": "[basx048] strings without E cannot generate E in result", - "canonical_bson": "180000001364002C00000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"044\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"44\"}}" - }, - { - "description": "[basx158] Numbers with E", - "canonical_bson": "180000001364002C00000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"44E+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"4.4E+10\"}}" - }, - { - "description": "[basx068] examples", - "canonical_bson": "180000001364003200000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"50E-7\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000050\"}}" - }, - { - "description": "[basx169] Numbers with E", - "canonical_bson": "180000001364006400000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"100e+009\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00E+11\"}}" - }, - { - "description": "[basx167] Numbers with E", - "canonical_bson": "180000001364006400000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"100e+09\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00E+11\"}}" - }, - { - "description": "[basx168] Numbers with E", - "canonical_bson": "180000001364006400000000000000000000000000F43000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"100E+90\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00E+92\"}}" - }, - { - "description": "[basx166] Numbers with E", - "canonical_bson": "180000001364006400000000000000000000000000523000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"100e+9\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00E+11\"}}" - }, - { - "description": "[basx210] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003E3000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5\"}}" - }, - { - "description": "[basx217] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E-0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5\"}}" - }, - { - "description": "[basx216] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65\"}}" - }, - { - "description": "[basx218] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E+1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265\"}}" - }, - { - "description": "[basx211] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000163000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E-20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-18\"}}" - }, - { - "description": "[basx223] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000663000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E+20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+22\"}}" - }, - { - "description": "[basx215] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265\"}}" - }, - { - "description": "[basx219] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000423000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E+2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+4\"}}" - }, - { - "description": "[basx214] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265\"}}" - }, - { - "description": "[basx220] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000443000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+5\"}}" - }, - { - "description": "[basx213] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.01265\"}}" - }, - { - "description": "[basx221] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E+4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+6\"}}" - }, - { - "description": "[basx212] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000002E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E-8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000001265\"}}" - }, - { - "description": "[basx222] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000004E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5E+8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+10\"}}" - }, - { - "description": "[basx006] conform to rules and exponent will be in permitted range).", - "canonical_bson": "18000000136400E803000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1000\"}}" - }, - { - "description": "[basx230] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265\"}}" - }, - { - "description": "[basx237] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000403000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E-0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265\"}}" - }, - { - "description": "[basx236] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E-1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"126.5\"}}" - }, - { - "description": "[basx238] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000423000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E+1\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+4\"}}" - }, - { - "description": "[basx231] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000183000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E-20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E-17\"}}" - }, - { - "description": "[basx243] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000683000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E+20\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+23\"}}" - }, - { - "description": "[basx235] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E-2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.65\"}}" - }, - { - "description": "[basx239] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000443000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E+2\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+5\"}}" - }, - { - "description": "[basx234] Numbers with E", - "canonical_bson": "18000000136400F1040000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E-3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265\"}}" - }, - { - "description": "[basx240] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000463000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E+3\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+6\"}}" - }, - { - "description": "[basx233] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000383000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E-4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1265\"}}" - }, - { - "description": "[basx241] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000483000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E+4\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+7\"}}" - }, - { - "description": "[basx232] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000303000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E-8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00001265\"}}" - }, - { - "description": "[basx242] Numbers with E", - "canonical_bson": "18000000136400F104000000000000000000000000503000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1265E+8\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.265E+11\"}}" - }, - { - "description": "[basx060] strings without E cannot generate E in result", - "canonical_bson": "18000000136400185C0ACE00000000000000000000383000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"345678.5432\"}}" - }, - { - "description": "[basx059] strings without E cannot generate E in result", - "canonical_bson": "18000000136400F198670C08000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0345678.54321\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"345678.54321\"}}" - }, - { - "description": "[basx058] strings without E cannot generate E in result", - "canonical_bson": "180000001364006AF90B7C50000000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"345678.543210\"}}" - }, - { - "description": "[basx057] strings without E cannot generate E in result", - "canonical_bson": "180000001364006A19562522020000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2345678.543210\"}}" - }, - { - "description": "[basx056] strings without E cannot generate E in result", - "canonical_bson": "180000001364006AB9C8733A0B0000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12345678.543210\"}}" - }, - { - "description": "[basx031] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640040AF0D8648700000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"123456789.000000\"}}" - }, - { - "description": "[basx030] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640080910F8648700000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"123456789.123456\"}}" - }, - { - "description": "[basx032] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640080910F8648700000000000000000403000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"123456789123456\"}}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-4.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-4.json deleted file mode 100644 index 0957019..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-4.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "description": "Decimal128", - "bson_type": "0x13", - "test_key": "d", - "valid": [ - { - "description": "[basx023] conform to rules and exponent will be in permitted range).", - "canonical_bson": "1800000013640001000000000000000000000000003EB000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.1\"}}" - }, - - { - "description": "[basx045] strings without E cannot generate E in result", - "canonical_bson": "1800000013640003000000000000000000000000003A3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+0.003\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.003\"}}" - }, - { - "description": "[basx610] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0\"}}" - }, - { - "description": "[basx612] Zeros", - "canonical_bson": "1800000013640000000000000000000000000000003EB000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-.0\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0\"}}" - }, - { - "description": "[basx043] strings without E cannot generate E in result", - "canonical_bson": "18000000136400FC040000000000000000000000003C3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+12.76\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.76\"}}" - }, - { - "description": "[basx055] strings without E cannot generate E in result", - "canonical_bson": "180000001364000500000000000000000000000000303000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000005\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5E-8\"}}" - }, - { - "description": "[basx054] strings without E cannot generate E in result", - "canonical_bson": "180000001364000500000000000000000000000000323000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000005\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5E-7\"}}" - }, - { - "description": "[basx052] strings without E cannot generate E in result", - "canonical_bson": "180000001364000500000000000000000000000000343000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000005\"}}" - }, - { - "description": "[basx051] strings without E cannot generate E in result", - "canonical_bson": "180000001364000500000000000000000000000000363000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"00.00005\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00005\"}}" - }, - { - "description": "[basx050] strings without E cannot generate E in result", - "canonical_bson": "180000001364000500000000000000000000000000383000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0005\"}}" - }, - { - "description": "[basx047] strings without E cannot generate E in result", - "canonical_bson": "1800000013640005000000000000000000000000003E3000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".5\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.5\"}}" - }, - { - "description": "[dqbsr431] check rounding modes heeded (Rounded)", - "canonical_bson": "1800000013640099761CC7B548F377DC80A131C836FE2F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.1111111111111111111111111111123450\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.111111111111111111111111111112345\"}}" - }, - { - "description": "OK2", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FC2F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".100000000000000000000000000000000000000000000000000000000000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1000000000000000000000000000000000\"}}" - } - ], - "parseErrors": [ - { - "description": "[basx564] Near-specials (Conversion_syntax)", - "string": "Infi" - }, - { - "description": "[basx565] Near-specials (Conversion_syntax)", - "string": "Infin" - }, - { - "description": "[basx566] Near-specials (Conversion_syntax)", - "string": "Infini" - }, - { - "description": "[basx567] Near-specials (Conversion_syntax)", - "string": "Infinit" - }, - { - "description": "[basx568] Near-specials (Conversion_syntax)", - "string": "-Infinit" - }, - { - "description": "[basx590] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": ".Infinity" - }, - { - "description": "[basx562] Near-specials (Conversion_syntax)", - "string": "NaNq" - }, - { - "description": "[basx563] Near-specials (Conversion_syntax)", - "string": "NaNs" - }, - { - "description": "[dqbas939] overflow results at different rounding modes (Overflow & Inexact & Rounded)", - "string": "-7e10000" - }, - { - "description": "[dqbsr534] negatives (Rounded & Inexact)", - "string": "-1.11111111111111111111111111111234650" - }, - { - "description": "[dqbsr535] negatives (Rounded & Inexact)", - "string": "-1.11111111111111111111111111111234551" - }, - { - "description": "[dqbsr533] negatives (Rounded & Inexact)", - "string": "-1.11111111111111111111111111111234550" - }, - { - "description": "[dqbsr532] negatives (Rounded & Inexact)", - "string": "-1.11111111111111111111111111111234549" - }, - { - "description": "[dqbsr432] check rounding modes heeded (Rounded & Inexact)", - "string": "1.11111111111111111111111111111234549" - }, - { - "description": "[dqbsr433] check rounding modes heeded (Rounded & Inexact)", - "string": "1.11111111111111111111111111111234550" - }, - { - "description": "[dqbsr435] check rounding modes heeded (Rounded & Inexact)", - "string": "1.11111111111111111111111111111234551" - }, - { - "description": "[dqbsr434] check rounding modes heeded (Rounded & Inexact)", - "string": "1.11111111111111111111111111111234650" - }, - { - "description": "[dqbas938] overflow results at different rounding modes (Overflow & Inexact & Rounded)", - "string": "7e10000" - }, - { - "description": "Inexact rounding#1", - "string": "100000000000000000000000000000000000000000000000000000000001" - }, - { - "description": "Inexact rounding#2", - "string": "1E-6177" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-5.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-5.json deleted file mode 100644 index e976eae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-5.json +++ /dev/null @@ -1,402 +0,0 @@ -{ - "description": "Decimal128", - "bson_type": "0x13", - "test_key": "d", - "valid": [ - { - "description": "[decq035] fold-downs (more below) (Clamped)", - "canonical_bson": "18000000136400000000807F1BCF85B27059C8A43CFE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.23E+6144\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.230000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq037] fold-downs (more below) (Clamped)", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6144\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq077] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.100000000000000000000000000000000E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000000E-6144\"}}" - }, - { - "description": "[decq078] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000000E-6144\"}}" - }, - { - "description": "[decq079] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000A00000000000000000000000000000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000000000000000000000000000010E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-6175\"}}" - }, - { - "description": "[decq080] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000A00000000000000000000000000000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-6175\"}}" - }, - { - "description": "[decq081] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000020000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000000000000000000000000000001E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6175\"}}" - }, - { - "description": "[decq082] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000020000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6175\"}}" - }, - { - "description": "[decq083] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000000000000000000000000000001E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}" - }, - { - "description": "[decq084] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000000000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}" - }, - { - "description": "[decq090] underflows cannot be tested for simple copies, check edge cases (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e-6176\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}" - }, - { - "description": "[decq100] underflows cannot be tested for simple copies, check edge cases (Subnormal)", - "canonical_bson": "18000000136400FFFFFFFF095BC138938D44C64D31000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"999999999999999999999999999999999e-6176\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.99999999999999999999999999999999E-6144\"}}" - }, - { - "description": "[decq130] fold-downs (more below) (Clamped)", - "canonical_bson": "18000000136400000000807F1BCF85B27059C8A43CFEDF00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.23E+6144\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.230000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq132] fold-downs (more below) (Clamped)", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FEDF00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E+6144\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.000000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq177] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04008000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.100000000000000000000000000000000E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00000000000000000000000000000000E-6144\"}}" - }, - { - "description": "[decq178] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00000000000000000000000000000000E-6144\"}}" - }, - { - "description": "[decq179] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000A00000000000000000000000000008000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000000000000000000000000000000010E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.0E-6175\"}}" - }, - { - "description": "[decq180] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000A00000000000000000000000000008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.0E-6175\"}}" - }, - { - "description": "[decq181] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000028000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00000000000000000000000000000001E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6175\"}}" - }, - { - "description": "[decq182] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000028000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6175\"}}" - }, - { - "description": "[decq183] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000008000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000000000000000000000000000000001E-6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}" - }, - { - "description": "[decq184] Nmin and below (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000008000", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}" - }, - { - "description": "[decq190] underflow edge cases (Subnormal)", - "canonical_bson": "180000001364000100000000000000000000000000008000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1e-6176\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}" - }, - { - "description": "[decq200] underflow edge cases (Subnormal)", - "canonical_bson": "18000000136400FFFFFFFF095BC138938D44C64D31008000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-999999999999999999999999999999999e-6176\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-9.99999999999999999999999999999999E-6144\"}}" - }, - { - "description": "[decq400] zeros (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-8000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6176\"}}" - }, - { - "description": "[decq401] zeros (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000000000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6177\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6176\"}}" - }, - { - "description": "[decq414] clamped zeros... (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6112\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6111\"}}" - }, - { - "description": "[decq416] clamped zeros... (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6144\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6111\"}}" - }, - { - "description": "[decq418] clamped zeros... (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+8000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6111\"}}" - }, - { - "description": "[decq420] negative zeros (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000008000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-8000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6176\"}}" - }, - { - "description": "[decq421] negative zeros (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000008000", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6177\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6176\"}}" - }, - { - "description": "[decq434] clamped zeros... (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000FEDF00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6112\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6111\"}}" - }, - { - "description": "[decq436] clamped zeros... (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000FEDF00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6144\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6111\"}}" - }, - { - "description": "[decq438] clamped zeros... (Clamped)", - "canonical_bson": "180000001364000000000000000000000000000000FEDF00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+8000\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6111\"}}" - }, - { - "description": "[decq601] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6144\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}" - }, - { - "description": "[decq603] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6143\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000000E+6143\"}}" - }, - { - "description": "[decq605] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000000080264B91C02220BE377E00FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6142\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000000000E+6142\"}}" - }, - { - "description": "[decq607] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000000040EAED7446D09C2C9F0C00FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6141\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000E+6141\"}}" - }, - { - "description": "[decq609] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000000A0CA17726DAE0F1E430100FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6140\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000E+6140\"}}" - }, - { - "description": "[decq611] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000000106102253E5ECE4F200000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6139\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000000E+6139\"}}" - }, - { - "description": "[decq613] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000000E83C80D09F3C2E3B030000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6138\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000E+6138\"}}" - }, - { - "description": "[decq615] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000000E4D20CC8DCD2B752000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6137\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000E+6137\"}}" - }, - { - "description": "[decq617] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000000004A48011416954508000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6136\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000E+6136\"}}" - }, - { - "description": "[decq619] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000000A1EDCCCE1BC2D300000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6135\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000E+6135\"}}" - }, - { - "description": "[decq621] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000080F64AE1C7022D1500000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6134\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000E+6134\"}}" - }, - { - "description": "[decq623] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000040B2BAC9E0191E0200000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6133\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000E+6133\"}}" - }, - { - "description": "[decq625] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000000A0DEC5ADC935360000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6132\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000E+6132\"}}" - }, - { - "description": "[decq627] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000010632D5EC76B050000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6131\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000E+6131\"}}" - }, - { - "description": "[decq629] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000000E8890423C78A000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6130\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000E+6130\"}}" - }, - { - "description": "[decq631] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400000064A7B3B6E00D000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6129\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000E+6129\"}}" - }, - { - "description": "[decq633] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000008A5D78456301000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6128\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000E+6128\"}}" - }, - { - "description": "[decq635] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000000C16FF2862300000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6127\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000E+6127\"}}" - }, - { - "description": "[decq637] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000080C6A47E8D0300000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6126\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000E+6126\"}}" - }, - { - "description": "[decq639] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000407A10F35A0000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6125\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000E+6125\"}}" - }, - { - "description": "[decq641] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000A0724E18090000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6124\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000E+6124\"}}" - }, - { - "description": "[decq643] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000010A5D4E8000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6123\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000E+6123\"}}" - }, - { - "description": "[decq645] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000E8764817000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6122\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000E+6122\"}}" - }, - { - "description": "[decq647] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000E40B5402000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6121\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000E+6121\"}}" - }, - { - "description": "[decq649] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000CA9A3B00000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6120\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000E+6120\"}}" - }, - { - "description": "[decq651] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640000E1F50500000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6119\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000E+6119\"}}" - }, - { - "description": "[decq653] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364008096980000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6118\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000E+6118\"}}" - }, - { - "description": "[decq655] fold-down full sequence (Clamped)", - "canonical_bson": "1800000013640040420F0000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6117\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000E+6117\"}}" - }, - { - "description": "[decq657] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400A086010000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6116\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000E+6116\"}}" - }, - { - "description": "[decq659] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364001027000000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6115\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000E+6115\"}}" - }, - { - "description": "[decq661] fold-down full sequence (Clamped)", - "canonical_bson": "18000000136400E803000000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6114\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000E+6114\"}}" - }, - { - "description": "[decq663] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364006400000000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6113\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00E+6113\"}}" - }, - { - "description": "[decq665] fold-down full sequence (Clamped)", - "canonical_bson": "180000001364000A00000000000000000000000000FE5F00", - "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6112\"}}", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+6112\"}}" - } - ] -} - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-6.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-6.json deleted file mode 100644 index eba6764..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-6.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "description": "Decimal128", - "bson_type": "0x13", - "test_key": "d", - "parseErrors": [ - { - "description": "Incomplete Exponent", - "string": "1e" - }, - { - "description": "Exponent at the beginning", - "string": "E01" - }, - { - "description": "Just a decimal place", - "string": "." - }, - { - "description": "2 decimal places", - "string": "..3" - }, - { - "description": "2 decimal places", - "string": ".13.3" - }, - { - "description": "2 decimal places", - "string": "1..3" - }, - { - "description": "2 decimal places", - "string": "1.3.4" - }, - { - "description": "2 decimal places", - "string": "1.34." - }, - { - "description": "Decimal with no digits", - "string": ".e" - }, - { - "description": "2 signs", - "string": "+-32.4" - }, - { - "description": "2 signs", - "string": "-+32.4" - }, - { - "description": "2 negative signs", - "string": "--32.4" - }, - { - "description": "2 negative signs", - "string": "-32.-4" - }, - { - "description": "End in negative sign", - "string": "32.0-" - }, - { - "description": "2 negative signs", - "string": "32.4E--21" - }, - { - "description": "2 negative signs", - "string": "32.4E-2-1" - }, - { - "description": "2 signs", - "string": "32.4E+-21" - }, - { - "description": "Empty string", - "string": "" - }, - { - "description": "leading white space positive number", - "string": " 1" - }, - { - "description": "leading white space negative number", - "string": " -1" - }, - { - "description": "trailing white space", - "string": "1 " - }, - { - "description": "Invalid", - "string": "E" - }, - { - "description": "Invalid", - "string": "invalid" - }, - { - "description": "Invalid", - "string": "i" - }, - { - "description": "Invalid", - "string": "in" - }, - { - "description": "Invalid", - "string": "-in" - }, - { - "description": "Invalid", - "string": "Na" - }, - { - "description": "Invalid", - "string": "-Na" - }, - { - "description": "Invalid", - "string": "1.23abc" - }, - { - "description": "Invalid", - "string": "1.23abcE+02" - }, - { - "description": "Invalid", - "string": "1.23E+0aabs2" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-7.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-7.json deleted file mode 100644 index 0b78f12..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-7.json +++ /dev/null @@ -1,327 +0,0 @@ -{ - "description": "Decimal128", - "bson_type": "0x13", - "test_key": "d", - "parseErrors": [ - { - "description": "[basx572] Near-specials (Conversion_syntax)", - "string": "-9Inf" - }, - { - "description": "[basx516] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "-1-" - }, - { - "description": "[basx533] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "0000.." - }, - { - "description": "[basx534] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": ".0000." - }, - { - "description": "[basx535] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "00..00" - }, - { - "description": "[basx569] Near-specials (Conversion_syntax)", - "string": "0Inf" - }, - { - "description": "[basx571] Near-specials (Conversion_syntax)", - "string": "-0Inf" - }, - { - "description": "[basx575] Near-specials (Conversion_syntax)", - "string": "0sNaN" - }, - { - "description": "[basx503] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "++1" - }, - { - "description": "[basx504] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "--1" - }, - { - "description": "[basx505] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "-+1" - }, - { - "description": "[basx506] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "+-1" - }, - { - "description": "[basx510] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": " +1" - }, - { - "description": "[basx513] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": " + 1" - }, - { - "description": "[basx514] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": " - 1" - }, - { - "description": "[basx501] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "." - }, - { - "description": "[basx502] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": ".." - }, - { - "description": "[basx519] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "" - }, - { - "description": "[basx525] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "e100" - }, - { - "description": "[basx549] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "e+1" - }, - { - "description": "[basx577] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": ".e+1" - }, - { - "description": "[basx578] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "+.e+1" - }, - { - "description": "[basx581] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "E+1" - }, - { - "description": "[basx582] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": ".E+1" - }, - { - "description": "[basx583] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "+.E+1" - }, - { - "description": "[basx579] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "-.e+" - }, - { - "description": "[basx580] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "-.e" - }, - { - "description": "[basx584] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "-.E+" - }, - { - "description": "[basx585] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "-.E" - }, - { - "description": "[basx589] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "+.Inf" - }, - { - "description": "[basx586] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": ".NaN" - }, - { - "description": "[basx587] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "-.NaN" - }, - { - "description": "[basx545] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "ONE" - }, - { - "description": "[basx561] Near-specials (Conversion_syntax)", - "string": "qNaN" - }, - { - "description": "[basx573] Near-specials (Conversion_syntax)", - "string": "-sNa" - }, - { - "description": "[basx588] some baddies with dots and Es and dots and specials (Conversion_syntax)", - "string": "+.sNaN" - }, - { - "description": "[basx544] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "ten" - }, - { - "description": "[basx527] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "u0b65" - }, - { - "description": "[basx526] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "u0e5a" - }, - { - "description": "[basx515] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "x" - }, - { - "description": "[basx574] Near-specials (Conversion_syntax)", - "string": "xNaN" - }, - { - "description": "[basx530] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": ".123.5" - }, - { - "description": "[basx500] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1..2" - }, - { - "description": "[basx542] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1e1.0" - }, - { - "description": "[basx553] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E+1.2.3" - }, - { - "description": "[basx543] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1e123e" - }, - { - "description": "[basx552] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E+1.2" - }, - { - "description": "[basx546] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1e.1" - }, - { - "description": "[basx547] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1e1." - }, - { - "description": "[basx554] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E++1" - }, - { - "description": "[basx555] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E--1" - }, - { - "description": "[basx556] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E+-1" - }, - { - "description": "[basx557] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E-+1" - }, - { - "description": "[basx558] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E'1" - }, - { - "description": "[basx559] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E\"1" - }, - { - "description": "[basx520] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1e-" - }, - { - "description": "[basx560] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1E" - }, - { - "description": "[basx548] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1ee" - }, - { - "description": "[basx551] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1.2.1" - }, - { - "description": "[basx550] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1.23.4" - }, - { - "description": "[basx529] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "1.34.5" - }, - { - "description": "[basx531] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "01.35." - }, - { - "description": "[basx532] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "01.35-" - }, - { - "description": "[basx518] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "3+" - }, - { - "description": "[basx521] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "7e99999a" - }, - { - "description": "[basx570] Near-specials (Conversion_syntax)", - "string": "9Inf" - }, - { - "description": "[basx512] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "12 " - }, - { - "description": "[basx517] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "12-" - }, - { - "description": "[basx507] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "12e" - }, - { - "description": "[basx508] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "12e++" - }, - { - "description": "[basx509] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "12f4" - }, - { - "description": "[basx536] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "111e*123" - }, - { - "description": "[basx537] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "111e123-" - }, - { - "description": "[basx540] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "111e1*23" - }, - { - "description": "[basx538] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "111e+12+" - }, - { - "description": "[basx539] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "111e1-3-" - }, - { - "description": "[basx541] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "111E1e+3" - }, - { - "description": "[basx528] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "123,65" - }, - { - "description": "[basx523] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "7e12356789012x" - }, - { - "description": "[basx522] The 'baddies' tests from DiagBigDecimal, plus some new ones (Conversion_syntax)", - "string": "7e123567890x" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-mongoc.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-mongoc.json deleted file mode 100644 index 68bf1ff..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/decimal128-mongoc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "description": "Decimal128 - libmongoc-specific tests", - "bson_type": "0x13", - "test_key": "d", - "valid": [ - { - "description": "Scientific - Longest", - "degenerate_bson": "1800000013640030303030303030303030303030FFFF8000", - "canonical_bson": "18000000136400386B9ED104386B9ED104386B1E33008100", - "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.036812917280316154812861194857272E-6015\"}}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/document.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/document.json deleted file mode 100644 index 3ec9187..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/document.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "description": "Document type (sub-documents)", - "bson_type": "0x03", - "test_key": "x", - "valid": [ - { - "description": "Empty subdoc", - "canonical_bson": "0D000000037800050000000000", - "canonical_extjson": "{\"x\" : {}}" - }, - { - "description": "Empty-string key subdoc", - "canonical_bson": "150000000378000D00000002000200000062000000", - "canonical_extjson": "{\"x\" : {\"\" : \"b\"}}" - }, - { - "description": "Single-character key subdoc", - "canonical_bson": "160000000378000E0000000261000200000062000000", - "canonical_extjson": "{\"x\" : {\"a\" : \"b\"}}" - } - ], - "decodeErrors": [ - { - "description": "Subdocument length too long: eats outer terminator", - "bson": "1800000003666F6F000F0000001062617200FFFFFF7F0000" - }, - { - "description": "Subdocument length too short: leaks terminator", - "bson": "1500000003666F6F000A0000000862617200010000" - }, - { - "description": "Invalid subdocument: bad string length in field", - "bson": "1C00000003666F6F001200000002626172000500000062617A000000" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double.json deleted file mode 100644 index b00be48..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "description": "Double type", - "bson_type": "0x01", - "test_key": "d", - "valid": [ - { - "description": "+1.0", - "canonical_bson": "10000000016400000000000000F03F00", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"1.0\"}}", - "relaxed_extjson": "{\"d\" : 1.0}" - }, - { - "description": "-1.0", - "canonical_bson": "10000000016400000000000000F0BF00", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"-1.0\"}}", - "relaxed_extjson": "{\"d\" : -1.0}" - }, - { - "description": "+1.0001220703125", - "canonical_bson": "10000000016400000000008000F03F00", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"1.0001220703125\"}}", - "relaxed_extjson": "{\"d\" : 1.0001220703125}" - }, - { - "description": "-1.0001220703125", - "canonical_bson": "10000000016400000000008000F0BF00", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"-1.0001220703125\"}}", - "relaxed_extjson": "{\"d\" : -1.0001220703125}" - }, - { - "description": "1.23456789012345677E+18", - "canonical_bson": "1000000001640081E97DF41022B14300", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"1234567890123456768.0\"}}", - "relaxed_extjson": "{\"d\" : 1234567890123456768.0}" - }, - { - "description": "-1.23456789012345677E+18", - "canonical_bson": "1000000001640081E97DF41022B1C300", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"-1234567890123456768.0\"}}", - "relaxed_extjson": "{\"d\" : -1234567890123456768.0}" - }, - { - "description": "0.0", - "canonical_bson": "10000000016400000000000000000000", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"0.0\"}}", - "relaxed_extjson": "{\"d\" : 0.0}" - }, - { - "description": "-0.0", - "canonical_bson": "10000000016400000000000000008000", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"-0.0\"}}", - "relaxed_extjson": "{\"d\" : -0.0}" - }, - { - "description": "NaN", - "canonical_bson": "10000000016400000000000000F87F00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "lossy": true - }, - { - "description": "NaN with payload", - "canonical_bson": "10000000016400120000000000F87F00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "lossy": true - }, - { - "description": "Inf", - "canonical_bson": "10000000016400000000000000F07F00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"Infinity\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"Infinity\"}}" - }, - { - "description": "-Inf", - "canonical_bson": "10000000016400000000000000F0FF00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"-Infinity\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"-Infinity\"}}" - } - ], - "decodeErrors": [ - { - "description": "double truncated", - "bson": "0B0000000164000000F03F00" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double2.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double2.json deleted file mode 100644 index 6f5fd18..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/double2.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "description": "Double type", - "bson_type": "0x01", - "test_key": "d", - "valid": [ - { - "description": "-0.0", - "canonical_bson": "10000000016400000000000000008000", - "canonical_extjson": "{\"d\" : {\"$numberDouble\": \"-0.0\"}}", - "relaxed_extjson": "{\"d\" : -0.0}" - }, - { - "description": "NaN", - "canonical_bson": "10000000016400000000000000F87F00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "lossy": true - }, - { - "description": "NaN with payload", - "canonical_bson": "10000000016400120000000000F87F00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"NaN\"}}", - "lossy": true - }, - { - "description": "Inf", - "canonical_bson": "10000000016400000000000000F07F00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"Infinity\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"Infinity\"}}" - }, - { - "description": "-Inf", - "canonical_bson": "10000000016400000000000000F0FF00", - "canonical_extjson": "{\"d\": {\"$numberDouble\": \"-Infinity\"}}", - "relaxed_extjson": "{\"d\": {\"$numberDouble\": \"-Infinity\"}}" - } - ], - "decodeErrors": [ - { - "description": "double truncated", - "bson": "0B0000000164000000F03F00" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int32.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int32.json deleted file mode 100644 index 1353fc3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int32.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Int32 type", - "bson_type": "0x10", - "test_key": "i", - "valid": [ - { - "description": "MinValue", - "canonical_bson": "0C0000001069000000008000", - "canonical_extjson": "{\"i\" : {\"$numberInt\": \"-2147483648\"}}", - "relaxed_extjson": "{\"i\" : -2147483648}" - }, - { - "description": "MaxValue", - "canonical_bson": "0C000000106900FFFFFF7F00", - "canonical_extjson": "{\"i\" : {\"$numberInt\": \"2147483647\"}}", - "relaxed_extjson": "{\"i\" : 2147483647}" - }, - { - "description": "-1", - "canonical_bson": "0C000000106900FFFFFFFF00", - "canonical_extjson": "{\"i\" : {\"$numberInt\": \"-1\"}}", - "relaxed_extjson": "{\"i\" : -1}" - }, - { - "description": "0", - "canonical_bson": "0C0000001069000000000000", - "canonical_extjson": "{\"i\" : {\"$numberInt\": \"0\"}}", - "relaxed_extjson": "{\"i\" : 0}" - }, - { - "description": "1", - "canonical_bson": "0C0000001069000100000000", - "canonical_extjson": "{\"i\" : {\"$numberInt\": \"1\"}}", - "relaxed_extjson": "{\"i\" : 1}" - } - ], - "decodeErrors": [ - { - "description": "Bad int32 field length", - "bson": "090000001061000500" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int64.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int64.json deleted file mode 100644 index 91f4abf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/int64.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Int64 type", - "bson_type": "0x12", - "test_key": "a", - "valid": [ - { - "description": "MinValue", - "canonical_bson": "10000000126100000000000000008000", - "canonical_extjson": "{\"a\" : {\"$numberLong\" : \"-9223372036854775808\"}}", - "relaxed_extjson": "{\"a\" : -9223372036854775808}" - }, - { - "description": "MaxValue", - "canonical_bson": "10000000126100FFFFFFFFFFFFFF7F00", - "canonical_extjson": "{\"a\" : {\"$numberLong\" : \"9223372036854775807\"}}", - "relaxed_extjson": "{\"a\" : 9223372036854775807}" - }, - { - "description": "-1", - "canonical_bson": "10000000126100FFFFFFFFFFFFFFFF00", - "canonical_extjson": "{\"a\" : {\"$numberLong\" : \"-1\"}}", - "relaxed_extjson": "{\"a\" : -1}" - }, - { - "description": "0", - "canonical_bson": "10000000126100000000000000000000", - "canonical_extjson": "{\"a\" : {\"$numberLong\" : \"0\"}}", - "relaxed_extjson": "{\"a\" : 0}" - }, - { - "description": "1", - "canonical_bson": "10000000126100010000000000000000", - "canonical_extjson": "{\"a\" : {\"$numberLong\" : \"1\"}}", - "relaxed_extjson": "{\"a\" : 1}" - } - ], - "decodeErrors": [ - { - "description": "int64 field truncated", - "bson": "0C0000001261001234567800" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/maxkey.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/maxkey.json deleted file mode 100644 index 67cad6d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/maxkey.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "description": "Maxkey type", - "bson_type": "0x7F", - "test_key": "a", - "valid": [ - { - "description": "Maxkey", - "canonical_bson": "080000007F610000", - "canonical_extjson": "{\"a\" : {\"$maxKey\" : 1}}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/minkey.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/minkey.json deleted file mode 100644 index 8adee45..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/minkey.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "description": "Minkey type", - "bson_type": "0xFF", - "test_key": "a", - "valid": [ - { - "description": "Minkey", - "canonical_bson": "08000000FF610000", - "canonical_extjson": "{\"a\" : {\"$minKey\" : 1}}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type-deprecated.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type-deprecated.json deleted file mode 100644 index 5aac1bd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type-deprecated.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "description": "Multiple types within the same document", - "bson_type": "0x00", - "deprecated": true, - "valid": [ - { - "description": "All BSON types", - "canonical_bson": "3B020000075F69640057E193D7A9CC81B4027498B50E53796D626F6C000700000073796D626F6C0002537472696E670007000000737472696E670010496E743332002A00000012496E743634002A0000000000000001446F75626C6500000000000000F0BF0542696E617279001000000003A34C38F7C3ABEDC8A37814A992AB8DB60542696E61727955736572446566696E656400050000008001020304050D436F6465000E00000066756E6374696F6E2829207B7D000F436F64655769746853636F7065001B0000000E00000066756E6374696F6E2829207B7D00050000000003537562646F63756D656E74001200000002666F6F0004000000626172000004417272617900280000001030000100000010310002000000103200030000001033000400000010340005000000001154696D657374616D7000010000002A0000000B5265676578007061747465726E0000094461746574696D6545706F6368000000000000000000094461746574696D65506F73697469766500FFFFFF7F00000000094461746574696D654E656761746976650000000080FFFFFFFF085472756500010846616C736500000C4442506F696E746572000E00000064622E636F6C6C656374696F6E0057E193D7A9CC81B4027498B1034442526566003D0000000224726566000B000000636F6C6C656374696F6E00072469640057FD71E96E32AB4225B723FB02246462000900000064617461626173650000FF4D696E6B6579007F4D61786B6579000A4E756C6C0006556E646566696E65640000", - "converted_bson": "4b020000075f69640057e193d7a9cc81b4027498b50253796d626f6c000700000073796d626f6c0002537472696e670007000000737472696e670010496e743332002a00000012496e743634002a0000000000000001446f75626c6500000000000000f0bf0542696e617279001000000003a34c38f7c3abedc8a37814a992ab8db60542696e61727955736572446566696e656400050000008001020304050d436f6465000e00000066756e6374696f6e2829207b7d000f436f64655769746853636f7065001b0000000e00000066756e6374696f6e2829207b7d00050000000003537562646f63756d656e74001200000002666f6f0004000000626172000004417272617900280000001030000100000010310002000000103200030000001033000400000010340005000000001154696d657374616d7000010000002a0000000b5265676578007061747465726e0000094461746574696d6545706f6368000000000000000000094461746574696d65506f73697469766500ffffff7f00000000094461746574696d654e656761746976650000000080ffffffff085472756500010846616c73650000034442506f696e746572002e0000000224726566000e00000064622e636f6c6c656374696f6e00072469640057e193d7a9cc81b4027498b100034442526566003d0000000224726566000b000000636f6c6c656374696f6e00072469640057fd71e96e32ab4225b723fb02246462000900000064617461626173650000ff4d696e6b6579007f4d61786b6579000a4e756c6c000a556e646566696e65640000", - "canonical_extjson": "{\"_id\": {\"$oid\": \"57e193d7a9cc81b4027498b5\"}, \"Symbol\": {\"$symbol\": \"symbol\"}, \"String\": \"string\", \"Int32\": {\"$numberInt\": \"42\"}, \"Int64\": {\"$numberLong\": \"42\"}, \"Double\": {\"$numberDouble\": \"-1.0\"}, \"Binary\": { \"$binary\" : {\"base64\": \"o0w498Or7cijeBSpkquNtg==\", \"subType\": \"03\"}}, \"BinaryUserDefined\": { \"$binary\" : {\"base64\": \"AQIDBAU=\", \"subType\": \"80\"}}, \"Code\": {\"$code\": \"function() {}\"}, \"CodeWithScope\": {\"$code\": \"function() {}\", \"$scope\": {}}, \"Subdocument\": {\"foo\": \"bar\"}, \"Array\": [{\"$numberInt\": \"1\"}, {\"$numberInt\": \"2\"}, {\"$numberInt\": \"3\"}, {\"$numberInt\": \"4\"}, {\"$numberInt\": \"5\"}], \"Timestamp\": {\"$timestamp\": {\"t\": 42, \"i\": 1}}, \"Regex\": {\"$regularExpression\": {\"pattern\": \"pattern\", \"options\": \"\"}}, \"DatetimeEpoch\": {\"$date\": {\"$numberLong\": \"0\"}}, \"DatetimePositive\": {\"$date\": {\"$numberLong\": \"2147483647\"}}, \"DatetimeNegative\": {\"$date\": {\"$numberLong\": \"-2147483648\"}}, \"True\": true, \"False\": false, \"DBPointer\": {\"$dbPointer\": {\"$ref\": \"db.collection\", \"$id\": {\"$oid\": \"57e193d7a9cc81b4027498b1\"}}}, \"DBRef\": {\"$ref\": \"collection\", \"$id\": {\"$oid\": \"57fd71e96e32ab4225b723fb\"}, \"$db\": \"database\"}, \"Minkey\": {\"$minKey\": 1}, \"Maxkey\": {\"$maxKey\": 1}, \"Null\": null, \"Undefined\": {\"$undefined\": true}}", - "converted_extjson": "{\"_id\": {\"$oid\": \"57e193d7a9cc81b4027498b5\"}, \"Symbol\": \"symbol\", \"String\": \"string\", \"Int32\": {\"$numberInt\": \"42\"}, \"Int64\": {\"$numberLong\": \"42\"}, \"Double\": {\"$numberDouble\": \"-1.0\"}, \"Binary\": { \"$binary\" : {\"base64\": \"o0w498Or7cijeBSpkquNtg==\", \"subType\": \"03\"}}, \"BinaryUserDefined\": { \"$binary\" : {\"base64\": \"AQIDBAU=\", \"subType\": \"80\"}}, \"Code\": {\"$code\": \"function() {}\"}, \"CodeWithScope\": {\"$code\": \"function() {}\", \"$scope\": {}}, \"Subdocument\": {\"foo\": \"bar\"}, \"Array\": [{\"$numberInt\": \"1\"}, {\"$numberInt\": \"2\"}, {\"$numberInt\": \"3\"}, {\"$numberInt\": \"4\"}, {\"$numberInt\": \"5\"}], \"Timestamp\": {\"$timestamp\": {\"t\": 42, \"i\": 1}}, \"Regex\": {\"$regularExpression\": {\"pattern\": \"pattern\", \"options\": \"\"}}, \"DatetimeEpoch\": {\"$date\": {\"$numberLong\": \"0\"}}, \"DatetimePositive\": {\"$date\": {\"$numberLong\": \"2147483647\"}}, \"DatetimeNegative\": {\"$date\": {\"$numberLong\": \"-2147483648\"}}, \"True\": true, \"False\": false, \"DBPointer\": {\"$ref\": \"db.collection\", \"$id\": {\"$oid\": \"57e193d7a9cc81b4027498b1\"}}, \"DBRef\": {\"$ref\": \"collection\", \"$id\": {\"$oid\": \"57fd71e96e32ab4225b723fb\"}, \"$db\": \"database\"}, \"Minkey\": {\"$minKey\": 1}, \"Maxkey\": {\"$maxKey\": 1}, \"Null\": null, \"Undefined\": null}" - } - ] -} - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type.json deleted file mode 100644 index 1e1d557..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/multi-type.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "description": "Multiple types within the same document", - "bson_type": "0x00", - "valid": [ - { - "description": "All BSON types", - "canonical_bson": "F4010000075F69640057E193D7A9CC81B4027498B502537472696E670007000000737472696E670010496E743332002A00000012496E743634002A0000000000000001446F75626C6500000000000000F0BF0542696E617279001000000003A34C38F7C3ABEDC8A37814A992AB8DB60542696E61727955736572446566696E656400050000008001020304050D436F6465000E00000066756E6374696F6E2829207B7D000F436F64655769746853636F7065001B0000000E00000066756E6374696F6E2829207B7D00050000000003537562646F63756D656E74001200000002666F6F0004000000626172000004417272617900280000001030000100000010310002000000103200030000001033000400000010340005000000001154696D657374616D7000010000002A0000000B5265676578007061747465726E0000094461746574696D6545706F6368000000000000000000094461746574696D65506F73697469766500FFFFFF7F00000000094461746574696D654E656761746976650000000080FFFFFFFF085472756500010846616C73650000034442526566003D0000000224726566000B000000636F6C6C656374696F6E00072469640057FD71E96E32AB4225B723FB02246462000900000064617461626173650000FF4D696E6B6579007F4D61786B6579000A4E756C6C0000", - "canonical_extjson": "{\"_id\": {\"$oid\": \"57e193d7a9cc81b4027498b5\"}, \"String\": \"string\", \"Int32\": {\"$numberInt\": \"42\"}, \"Int64\": {\"$numberLong\": \"42\"}, \"Double\": {\"$numberDouble\": \"-1.0\"}, \"Binary\": { \"$binary\" : {\"base64\": \"o0w498Or7cijeBSpkquNtg==\", \"subType\": \"03\"}}, \"BinaryUserDefined\": { \"$binary\" : {\"base64\": \"AQIDBAU=\", \"subType\": \"80\"}}, \"Code\": {\"$code\": \"function() {}\"}, \"CodeWithScope\": {\"$code\": \"function() {}\", \"$scope\": {}}, \"Subdocument\": {\"foo\": \"bar\"}, \"Array\": [{\"$numberInt\": \"1\"}, {\"$numberInt\": \"2\"}, {\"$numberInt\": \"3\"}, {\"$numberInt\": \"4\"}, {\"$numberInt\": \"5\"}], \"Timestamp\": {\"$timestamp\": {\"t\": 42, \"i\": 1}}, \"Regex\": {\"$regularExpression\": {\"pattern\": \"pattern\", \"options\": \"\"}}, \"DatetimeEpoch\": {\"$date\": {\"$numberLong\": \"0\"}}, \"DatetimePositive\": {\"$date\": {\"$numberLong\": \"2147483647\"}}, \"DatetimeNegative\": {\"$date\": {\"$numberLong\": \"-2147483648\"}}, \"True\": true, \"False\": false, \"DBRef\": {\"$ref\": \"collection\", \"$id\": {\"$oid\": \"57fd71e96e32ab4225b723fb\"}, \"$db\": \"database\"}, \"Minkey\": {\"$minKey\": 1}, \"Maxkey\": {\"$maxKey\": 1}, \"Null\": null}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/null.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/null.json deleted file mode 100644 index f9b2694..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/null.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "description": "Null type", - "bson_type": "0x0A", - "test_key": "a", - "valid": [ - { - "description": "Null", - "canonical_bson": "080000000A610000", - "canonical_extjson": "{\"a\" : null}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/oid.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/oid.json deleted file mode 100644 index 14e9caf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/oid.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "description": "ObjectId", - "bson_type": "0x07", - "test_key": "a", - "valid": [ - { - "description": "All zeroes", - "canonical_bson": "1400000007610000000000000000000000000000", - "canonical_extjson": "{\"a\" : {\"$oid\" : \"000000000000000000000000\"}}" - }, - { - "description": "All ones", - "canonical_bson": "14000000076100FFFFFFFFFFFFFFFFFFFFFFFF00", - "canonical_extjson": "{\"a\" : {\"$oid\" : \"ffffffffffffffffffffffff\"}}" - }, - { - "description": "Random", - "canonical_bson": "1400000007610056E1FC72E0C917E9C471416100", - "canonical_extjson": "{\"a\" : {\"$oid\" : \"56e1fc72e0c917e9c4714161\"}}" - } - ], - "decodeErrors": [ - { - "description": "OID truncated", - "bson": "1200000007610056E1FC72E0C917E9C471" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/regex.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/regex.json deleted file mode 100644 index c62b019..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/regex.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "description": "Regular Expression type", - "bson_type": "0x0B", - "test_key": "a", - "valid": [ - { - "description": "empty regex with no options", - "canonical_bson": "0A0000000B6100000000", - "canonical_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"\", \"options\" : \"\"}}}" - }, - { - "description": "regex without options", - "canonical_bson": "0D0000000B6100616263000000", - "canonical_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"abc\", \"options\" : \"\"}}}" - }, - { - "description": "regex with options", - "canonical_bson": "0F0000000B610061626300696D0000", - "canonical_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"abc\", \"options\" : \"im\"}}}" - }, - { - "description": "regex with options (keys reversed)", - "canonical_bson": "0F0000000B610061626300696D0000", - "canonical_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"abc\", \"options\" : \"im\"}}}", - "degenerate_extjson": "{\"a\" : {\"$regularExpression\" : {\"options\" : \"im\", \"pattern\": \"abc\"}}}" - }, - { - "description": "regex with slash", - "canonical_bson": "110000000B610061622F636400696D0000", - "canonical_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"ab/cd\", \"options\" : \"im\"}}}" - }, - { - "description": "flags not alphabetized", - "degenerate_bson": "100000000B6100616263006D69780000", - "canonical_bson": "100000000B610061626300696D780000", - "canonical_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"abc\", \"options\" : \"imx\"}}}", - "degenerate_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"abc\", \"options\" : \"mix\"}}}" - }, - { - "description" : "Required escapes", - "canonical_bson" : "100000000B610061625C226162000000", - "canonical_extjson": "{\"a\" : {\"$regularExpression\" : { \"pattern\": \"ab\\\\\\\"ab\", \"options\" : \"\"}}}" - }, - { - "description" : "Regular expression as value of $regex query operator", - "canonical_bson" : "180000000B247265676578007061747465726E0069780000", - "canonical_extjson": "{\"$regex\" : {\"$regularExpression\" : { \"pattern\": \"pattern\", \"options\" : \"ix\"}}}" - }, - { - "description" : "Regular expression as value of $regex query operator with $options", - "canonical_bson" : "270000000B247265676578007061747465726E000002246F7074696F6E73000300000069780000", - "canonical_extjson": "{\"$regex\" : {\"$regularExpression\" : { \"pattern\": \"pattern\", \"options\" : \"\"}}, \"$options\" : \"ix\"}" - } - ], - "decodeErrors": [ - { - "description": "embedded null in pattern", - "bson": "0F0000000B610061006300696D0000" - }, - { - "description": "embedded null in flags", - "bson": "100000000B61006162630069006D0000" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/string.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/string.json deleted file mode 100644 index bb2907b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/string.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "description": "String", - "bson_type": "0x02", - "test_key": "a", - "valid": [ - { - "description": "Empty string", - "canonical_bson": "0D000000026100010000000000", - "canonical_extjson": "{\"a\" : \"\"}" - }, - { - "description": "Single character", - "canonical_bson": "0E00000002610002000000620000", - "canonical_extjson": "{\"a\" : \"b\"}" - }, - { - "description": "Multi-character", - "canonical_bson": "190000000261000D0000006162616261626162616261620000", - "canonical_extjson": "{\"a\" : \"abababababab\"}" - }, - { - "description": "two-byte UTF-8 (\u00e9)", - "canonical_bson": "190000000261000D000000C3A9C3A9C3A9C3A9C3A9C3A90000", - "canonical_extjson": "{\"a\" : \"éééééé\"}" - }, - { - "description": "three-byte UTF-8 (\u2606)", - "canonical_bson": "190000000261000D000000E29886E29886E29886E298860000", - "canonical_extjson": "{\"a\" : \"☆☆☆☆\"}" - }, - { - "description": "Embedded nulls", - "canonical_bson": "190000000261000D0000006162006261620062616261620000", - "canonical_extjson": "{\"a\" : \"ab\\u0000bab\\u0000babab\"}" - }, - { - "description": "Required escapes", - "canonical_bson" : "320000000261002600000061625C220102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F61620000", - "canonical_extjson" : "{\"a\":\"ab\\\\\\\"\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001fab\"}" - } - ], - "decodeErrors": [ - { - "description": "bad string length: 0 (but no 0x00 either)", - "bson": "0C0000000261000000000000" - }, - { - "description": "bad string length: -1", - "bson": "0C000000026100FFFFFFFF00" - }, - { - "description": "bad string length: eats terminator", - "bson": "10000000026100050000006200620000" - }, - { - "description": "bad string length: longer than rest of document", - "bson": "120000000200FFFFFF00666F6F6261720000" - }, - { - "description": "string is not null-terminated", - "bson": "1000000002610004000000616263FF00" - }, - { - "description": "empty string, but extra null", - "bson": "0E00000002610001000000000000" - }, - { - "description": "invalid UTF-8", - "bson": "0E00000002610002000000E90000" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/symbol.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/symbol.json deleted file mode 100644 index 4e46cb9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/symbol.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "description": "Symbol", - "bson_type": "0x0E", - "deprecated": true, - "test_key": "a", - "valid": [ - { - "description": "Empty string", - "canonical_bson": "0D0000000E6100010000000000", - "canonical_extjson": "{\"a\": {\"$symbol\": \"\"}}", - "converted_bson": "0D000000026100010000000000", - "converted_extjson": "{\"a\": \"\"}" - }, - { - "description": "Single character", - "canonical_bson": "0E0000000E610002000000620000", - "canonical_extjson": "{\"a\": {\"$symbol\": \"b\"}}", - "converted_bson": "0E00000002610002000000620000", - "converted_extjson": "{\"a\": \"b\"}" - }, - { - "description": "Multi-character", - "canonical_bson": "190000000E61000D0000006162616261626162616261620000", - "canonical_extjson": "{\"a\": {\"$symbol\": \"abababababab\"}}", - "converted_bson": "190000000261000D0000006162616261626162616261620000", - "converted_extjson": "{\"a\": \"abababababab\"}" - }, - { - "description": "two-byte UTF-8 (\u00e9)", - "canonical_bson": "190000000E61000D000000C3A9C3A9C3A9C3A9C3A9C3A90000", - "canonical_extjson": "{\"a\": {\"$symbol\": \"éééééé\"}}", - "converted_bson": "190000000261000D000000C3A9C3A9C3A9C3A9C3A9C3A90000", - "converted_extjson": "{\"a\": \"éééééé\"}" - }, - { - "description": "three-byte UTF-8 (\u2606)", - "canonical_bson": "190000000E61000D000000E29886E29886E29886E298860000", - "canonical_extjson": "{\"a\": {\"$symbol\": \"☆☆☆☆\"}}", - "converted_bson": "190000000261000D000000E29886E29886E29886E298860000", - "converted_extjson": "{\"a\": \"☆☆☆☆\"}" - }, - { - "description": "Embedded nulls", - "canonical_bson": "190000000E61000D0000006162006261620062616261620000", - "canonical_extjson": "{\"a\": {\"$symbol\": \"ab\\u0000bab\\u0000babab\"}}", - "converted_bson": "190000000261000D0000006162006261620062616261620000", - "converted_extjson": "{\"a\": \"ab\\u0000bab\\u0000babab\"}" - } - ], - "decodeErrors": [ - { - "description": "bad symbol length: 0 (but no 0x00 either)", - "bson": "0C0000000261000000000000" - }, - { - "description": "bad symbol length: -1", - "bson": "0C000000026100FFFFFFFF00" - }, - { - "description": "bad symbol length: eats terminator", - "bson": "10000000026100050000006200620000" - }, - { - "description": "bad symbol length: longer than rest of document", - "bson": "120000000200FFFFFF00666F6F6261720000" - }, - { - "description": "symbol is not null-terminated", - "bson": "1000000002610004000000616263FF00" - }, - { - "description": "empty symbol, but extra null", - "bson": "0E00000002610001000000000000" - }, - { - "description": "invalid UTF-8", - "bson": "0E00000002610002000000E90000" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/timestamp.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/timestamp.json deleted file mode 100644 index c76bc29..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "description": "Timestamp type", - "bson_type": "0x11", - "test_key": "a", - "valid": [ - { - "description": "Timestamp: (123456789, 42)", - "canonical_bson": "100000001161002A00000015CD5B0700", - "canonical_extjson": "{\"a\" : {\"$timestamp\" : {\"t\" : 123456789, \"i\" : 42} } }" - }, - { - "description": "Timestamp: (123456789, 42) (keys reversed)", - "canonical_bson": "100000001161002A00000015CD5B0700", - "canonical_extjson": "{\"a\" : {\"$timestamp\" : {\"t\" : 123456789, \"i\" : 42} } }", - "degenerate_extjson": "{\"a\" : {\"$timestamp\" : {\"i\" : 42, \"t\" : 123456789} } }" - }, - { - "description": "Timestamp with high-order bit set on both seconds and increment", - "canonical_bson": "10000000116100FFFFFFFFFFFFFFFF00", - "canonical_extjson": "{\"a\" : {\"$timestamp\" : {\"t\" : 4294967295, \"i\" : 4294967295} } }" - } - ], - "decodeErrors": [ - { - "description": "Truncated timestamp field", - "bson": "0f0000001161002A00000015CD5B00" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/top.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/top.json deleted file mode 100644 index 68b5119..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/top.json +++ /dev/null @@ -1,236 +0,0 @@ -{ - "description": "Top-level document validity", - "bson_type": "0x00", - "valid": [ - { - "description": "Document with keys that start with $", - "canonical_bson": "0F00000010246B6579002A00000000", - "canonical_extjson": "{\"$key\": {\"$numberInt\": \"42\"}}" - } - ], - "decodeErrors": [ - { - "description": "An object size that's too small to even include the object size, but is a well-formed, empty object", - "bson": "0100000000" - }, - { - "description": "An object size that's only enough for the object size, but is a well-formed, empty object", - "bson": "0400000000" - }, - { - "description": "One object, with length shorter than size (missing EOO)", - "bson": "05000000" - }, - { - "description": "One object, sized correctly, with a spot for an EOO, but the EOO is 0x01", - "bson": "0500000001" - }, - { - "description": "One object, sized correctly, with a spot for an EOO, but the EOO is 0xff", - "bson": "05000000FF" - }, - { - "description": "One object, sized correctly, with a spot for an EOO, but the EOO is 0x70", - "bson": "0500000070" - }, - { - "description": "Byte count is zero (with non-zero input length)", - "bson": "00000000000000000000" - }, - { - "description": "Stated length exceeds byte count, with truncated document", - "bson": "1200000002666F6F0004000000626172" - }, - { - "description": "Stated length less than byte count, with garbage after envelope", - "bson": "1200000002666F6F00040000006261720000DEADBEEF" - }, - { - "description": "Stated length exceeds byte count, with valid envelope", - "bson": "1300000002666F6F00040000006261720000" - }, - { - "description": "Stated length less than byte count, with valid envelope", - "bson": "1100000002666F6F00040000006261720000" - }, - { - "description": "Invalid BSON type low range", - "bson": "07000000000000" - }, - { - "description": "Invalid BSON type high range", - "bson": "07000000800000" - }, - { - "description": "Document truncated mid-key", - "bson": "1200000002666F" - } - ], - "parseErrors": [ - { - "description" : "Bad $regularExpression (extra field)", - "string" : "{\"a\" : \"$regularExpression\": {\"pattern\": \"abc\", \"options\": \"\", \"unrelated\": true}}}" - }, - { - "description" : "Bad $regularExpression (missing options field)", - "string" : "{\"a\" : \"$regularExpression\": {\"pattern\": \"abc\"}}}" - }, - { - "description": "Bad $regularExpression (pattern is number, not string)", - "string": "{\"x\" : {\"$regularExpression\" : { \"pattern\": 42, \"$options\" : \"\"}}}" - }, - { - "description": "Bad $regularExpression (options are number, not string)", - "string": "{\"x\" : {\"$regularExpression\" : { \"pattern\": \"a\", \"$options\" : 0}}}" - }, - { - "description" : "Bad $regularExpression (missing pattern field)", - "string" : "{\"a\" : \"$regularExpression\": {\"options\":\"ix\"}}}" - }, - { - "description": "Bad $oid (number, not string)", - "string": "{\"a\" : {\"$oid\" : 42}}" - }, - { - "description": "Bad $oid (extra field)", - "string": "{\"a\" : {\"$oid\" : \"56e1fc72e0c917e9c4714161\", \"unrelated\": true}}" - }, - { - "description": "Bad $numberInt (number, not string)", - "string": "{\"a\" : {\"$numberInt\" : 42}}" - }, - { - "description": "Bad $numberInt (extra field)", - "string": "{\"a\" : {\"$numberInt\" : \"42\", \"unrelated\": true}}" - }, - { - "description": "Bad $numberLong (number, not string)", - "string": "{\"a\" : {\"$numberLong\" : 42}}" - }, - { - "description": "Bad $numberLong (extra field)", - "string": "{\"a\" : {\"$numberLong\" : \"42\", \"unrelated\": true}}" - }, - { - "description": "Bad $numberDouble (number, not string)", - "string": "{\"a\" : {\"$numberDouble\" : 42}}" - }, - { - "description": "Bad $numberDouble (extra field)", - "string": "{\"a\" : {\"$numberDouble\" : \".1\", \"unrelated\": true}}" - }, - { - "description": "Bad $numberDecimal (number, not string)", - "string": "{\"a\" : {\"$numberDecimal\" : 42}}" - }, - { - "description": "Bad $numberDecimal (extra field)", - "string": "{\"a\" : {\"$numberDecimal\" : \".1\", \"unrelated\": true}}" - }, - { - "description": "Bad $binary (binary is number, not string)", - "string": "{\"x\" : {\"$binary\" : {\"base64\" : 0, \"subType\" : \"00\"}}}" - }, - { - "description": "Bad $binary (type is number, not string)", - "string": "{\"x\" : {\"$binary\" : {\"base64\" : \"\", \"subType\" : 0}}}" - }, - { - "description": "Bad $binary (missing $type)", - "string": "{\"x\" : {\"$binary\" : {\"base64\" : \"//8=\"}}}" - }, - { - "description": "Bad $binary (missing $binary)", - "string": "{\"x\" : {\"$binary\" : {\"subType\" : \"00\"}}}" - }, - { - "description": "Bad $binary (extra field)", - "string": "{\"x\" : {\"$binary\" : {\"base64\" : \"//8=\", \"subType\" : 0, \"unrelated\": true}}}" - }, - { - "description": "Bad $code (type is number, not string)", - "string": "{\"a\" : {\"$code\" : 42}}" - }, - { - "description": "Bad $code (extra field)", - "string": "{\"a\" : {\"$code\" : \"\", \"unrelated\": true}}" - }, - { - "description": "Bad $code with $scope (scope is number, not doc)", - "string": "{\"x\" : {\"$code\" : \"\", \"$scope\" : 42}}" - }, - { - "description": "Bad $timestamp (type is number, not doc)", - "string": "{\"a\" : {\"$timestamp\" : 42} }" - }, - { - "description": "Bad $timestamp ('t' type is string, not number)", - "string": "{\"a\" : {\"$timestamp\" : {\"t\" : \"123456789\", \"i\" : 42} } }" - }, - { - "description": "Bad $timestamp ('i' type is string, not number)", - "string": "{\"a\" : {\"$timestamp\" : {\"t\" : 123456789, \"i\" : \"42\"} } }" - }, - { - "description": "Bad $timestamp (extra field at same level as $timestamp)", - "string": "{\"a\" : {\"$timestamp\" : {\"t\" : \"123456789\", \"i\" : \"42\"}, \"unrelated\": true } }" - }, - { - "description": "Bad $timestamp (extra field at same level as t and i)", - "string": "{\"a\" : {\"$timestamp\" : {\"t\" : \"123456789\", \"i\" : \"42\", \"unrelated\": true} } }" - }, - { - "description": "Bad $timestamp (missing t)", - "string": "{\"a\" : {\"$timestamp\" : {\"i\" : \"42\"} } }" - }, - { - "description": "Bad $timestamp (missing i)", - "string": "{\"a\" : {\"$timestamp\" : {\"t\" : \"123456789\"} } }" - }, - { - "description": "Bad $date (number, not string or hash)", - "string": "{\"a\" : {\"$date\" : 42}}" - }, - { - "description": "Bad $date (extra field)", - "string": "{\"a\" : {\"$date\" : {\"$numberLong\" : \"1356351330501\"}, \"unrelated\": true}}" - }, - { - "description": "Bad DBRef (ref is number, not string)", - "string": "{\"x\" : {\"$ref\" : 42, \"$id\" : \"abc\"}}" - }, - { - "description": "Bad DBRef (db is number, not string)", - "string": "{\"x\" : {\"$ref\" : \"a\", \"$id\" : \"abc\", \"$db\" : 42}}" - }, - { - "description": "Bad $minKey (boolean, not integer)", - "string": "{\"a\" : {\"$minKey\" : true}}" - }, - { - "description": "Bad $minKey (wrong integer)", - "string": "{\"a\" : {\"$minKey\" : 0}}" - }, - { - "description": "Bad $minKey (extra field)", - "string": "{\"a\" : {\"$minKey\" : 1, \"unrelated\": true}}" - }, - { - "description": "Bad $maxKey (boolean, not integer)", - "string": "{\"a\" : {\"$maxKey\" : true}}" - }, - { - "description": "Bad $maxKey (wrong integer)", - "string": "{\"a\" : {\"$maxKey\" : 0}}" - }, - { - "description": "Bad $maxKey (extra field)", - "string": "{\"a\" : {\"$maxKey\" : 1, \"unrelated\": true}}" - }, - { - "description": "Bad DBpointer (extra field)", - "string": "{\"a\": {\"$dbPointer\": {\"a\": {\"$numberInt\": \"1\"}, \"$id\": {\"$oid\": \"56e1fc72e0c917e9c4714161\"}, \"c\": {\"$numberInt\": \"2\"}, \"$ref\": \"b\"}}}" - } - - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/undefined.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/undefined.json deleted file mode 100644 index 285f068..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/bson_corpus/undefined.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "description": "Undefined type (deprecated)", - "bson_type": "0x06", - "deprecated": true, - "test_key": "a", - "valid": [ - { - "description": "Undefined", - "canonical_bson": "0800000006610000", - "canonical_extjson": "{\"a\" : {\"$undefined\" : true}}", - "converted_bson": "080000000A610000", - "converted_extjson": "{\"a\" : null}" - } - ] -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/test.json b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/test.json deleted file mode 100644 index 34d7eac..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/json/test.json +++ /dev/null @@ -1,2 +0,0 @@ -{"foo": "bar", "a": 1} -{"_id": {"$oid": "aabbccddeeff001122334455"}} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-atomic.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-atomic.c deleted file mode 100644 index e08f269..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-atomic.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "TestSuite.h" - - -static void -test1 (void) -{ - int32_t v = 0; - - bson_atomic_int_add (&v, 1); - BSON_ASSERT (v == 1); -} - - -static void -test2 (void) -{ - int64_t v = 0; - - bson_atomic_int64_add (&v, 1); - BSON_ASSERT (v == 1); -} - - -static void -test3 (void) -{ - bson_memory_barrier (); -} - - -void -test_atomic_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/atomic/int/add", test1); - TestSuite_Add (suite, "/atomic/int64/add", test2); - TestSuite_Add (suite, "/atomic/memory_barrier", test3); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-basic.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-basic.c deleted file mode 100644 index 7e9f3d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-basic.c +++ /dev/null @@ -1,663 +0,0 @@ -#include "TestSuite.h" - -#include - -static void -test_utf8 (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_utf8 (&expected, "hello", -1, "world", -1); - BCON_APPEND (&bcon, "hello", "world"); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - -static void -test_double (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_double (&expected, "foo", -1, 1.1); - BCON_APPEND (&bcon, "foo", BCON_DOUBLE (1.1)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - -static void -test_decimal128 (void) -{ - bson_t bcon, expected; - bson_decimal128_t dec; - bson_decimal128_from_string ("120E20", &dec); - - bson_init (&bcon); - bson_init (&expected); - - bson_append_decimal128 (&expected, "foo", -1, &dec); - BCON_APPEND (&bcon, "foo", BCON_DECIMAL128 (&dec)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - -static void -test_binary (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_binary ( - &expected, "foo", -1, BSON_SUBTYPE_BINARY, (uint8_t *) "deadbeef", 8); - - BCON_APPEND (&bcon, - "foo", - BCON_BIN (BSON_SUBTYPE_BINARY, (const uint8_t *) "deadbeef", 8), - NULL); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_undefined (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_undefined (&expected, "foo", -1); - - BCON_APPEND (&bcon, "foo", BCON_UNDEFINED); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_oid (void) -{ - bson_t bcon, expected; - bson_oid_t oid; - - bson_init (&bcon); - bson_init (&expected); - - bson_oid_init (&oid, NULL); - - bson_append_oid (&expected, "foo", -1, &oid); - BCON_APPEND (&bcon, "foo", BCON_OID (&oid)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_bool (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_bool (&expected, "foo", -1, 1); - - BCON_APPEND (&bcon, "foo", BCON_BOOL (1)); - - bson_eq_bson (&bcon, &expected); - - bson_reinit (&bcon); - bson_reinit (&expected); - - bson_append_bool (&expected, "foo", -1, 0); - - BCON_APPEND (&bcon, "foo", BCON_BOOL (0)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_date_time (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_date_time (&expected, "foo", -1, 10000); - - BCON_APPEND (&bcon, "foo", BCON_DATE_TIME (10000)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_null (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_null (&expected, "foo", -1); - - BCON_APPEND (&bcon, "foo", BCON_NULL); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_regex (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - /* option flags are sorted */ - bson_append_regex (&expected, "foo", -1, "^foo|bar$", "mis"); - BCON_APPEND (&bcon, "foo", BCON_REGEX ("^foo|bar$", "msi")); - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_dbpointer (void) -{ - bson_t bcon, expected; - bson_oid_t oid; - - bson_init (&bcon); - bson_init (&expected); - - bson_oid_init (&oid, NULL); - - bson_append_dbpointer (&expected, "foo", -1, "collection", &oid); - - BCON_APPEND (&bcon, "foo", BCON_DBPOINTER ("collection", &oid)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_code (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_code (&expected, "foo", -1, "var a = {};"); - - BCON_APPEND (&bcon, "foo", BCON_CODE ("var a = {};")); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_symbol (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_symbol (&expected, "foo", -1, "deadbeef", -1); - - BCON_APPEND (&bcon, "foo", BCON_SYMBOL ("deadbeef")); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_codewscope (void) -{ - bson_t bcon, expected, scope; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&scope); - - bson_append_int32 (&scope, "b", -1, 10); - - bson_append_code_with_scope (&expected, "foo", -1, "var a = b;", &scope); - - BCON_APPEND (&bcon, "foo", BCON_CODEWSCOPE ("var a = b;", &scope)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); - bson_destroy (&scope); -} - - -static void -test_int32 (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_int32 (&expected, "foo", -1, 100); - - BCON_APPEND (&bcon, "foo", BCON_INT32 (100)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_timestamp (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_timestamp (&expected, "foo", -1, 100, 1000); - - BCON_APPEND (&bcon, "foo", BCON_TIMESTAMP (100, 1000)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_int64 (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_int64 (&expected, "foo", -1, 100); - - BCON_APPEND (&bcon, "foo", BCON_INT64 (100)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_maxkey (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_maxkey (&expected, "foo", -1); - BCON_APPEND (&bcon, "foo", BCON_MAXKEY); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_minkey (void) -{ - bson_t bcon, expected; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_minkey (&expected, "foo", -1); - BCON_APPEND (&bcon, "foo", BCON_MINKEY); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_bson_document (void) -{ - bson_t bcon, expected, child; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&child); - - bson_append_utf8 (&child, "bar", -1, "baz", -1); - bson_append_document (&expected, "foo", -1, &child); - - BCON_APPEND (&bcon, "foo", BCON_DOCUMENT (&child)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); - bson_destroy (&child); -} - - -static void -test_bson_array (void) -{ - bson_t bcon, expected, child; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&child); - - bson_append_utf8 (&child, "0", -1, "baz", -1); - bson_append_array (&expected, "foo", -1, &child); - - BCON_APPEND (&bcon, "foo", BCON_ARRAY (&child)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); - bson_destroy (&child); -} - - -static void -test_inline_array (void) -{ - bson_t bcon, expected, child; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&child); - - bson_append_utf8 (&child, "0", -1, "baz", -1); - bson_append_array (&expected, "foo", -1, &child); - - BCON_APPEND (&bcon, "foo", "[", "baz", "]"); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&child); - bson_destroy (&expected); -} - - -static void -test_inline_doc (void) -{ - bson_t bcon, expected, child; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&child); - - bson_append_utf8 (&child, "bar", -1, "baz", -1); - bson_append_document (&expected, "foo", -1, &child); - - BCON_APPEND (&bcon, "foo", "{", "bar", "baz", "}"); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); - bson_destroy (&child); -} - - -static void -test_inline_nested (void) -{ - bson_t bcon, expected, foo, bar, third; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&foo); - bson_init (&bar); - bson_init (&third); - - bson_append_utf8 (&third, "hello", -1, "world", -1); - bson_append_int32 (&bar, "0", -1, 1); - bson_append_int32 (&bar, "1", -1, 2); - bson_append_document (&bar, "2", -1, &third); - bson_append_array (&foo, "bar", -1, &bar); - bson_append_document (&expected, "foo", -1, &foo); - - BCON_APPEND (&bcon, - "foo", - "{", - "bar", - "[", - BCON_INT32 (1), - BCON_INT32 (2), - "{", - "hello", - "world", - "}", - "]", - "}"); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); - bson_destroy (&foo); - bson_destroy (&bar); - bson_destroy (&third); -} - - -static void -test_concat (void) -{ - bson_t bcon, expected, child, child2; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&child); - bson_init (&child2); - - bson_append_utf8 (&child, "hello", -1, "world", -1); - bson_append_document (&expected, "foo", -1, &child); - - BCON_APPEND (&bcon, "foo", "{", BCON (&child), "}"); - - bson_eq_bson (&bcon, &expected); - - bson_reinit (&bcon); - bson_reinit (&expected); - bson_reinit (&child); - - bson_append_utf8 (&child, "0", -1, "bar", -1); - bson_append_utf8 (&child, "1", -1, "baz", -1); - bson_append_array (&expected, "foo", -1, &child); - - bson_append_utf8 (&child2, "0", -1, "baz", -1); - BCON_APPEND (&bcon, "foo", "[", "bar", BCON (&child2), "]"); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&child); - bson_destroy (&child2); - bson_destroy (&expected); -} - - -static void -test_iter (void) -{ - bson_t bcon, expected; - bson_iter_t iter; - - bson_init (&bcon); - bson_init (&expected); - - bson_append_int32 (&expected, "foo", -1, 100); - bson_iter_init_find (&iter, &expected, "foo"); - - BCON_APPEND (&bcon, "foo", BCON_ITER (&iter)); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); -} - - -static void -test_bcon_new (void) -{ - bson_t expected; - bson_t *bcon; - - bson_init (&expected); - - bson_append_utf8 (&expected, "hello", -1, "world", -1); - bcon = BCON_NEW ("hello", "world"); - - bson_eq_bson (bcon, &expected); - - bson_destroy (bcon); - bson_destroy (&expected); -} - - -static void -test_append_ctx_helper (bson_t *bson, ...) -{ - va_list ap; - bcon_append_ctx_t ctx; - bcon_append_ctx_init (&ctx); - - va_start (ap, bson); - - bcon_append_ctx_va (bson, &ctx, &ap); - - va_arg (ap, char *); - - BCON_APPEND_CTX (bson, &ctx, "c", "d"); - - bcon_append_ctx_va (bson, &ctx, &ap); - - va_end (ap); -} - -static void -test_append_ctx (void) -{ - bson_t bcon, expected, child; - - bson_init (&bcon); - bson_init (&expected); - bson_init (&child); - - bson_append_utf8 (&child, "c", -1, "d", -1); - bson_append_utf8 (&child, "e", -1, "f", -1); - - bson_append_document (&expected, "a", -1, &child); - - test_append_ctx_helper ( - &bcon, "a", "{", NULL, "add magic", "e", "f", "}", NULL); - - bson_eq_bson (&bcon, &expected); - - bson_destroy (&bcon); - bson_destroy (&expected); - bson_destroy (&child); -} - - -void -test_bcon_basic_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/bcon/test_utf8", test_utf8); - TestSuite_Add (suite, "/bson/bcon/test_double", test_double); - TestSuite_Add (suite, "/bson/bcon/test_binary", test_binary); - TestSuite_Add (suite, "/bson/bcon/test_undefined", test_undefined); - TestSuite_Add (suite, "/bson/bcon/test_oid", test_oid); - TestSuite_Add (suite, "/bson/bcon/test_bool", test_bool); - TestSuite_Add (suite, "/bson/bcon/test_date_time", test_date_time); - TestSuite_Add (suite, "/bson/bcon/test_null", test_null); - TestSuite_Add (suite, "/bson/bcon/test_regex", test_regex); - TestSuite_Add (suite, "/bson/bcon/test_dbpointer", test_dbpointer); - TestSuite_Add (suite, "/bson/bcon/test_code", test_code); - TestSuite_Add (suite, "/bson/bcon/test_symbol", test_symbol); - TestSuite_Add (suite, "/bson/bcon/test_codewscope", test_codewscope); - TestSuite_Add (suite, "/bson/bcon/test_int32", test_int32); - TestSuite_Add (suite, "/bson/bcon/test_timestamp", test_timestamp); - TestSuite_Add (suite, "/bson/bcon/test_int64", test_int64); - TestSuite_Add (suite, "/bson/bcon/test_decimal128", test_decimal128); - TestSuite_Add (suite, "/bson/bcon/test_maxkey", test_maxkey); - TestSuite_Add (suite, "/bson/bcon/test_minkey", test_minkey); - TestSuite_Add (suite, "/bson/bcon/test_bson_document", test_bson_document); - TestSuite_Add (suite, "/bson/bcon/test_bson_array", test_bson_array); - TestSuite_Add (suite, "/bson/bcon/test_inline_array", test_inline_array); - TestSuite_Add (suite, "/bson/bcon/test_inline_doc", test_inline_doc); - TestSuite_Add (suite, "/bson/bcon/test_inline_nested", test_inline_nested); - TestSuite_Add (suite, "/bson/bcon/test_concat", test_concat); - TestSuite_Add (suite, "/bson/bcon/test_iter", test_iter); - TestSuite_Add (suite, "/bson/bcon/test_bcon_new", test_bcon_new); - TestSuite_Add (suite, "/bson/bcon/test_append_ctx", test_append_ctx); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-extract.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-extract.c deleted file mode 100644 index 1370e74..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bcon-extract.c +++ /dev/null @@ -1,522 +0,0 @@ -#include - -#include "TestSuite.h" - -static void -test_utf8 (void) -{ - const char *val; - - bson_t *bcon = BCON_NEW ("hello", "world"); - - BSON_ASSERT (BCON_EXTRACT (bcon, "hello", BCONE_UTF8 (val))); - - BSON_ASSERT (strcmp (val, "world") == 0); - - bson_destroy (bcon); -} - -static void -test_double (void) -{ - double val; - - bson_t *bcon = BCON_NEW ("foo", BCON_DOUBLE (1.1)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_DOUBLE (val))); - - BSON_ASSERT (val == 1.1); - - bson_destroy (bcon); -} - -static void -test_decimal128 (void) -{ - bson_decimal128_t val; - bson_decimal128_t dec; - bson_t *bcon; - - bson_decimal128_from_string ("12", &dec); - bcon = BCON_NEW ("foo", BCON_DECIMAL128 (&dec)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_DECIMAL128 (val))); - - BSON_ASSERT (val.low == 0xCULL); - BSON_ASSERT (val.high == 0x3040000000000000ULL); - - bson_destroy (bcon); -} - -static void -test_binary (void) -{ - bson_subtype_t subtype; - uint32_t len; - const uint8_t *binary; - - bson_t *bcon = BCON_NEW ( - "foo", BCON_BIN (BSON_SUBTYPE_BINARY, (uint8_t *) "deadbeef", 8)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_BIN (subtype, binary, len))); - - BSON_ASSERT (subtype == BSON_SUBTYPE_BINARY); - BSON_ASSERT (len == 8); - BSON_ASSERT (memcmp (binary, "deadbeef", 8) == 0); - - bson_destroy (bcon); -} - - -static void -test_undefined (void) -{ - bson_t *bcon = BCON_NEW ("foo", BCON_UNDEFINED); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_UNDEFINED)); - - bson_destroy (bcon); -} - - -static void -test_oid (void) -{ - bson_oid_t oid; - bson_t *bcon; - const bson_oid_t *ooid; - - bson_oid_init (&oid, NULL); - - bcon = BCON_NEW ("foo", BCON_OID (&oid)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_OID (ooid))); - - BSON_ASSERT (bson_oid_equal (&oid, ooid)); - - bson_destroy (bcon); -} - -static void -test_bool (void) -{ - bool b; - - bson_t *bcon = BCON_NEW ("foo", BCON_BOOL (true)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_BOOL (b))); - - BSON_ASSERT (b == true); - - bson_destroy (bcon); -} - -static void -test_date_time (void) -{ - int64_t out; - - bson_t *bcon = BCON_NEW ("foo", BCON_DATE_TIME (10000)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_DATE_TIME (out))); - - BSON_ASSERT (out == 10000); - - bson_destroy (bcon); -} - - -static void -test_null (void) -{ - bson_t *bcon = BCON_NEW ("foo", BCON_NULL); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_NULL)); - - bson_destroy (bcon); -} - - -static void -test_regex (void) -{ - const char *regex; - const char *flags; - - bson_t *bcon = BCON_NEW ("foo", BCON_REGEX ("^foo|bar$", "i")); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_REGEX (regex, flags))); - - BSON_ASSERT (strcmp (regex, "^foo|bar$") == 0); - BSON_ASSERT (strcmp (flags, "i") == 0); - - bson_destroy (bcon); -} - - -static void -test_dbpointer (void) -{ - const char *collection; - bson_oid_t oid; - const bson_oid_t *ooid; - bson_t *bcon; - - bson_oid_init (&oid, NULL); - - bcon = BCON_NEW ("foo", BCON_DBPOINTER ("collection", &oid)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_DBPOINTER (collection, ooid))); - - BSON_ASSERT (strcmp (collection, "collection") == 0); - BSON_ASSERT (bson_oid_equal (ooid, &oid)); - - bson_destroy (bcon); -} - - -static void -test_code (void) -{ - const char *val; - - bson_t *bcon = BCON_NEW ("foo", BCON_CODE ("var a = {};")); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_CODE (val))); - - BSON_ASSERT (strcmp (val, "var a = {};") == 0); - - bson_destroy (bcon); -} - - -static void -test_symbol (void) -{ - const char *val; - - bson_t *bcon = BCON_NEW ("foo", BCON_SYMBOL ("symbol")); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_SYMBOL (val))); - - BSON_ASSERT (strcmp (val, "symbol") == 0); - - bson_destroy (bcon); -} - - -static void -test_codewscope (void) -{ - const char *code; - bson_t oscope; - - bson_t *scope = BCON_NEW ("b", BCON_INT32 (10)); - bson_t *bcon = BCON_NEW ("foo", BCON_CODEWSCOPE ("var a = b;", scope)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_CODEWSCOPE (code, oscope))); - - BSON_ASSERT (strcmp (code, "var a = b;") == 0); - bson_eq_bson (&oscope, scope); - - bson_destroy (&oscope); - bson_destroy (scope); - bson_destroy (bcon); -} - - -static void -test_int32 (void) -{ - int32_t i32; - - bson_t *bcon = BCON_NEW ("foo", BCON_INT32 (10)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_INT32 (i32))); - - BSON_ASSERT (i32 == 10); - - bson_destroy (bcon); -} - - -static void -test_timestamp (void) -{ - int32_t timestamp; - int32_t increment; - - bson_t *bcon = BCON_NEW ("foo", BCON_TIMESTAMP (100, 1000)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_TIMESTAMP (timestamp, increment))); - - BSON_ASSERT (timestamp == 100); - BSON_ASSERT (increment == 1000); - - bson_destroy (bcon); -} - - -static void -test_int64 (void) -{ - int64_t i64; - - bson_t *bcon = BCON_NEW ("foo", BCON_INT64 (10)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_INT64 (i64))); - - BSON_ASSERT (i64 == 10); - - bson_destroy (bcon); -} - - -static void -test_maxkey (void) -{ - bson_t *bcon = BCON_NEW ("foo", BCON_MAXKEY); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_MAXKEY)); - - bson_destroy (bcon); -} - - -static void -test_minkey (void) -{ - bson_t *bcon = BCON_NEW ("foo", BCON_MINKEY); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_MINKEY)); - - bson_destroy (bcon); -} - - -static void -test_bson_document (void) -{ - bson_t ochild; - bson_t *child = BCON_NEW ("bar", "baz"); - bson_t *bcon = BCON_NEW ("foo", BCON_DOCUMENT (child)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_DOCUMENT (ochild))); - - bson_eq_bson (&ochild, child); - - bson_destroy (&ochild); - bson_destroy (child); - bson_destroy (bcon); -} - - -static void -test_bson_array (void) -{ - bson_t ochild; - bson_t *child = BCON_NEW ("0", "baz"); - bson_t *bcon = BCON_NEW ("foo", BCON_ARRAY (child)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_ARRAY (ochild))); - - bson_eq_bson (&ochild, child); - - bson_destroy (&ochild); - bson_destroy (child); - bson_destroy (bcon); -} - - -static void -test_inline_array (void) -{ - int32_t a, b; - - bson_t *bcon = BCON_NEW ("foo", "[", BCON_INT32 (1), BCON_INT32 (2), "]"); - - BSON_ASSERT ( - BCON_EXTRACT (bcon, "foo", "[", BCONE_INT32 (a), BCONE_INT32 (b), "]")); - - BSON_ASSERT (a == 1); - BSON_ASSERT (b == 2); - - bson_destroy (bcon); -} - -static void -test_inline_doc (void) -{ - int32_t a, b; - - bson_t *bcon = - BCON_NEW ("foo", "{", "b", BCON_INT32 (2), "a", BCON_INT32 (1), "}"); - - BSON_ASSERT (BCON_EXTRACT ( - bcon, "foo", "{", "a", BCONE_INT32 (a), "b", BCONE_INT32 (b), "}")); - - BSON_ASSERT (a == 1); - BSON_ASSERT (b == 2); - - bson_destroy (bcon); -} - - -static void -test_extract_ctx_helper (bson_t *bson, ...) -{ - va_list ap; - bcon_extract_ctx_t ctx; - int i; - int n; - - bcon_extract_ctx_init (&ctx); - - va_start (ap, bson); - - n = va_arg (ap, int); - - for (i = 0; i < n; i++) { - BSON_ASSERT (bcon_extract_ctx_va (bson, &ctx, &ap)); - } - - va_end (ap); -} - -static void -test_extract_ctx (void) -{ - int32_t a, b, c; - - bson_t *bson = - BCON_NEW ("a", BCON_INT32 (1), "b", BCON_INT32 (2), "c", BCON_INT32 (3)); - - test_extract_ctx_helper (bson, - 3, - "a", - BCONE_INT32 (a), - NULL, - "b", - BCONE_INT32 (b), - NULL, - "c", - BCONE_INT32 (c), - NULL); - - BSON_ASSERT (a == 1); - BSON_ASSERT (b == 2); - BSON_ASSERT (c == 3); - - bson_destroy (bson); -} - - -static void -test_nested (void) -{ - const char *utf8; - int i32; - - bson_t *bcon = - BCON_NEW ("hello", "world", "foo", "{", "bar", BCON_INT32 (10), "}"); - - BSON_ASSERT (BCON_EXTRACT (bcon, - "hello", - BCONE_UTF8 (utf8), - "foo", - "{", - "bar", - BCONE_INT32 (i32), - "}")); - - BSON_ASSERT (strcmp ("world", utf8) == 0); - BSON_ASSERT (i32 == 10); - - bson_destroy (bcon); -} - - -static void -test_skip (void) -{ - bson_t *bcon = - BCON_NEW ("hello", "world", "foo", "{", "bar", BCON_INT32 (10), "}"); - - BSON_ASSERT (BCON_EXTRACT (bcon, - "hello", - BCONE_SKIP (BSON_TYPE_UTF8), - "foo", - "{", - "bar", - BCONE_SKIP (BSON_TYPE_INT32), - "}")); - - BSON_ASSERT (!BCON_EXTRACT (bcon, - "hello", - BCONE_SKIP (BSON_TYPE_UTF8), - "foo", - "{", - "bar", - BCONE_SKIP (BSON_TYPE_INT64), - "}")); - - bson_destroy (bcon); -} - - -static void -test_iter (void) -{ - bson_iter_t iter; - bson_t *other; - - bson_t *bcon = BCON_NEW ("foo", BCON_INT32 (10)); - - BSON_ASSERT (BCON_EXTRACT (bcon, "foo", BCONE_ITER (iter))); - - BSON_ASSERT (bson_iter_type (&iter) == BSON_TYPE_INT32); - BSON_ASSERT (bson_iter_int32 (&iter) == 10); - - other = BCON_NEW ("foo", BCON_ITER (&iter)); - - bson_eq_bson (other, bcon); - - bson_destroy (bcon); - bson_destroy (other); -} - - -void -test_bcon_extract_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/bcon/extract/test_utf8", test_utf8); - TestSuite_Add (suite, "/bson/bcon/extract/test_double", test_double); - TestSuite_Add (suite, "/bson/bcon/extract/test_decimal128", test_decimal128); - TestSuite_Add (suite, "/bson/bcon/extract/test_binary", test_binary); - TestSuite_Add (suite, "/bson/bcon/extract/test_undefined", test_undefined); - TestSuite_Add (suite, "/bson/bcon/extract/test_oid", test_oid); - TestSuite_Add (suite, "/bson/bcon/extract/test_bool", test_bool); - TestSuite_Add (suite, "/bson/bcon/extract/test_date_time", test_date_time); - TestSuite_Add (suite, "/bson/bcon/extract/test_null", test_null); - TestSuite_Add (suite, "/bson/bcon/extract/test_regex", test_regex); - TestSuite_Add (suite, "/bson/bcon/extract/test_dbpointer", test_dbpointer); - TestSuite_Add (suite, "/bson/bcon/extract/test_code", test_code); - TestSuite_Add (suite, "/bson/bcon/extract/test_symbol", test_symbol); - TestSuite_Add (suite, "/bson/bcon/extract/test_codewscope", test_codewscope); - TestSuite_Add (suite, "/bson/bcon/extract/test_int32", test_int32); - TestSuite_Add (suite, "/bson/bcon/extract/test_timestamp", test_timestamp); - TestSuite_Add (suite, "/bson/bcon/extract/test_int64", test_int64); - TestSuite_Add (suite, "/bson/bcon/extract/test_maxkey", test_maxkey); - TestSuite_Add (suite, "/bson/bcon/extract/test_minkey", test_minkey); - TestSuite_Add ( - suite, "/bson/bcon/extract/test_bson_document", test_bson_document); - TestSuite_Add (suite, "/bson/bcon/extract/test_bson_array", test_bson_array); - TestSuite_Add ( - suite, "/bson/bcon/extract/test_inline_array", test_inline_array); - TestSuite_Add (suite, "/bson/bcon/extract/test_inline_doc", test_inline_doc); - TestSuite_Add ( - suite, "/bson/bcon/extract/test_extract_ctx", test_extract_ctx); - TestSuite_Add (suite, "/bson/bcon/extract/test_nested", test_nested); - TestSuite_Add (suite, "/bson/bcon/extract/test_skip", test_skip); - TestSuite_Add (suite, "/bson/bcon/extract/test_iter", test_iter); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-corpus.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-corpus.c deleted file mode 100644 index 5b0fbb9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-corpus.c +++ /dev/null @@ -1,291 +0,0 @@ -#include -#include "TestSuite.h" -#include "json-test.h" -#include "corpus-test.h" - - -#define IS_NAN(dec) (dec).high == 0x7c00000000000000ull - - -typedef struct { - const char *scenario; - const char *test; -} skipped_corpus_test_t; - -skipped_corpus_test_t SKIPPED_CORPUS_TESTS[] = { - /* CDRIVER-1879, can't make Code with embedded NIL */ - {"Javascript Code", "Embedded nulls"}, - {"Javascript Code with Scope", - "Unicode and embedded null in code string, empty scope"}, - /* CDRIVER-2223, legacy extended JSON $date syntax uses numbers */ - {"Top-level document validity", "Bad $date (number, not string or hash)"}, - {0}}; - - -skipped_corpus_test_t VS2013_SKIPPED_CORPUS_TESTS[] = { - /* VS 2013 and older is imprecise stackoverflow.com/questions/32232331 */ - {"Double type", "1.23456789012345677E+18"}, - {"Double type", "-1.23456789012345677E+18"}, - {0}}; - - -static void -compare_data (const uint8_t *a, - uint32_t a_len, - const uint8_t *b, - uint32_t b_len) -{ - bson_string_t *a_str; - bson_string_t *b_str; - uint32_t i; - - if (a_len != b_len || memcmp (a, b, (size_t) a_len)) { - a_str = bson_string_new (NULL); - for (i = 0; i < a_len; i++) { - bson_string_append_printf (a_str, "%02X", (int) a[i]); - } - - b_str = bson_string_new (NULL); - for (i = 0; i < b_len; i++) { - bson_string_append_printf (b_str, "%02X", (int) b[i]); - } - - fprintf (stderr, - "unequal data of length %d and %d:\n%s\n%s\n", - a_len, - b_len, - a_str->str, - b_str->str); - - abort (); - } -} - - -static bool -is_test_skipped (const char *scenario, const char *description) -{ - skipped_corpus_test_t *skip; - - for (skip = SKIPPED_CORPUS_TESTS; skip->scenario != NULL; skip++) { - if (!strcmp (skip->scenario, scenario) && - !strcmp (skip->test, description)) { - return true; - } - } - -/* _MSC_VER 1900 is Visual Studio 2015 */ -#if (defined(_MSC_VER) && _MSC_VER < 1900) - for (skip = VS2013_SKIPPED_CORPUS_TESTS; skip->scenario != NULL; skip++) { - if (!strcmp (skip->scenario, scenario) && - !strcmp (skip->test, description)) { - return true; - } - } -#endif - - return false; -} - - -/* -See: -github.com/mongodb/specifications/blob/master/source/bson-corpus/bson-corpus.rst -#testing-validity - -* for cB input: - * bson_to_canonical_extended_json(cB) = cE - * bson_to_relaxed_extended_json(cB) = rE (if rE exists) - -* for cE input: - * json_to_bson(cE) = cB (unless lossy) - -* for dB input (if it exists): - * bson_to_canonical_extended_json(dB) = cE - * bson_to_relaxed_extended_json(dB) = rE (if rE exists) - -* for dE input (if it exists): - * json_to_bson(dE) = cB (unless lossy) - -* for rE input (if it exists): - bson_to_relaxed_extended_json(json_to_bson(rE)) = rE - - */ -static void -test_bson_corpus_valid (test_bson_valid_type_t *test) -{ - bson_t cB; - bson_t dB; - bson_t *decode_cE; - bson_t *decode_dE; - bson_t *decode_rE; - bson_error_t error; - - BSON_ASSERT (test->cB); - BSON_ASSERT (test->cE); - - if (is_test_skipped (test->scenario_description, test->test_description)) { - if (test_suite_debug_output ()) { - printf (" SKIP\n"); - fflush (stdout); - } - - return; - } - - BSON_ASSERT (bson_init_static (&cB, test->cB, test->cB_len)); - ASSERT_CMPJSON (bson_as_canonical_extended_json (&cB, NULL), test->cE); - - if (test->rE) { - ASSERT_CMPJSON (bson_as_relaxed_extended_json (&cB, NULL), test->rE); - } - - decode_cE = bson_new_from_json ((const uint8_t *) test->cE, -1, &error); - - ASSERT_OR_PRINT (decode_cE, error); - - if (!test->lossy) { - compare_data ( - bson_get_data (decode_cE), decode_cE->len, test->cB, test->cB_len); - } - - if (test->dB) { - BSON_ASSERT (bson_init_static (&dB, test->dB, test->dB_len)); - ASSERT_CMPJSON (bson_as_canonical_extended_json (&dB, NULL), test->cE); - - if (test->rE) { - ASSERT_CMPJSON (bson_as_relaxed_extended_json (&dB, NULL), test->rE); - } - - bson_destroy (&dB); - } - - if (test->dE) { - decode_dE = bson_new_from_json ((const uint8_t *) test->dE, -1, &error); - - ASSERT_OR_PRINT (decode_dE, error); - ASSERT_CMPJSON (bson_as_canonical_extended_json (decode_dE, NULL), - test->cE); - - if (!test->lossy) { - compare_data ( - bson_get_data (decode_dE), decode_dE->len, test->cB, test->cB_len); - } - - bson_destroy (decode_dE); - } - - if (test->rE) { - decode_rE = bson_new_from_json ((const uint8_t *) test->rE, -1, &error); - - ASSERT_OR_PRINT (decode_rE, error); - ASSERT_CMPJSON (bson_as_relaxed_extended_json (decode_rE, NULL), - test->rE); - - bson_destroy (decode_rE); - } - - bson_destroy (decode_cE); - bson_destroy (&cB); -} - - -/* -See: -github.com/mongodb/specifications/blob/master/source/bson-corpus/bson-corpus.rst -#testing-decode-errors - */ -static void -test_bson_corpus_decode_error (test_bson_decode_error_type_t *test) -{ - bson_t invalid_bson; - - BSON_ASSERT (test->bson); - - if (is_test_skipped (test->scenario_description, test->test_description)) { - if (test_suite_debug_output ()) { - printf (" SKIP\n"); - fflush (stdout); - } - - return; - } - - ASSERT (test->bson); - ASSERT (!bson_init_static (&invalid_bson, test->bson, test->bson_len) || - bson_empty (&invalid_bson) || - !bson_as_canonical_extended_json (&invalid_bson, NULL)); -} - - -/* -See: -github.com/mongodb/specifications/blob/master/source/bson-corpus/bson-corpus.rst -#testing-parsing-errors - */ -static void -test_bson_corpus_parse_error (test_bson_parse_error_type_t *test) -{ - BSON_ASSERT (test->str); - - if (is_test_skipped (test->scenario_description, test->test_description)) { - if (test_suite_debug_output ()) { - printf (" SKIP\n"); - fflush (stdout); - } - - return; - } - - switch (test->bson_type) { - case BSON_TYPE_EOD: /* top-level document to be parsed as JSON */ - ASSERT (!bson_new_from_json ((uint8_t *) test->str, test->str_len, NULL)); - break; - case BSON_TYPE_DECIMAL128: { - bson_decimal128_t dec; - ASSERT (!bson_decimal128_from_string (test->str, &dec)); - ASSERT (IS_NAN (dec)); - break; - } - case BSON_TYPE_DOUBLE: - case BSON_TYPE_UTF8: - case BSON_TYPE_DOCUMENT: - case BSON_TYPE_ARRAY: - case BSON_TYPE_BINARY: - case BSON_TYPE_UNDEFINED: - case BSON_TYPE_OID: - case BSON_TYPE_BOOL: - case BSON_TYPE_DATE_TIME: - case BSON_TYPE_NULL: - case BSON_TYPE_REGEX: - case BSON_TYPE_DBPOINTER: - case BSON_TYPE_CODE: - case BSON_TYPE_SYMBOL: - case BSON_TYPE_CODEWSCOPE: - case BSON_TYPE_INT32: - case BSON_TYPE_TIMESTAMP: - case BSON_TYPE_INT64: - case BSON_TYPE_MAXKEY: - case BSON_TYPE_MINKEY: - default: - fprintf (stderr, "Unsupported parseError type: %#x\n", test->bson_type); - abort (); - } -} - - -static void -test_bson_corpus_cb (bson_t *scenario) -{ - corpus_test (scenario, - test_bson_corpus_valid, - test_bson_corpus_decode_error, - test_bson_corpus_parse_error); -} - -void -test_bson_corpus_install (TestSuite *suite) -{ - install_json_test_suite_with_check ( - suite, BSON_JSON_DIR "/bson_corpus", test_bson_corpus_cb); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-error.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-error.c deleted file mode 100644 index c58ff51..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-error.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "TestSuite.h" - - -static void -test_bson_error_basic (void) -{ - bson_error_t error; - - bson_set_error (&error, 123, 456, "%s %u", "localhost", 27017); - BSON_ASSERT (!strcmp (error.message, "localhost 27017")); - ASSERT_CMPINT (error.domain, ==, 123); - ASSERT_CMPINT (error.code, ==, 456); -} - - -void -test_bson_error_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/error/basic", test_bson_error_basic); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-version.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-version.c deleted file mode 100644 index 9ea90d8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson-version.c +++ /dev/null @@ -1,24 +0,0 @@ -#include - -#include "TestSuite.h" - -static void -test_bson_version (void) -{ - ASSERT_CMPINT (bson_get_major_version (), ==, BSON_MAJOR_VERSION); - ASSERT_CMPINT (bson_get_minor_version (), ==, BSON_MINOR_VERSION); - ASSERT_CMPINT (bson_get_micro_version (), ==, BSON_MICRO_VERSION); - ASSERT_CMPSTR (bson_get_version (), BSON_VERSION_S); - - ASSERT (bson_check_version ( - BSON_MAJOR_VERSION, BSON_MINOR_VERSION, BSON_MICRO_VERSION)); - - ASSERT (!bson_check_version ( - BSON_MAJOR_VERSION, BSON_MINOR_VERSION + 1, BSON_MICRO_VERSION)); -} - -void -test_bson_version_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/version", test_bson_version); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson.c deleted file mode 100644 index 6ac94f3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-bson.c +++ /dev/null @@ -1,2470 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include -#define BSON_INSIDE -#include -#undef BSON_INSIDE -#include -#include - -#include "TestSuite.h" -#include "test-conveniences.h" - -/* CDRIVER-2460 ensure the unused old BSON_ASSERT_STATIC macro still compiles */ -BSON_STATIC_ASSERT (1 == 1); - - -static bson_t * -get_bson (const char *filename) -{ - ssize_t len; - uint8_t buf[4096]; - bson_t *b; - char real_filename[256]; - int fd; - - bson_snprintf ( - real_filename, sizeof real_filename, BSON_BINARY_DIR "/%s", filename); - - real_filename[sizeof real_filename - 1] = '\0'; - - if (-1 == (fd = bson_open (real_filename, O_RDONLY))) { - fprintf (stderr, "Failed to bson_open: %s\n", real_filename); - abort (); - } - len = bson_read (fd, buf, sizeof buf); - BSON_ASSERT (len > 0); - b = bson_new_from_data (buf, (uint32_t) len); - bson_close (fd); - - return b; -} - - -static void -test_bson_new (void) -{ - bson_t *b; - - b = bson_new (); - ASSERT_CMPUINT32 (b->len, ==, (uint32_t) 5); - bson_destroy (b); - - b = bson_sized_new (32); - ASSERT_CMPUINT32 (b->len, ==, (uint32_t) 5); - bson_destroy (b); -} - - -static void -test_bson_alloc (void) -{ - static const uint8_t empty_bson[] = {5, 0, 0, 0, 0}; - bson_t *b; - - b = bson_new (); - ASSERT_CMPUINT32 (b->len, ==, (uint32_t) 5); - BSON_ASSERT ((b->flags & BSON_FLAG_INLINE)); - BSON_ASSERT (!(b->flags & BSON_FLAG_CHILD)); - BSON_ASSERT (!(b->flags & BSON_FLAG_STATIC)); - BSON_ASSERT (!(b->flags & BSON_FLAG_NO_FREE)); - bson_destroy (b); - - /* - * This checks that we fit in the inline buffer size. - */ - b = bson_sized_new (44); - ASSERT_CMPUINT32 (b->len, ==, (uint32_t) 5); - BSON_ASSERT ((b->flags & BSON_FLAG_INLINE)); - bson_destroy (b); - - /* - * Make sure we grow to next power of 2. - */ - b = bson_sized_new (121); - ASSERT_CMPUINT32 (b->len, ==, (uint32_t) 5); - BSON_ASSERT (!(b->flags & BSON_FLAG_INLINE)); - bson_destroy (b); - - /* - * Make sure we grow to next power of 2. - */ - b = bson_sized_new (129); - ASSERT_CMPUINT32 (b->len, ==, (uint32_t) 5); - BSON_ASSERT (!(b->flags & BSON_FLAG_INLINE)); - bson_destroy (b); - - b = bson_new_from_data (empty_bson, sizeof empty_bson); - ASSERT_CMPUINT32 (b->len, ==, (uint32_t) sizeof empty_bson); - BSON_ASSERT ((b->flags & BSON_FLAG_INLINE)); - BSON_ASSERT (!memcmp (bson_get_data (b), empty_bson, sizeof empty_bson)); - bson_destroy (b); -} - - -static void -BSON_ASSERT_BSON_EQUAL (const bson_t *a, const bson_t *b) -{ - const uint8_t *data1 = bson_get_data (a); - const uint8_t *data2 = bson_get_data (b); - uint32_t i; - - if (!bson_equal (a, b)) { - for (i = 0; i < BSON_MAX (a->len, b->len); i++) { - if (i >= a->len) { - printf ("a is too short len=%u\n", a->len); - abort (); - } else if (i >= b->len) { - printf ("b is too short len=%u\n", b->len); - abort (); - } - if (data1[i] != data2[i]) { - printf ("a[%u](0x%02x,%u) != b[%u](0x%02x,%u)\n", - i, - data1[i], - data1[i], - i, - data2[i], - data2[i]); - abort (); - } - } - } -} - - -static void -BSON_ASSERT_BSON_EQUAL_FILE (const bson_t *b, const char *filename) -{ - bson_t *b2 = get_bson (filename); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b2); -} - - -static void -test_bson_append_utf8 (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - b2 = get_bson ("test11.bson"); - BSON_ASSERT (bson_append_utf8 (b, "hello", -1, "world", -1)); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_symbol (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - b2 = get_bson ("test32.bson"); - BSON_ASSERT (bson_append_symbol (b, "hello", -1, "world", -1)); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_null (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_null (b, "hello", -1)); - b2 = get_bson ("test18.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_bool (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_bool (b, "bool", -1, true)); - b2 = get_bson ("test19.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_double (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_double (b, "double", -1, 123.4567)); - b2 = get_bson ("test20.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_document (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - b2 = bson_new (); - BSON_ASSERT (bson_append_document (b, "document", -1, b2)); - bson_destroy (b2); - b2 = get_bson ("test21.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_oid (void) -{ - bson_oid_t oid; - bson_t *b; - bson_t *b2; - - bson_oid_init_from_string (&oid, "1234567890abcdef1234abcd"); - - b = bson_new (); - BSON_ASSERT (bson_append_oid (b, "oid", -1, &oid)); - b2 = get_bson ("test22.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_array (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - b2 = bson_new (); - BSON_ASSERT (bson_append_utf8 (b2, "0", -1, "hello", -1)); - BSON_ASSERT (bson_append_utf8 (b2, "1", -1, "world", -1)); - BSON_ASSERT (bson_append_array (b, "array", -1, b2)); - bson_destroy (b2); - b2 = get_bson ("test23.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_binary (void) -{ - const static uint8_t binary[] = {'1', '2', '3', '4'}; - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT ( - bson_append_binary (b, "binary", -1, BSON_SUBTYPE_USER, binary, 4)); - b2 = get_bson ("test24.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_binary_deprecated (void) -{ - const static uint8_t binary[] = {'1', '2', '3', '4'}; - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_binary ( - b, "binary", -1, BSON_SUBTYPE_BINARY_DEPRECATED, binary, 4)); - b2 = get_bson ("binary_deprecated.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_time_t (void) -{ - bson_t *b; - bson_t *b2; - time_t t; - - t = 1234567890; - - b = bson_new (); - BSON_ASSERT (bson_append_time_t (b, "time_t", -1, t)); - b2 = get_bson ("test26.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_timeval (void) -{ - struct timeval tv = {0}; - bson_t *b; - bson_t *b2; - - tv.tv_sec = 1234567890; - tv.tv_usec = 0; - - b = bson_new (); - BSON_ASSERT (bson_append_timeval (b, "time_t", -1, &tv)); - b2 = get_bson ("test26.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_undefined (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_undefined (b, "undefined", -1)); - b2 = get_bson ("test25.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_regex (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_regex (b, "regex", -1, "^abcd", "ilx")); - b2 = get_bson ("test27.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_regex_w_len (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_regex_w_len (b, "regex", -1, "^abcd", 5, "ilx")); - b2 = get_bson ("test27.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); - - b = bson_new (); - BSON_ASSERT (bson_append_regex_w_len (b, "regex", -1, "^abcd", -1, "ilx")); - b2 = get_bson ("test27.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); - - b = bson_new (); - BSON_ASSERT ( - bson_append_regex_w_len (b, "regex", -1, "^abcd ", 5, "ilx")); - b2 = get_bson ("test27.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_code (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_code (b, "code", -1, "var a = {};")); - b2 = get_bson ("test29.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_code_with_scope (void) -{ - const uint8_t *scope_buf = NULL; - uint32_t scopelen = 0; - uint32_t len = 0; - bson_iter_t iter; - bool r; - const char *code = NULL; - bson_t *b; - bson_t *b2; - bson_t *scope; - bson_error_t err; - bool eof; - bson_reader_t *reader; - const bson_t *ticket_bson; - uint8_t malformed_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, /* length of doc (set below) */ - 0x0F, /* code_w_s type */ - 0x00, /* empty key */ - 0x10, - 0x00, - 0x00, - 0x00, /* code_w_s length (needs to be > 14 for initial */ - /* validation so give a non-empty scope doc) */ - 0x00, - 0x00, - 0x00, - 0x00, /* invalid string length (must have trailing \0) */ - 0x08, - 0x00, - 0x00, - 0x00, /* scope doc length */ - 0x08, - 0x00, - 0x00, /* "" : false */ - 0x00, /* end of scope doc */ - 0x00 /* end of doc */ - }; - - /* Test with NULL bson, which converts to just CODE type. */ - b = bson_new (); - BSON_ASSERT ( - bson_append_code_with_scope (b, "code", -1, "var a = {};", NULL)); - b2 = get_bson ("test30.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - r = bson_iter_init_find (&iter, b, "code"); - BSON_ASSERT (r); - BSON_ASSERT (BSON_ITER_HOLDS_CODE (&iter)); /* Not codewscope */ - bson_destroy (b); - bson_destroy (b2); - - /* Empty scope is still CODEWSCOPE. */ - b = bson_new (); - scope = bson_new (); - BSON_ASSERT ( - bson_append_code_with_scope (b, "code", -1, "var a = {};", scope)); - b2 = get_bson ("code_w_empty_scope.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - r = bson_iter_init_find (&iter, b, "code"); - BSON_ASSERT (r); - BSON_ASSERT (BSON_ITER_HOLDS_CODEWSCOPE (&iter)); - bson_destroy (b); - bson_destroy (b2); - bson_destroy (scope); - - /* Test with non-empty scope */ - b = bson_new (); - scope = bson_new (); - BSON_ASSERT (bson_append_utf8 (scope, "foo", -1, "bar", -1)); - BSON_ASSERT ( - bson_append_code_with_scope (b, "code", -1, "var a = {};", scope)); - b2 = get_bson ("test31.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - r = bson_iter_init_find (&iter, b, "code"); - BSON_ASSERT (r); - BSON_ASSERT (BSON_ITER_HOLDS_CODEWSCOPE (&iter)); - code = bson_iter_codewscope (&iter, &len, &scopelen, &scope_buf); - BSON_ASSERT (len == 11); - BSON_ASSERT (scopelen == scope->len); - BSON_ASSERT (!strcmp (code, "var a = {};")); - bson_destroy (b); - bson_destroy (b2); - bson_destroy (scope); - - /* CDRIVER-2269 Test with a malformed zero length code string */ - malformed_data[0] = (uint8_t) sizeof (malformed_data); - b = bson_new_from_data (malformed_data, sizeof (malformed_data)); - BSON_ASSERT (b); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (!bson_iter_next (&iter)); - bson_destroy (b); - - /* CDRIVER-2269 Test with malformed BSON from ticket */ - reader = - bson_reader_new_from_file (BSON_BINARY_DIR "/cdriver2269.bson", &err); - - BSON_ASSERT (reader); - ticket_bson = bson_reader_read (reader, &eof); - BSON_ASSERT (ticket_bson); - BSON_ASSERT (bson_iter_init (&iter, ticket_bson)); - BSON_ASSERT (!bson_iter_next (&iter)); - bson_reader_destroy (reader); -} - - -static void -test_bson_append_dbpointer (void) -{ - bson_oid_t oid; - bson_t *b; - bson_t *b2; - uint8_t malformed_data[] = { - 0x0C, - 0x00, - 0x00, - 0x00, /* document length (12) */ - 0x0C, /* dbpointer type */ - 0x00, /* empty string key */ - 0x04, - 0x00, - 0x00, - 0x00, /* string length (4). This is OOB. */ - 0x00, /* empty string */ - 0x00 /* end of document */ - }; - size_t error_offset = 0; - - b = bson_new (); - bson_oid_init_from_string (&oid, "0123abcd0123abcd0123abcd"); - BSON_ASSERT (bson_append_dbpointer (b, "dbpointer", -1, "foo", &oid)); - b2 = get_bson ("test28.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); - - b = bson_new_from_data (malformed_data, sizeof (malformed_data)); - BSON_ASSERT (b); - BSON_ASSERT (!bson_validate (b, BSON_VALIDATE_NONE, &error_offset)); - BSON_ASSERT (error_offset == 6); - bson_destroy (b); -} - - -static void -test_bson_append_int32 (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_int32 (b, "a", -1, -123)); - BSON_ASSERT (bson_append_int32 (b, "c", -1, 0)); - BSON_ASSERT (bson_append_int32 (b, "b", -1, 123)); - b2 = get_bson ("test33.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_int64 (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_int64 (b, "a", -1, 100000000000000ULL)); - b2 = get_bson ("test34.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_decimal128 (void) -{ - bson_t *b; - bson_t *b2; - bson_decimal128_t value; - value.high = 0; - value.low = 1; - - b = bson_new (); - BSON_ASSERT (bson_append_decimal128 (b, "a", -1, &value)); - b2 = get_bson ("test58.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_iter (void) -{ - bson_iter_t iter; - bool r; - bson_t b; - bson_t c; - - bson_init (&b); - bson_append_int32 (&b, "a", 1, 1); - bson_append_int32 (&b, "b", 1, 2); - bson_append_int32 (&b, "c", 1, 3); - bson_append_utf8 (&b, "d", 1, "hello", 5); - - bson_init (&c); - - r = bson_iter_init_find (&iter, &b, "a"); - BSON_ASSERT (r); - r = bson_append_iter (&c, NULL, 0, &iter); - BSON_ASSERT (r); - - r = bson_iter_init_find (&iter, &b, "c"); - BSON_ASSERT (r); - r = bson_append_iter (&c, NULL, 0, &iter); - BSON_ASSERT (r); - - r = bson_iter_init_find (&iter, &b, "d"); - BSON_ASSERT (r); - r = bson_append_iter (&c, "world", -1, &iter); - BSON_ASSERT (r); - - bson_iter_init (&iter, &c); - r = bson_iter_next (&iter); - BSON_ASSERT (r); - ASSERT_CMPSTR ("a", bson_iter_key (&iter)); - ASSERT_CMPINT (BSON_TYPE_INT32, ==, bson_iter_type (&iter)); - ASSERT_CMPINT (1, ==, bson_iter_int32 (&iter)); - r = bson_iter_next (&iter); - BSON_ASSERT (r); - ASSERT_CMPSTR ("c", bson_iter_key (&iter)); - ASSERT_CMPINT (BSON_TYPE_INT32, ==, bson_iter_type (&iter)); - ASSERT_CMPINT (3, ==, bson_iter_int32 (&iter)); - r = bson_iter_next (&iter); - BSON_ASSERT (r); - ASSERT_CMPINT (BSON_TYPE_UTF8, ==, bson_iter_type (&iter)); - ASSERT_CMPSTR ("world", bson_iter_key (&iter)); - ASSERT_CMPSTR ("hello", bson_iter_utf8 (&iter, NULL)); - - bson_destroy (&b); - bson_destroy (&c); -} - - -static void -test_bson_append_timestamp (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_timestamp (b, "timestamp", -1, 1234, 9876)); - b2 = get_bson ("test35.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_maxkey (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_maxkey (b, "maxkey", -1)); - b2 = get_bson ("test37.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_minkey (void) -{ - bson_t *b; - bson_t *b2; - - b = bson_new (); - BSON_ASSERT (bson_append_minkey (b, "minkey", -1)); - b2 = get_bson ("test36.bson"); - BSON_ASSERT_BSON_EQUAL (b, b2); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_append_general (void) -{ - uint8_t bytes[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01, 0x23, 0x45}; - bson_oid_t oid; - bson_t *bson; - bson_t *array; - bson_t *subdoc; - - bson = bson_new (); - BSON_ASSERT (bson_append_int32 (bson, "int", -1, 1)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test1.bson"); - bson_destroy (bson); - - bson = bson_new (); - BSON_ASSERT (bson_append_int64 (bson, "int64", -1, 1)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test2.bson"); - bson_destroy (bson); - - bson = bson_new (); - BSON_ASSERT (bson_append_double (bson, "double", -1, 1.123)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test3.bson"); - bson_destroy (bson); - - bson = bson_new (); - BSON_ASSERT (bson_append_utf8 (bson, "string", -1, "some string", -1)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test5.bson"); - bson_destroy (bson); - - bson = bson_new (); - array = bson_new (); - BSON_ASSERT (bson_append_int32 (array, "0", -1, 1)); - BSON_ASSERT (bson_append_int32 (array, "1", -1, 2)); - BSON_ASSERT (bson_append_int32 (array, "2", -1, 3)); - BSON_ASSERT (bson_append_int32 (array, "3", -1, 4)); - BSON_ASSERT (bson_append_int32 (array, "4", -1, 5)); - BSON_ASSERT (bson_append_int32 (array, "5", -1, 6)); - BSON_ASSERT (bson_append_array (bson, "array[int]", -1, array)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test6.bson"); - bson_destroy (array); - bson_destroy (bson); - - bson = bson_new (); - array = bson_new (); - BSON_ASSERT (bson_append_double (array, "0", -1, 1.123)); - BSON_ASSERT (bson_append_double (array, "1", -1, 2.123)); - BSON_ASSERT (bson_append_array (bson, "array[double]", -1, array)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test7.bson"); - bson_destroy (array); - bson_destroy (bson); - - bson = bson_new (); - subdoc = bson_new (); - BSON_ASSERT (bson_append_int32 (subdoc, "int", -1, 1)); - BSON_ASSERT (bson_append_document (bson, "document", -1, subdoc)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test8.bson"); - bson_destroy (subdoc); - bson_destroy (bson); - - bson = bson_new (); - BSON_ASSERT (bson_append_null (bson, "null", -1)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test9.bson"); - bson_destroy (bson); - - bson = bson_new (); - BSON_ASSERT (bson_append_regex (bson, "regex", -1, "1234", "i")); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test10.bson"); - bson_destroy (bson); - - bson = bson_new (); - BSON_ASSERT (bson_append_utf8 (bson, "hello", -1, "world", -1)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test11.bson"); - bson_destroy (bson); - - bson = bson_new (); - array = bson_new (); - BSON_ASSERT (bson_append_utf8 (array, "0", -1, "awesome", -1)); - BSON_ASSERT (bson_append_double (array, "1", -1, 5.05)); - BSON_ASSERT (bson_append_int32 (array, "2", -1, 1986)); - BSON_ASSERT (bson_append_array (bson, "BSON", -1, array)); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test12.bson"); - bson_destroy (bson); - bson_destroy (array); - - bson = bson_new (); - memcpy (&oid, bytes, sizeof oid); - BSON_ASSERT (bson_append_oid (bson, "_id", -1, &oid)); - subdoc = bson_new (); - BSON_ASSERT (bson_append_oid (subdoc, "_id", -1, &oid)); - array = bson_new (); - BSON_ASSERT (bson_append_utf8 (array, "0", -1, "1", -1)); - BSON_ASSERT (bson_append_utf8 (array, "1", -1, "2", -1)); - BSON_ASSERT (bson_append_utf8 (array, "2", -1, "3", -1)); - BSON_ASSERT (bson_append_utf8 (array, "3", -1, "4", -1)); - BSON_ASSERT (bson_append_array (subdoc, "tags", -1, array)); - bson_destroy (array); - BSON_ASSERT (bson_append_utf8 (subdoc, "text", -1, "asdfanother", -1)); - array = bson_new (); - BSON_ASSERT (bson_append_utf8 (array, "name", -1, "blah", -1)); - BSON_ASSERT (bson_append_document (subdoc, "source", -1, array)); - bson_destroy (array); - BSON_ASSERT (bson_append_document (bson, "document", -1, subdoc)); - bson_destroy (subdoc); - array = bson_new (); - BSON_ASSERT (bson_append_utf8 (array, "0", -1, "source", -1)); - BSON_ASSERT (bson_append_array (bson, "type", -1, array)); - bson_destroy (array); - array = bson_new (); - BSON_ASSERT (bson_append_utf8 (array, "0", -1, "server_created_at", -1)); - BSON_ASSERT (bson_append_array (bson, "missing", -1, array)); - bson_destroy (array); - BSON_ASSERT_BSON_EQUAL_FILE (bson, "test17.bson"); - bson_destroy (bson); -} - - -static void -test_bson_append_deep (void) -{ - bson_t *a; - bson_t *tmp; - int i; - - a = bson_new (); - - for (i = 0; i < 100; i++) { - tmp = a; - a = bson_new (); - BSON_ASSERT (bson_append_document (a, "a", -1, tmp)); - bson_destroy (tmp); - } - - BSON_ASSERT_BSON_EQUAL_FILE (a, "test38.bson"); - - bson_destroy (a); -} - - -static void -test_bson_validate_dbref (void) -{ - size_t offset; - bson_t dbref, child, child2; - - /* should fail, $ref without an $id */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, $ref with non id field */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "extra", "field"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, $ref with $id at the top */ - { - bson_init (&dbref); - BSON_APPEND_UTF8 (&dbref, "$ref", "foo"); - BSON_APPEND_UTF8 (&dbref, "$id", "bar"); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, $ref with $id not first keys */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "extra", "field"); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, $ref with $db */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$db", "bar"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, non-string $ref with $id */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_INT32 (&child, "$ref", 1); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, non-string $ref with nothing */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_INT32 (&child, "$ref", 1); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, $ref with $id with non-string $db */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - BSON_APPEND_INT32 (&child, "$db", 1); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, $ref with $id with non-string $db with stuff after */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - BSON_APPEND_INT32 (&child, "$db", 1); - BSON_APPEND_UTF8 (&child, "extra", "field"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should fail, $ref with $id with stuff, then $db */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - BSON_APPEND_UTF8 (&child, "extra", "field"); - BSON_APPEND_UTF8 (&child, "$db", "baz"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (!bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should succeed, $ref with $id */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should succeed, $ref with nested dbref $id */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_DOCUMENT_BEGIN (&child, "$id", &child2); - BSON_APPEND_UTF8 (&child2, "$ref", "foo2"); - BSON_APPEND_UTF8 (&child2, "$id", "bar2"); - BSON_APPEND_UTF8 (&child2, "$db", "baz2"); - bson_append_document_end (&child, &child2); - BSON_APPEND_UTF8 (&child, "$db", "baz"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should succeed, $ref with $id and $db */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - BSON_APPEND_UTF8 (&child, "$db", "baz"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } - - /* should succeed, $ref with $id and $db and trailing */ - { - bson_init (&dbref); - BSON_APPEND_DOCUMENT_BEGIN (&dbref, "dbref", &child); - BSON_APPEND_UTF8 (&child, "$ref", "foo"); - BSON_APPEND_UTF8 (&child, "$id", "bar"); - BSON_APPEND_UTF8 (&child, "$db", "baz"); - BSON_APPEND_UTF8 (&child, "extra", "field"); - bson_append_document_end (&dbref, &child); - - BSON_ASSERT (bson_validate (&dbref, BSON_VALIDATE_DOLLAR_KEYS, &offset)); - - bson_destroy (&dbref); - } -} - - -/* BSON spec requires bool value to be exactly 0 or 1 */ -static void -test_bson_validate_bool (void) -{ - /* {"b": true}, with implicit NULL at end */ - uint8_t data[] = "\x09\x00\x00\x00\x08\x62\x00\x01"; - bson_t bson; - bson_iter_t iter; - size_t err_offset = 0; - - ASSERT (bson_init_static (&bson, data, sizeof data)); - ASSERT (bson_validate (&bson, BSON_VALIDATE_NONE, &err_offset)); - ASSERT (bson_iter_init (&iter, &bson)); - ASSERT (bson_iter_next (&iter)); - ASSERT (BSON_ITER_HOLDS_BOOL (&iter)); - ASSERT (bson_iter_bool (&iter)); - - /* replace boolean value 1 with 255 */ - ASSERT (data[7] == '\x01'); - data[7] = (uint8_t) '\xff'; - - ASSERT (bson_init_static (&bson, data, 9)); - ASSERT (!bson_validate (&bson, BSON_VALIDATE_NONE, &err_offset)); - ASSERT_CMPSIZE_T (err_offset, ==, (size_t) 7); - - ASSERT (bson_iter_init (&iter, &bson)); - ASSERT (!bson_iter_next (&iter)); -} - - -/* BSON spec requires the deprecated DBPointer's value to be NULL-termed */ -static void -test_bson_validate_dbpointer (void) -{ - /* { "a": DBPointer(ObjectId(...), Collection="b") }, implicit NULL at end */ - uint8_t data[] = "\x1A\x00\x00\x00\x0C\x61\x00\x02\x00\x00\x00\x62\x00" - "\x56\xE1\xFC\x72\xE0\xC9\x17\xE9\xC4\x71\x41\x61"; - - bson_t bson; - bson_iter_t iter; - size_t err_offset = 0; - uint32_t collection_len; - const char *collection; - const bson_oid_t *oid; - - ASSERT (bson_init_static (&bson, data, sizeof data)); - ASSERT (bson_validate (&bson, BSON_VALIDATE_NONE, &err_offset)); - ASSERT (bson_iter_init (&iter, &bson)); - ASSERT (bson_iter_next (&iter)); - ASSERT (BSON_ITER_HOLDS_DBPOINTER (&iter)); - bson_iter_dbpointer (&iter, &collection_len, &collection, &oid); - ASSERT_CMPSTR (collection, "b"); - ASSERT_CMPINT (collection_len, ==, 1); - - /* replace the NULL terminator of "b" with 255 */ - ASSERT (data[12] == '\0'); - data[12] = (uint8_t) '\xff'; - - ASSERT (bson_init_static (&bson, data, sizeof data)); - ASSERT (!bson_validate (&bson, BSON_VALIDATE_NONE, &err_offset)); - ASSERT_CMPSIZE_T (err_offset, ==, (size_t) 12); - - ASSERT (bson_iter_init (&iter, &bson)); - ASSERT (!bson_iter_next (&iter)); -} - - -static void -test_bson_validate (void) -{ - char filename[64]; - size_t offset; - bson_t *b; - int i; - bson_error_t error; - - for (i = 1; i <= 38; i++) { - bson_snprintf (filename, sizeof filename, "test%u.bson", i); - b = get_bson (filename); - BSON_ASSERT (bson_validate (b, BSON_VALIDATE_NONE, &offset)); - bson_destroy (b); - } - - b = get_bson ("codewscope.bson"); - BSON_ASSERT (bson_validate (b, BSON_VALIDATE_NONE, &offset)); - bson_destroy (b); - - b = get_bson ("empty_key.bson"); - BSON_ASSERT (bson_validate (b, - BSON_VALIDATE_NONE | BSON_VALIDATE_UTF8 | - BSON_VALIDATE_DOLLAR_KEYS | - BSON_VALIDATE_DOT_KEYS, - &offset)); - bson_destroy (b); - -#define VALIDATE_TEST(_filename, _flags, _offset, _flag, _msg) \ - b = get_bson (_filename); \ - BSON_ASSERT (!bson_validate (b, _flags, &offset)); \ - ASSERT_CMPSIZE_T (offset, ==, (size_t) _offset); \ - BSON_ASSERT (!bson_validate_with_error (b, _flags, &error)); \ - ASSERT_ERROR_CONTAINS (error, BSON_ERROR_INVALID, _flag, _msg); \ - bson_destroy (b) - - VALIDATE_TEST ("overflow2.bson", - BSON_VALIDATE_NONE, - 9, - BSON_VALIDATE_NONE, - "corrupt BSON"); - VALIDATE_TEST ("trailingnull.bson", - BSON_VALIDATE_NONE, - 14, - BSON_VALIDATE_NONE, - "corrupt BSON"); - VALIDATE_TEST ("dollarquery.bson", - BSON_VALIDATE_DOLLAR_KEYS | BSON_VALIDATE_DOT_KEYS, - 4, - BSON_VALIDATE_DOLLAR_KEYS, - "keys cannot begin with \"$\": \"$query\""); - VALIDATE_TEST ("dotquery.bson", - BSON_VALIDATE_DOLLAR_KEYS | BSON_VALIDATE_DOT_KEYS, - 4, - BSON_VALIDATE_DOT_KEYS, - "keys cannot contain \".\": \"abc.def\""); - VALIDATE_TEST ("overflow3.bson", - BSON_VALIDATE_NONE, - 9, - BSON_VALIDATE_NONE, - "corrupt BSON"); - /* same outcome as above, despite different flags */ - VALIDATE_TEST ("overflow3.bson", - BSON_VALIDATE_UTF8, - 9, - BSON_VALIDATE_NONE, - "corrupt BSON"); - VALIDATE_TEST ("overflow4.bson", - BSON_VALIDATE_NONE, - 9, - BSON_VALIDATE_NONE, - "corrupt BSON"); - VALIDATE_TEST ("empty_key.bson", - BSON_VALIDATE_EMPTY_KEYS, - 4, - BSON_VALIDATE_EMPTY_KEYS, - "empty key"); - VALIDATE_TEST ( - "test40.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test41.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test42.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test43.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test44.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test45.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test46.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test47.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test48.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test49.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ("test50.bson", - BSON_VALIDATE_NONE, - 10, - BSON_VALIDATE_NONE, - "corrupt code-with-scope"); - VALIDATE_TEST ("test51.bson", - BSON_VALIDATE_NONE, - 10, - BSON_VALIDATE_NONE, - "corrupt code-with-scope"); - VALIDATE_TEST ( - "test52.bson", BSON_VALIDATE_NONE, 9, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ( - "test53.bson", BSON_VALIDATE_NONE, 6, BSON_VALIDATE_NONE, "corrupt BSON"); - VALIDATE_TEST ("test54.bson", - BSON_VALIDATE_NONE, - 12, - BSON_VALIDATE_NONE, - "corrupt BSON"); - VALIDATE_TEST ("test59.bson", - BSON_VALIDATE_NONE, - 9, - BSON_VALIDATE_NONE, - "corrupt BSON"); - - /* DBRef validation */ - b = BCON_NEW ("my_dbref", - "{", - "$ref", - BCON_UTF8 ("collection"), - "$id", - BCON_INT32 (1), - "}"); - BSON_ASSERT (bson_validate_with_error (b, BSON_VALIDATE_NONE, &error)); - BSON_ASSERT ( - bson_validate_with_error (b, BSON_VALIDATE_DOLLAR_KEYS, &error)); - bson_destroy (b); - - /* needs "$ref" before "$id" */ - b = BCON_NEW ("my_dbref", "{", "$id", BCON_INT32 (1), "}"); - BSON_ASSERT (bson_validate_with_error (b, BSON_VALIDATE_NONE, &error)); - BSON_ASSERT ( - !bson_validate_with_error (b, BSON_VALIDATE_DOLLAR_KEYS, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_INVALID, - BSON_VALIDATE_DOLLAR_KEYS, - "keys cannot begin with \"$\": \"$id\""); - bson_destroy (b); - - /* two $refs */ - b = BCON_NEW ("my_dbref", - "{", - "$ref", - BCON_UTF8 ("collection"), - "$ref", - BCON_UTF8 ("collection"), - "}"); - BSON_ASSERT (bson_validate_with_error (b, BSON_VALIDATE_NONE, &error)); - BSON_ASSERT ( - !bson_validate_with_error (b, BSON_VALIDATE_DOLLAR_KEYS, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_INVALID, - BSON_VALIDATE_DOLLAR_KEYS, - "keys cannot begin with \"$\": \"$ref\""); - bson_destroy (b); - - /* must not contain invalid key like "extra" */ - b = BCON_NEW ("my_dbref", - "{", - "$ref", - BCON_UTF8 ("collection"), - "extra", - BCON_INT32 (2), - "$id", - BCON_INT32 (1), - "}"); - BSON_ASSERT (bson_validate_with_error (b, BSON_VALIDATE_NONE, &error)); - BSON_ASSERT ( - !bson_validate_with_error (b, BSON_VALIDATE_DOLLAR_KEYS, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_INVALID, - BSON_VALIDATE_DOLLAR_KEYS, - "invalid key within DBRef subdocument: \"extra\""); - bson_destroy (b); - -#undef VALIDATE_TEST -} - - -static void -test_bson_init (void) -{ - bson_t b; - char key[12]; - int i; - - bson_init (&b); - BSON_ASSERT ((b.flags & BSON_FLAG_INLINE)); - BSON_ASSERT ((b.flags & BSON_FLAG_STATIC)); - BSON_ASSERT (!(b.flags & BSON_FLAG_RDONLY)); - for (i = 0; i < 100; i++) { - bson_snprintf (key, sizeof key, "%d", i); - BSON_ASSERT (bson_append_utf8 (&b, key, -1, "bar", -1)); - } - BSON_ASSERT (!(b.flags & BSON_FLAG_INLINE)); - bson_destroy (&b); -} - - -static void -test_bson_init_static (void) -{ - static const uint8_t data[5] = {5}; - bson_t b; - - bson_init_static (&b, data, sizeof data); - BSON_ASSERT ((b.flags & BSON_FLAG_RDONLY)); - bson_destroy (&b); -} - - -static void -test_bson_new_from_buffer (void) -{ - bson_t *b; - uint8_t *buf = bson_malloc0 (5); - size_t len = 5; - uint32_t len_le = BSON_UINT32_TO_LE (5); - - memcpy (buf, &len_le, sizeof (len_le)); - - b = bson_new_from_buffer (&buf, &len, bson_realloc_ctx, NULL); - - BSON_ASSERT (b->flags & BSON_FLAG_NO_FREE); - BSON_ASSERT (len == 5); - BSON_ASSERT (b->len == 5); - - bson_append_utf8 (b, "hello", -1, "world", -1); - - BSON_ASSERT (len == 32); - BSON_ASSERT (b->len == 22); - - bson_destroy (b); - - bson_free (buf); - - buf = NULL; - len = 0; - - b = bson_new_from_buffer (&buf, &len, bson_realloc_ctx, NULL); - - BSON_ASSERT (b->flags & BSON_FLAG_NO_FREE); - BSON_ASSERT (len == 5); - BSON_ASSERT (b->len == 5); - - bson_destroy (b); - bson_free (buf); -} - - -static void -test_bson_utf8_key (void) -{ -/* euro currency symbol */ -#define EU "\xe2\x82\xac" -#define FIVE_EUROS EU EU EU EU EU - uint32_t length; - bson_iter_t iter; - const char *str; - bson_t *b; - size_t offset; - - b = get_bson ("eurokey.bson"); - BSON_ASSERT (bson_validate (b, BSON_VALIDATE_NONE, &offset)); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (!strcmp (bson_iter_key (&iter), FIVE_EUROS)); - str = bson_iter_utf8 (&iter, &length); - BSON_ASSERT (str); - BSON_ASSERT (length == 15); /* 5 3-byte sequences. */ - BSON_ASSERT (!strcmp (str, FIVE_EUROS)); - bson_destroy (b); -} - - -static void -test_bson_new_1mm (void) -{ - bson_t *b; - int i; - - for (i = 0; i < 1000000; i++) { - b = bson_new (); - bson_destroy (b); - } -} - - -static void -test_bson_init_1mm (void) -{ - bson_t b; - int i; - - for (i = 0; i < 1000000; i++) { - bson_init (&b); - bson_destroy (&b); - } -} - - -static void -test_bson_build_child (void) -{ - bson_t b; - bson_t child; - bson_t *b2; - bson_t *child2; - - bson_init (&b); - BSON_ASSERT (bson_append_document_begin (&b, "foo", -1, &child)); - BSON_ASSERT (bson_append_utf8 (&child, "bar", -1, "baz", -1)); - BSON_ASSERT (bson_append_document_end (&b, &child)); - - b2 = bson_new (); - child2 = bson_new (); - BSON_ASSERT (bson_append_utf8 (child2, "bar", -1, "baz", -1)); - BSON_ASSERT (bson_append_document (b2, "foo", -1, child2)); - bson_destroy (child2); - - BSON_ASSERT (b.len == b2->len); - BSON_ASSERT_BSON_EQUAL (&b, b2); - - bson_destroy (&b); - bson_destroy (b2); -} - - -static void -test_bson_build_child_array (void) -{ - bson_t b; - bson_t child; - bson_t *b2; - bson_t *child2; - - bson_init (&b); - BSON_ASSERT (bson_append_array_begin (&b, "foo", -1, &child)); - BSON_ASSERT (bson_append_utf8 (&child, "0", -1, "baz", -1)); - BSON_ASSERT (bson_append_array_end (&b, &child)); - - b2 = bson_new (); - child2 = bson_new (); - BSON_ASSERT (bson_append_utf8 (child2, "0", -1, "baz", -1)); - BSON_ASSERT (bson_append_array (b2, "foo", -1, child2)); - bson_destroy (child2); - - BSON_ASSERT (b.len == b2->len); - BSON_ASSERT_BSON_EQUAL (&b, b2); - - bson_destroy (&b); - bson_destroy (b2); -} - - -static void -test_bson_build_child_deep_1 (bson_t *b, int *count) -{ - bson_t child; - - (*count)++; - - BSON_ASSERT (bson_append_document_begin (b, "b", -1, &child)); - BSON_ASSERT (!(b->flags & BSON_FLAG_INLINE)); - BSON_ASSERT ((b->flags & BSON_FLAG_IN_CHILD)); - BSON_ASSERT (!(child.flags & BSON_FLAG_INLINE)); - BSON_ASSERT ((child.flags & BSON_FLAG_STATIC)); - BSON_ASSERT ((child.flags & BSON_FLAG_CHILD)); - - if (*count < 100) { - test_bson_build_child_deep_1 (&child, count); - } else { - BSON_ASSERT (bson_append_int32 (&child, "b", -1, 1234)); - } - - BSON_ASSERT (bson_append_document_end (b, &child)); - BSON_ASSERT (!(b->flags & BSON_FLAG_IN_CHILD)); -} - - -static void -test_bson_build_child_deep (void) -{ - union { - bson_t b; - bson_impl_alloc_t a; - } u; - int count = 0; - - bson_init (&u.b); - BSON_ASSERT ((u.b.flags & BSON_FLAG_INLINE)); - test_bson_build_child_deep_1 (&u.b, &count); - BSON_ASSERT (!(u.b.flags & BSON_FLAG_INLINE)); - BSON_ASSERT ((u.b.flags & BSON_FLAG_STATIC)); - BSON_ASSERT (!(u.b.flags & BSON_FLAG_NO_FREE)); - BSON_ASSERT (!(u.b.flags & BSON_FLAG_RDONLY)); - BSON_ASSERT (bson_validate (&u.b, BSON_VALIDATE_NONE, NULL)); - BSON_ASSERT (((bson_impl_alloc_t *) &u.b)->alloclen == 1024); - BSON_ASSERT_BSON_EQUAL_FILE (&u.b, "test39.bson"); - bson_destroy (&u.b); -} - - -static void -test_bson_build_child_deep_no_begin_end_1 (bson_t *b, int *count) -{ - bson_t child; - - (*count)++; - - bson_init (&child); - if (*count < 100) { - test_bson_build_child_deep_1 (&child, count); - } else { - BSON_ASSERT (bson_append_int32 (&child, "b", -1, 1234)); - } - BSON_ASSERT (bson_append_document (b, "b", -1, &child)); - bson_destroy (&child); -} - - -static void -test_bson_build_child_deep_no_begin_end (void) -{ - union { - bson_t b; - bson_impl_alloc_t a; - } u; - - int count = 0; - - bson_init (&u.b); - test_bson_build_child_deep_no_begin_end_1 (&u.b, &count); - BSON_ASSERT (bson_validate (&u.b, BSON_VALIDATE_NONE, NULL)); - BSON_ASSERT (u.a.alloclen == 1024); - BSON_ASSERT_BSON_EQUAL_FILE (&u.b, "test39.bson"); - bson_destroy (&u.b); -} - - -static void -test_bson_count_keys (void) -{ - bson_t b; - - bson_init (&b); - BSON_ASSERT (bson_append_int32 (&b, "0", -1, 0)); - BSON_ASSERT (bson_append_int32 (&b, "1", -1, 1)); - BSON_ASSERT (bson_append_int32 (&b, "2", -1, 2)); - ASSERT_CMPINT (bson_count_keys (&b), ==, 3); - bson_destroy (&b); -} - - -static void -test_bson_copy (void) -{ - bson_t b; - bson_t *c; - - bson_init (&b); - BSON_ASSERT (bson_append_int32 (&b, "foobar", -1, 1234)); - c = bson_copy (&b); - BSON_ASSERT_BSON_EQUAL (&b, c); - bson_destroy (c); - bson_destroy (&b); -} - - -static void -test_bson_copy_to (void) -{ - bson_t b; - bson_t c; - int i; - - /* - * Test inline structure copy. - */ - bson_init (&b); - BSON_ASSERT (bson_append_int32 (&b, "foobar", -1, 1234)); - bson_copy_to (&b, &c); - BSON_ASSERT_BSON_EQUAL (&b, &c); - bson_destroy (&c); - bson_destroy (&b); - - /* - * Test malloced copy. - */ - bson_init (&b); - for (i = 0; i < 1000; i++) { - BSON_ASSERT (bson_append_int32 (&b, "foobar", -1, 1234)); - } - bson_copy_to (&b, &c); - BSON_ASSERT_BSON_EQUAL (&b, &c); - bson_destroy (&c); - bson_destroy (&b); -} - - -static void -test_bson_copy_to_excluding_noinit (void) -{ - bson_iter_t iter; - bool r; - bson_t b; - bson_t c; - int i; - - bson_init (&b); - bson_append_int32 (&b, "a", 1, 1); - bson_append_int32 (&b, "b", 1, 2); - - bson_init (&c); - bson_copy_to_excluding_noinit (&b, &c, "b", NULL); - r = bson_iter_init_find (&iter, &c, "a"); - BSON_ASSERT (r); - r = bson_iter_init_find (&iter, &c, "b"); - BSON_ASSERT (!r); - - i = bson_count_keys (&b); - ASSERT_CMPINT (i, ==, 2); - - i = bson_count_keys (&c); - ASSERT_CMPINT (i, ==, 1); - - bson_destroy (&b); - bson_destroy (&c); -} - - -static void -test_bson_append_overflow (void) -{ - const char *key = "a"; - uint32_t len; - bson_t b; - - len = BSON_MAX_SIZE; - len -= 4; /* len */ - len -= 1; /* type */ - len -= 1; /* value */ - len -= 1; /* end byte */ - - bson_init (&b); - BSON_ASSERT (!bson_append_bool (&b, key, len, true)); - bson_destroy (&b); -} - - -static void -test_bson_initializer (void) -{ - bson_t b = BSON_INITIALIZER; - - BSON_ASSERT (bson_empty (&b)); - bson_append_bool (&b, "foo", -1, true); - BSON_ASSERT (!bson_empty (&b)); - bson_destroy (&b); -} - - -static void -test_bson_concat (void) -{ - bson_t a = BSON_INITIALIZER; - bson_t b = BSON_INITIALIZER; - bson_t c = BSON_INITIALIZER; - - bson_append_int32 (&a, "abc", 3, 1); - bson_append_int32 (&b, "def", 3, 1); - bson_concat (&a, &b); - - bson_append_int32 (&c, "abc", 3, 1); - bson_append_int32 (&c, "def", 3, 1); - - BSON_ASSERT (0 == bson_compare (&c, &a)); - - bson_destroy (&a); - bson_destroy (&b); - bson_destroy (&c); -} - - -static void -test_bson_reinit (void) -{ - bson_t b = BSON_INITIALIZER; - int i; - - for (i = 0; i < 1000; i++) { - bson_append_int32 (&b, "", 0, i); - } - - bson_reinit (&b); - - for (i = 0; i < 1000; i++) { - bson_append_int32 (&b, "", 0, i); - } - - bson_destroy (&b); -} - - -static void -test_bson_macros (void) -{ - const uint8_t data[] = {1, 2, 3, 4}; - bson_t b = BSON_INITIALIZER; - bson_t ar = BSON_INITIALIZER; - bson_decimal128_t dec; - bson_oid_t oid; - struct timeval tv; - time_t t; - - dec.high = 0x3040000000000000ULL; - dec.low = 0x0ULL; - - t = time (NULL); -#ifdef BSON_OS_WIN32 - tv.tv_sec = (long) t; -#else - tv.tv_sec = t; -#endif - tv.tv_usec = 0; - - bson_oid_init (&oid, NULL); - - BSON_APPEND_ARRAY (&b, "0", &ar); - BSON_APPEND_BINARY (&b, "1", 0, data, sizeof data); - BSON_APPEND_BOOL (&b, "2", true); - BSON_APPEND_CODE (&b, "3", "function(){}"); - BSON_APPEND_CODE_WITH_SCOPE (&b, "4", "function(){}", &ar); - BSON_APPEND_DOUBLE (&b, "6", 123.45); - BSON_APPEND_DOCUMENT (&b, "7", &ar); - BSON_APPEND_INT32 (&b, "8", 123); - BSON_APPEND_INT64 (&b, "9", 456); - BSON_APPEND_MINKEY (&b, "10"); - BSON_APPEND_MAXKEY (&b, "11"); - BSON_APPEND_NULL (&b, "12"); - BSON_APPEND_OID (&b, "13", &oid); - BSON_APPEND_REGEX (&b, "14", "^abc", "i"); - BSON_APPEND_UTF8 (&b, "15", "utf8"); - BSON_APPEND_SYMBOL (&b, "16", "symbol"); - BSON_APPEND_TIME_T (&b, "17", t); - BSON_APPEND_TIMEVAL (&b, "18", &tv); - BSON_APPEND_DATE_TIME (&b, "19", 123); - BSON_APPEND_TIMESTAMP (&b, "20", 123, 0); - BSON_APPEND_UNDEFINED (&b, "21"); - BSON_APPEND_DECIMAL128 (&b, "22", &dec); - - bson_destroy (&b); - bson_destroy (&ar); -} - - -static void -test_bson_clear (void) -{ - bson_t *doc = NULL; - - bson_clear (&doc); - BSON_ASSERT (doc == NULL); - - doc = bson_new (); - BSON_ASSERT (doc != NULL); - bson_clear (&doc); - BSON_ASSERT (doc == NULL); -} - - -static void -bloat (bson_t *b) -{ - uint32_t i; - char buf[16]; - const char *key; - - for (i = 0; i < 100; i++) { - bson_uint32_to_string (i, &key, buf, sizeof buf); - BSON_APPEND_UTF8 (b, key, "long useless value foo bar baz quux quizzle"); - } - - /* spilled over */ - ASSERT (!(b->flags & BSON_FLAG_INLINE)); -} - - -static void -test_bson_steal (void) -{ - bson_t stack_alloced; - bson_t *heap_alloced; - bson_t dst; - uint8_t *alloc; - uint8_t *buf; - size_t len; - uint32_t len_le; - - /* inline, stack-allocated */ - bson_init (&stack_alloced); - BSON_APPEND_INT32 (&stack_alloced, "a", 1); - ASSERT (bson_steal (&dst, &stack_alloced)); - ASSERT (bson_has_field (&dst, "a")); - ASSERT (dst.flags & BSON_FLAG_INLINE); - /* src was invalidated */ - ASSERT (!bson_validate (&stack_alloced, BSON_VALIDATE_NONE, 0)); - bson_destroy (&dst); - - /* spilled over, stack-allocated */ - bson_init (&stack_alloced); - bloat (&stack_alloced); - alloc = ((bson_impl_alloc_t *) &stack_alloced)->alloc; - ASSERT (bson_steal (&dst, &stack_alloced)); - /* data was transferred */ - ASSERT (alloc == ((bson_impl_alloc_t *) &dst)->alloc); - ASSERT (bson_has_field (&dst, "99")); - ASSERT (!(dst.flags & BSON_FLAG_INLINE)); - ASSERT (!bson_validate (&stack_alloced, BSON_VALIDATE_NONE, 0)); - bson_destroy (&dst); - - /* inline, heap-allocated */ - heap_alloced = bson_new (); - BSON_APPEND_INT32 (heap_alloced, "a", 1); - ASSERT (bson_steal (&dst, heap_alloced)); - ASSERT (bson_has_field (&dst, "a")); - ASSERT (dst.flags & BSON_FLAG_INLINE); - bson_destroy (&dst); - - /* spilled over, heap-allocated */ - heap_alloced = bson_new (); - bloat (heap_alloced); - alloc = ((bson_impl_alloc_t *) heap_alloced)->alloc; - ASSERT (bson_steal (&dst, heap_alloced)); - /* data was transferred */ - ASSERT (alloc == ((bson_impl_alloc_t *) &dst)->alloc); - ASSERT (bson_has_field (&dst, "99")); - ASSERT (!(dst.flags & BSON_FLAG_INLINE)); - bson_destroy (&dst); - - /* test stealing from a bson created with bson_new_from_buffer */ - buf = bson_malloc0 (5); - len = 5; - len_le = BSON_UINT32_TO_LE (5); - memcpy (buf, &len_le, sizeof (len_le)); - heap_alloced = bson_new_from_buffer (&buf, &len, bson_realloc_ctx, NULL); - ASSERT (bson_steal (&dst, heap_alloced)); - ASSERT (dst.flags & BSON_FLAG_NO_FREE); - ASSERT (dst.flags & BSON_FLAG_STATIC); - ASSERT (((bson_impl_alloc_t *) &dst)->realloc == bson_realloc_ctx); - ASSERT (((bson_impl_alloc_t *) &dst)->realloc_func_ctx == NULL); - bson_destroy (&dst); - bson_free (buf); -} - -static void -BSON_ASSERT_KEY_AND_VALUE (const bson_t *bson) -{ - bson_iter_t iter; - - ASSERT (bson_iter_init_find (&iter, bson, "key")); - ASSERT (BSON_ITER_HOLDS_UTF8 (&iter)); - ASSERT_CMPSTR ("value", bson_iter_utf8 (&iter, NULL)); -} - - -static void -test_bson_reserve_buffer (void) -{ - bson_t src = BSON_INITIALIZER; - bson_t stack_alloced; - bson_t *heap_alloced; - uint8_t *buf; - - /* inline, stack-allocated */ - bson_init (&stack_alloced); - BSON_APPEND_UTF8 (&src, "key", "value"); - ASSERT ((buf = bson_reserve_buffer (&stack_alloced, src.len))); - ASSERT_CMPUINT32 (src.len, ==, stack_alloced.len); - ASSERT (stack_alloced.flags & BSON_FLAG_INLINE); - memcpy (buf, ((bson_impl_inline_t *) &src)->data, src.len); - /* data was transferred */ - BSON_ASSERT_KEY_AND_VALUE (&stack_alloced); - bson_destroy (&stack_alloced); - - /* spilled over, stack-allocated */ - bloat (&src); - bson_init (&stack_alloced); - ASSERT ((buf = bson_reserve_buffer (&stack_alloced, src.len))); - ASSERT_CMPUINT32 (src.len, ==, stack_alloced.len); - ASSERT (!(stack_alloced.flags & BSON_FLAG_INLINE)); - memcpy (buf, ((bson_impl_alloc_t *) &src)->alloc, src.len); - BSON_ASSERT_KEY_AND_VALUE (&stack_alloced); - ASSERT (bson_has_field (&stack_alloced, "99")); - bson_destroy (&src); - bson_destroy (&stack_alloced); - - /* inline, heap-allocated */ - heap_alloced = bson_new (); - bson_init (&src); - BSON_APPEND_UTF8 (&src, "key", "value"); - ASSERT ((buf = bson_reserve_buffer (heap_alloced, src.len))); - ASSERT_CMPUINT32 (src.len, ==, heap_alloced->len); - ASSERT (heap_alloced->flags & BSON_FLAG_INLINE); - memcpy (buf, ((bson_impl_inline_t *) &src)->data, src.len); - BSON_ASSERT_KEY_AND_VALUE (heap_alloced); - bson_destroy (heap_alloced); - - /* spilled over, heap-allocated */ - heap_alloced = bson_new (); - bloat (&src); - ASSERT ((buf = bson_reserve_buffer (heap_alloced, src.len))); - ASSERT_CMPUINT32 (src.len, ==, heap_alloced->len); - ASSERT (!(heap_alloced->flags & BSON_FLAG_INLINE)); - memcpy (buf, ((bson_impl_alloc_t *) &src)->alloc, src.len); - BSON_ASSERT_KEY_AND_VALUE (heap_alloced); - ASSERT (bson_has_field (heap_alloced, "99")); - - bson_destroy (&src); - bson_destroy (heap_alloced); -} - - -static void -test_bson_reserve_buffer_errors (void) -{ - bson_t bson = BSON_INITIALIZER; - bson_t child; - uint8_t data[5] = {0}; - uint32_t len_le; - - /* too big */ - ASSERT (!bson_reserve_buffer (&bson, (uint32_t) (INT32_MAX - bson.len - 1))); - - /* make a static bson, it refuses bson_reserve_buffer since it's read-only */ - bson_destroy (&bson); - len_le = BSON_UINT32_TO_LE (5); - memcpy (data, &len_le, sizeof (len_le)); - ASSERT (bson_init_static (&bson, data, sizeof data)); - ASSERT (!bson_reserve_buffer (&bson, 10)); - - /* parent's and child's buffers are locked */ - bson_init (&bson); - BSON_APPEND_DOCUMENT_BEGIN (&bson, "child", &child); - ASSERT (!bson_reserve_buffer (&bson, 10)); - ASSERT (!bson_reserve_buffer (&child, 10)); - /* unlock parent's buffer */ - bson_append_document_end (&bson, &child); - ASSERT (bson_reserve_buffer (&bson, 10)); - - bson_destroy (&bson); -} - - -static void -test_bson_destroy_with_steal (void) -{ - bson_t *b1; - bson_t b2; - uint32_t len = 0; - uint8_t *data; - int i; - - b1 = bson_new (); - for (i = 0; i < 100; i++) { - BSON_APPEND_INT32 (b1, "some-key", i); - } - - data = bson_destroy_with_steal (b1, true, &len); - BSON_ASSERT (data); - BSON_ASSERT (len == 1405); - bson_free (data); - data = NULL; - - bson_init (&b2); - len = 0; - for (i = 0; i < 100; i++) { - BSON_APPEND_INT32 (&b2, "some-key", i); - } - BSON_ASSERT (!bson_destroy_with_steal (&b2, false, &len)); - BSON_ASSERT (len == 1405); - - bson_init (&b2); - BSON_ASSERT (!bson_destroy_with_steal (&b2, false, NULL)); - - bson_init (&b2); - data = bson_destroy_with_steal (&b2, true, &len); - BSON_ASSERT (data); - BSON_ASSERT (len == 5); - bson_free (data); - data = NULL; -} - - -static void -test_bson_has_field (void) -{ - bson_t *b; - bool r; - - b = BCON_NEW ("foo", "[", "{", "bar", BCON_INT32 (1), "}", "]"); - - r = bson_has_field (b, "foo"); - BSON_ASSERT (r); - - r = bson_has_field (b, "foo.0"); - BSON_ASSERT (r); - - r = bson_has_field (b, "foo.0.bar"); - BSON_ASSERT (r); - - r = bson_has_field (b, "0"); - BSON_ASSERT (!r); - - r = bson_has_field (b, "bar"); - BSON_ASSERT (!r); - - r = bson_has_field (b, "0.bar"); - BSON_ASSERT (!r); - - bson_destroy (b); -} - - -static void -test_next_power_of_two (void) -{ - size_t s; - - s = 3; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 4); - - s = 4; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 4); - - s = 33; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 64); - - s = 91; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 128); - - s = 939524096UL; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 1073741824); - - s = 1073741824UL; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 1073741824UL); - -#if BSON_WORD_SIZE == 64 - s = 4294967296LL; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 4294967296LL); - - s = 4294967297LL; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 8589934592LL); - - s = 17179901952LL; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 34359738368LL); - - s = 9223372036854775807ULL; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 9223372036854775808ULL); - - s = 36028795806651656ULL; - s = bson_next_power_of_two (s); - BSON_ASSERT (s == 36028797018963968ULL); -#endif -} - - -void -visit_corrupt (const bson_iter_t *iter, void *data) -{ - *((bool *) data) = true; -} - - -static void -test_bson_visit_invalid_field (void) -{ - /* key is invalid utf-8 char: {"\x80": 1} */ - const char data[] = "\x0c\x00\x00\x00\x10\x80\x00\x01\x00\x00\x00\x00"; - bson_t b; - bson_iter_t iter; - bson_visitor_t visitor = {0}; - bool visited = false; - - visitor.visit_corrupt = visit_corrupt; - BSON_ASSERT (bson_init_static (&b, (const uint8_t *) data, sizeof data - 1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (!bson_iter_visit_all (&iter, &visitor, (void *) &visited)); - BSON_ASSERT (visited); -} - - -typedef struct { - bool visited; - const char *key; - uint32_t type_code; -} unsupported_type_test_data_t; - - -void -visit_unsupported_type (const bson_iter_t *iter, - const char *key, - uint32_t type_code, - void *data) -{ - unsupported_type_test_data_t *context; - - context = (unsupported_type_test_data_t *) data; - context->visited = true; - context->key = key; - context->type_code = type_code; -} - - -static void -test_bson_visit_unsupported_type (void) -{ - /* {k: 1}, but instead of BSON type 0x10 (int32), use unknown type 0x33 */ - const char data[] = "\x0c\x00\x00\x00\x33k\x00\x01\x00\x00\x00\x00"; - bson_t b; - bson_iter_t iter; - unsupported_type_test_data_t context = {0}; - bson_visitor_t visitor = {0}; - - visitor.visit_unsupported_type = visit_unsupported_type; - - BSON_ASSERT (bson_init_static (&b, (const uint8_t *) data, sizeof data - 1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (!bson_iter_visit_all (&iter, &visitor, (void *) &context)); - BSON_ASSERT (!bson_iter_next (&iter)); - BSON_ASSERT (context.visited); - BSON_ASSERT (!strcmp (context.key, "k")); - BSON_ASSERT (context.type_code == '\x33'); -} - - -static void -test_bson_visit_unsupported_type_bad_key (void) -{ - /* key is invalid utf-8 char, '\x80' */ - const char data[] = "\x0c\x00\x00\x00\x33\x80\x00\x01\x00\x00\x00\x00"; - bson_t b; - bson_iter_t iter; - unsupported_type_test_data_t context = {0}; - bson_visitor_t visitor = {0}; - - visitor.visit_unsupported_type = visit_unsupported_type; - - BSON_ASSERT (bson_init_static (&b, (const uint8_t *) data, sizeof data - 1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (!bson_iter_visit_all (&iter, &visitor, (void *) &context)); - BSON_ASSERT (!bson_iter_next (&iter)); - - /* unsupported type error wasn't reported, because the bson is corrupt */ - BSON_ASSERT (!context.visited); -} - - -static void -test_bson_visit_unsupported_type_empty_key (void) -{ - /* {"": 1}, but instead of BSON type 0x10 (int32), use unknown type 0x33 */ - const char data[] = "\x0b\x00\x00\x00\x33\x00\x01\x00\x00\x00\x00"; - bson_t b; - bson_iter_t iter; - unsupported_type_test_data_t context = {0}; - bson_visitor_t visitor = {0}; - - visitor.visit_unsupported_type = visit_unsupported_type; - - BSON_ASSERT (bson_init_static (&b, (const uint8_t *) data, sizeof data - 1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (!bson_iter_visit_all (&iter, &visitor, (void *) &context)); - BSON_ASSERT (!bson_iter_next (&iter)); - BSON_ASSERT (context.visited); - BSON_ASSERT (!strcmp (context.key, "")); - BSON_ASSERT (context.type_code == '\x33'); -} - - -static void -test_bson_subtype_2 (void) -{ - bson_t b; - /* taken from BSON Corpus Tests */ - const char ok[] = "\x13\x00\x00\x00\x05\x78\x00\x06\x00\x00\x00\x02\x02\x00" - "\x00\x00\xff\xff\x00"; - - /* Deprecated subtype 0x02 includes a redundant length inside the binary - * payload. Check that we validate this length. - */ - const char len_too_long[] = "\x13\x00\x00\x00\x05\x78\x00\x06\x00\x00\x00" - "\x02\x03\x00\x00\x00\xFF\xFF\x00"; - const char len_too_short[] = "\x13\x00\x00\x00\x05\x78\x00\x06\x00\x00\x00" - "\x02\x01\x00\x00\x00\xFF\xFF\x00"; - const char len_negative[] = "\x13\x00\x00\x00\x05\x78\x00\x06\x00\x00\x00" - "\x02\xFF\xFF\xFF\xFF\xFF\xFF\x00"; - - bson_t *bson_ok = BCON_NEW ("x", BCON_BIN (2, (uint8_t *) "\xff\xff", 2)); - - BSON_ASSERT (bson_init_static (&b, (uint8_t *) ok, sizeof (ok) - 1)); - BSON_ASSERT (bson_validate (&b, BSON_VALIDATE_NONE, 0)); - BSON_ASSERT (0 == bson_compare (&b, bson_ok)); - - BSON_ASSERT (bson_init_static ( - &b, (uint8_t *) len_too_long, sizeof (len_too_long) - 1)); - BSON_ASSERT (!bson_validate (&b, BSON_VALIDATE_NONE, 0)); - - BSON_ASSERT (bson_init_static ( - &b, (uint8_t *) len_too_short, sizeof (len_too_short) - 1)); - BSON_ASSERT (!bson_validate (&b, BSON_VALIDATE_NONE, 0)); - - BSON_ASSERT (bson_init_static ( - &b, (uint8_t *) len_negative, sizeof (len_negative) - 1)); - BSON_ASSERT (!bson_validate (&b, BSON_VALIDATE_NONE, 0)); - - bson_destroy (bson_ok); -} - -/* CDRIVER-2455 Off-by-one error while appending regex */ -void -test_bson_regex_lengths (void) -{ - bson_t new = BSON_INITIALIZER; - bson_oid_t oid; - - bson_oid_init_from_string (&oid, "1234567890abcdef12345678"); - bson_append_oid (&new, "0123456", -1, &oid); - - bson_append_regex (&new, - "0_________1_________2_________3___4", - -1, - "0_________1_________2_________3_________4_________5___4", - "i"); - - ASSERT (new.len == 121); - ASSERT (new.flags &BSON_FLAG_STATIC); - ASSERT (!(new.flags &BSON_FLAG_INLINE)); - - bson_destroy (&new); -} - -void -test_bson_empty_binary (void) -{ - uint8_t data = 0xAB; - bson_t test; - const bson_value_t *value; - bson_value_t copy; - bson_iter_t iter; - - bson_init (&test); - bson_append_binary (&test, "test", 4, BSON_SUBTYPE_BINARY, &data, 0); - BSON_ASSERT (bson_iter_init_find (&iter, &test, "test")); - value = bson_iter_value (&iter); - /* CDRIVER-2569, this would memcpy (0 bytes) to a NULL destination. */ - bson_value_copy (value, ©); - - bson_value_destroy (©); - bson_destroy (&test); -} - -void -test_bson_iter_key_len (void) -{ - bson_t *bson = bson_with_all_types (); - bson_iter_t iter; - - BSON_ASSERT (bson_iter_init (&iter, bson)); - while (bson_iter_next (&iter)) { - ASSERT_WITH_MSG (strlen (bson_iter_key (&iter)) == - bson_iter_key_len (&iter), - "iter_key_len differs from real key length. got %d but " - "expected %d for key %s\n", - bson_iter_key_len (&iter), - (int) strlen (bson_iter_key (&iter)), - bson_iter_key (&iter)); - } -} - - -void -test_bson_iter_init_from_data_at_offset (void) -{ - bson_t *bson = bson_with_all_types (); - /* zero out iter, since bson_iter_init doesn't zero out iter->value. */ - bson_iter_t iter = {0}; - - BSON_ASSERT (bson_iter_init (&iter, bson)); - ASSERT_CMPINT (bson_iter_offset (&iter), ==, 0); - while (bson_iter_next (&iter)) { - const uint8_t *data = bson_get_data (bson); - int keylen = bson_iter_key_len (&iter); - uint32_t offset = bson_iter_offset (&iter); - bson_iter_t recreated = {0}; - - BSON_ASSERT (bson_iter_init_from_data_at_offset ( - &recreated, data, bson->len, offset, keylen)); - if (memcmp ((void *) &iter, (void *) &recreated, sizeof (bson_iter_t)) != - 0) { - int i; - bson_iter_t *iters[] = {&iter, &recreated}; - fprintf (stderr, - "recreated iterator does not match initial iterator:\n"); - for (i = 0; i < 2; i++) { - fprintf (stderr, "iter %d: ", i); - fprintf (stderr, - "len=%d, off=%d, type=%d, key=%d, d1=%d, d2=%d, " - "d3=%d, d4=%d, next_off=%d, err_off=%d\n", - iters[i]->len, - iters[i]->off, - iters[i]->type, - iters[i]->key, - iters[i]->d1, - iters[i]->d2, - iters[i]->d3, - iters[i]->d4, - iters[i]->next_off, - iters[i]->err_off); - } - ASSERT (false); - } - } -} - -void -test_bson_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/new", test_bson_new); - TestSuite_Add (suite, "/bson/new_from_buffer", test_bson_new_from_buffer); - TestSuite_Add (suite, "/bson/init", test_bson_init); - TestSuite_Add (suite, "/bson/init_static", test_bson_init_static); - TestSuite_Add (suite, "/bson/basic", test_bson_alloc); - TestSuite_Add (suite, "/bson/append_overflow", test_bson_append_overflow); - TestSuite_Add (suite, "/bson/append_array", test_bson_append_array); - TestSuite_Add (suite, "/bson/append_binary", test_bson_append_binary); - TestSuite_Add (suite, - "/bson/append_binary_deprecated", - test_bson_append_binary_deprecated); - TestSuite_Add (suite, "/bson/append_bool", test_bson_append_bool); - TestSuite_Add (suite, "/bson/append_code", test_bson_append_code); - TestSuite_Add ( - suite, "/bson/append_code_with_scope", test_bson_append_code_with_scope); - TestSuite_Add (suite, "/bson/append_dbpointer", test_bson_append_dbpointer); - TestSuite_Add (suite, "/bson/append_document", test_bson_append_document); - TestSuite_Add (suite, "/bson/append_double", test_bson_append_double); - TestSuite_Add (suite, "/bson/append_int32", test_bson_append_int32); - TestSuite_Add (suite, "/bson/append_int64", test_bson_append_int64); - TestSuite_Add ( - suite, "/bson/append_decimal128", test_bson_append_decimal128); - TestSuite_Add (suite, "/bson/append_iter", test_bson_append_iter); - TestSuite_Add (suite, "/bson/append_maxkey", test_bson_append_maxkey); - TestSuite_Add (suite, "/bson/append_minkey", test_bson_append_minkey); - TestSuite_Add (suite, "/bson/append_null", test_bson_append_null); - TestSuite_Add (suite, "/bson/append_oid", test_bson_append_oid); - TestSuite_Add (suite, "/bson/append_regex", test_bson_append_regex); - TestSuite_Add ( - suite, "/bson/append_regex_w_len", test_bson_append_regex_w_len); - TestSuite_Add (suite, "/bson/append_utf8", test_bson_append_utf8); - TestSuite_Add (suite, "/bson/append_symbol", test_bson_append_symbol); - TestSuite_Add (suite, "/bson/append_time_t", test_bson_append_time_t); - TestSuite_Add (suite, "/bson/append_timestamp", test_bson_append_timestamp); - TestSuite_Add (suite, "/bson/append_timeval", test_bson_append_timeval); - TestSuite_Add (suite, "/bson/append_undefined", test_bson_append_undefined); - TestSuite_Add (suite, "/bson/append_general", test_bson_append_general); - TestSuite_Add (suite, "/bson/append_deep", test_bson_append_deep); - TestSuite_Add (suite, "/bson/utf8_key", test_bson_utf8_key); - TestSuite_Add (suite, "/bson/validate", test_bson_validate); - TestSuite_Add (suite, "/bson/validate/dbref", test_bson_validate_dbref); - TestSuite_Add (suite, "/bson/validate/bool", test_bson_validate_bool); - TestSuite_Add ( - suite, "/bson/validate/dbpointer", test_bson_validate_dbpointer); - TestSuite_Add (suite, "/bson/new_1mm", test_bson_new_1mm); - TestSuite_Add (suite, "/bson/init_1mm", test_bson_init_1mm); - TestSuite_Add (suite, "/bson/build_child", test_bson_build_child); - TestSuite_Add (suite, "/bson/build_child_deep", test_bson_build_child_deep); - TestSuite_Add (suite, - "/bson/build_child_deep_no_begin_end", - test_bson_build_child_deep_no_begin_end); - TestSuite_Add ( - suite, "/bson/build_child_array", test_bson_build_child_array); - TestSuite_Add (suite, "/bson/count", test_bson_count_keys); - TestSuite_Add (suite, "/bson/copy", test_bson_copy); - TestSuite_Add (suite, "/bson/copy_to", test_bson_copy_to); - TestSuite_Add (suite, - "/bson/copy_to_excluding_noinit", - test_bson_copy_to_excluding_noinit); - TestSuite_Add (suite, "/bson/initializer", test_bson_initializer); - TestSuite_Add (suite, "/bson/concat", test_bson_concat); - TestSuite_Add (suite, "/bson/reinit", test_bson_reinit); - TestSuite_Add (suite, "/bson/macros", test_bson_macros); - TestSuite_Add (suite, "/bson/clear", test_bson_clear); - TestSuite_Add (suite, "/bson/steal", test_bson_steal); - TestSuite_Add (suite, "/bson/reserve_buffer", test_bson_reserve_buffer); - TestSuite_Add ( - suite, "/bson/reserve_buffer/errors", test_bson_reserve_buffer_errors); - TestSuite_Add ( - suite, "/bson/destroy_with_steal", test_bson_destroy_with_steal); - TestSuite_Add (suite, "/bson/has_field", test_bson_has_field); - TestSuite_Add ( - suite, "/bson/visit_invalid_field", test_bson_visit_invalid_field); - TestSuite_Add ( - suite, "/bson/unsupported_type", test_bson_visit_unsupported_type); - TestSuite_Add (suite, - "/bson/unsupported_type/bad_key", - test_bson_visit_unsupported_type_bad_key); - TestSuite_Add (suite, - "/bson/unsupported_type/empty_key", - test_bson_visit_unsupported_type_empty_key); - TestSuite_Add (suite, "/bson/binary_subtype_2", test_bson_subtype_2); - TestSuite_Add (suite, "/bson/regex_length", test_bson_regex_lengths); - TestSuite_Add (suite, "/util/next_power_of_two", test_next_power_of_two); - TestSuite_Add (suite, "/bson/empty_binary", test_bson_empty_binary); - TestSuite_Add (suite, "/bson/iter/key_len", test_bson_iter_key_len); - TestSuite_Add (suite, - "/bson/iter/init_from_data_at_offset", - test_bson_iter_init_from_data_at_offset); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-clock.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-clock.c deleted file mode 100644 index 830d70c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-clock.c +++ /dev/null @@ -1,25 +0,0 @@ -#include - -#include "TestSuite.h" - - -static void -test_get_monotonic_time (void) -{ - int64_t t; - int64_t t2; - - t = bson_get_monotonic_time (); - t2 = bson_get_monotonic_time (); - BSON_ASSERT (t); - BSON_ASSERT (t2); - ASSERT_CMPINT64 (t, <=, t2); -} - - -void -test_clock_install (TestSuite *suite) -{ - TestSuite_Add ( - suite, "/bson/clock/get_monotonic_time", test_get_monotonic_time); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-decimal128.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-decimal128.c deleted file mode 100644 index f80c4e6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-decimal128.c +++ /dev/null @@ -1,815 +0,0 @@ -/* - * Copyright 2015 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "TestSuite.h" - - -/* - *---------------------------------------------------------------------------- - * decimal128_to_string tests - * - * The following tests confirm functionality of the decimal128_to_string - *function. - * - * All decimal test data is generated using the Intel Decimal Floating-Point - * Math Library's bid128_from_string routine. - * - *---------------------------------------------------------------------------- - */ - - -#define DECIMAL128_FROM_ULLS(dec, h, l) \ - do { \ - (dec).high = (h); \ - (dec).low = (l); \ - } while (0); - - -static void -test_decimal128_to_string__infinity (void) -{ - bson_decimal128_t positive_infinity; - bson_decimal128_t negative_infinity; - char bid_string[BSON_DECIMAL128_STRING]; - - DECIMAL128_FROM_ULLS (positive_infinity, 0x7800000000000000, 0); - DECIMAL128_FROM_ULLS (negative_infinity, 0xf800000000000000, 0); - - bson_decimal128_to_string (&positive_infinity, bid_string); - BSON_ASSERT (!strcmp (bid_string, "Infinity")); - - bson_decimal128_to_string (&negative_infinity, bid_string); - BSON_ASSERT (!strcmp (bid_string, "-Infinity")); -} - - -static void -test_decimal128_to_string__nan (void) -{ - bson_decimal128_t dec_pnan; - bson_decimal128_t dec_nnan; - bson_decimal128_t dec_psnan; - bson_decimal128_t dec_nsnan; - bson_decimal128_t dec_payload_nan; - - /* All the above should just be NaN. */ - char bid_string[BSON_DECIMAL128_STRING]; - - DECIMAL128_FROM_ULLS (dec_pnan, 0x7c00000000000000, 0); - DECIMAL128_FROM_ULLS (dec_nnan, 0xfc00000000000000, 0); - DECIMAL128_FROM_ULLS (dec_psnan, 0x7e00000000000000, 0); - DECIMAL128_FROM_ULLS (dec_nsnan, 0xfe00000000000000, 0); - DECIMAL128_FROM_ULLS (dec_payload_nan, 0x7e00000000000000, 12); - - bson_decimal128_to_string (&dec_pnan, bid_string); - BSON_ASSERT (!strcmp (bid_string, "NaN")); - - bson_decimal128_to_string (&dec_nnan, bid_string); - BSON_ASSERT (!strcmp (bid_string, "NaN")); - - bson_decimal128_to_string (&dec_psnan, bid_string); - BSON_ASSERT (!strcmp (bid_string, "NaN")); - - bson_decimal128_to_string (&dec_nsnan, bid_string); - BSON_ASSERT (!strcmp (bid_string, "NaN")); - - bson_decimal128_to_string (&dec_payload_nan, bid_string); - BSON_ASSERT (!strcmp (bid_string, "NaN")); -} - - -static void -test_decimal128_to_string__regular (void) -{ - char bid_string[BSON_DECIMAL128_STRING]; - bson_decimal128_t one; - bson_decimal128_t zero; - bson_decimal128_t two; - bson_decimal128_t negative_one; - bson_decimal128_t negative_zero; - bson_decimal128_t tenth; - bson_decimal128_t smallest_regular; - bson_decimal128_t largest_regular; - bson_decimal128_t trailing_zeros; - bson_decimal128_t all_digits; - bson_decimal128_t full_house; - - DECIMAL128_FROM_ULLS (one, 0x3040000000000000, 0x0000000000000001); - DECIMAL128_FROM_ULLS (zero, 0x3040000000000000, 0x0000000000000000); - DECIMAL128_FROM_ULLS (two, 0x3040000000000000, 0x0000000000000002); - DECIMAL128_FROM_ULLS (negative_one, 0xb040000000000000, 0x0000000000000001); - DECIMAL128_FROM_ULLS (negative_zero, 0xb040000000000000, 0x0000000000000000); - DECIMAL128_FROM_ULLS ( - tenth, 0x303e000000000000, 0x0000000000000001); /* 0.1 */ - /* 0.001234 */ - DECIMAL128_FROM_ULLS ( - smallest_regular, 0x3034000000000000, 0x00000000000004d2); - /* 12345789012 */ - DECIMAL128_FROM_ULLS ( - largest_regular, 0x3040000000000000, 0x0000001cbe991a14); - /* 0.00123400000 */ - DECIMAL128_FROM_ULLS ( - trailing_zeros, 0x302a000000000000, 0x00000000075aef40); - /* 0.1234567890123456789012345678901234 */ - DECIMAL128_FROM_ULLS (all_digits, 0x2ffc3cde6fff9732, 0xde825cd07e96aff2); - - /* 5192296858534827628530496329220095 */ - DECIMAL128_FROM_ULLS (full_house, 0x3040ffffffffffff, 0xffffffffffffffff); - - bson_decimal128_to_string (&one, bid_string); - BSON_ASSERT (!strcmp ("1", bid_string)); - - bson_decimal128_to_string (&zero, bid_string); - BSON_ASSERT (!strcmp ("0", bid_string)); - - bson_decimal128_to_string (&two, bid_string); - BSON_ASSERT (!strcmp ("2", bid_string)); - - bson_decimal128_to_string (&negative_one, bid_string); - BSON_ASSERT (!strcmp ("-1", bid_string)); - - bson_decimal128_to_string (&negative_zero, bid_string); - BSON_ASSERT (!strcmp ("-0", bid_string)); - - bson_decimal128_to_string (&tenth, bid_string); - BSON_ASSERT (!strcmp ("0.1", bid_string)); - - bson_decimal128_to_string (&smallest_regular, bid_string); - BSON_ASSERT (!strcmp ("0.001234", bid_string)); - - bson_decimal128_to_string (&largest_regular, bid_string); - BSON_ASSERT (!strcmp ("123456789012", bid_string)); - - bson_decimal128_to_string (&trailing_zeros, bid_string); - BSON_ASSERT (!strcmp ("0.00123400000", bid_string)); - - bson_decimal128_to_string (&all_digits, bid_string); - BSON_ASSERT (!strcmp ("0.1234567890123456789012345678901234", bid_string)); - - bson_decimal128_to_string (&full_house, bid_string); - BSON_ASSERT (!strcmp ("5192296858534827628530496329220095", bid_string)); -} - - -static void -test_decimal128_to_string__scientific (void) -{ - char bid_string[BSON_DECIMAL128_STRING]; - - bson_decimal128_t huge; /* 1.000000000000000000000000000000000E+6144 */ - bson_decimal128_t tiny; /* 1E-6176 */ - bson_decimal128_t neg_tiny; /* -1E-6176 */ - bson_decimal128_t large; /* 9.999987654321E+112 */ - bson_decimal128_t largest; /* 9.999999999999999999999999999999999E+6144 */ - bson_decimal128_t tiniest; /* 9.999999999999999999999999999999999E-6143 */ - bson_decimal128_t trailing_zero; /* 1.050E9 */ - bson_decimal128_t one_trailing_zero; /* 1.050E4 */ - bson_decimal128_t move_decimal; /* 105 */ - bson_decimal128_t move_decimal_after; /* 1.05E3 */ - bson_decimal128_t trailing_zero_no_decimal; /* 1E3 */ - - DECIMAL128_FROM_ULLS (huge, 0x5ffe314dc6448d93, 0x38c15b0a00000000); - DECIMAL128_FROM_ULLS (tiny, 0x0000000000000000, 0x0000000000000001); - DECIMAL128_FROM_ULLS (neg_tiny, 0x8000000000000000, 0x0000000000000001); - DECIMAL128_FROM_ULLS (large, 0x3108000000000000, 0x000009184db63eb1); - DECIMAL128_FROM_ULLS (largest, 0x5fffed09bead87c0, 0x378d8e63ffffffff); - DECIMAL128_FROM_ULLS (tiniest, 0x0001ed09bead87c0, 0x378d8e63ffffffff); - DECIMAL128_FROM_ULLS (trailing_zero, 0x304c000000000000, 0x000000000000041a); - DECIMAL128_FROM_ULLS ( - one_trailing_zero, 0x3042000000000000, 0x000000000000041a); - DECIMAL128_FROM_ULLS (move_decimal, 0x3040000000000000, 0x0000000000000069); - DECIMAL128_FROM_ULLS ( - move_decimal_after, 0x3042000000000000, 0x0000000000000069); - DECIMAL128_FROM_ULLS ( - trailing_zero_no_decimal, 0x3046000000000000, 0x0000000000000001); - - bson_decimal128_to_string (&huge, bid_string); - BSON_ASSERT ( - !strcmp ("1.000000000000000000000000000000000E+6144", bid_string)); - - bson_decimal128_to_string (&tiny, bid_string); - BSON_ASSERT (!strcmp ("1E-6176", bid_string)); - - bson_decimal128_to_string (&neg_tiny, bid_string); - BSON_ASSERT (!strcmp ("-1E-6176", bid_string)); - - bson_decimal128_to_string (&neg_tiny, bid_string); - BSON_ASSERT (!strcmp ("-1E-6176", bid_string)); - - bson_decimal128_to_string (&large, bid_string); - BSON_ASSERT (!strcmp ("9.999987654321E+112", bid_string)); - - bson_decimal128_to_string (&largest, bid_string); - BSON_ASSERT ( - !strcmp ("9.999999999999999999999999999999999E+6144", bid_string)); - - bson_decimal128_to_string (&tiniest, bid_string); - BSON_ASSERT ( - !strcmp ("9.999999999999999999999999999999999E-6143", bid_string)); - - bson_decimal128_to_string (&trailing_zero, bid_string); - BSON_ASSERT (!strcmp ("1.050E+9", bid_string)); - - bson_decimal128_to_string (&one_trailing_zero, bid_string); - BSON_ASSERT (!strcmp ("1.050E+4", bid_string)); - - bson_decimal128_to_string (&move_decimal, bid_string); - BSON_ASSERT (!strcmp ("105", bid_string)); - - bson_decimal128_to_string (&move_decimal_after, bid_string); - BSON_ASSERT (!strcmp ("1.05E+3", bid_string)); - - bson_decimal128_to_string (&trailing_zero_no_decimal, bid_string); - BSON_ASSERT (!strcmp ("1E+3", bid_string)); -} - - -static void -test_decimal128_to_string__zeros (void) -{ - char bid_string[BSON_DECIMAL128_STRING]; - - bson_decimal128_t zero; /* 0 */ - bson_decimal128_t pos_exp_zero; /* 0E+300 */ - bson_decimal128_t neg_exp_zero; /* 0E-600 */ - - DECIMAL128_FROM_ULLS (zero, 0x3040000000000000, 0x0000000000000000); - DECIMAL128_FROM_ULLS (pos_exp_zero, 0x3298000000000000, 0x0000000000000000); - DECIMAL128_FROM_ULLS (neg_exp_zero, 0x2b90000000000000, 0x0000000000000000); - - bson_decimal128_to_string (&zero, bid_string); - BSON_ASSERT (!strcmp ("0", bid_string)); - - bson_decimal128_to_string (&pos_exp_zero, bid_string); - BSON_ASSERT (!strcmp ("0E+300", bid_string)); - - bson_decimal128_to_string (&neg_exp_zero, bid_string); - BSON_ASSERT (!strcmp ("0E-600", bid_string)); -} - - -#define IS_NAN(dec) (dec).high == 0x7c00000000000000ull - - -static void -test_decimal128_from_string__invalid_inputs (void) -{ - bson_decimal128_t dec; - - bson_decimal128_from_string (".", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string (".e", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("invalid", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("in", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("i", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("E02", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("..1", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("1abcede", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("1.24abc", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("1.24abcE+02", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("1.24E+02abc2d", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("E+02", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("e+02", &dec); - BSON_ASSERT (IS_NAN (dec)); - - bson_decimal128_from_string_w_len (".", 1, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len (".e", 2, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("", 0, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("invalid", 7, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("in", 2, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("i", 1, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("E02", 3, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("..1", 3, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("1abcede", 7, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("1.24abc", 7, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("1.24abcE+02", 11, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("1.24E+02abc2d", 13, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("E+02", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("e+02", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); -} - - -static void -test_decimal128_from_string__nan (void) -{ - bson_decimal128_t dec; - - bson_decimal128_from_string ("NaN", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("+NaN", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("-NaN", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("-nan", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("1e", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("+nan", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("nan", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("Nan", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("+Nan", &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string ("-Nan", &dec); - BSON_ASSERT (IS_NAN (dec)); - - bson_decimal128_from_string_w_len ("NaN", 3, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("+NaN", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("-NaN", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("-nan", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("1e", 2, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("+nan", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("nan", 3, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("Nan", 3, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("+Nan", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); - bson_decimal128_from_string_w_len ("-Nan", 4, &dec); - BSON_ASSERT (IS_NAN (dec)); -} - - -#define IS_PINFINITY(dec) (dec).high == 0x7800000000000000 -#define IS_NINFINITY(dec) (dec).high == 0xf800000000000000 - - -static void -test_decimal128_from_string__infinity (void) -{ - bson_decimal128_t dec; - - bson_decimal128_from_string ("Infinity", &dec); - BSON_ASSERT (IS_PINFINITY (dec)); - bson_decimal128_from_string ("+Infinity", &dec); - BSON_ASSERT (IS_PINFINITY (dec)); - bson_decimal128_from_string ("+Inf", &dec); - BSON_ASSERT (IS_PINFINITY (dec)); - bson_decimal128_from_string ("-Inf", &dec); - BSON_ASSERT (IS_NINFINITY (dec)); - bson_decimal128_from_string ("-Infinity", &dec); - BSON_ASSERT (IS_NINFINITY (dec)); - - bson_decimal128_from_string_w_len ("Infinity", 8, &dec); - BSON_ASSERT (IS_PINFINITY (dec)); - bson_decimal128_from_string_w_len ("+Infinity", 9, &dec); - BSON_ASSERT (IS_PINFINITY (dec)); - bson_decimal128_from_string_w_len ("+Inf", 4, &dec); - BSON_ASSERT (IS_PINFINITY (dec)); - bson_decimal128_from_string_w_len ("-Inf", 4, &dec); - BSON_ASSERT (IS_NINFINITY (dec)); - bson_decimal128_from_string_w_len ("-Infinity", 9, &dec); - BSON_ASSERT (IS_NINFINITY (dec)); -} - - -static bool -decimal128_equal (bson_decimal128_t *dec, uint64_t high, uint64_t low) -{ - bson_decimal128_t test; - DECIMAL128_FROM_ULLS (test, high, low); - return memcmp (dec, &test, sizeof (*dec)) == 0; -} - -static void -test_decimal128_from_string__simple (void) -{ - bson_decimal128_t one; - bson_decimal128_t negative_one; - bson_decimal128_t zero; - bson_decimal128_t negative_zero; - bson_decimal128_t number; - bson_decimal128_t number_two; - bson_decimal128_t negative_number; - bson_decimal128_t fractional_number; - bson_decimal128_t leading_zeros; - bson_decimal128_t leading_insignificant_zeros; - - bson_decimal128_from_string ("1", &one); - bson_decimal128_from_string ("-1", &negative_one); - bson_decimal128_from_string ("0", &zero); - bson_decimal128_from_string ("-0", &negative_zero); - bson_decimal128_from_string ("12345678901234567", &number); - bson_decimal128_from_string ("989898983458", &number_two); - bson_decimal128_from_string ("-12345678901234567", &negative_number); - - bson_decimal128_from_string ("0.12345", &fractional_number); - bson_decimal128_from_string ("0.0012345", &leading_zeros); - - bson_decimal128_from_string ("00012345678901234567", - &leading_insignificant_zeros); - - BSON_ASSERT ( - decimal128_equal (&one, 0x3040000000000000, 0x0000000000000001)); - BSON_ASSERT ( - decimal128_equal (&negative_one, 0xb040000000000000, 0x0000000000000001)); - BSON_ASSERT ( - decimal128_equal (&zero, 0x3040000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &negative_zero, 0xb040000000000000, 0x0000000000000000)); - BSON_ASSERT ( - decimal128_equal (&number, 0x3040000000000000, 0x002bdc545d6b4b87)); - BSON_ASSERT ( - decimal128_equal (&number_two, 0x3040000000000000, 0x000000e67a93c822)); - BSON_ASSERT (decimal128_equal ( - &negative_number, 0xb040000000000000, 0x002bdc545d6b4b87)); - BSON_ASSERT (decimal128_equal ( - &fractional_number, 0x3036000000000000, 0x0000000000003039)); - BSON_ASSERT (decimal128_equal ( - &leading_zeros, 0x3032000000000000, 0x0000000000003039)); - BSON_ASSERT (decimal128_equal ( - &leading_insignificant_zeros, 0x3040000000000000, 0x002bdc545d6b4b87)); - - - bson_decimal128_from_string_w_len ("1", 1, &one); - bson_decimal128_from_string_w_len ("-1", 2, &negative_one); - bson_decimal128_from_string_w_len ("0", 1, &zero); - bson_decimal128_from_string_w_len ("-0", 2, &negative_zero); - bson_decimal128_from_string_w_len ("12345678901234567", 17, &number); - bson_decimal128_from_string_w_len ("989898983458", 12, &number_two); - bson_decimal128_from_string_w_len ( - "-12345678901234567", 18, &negative_number); - - bson_decimal128_from_string_w_len ("0.12345", 7, &fractional_number); - bson_decimal128_from_string_w_len ("0.0012345", 9, &leading_zeros); - - bson_decimal128_from_string_w_len ( - "00012345678901234567", 20, &leading_insignificant_zeros); - - BSON_ASSERT ( - decimal128_equal (&one, 0x3040000000000000, 0x0000000000000001)); - BSON_ASSERT ( - decimal128_equal (&negative_one, 0xb040000000000000, 0x0000000000000001)); - BSON_ASSERT ( - decimal128_equal (&zero, 0x3040000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &negative_zero, 0xb040000000000000, 0x0000000000000000)); - BSON_ASSERT ( - decimal128_equal (&number, 0x3040000000000000, 0x002bdc545d6b4b87)); - BSON_ASSERT ( - decimal128_equal (&number_two, 0x3040000000000000, 0x000000e67a93c822)); - BSON_ASSERT (decimal128_equal ( - &negative_number, 0xb040000000000000, 0x002bdc545d6b4b87)); - BSON_ASSERT (decimal128_equal ( - &fractional_number, 0x3036000000000000, 0x0000000000003039)); - BSON_ASSERT (decimal128_equal ( - &leading_zeros, 0x3032000000000000, 0x0000000000003039)); - BSON_ASSERT (decimal128_equal ( - &leading_insignificant_zeros, 0x3040000000000000, 0x002bdc545d6b4b87)); -} - - -static void -test_decimal128_from_string__scientific (void) -{ - bson_decimal128_t ten; - bson_decimal128_t ten_again; - bson_decimal128_t one; - bson_decimal128_t huge_exp; - bson_decimal128_t tiny_exp; - bson_decimal128_t fractional; - bson_decimal128_t trailing_zeros; - - bson_decimal128_from_string ("10e0", &ten); - bson_decimal128_from_string ("1e1", &ten_again); - bson_decimal128_from_string ("10e-1", &one); - - BSON_ASSERT ( - decimal128_equal (&ten, 0x3040000000000000, 0x000000000000000a)); - BSON_ASSERT ( - decimal128_equal (&ten_again, 0x3042000000000000, 0x0000000000000001)); - BSON_ASSERT ( - decimal128_equal (&one, 0x303e000000000000, 0x000000000000000a)); - - bson_decimal128_from_string ("12345678901234567e6111", &huge_exp); - bson_decimal128_from_string ("1e-6176", &tiny_exp); - - BSON_ASSERT ( - decimal128_equal (&huge_exp, 0x5ffe000000000000, 0x002bdc545d6b4b87)); - BSON_ASSERT ( - decimal128_equal (&tiny_exp, 0x0000000000000000, 0x0000000000000001)); - - bson_decimal128_from_string ("-100E-10", &fractional); - bson_decimal128_from_string ("10.50E8", &trailing_zeros); - - BSON_ASSERT ( - decimal128_equal (&fractional, 0xb02c000000000000, 0x0000000000000064)); - BSON_ASSERT (decimal128_equal ( - &trailing_zeros, 0x304c000000000000, 0x000000000000041a)); - - - bson_decimal128_from_string_w_len ("10e0", 4, &ten); - bson_decimal128_from_string_w_len ("1e1", 3, &ten_again); - bson_decimal128_from_string_w_len ("10e-1", 5, &one); - - BSON_ASSERT ( - decimal128_equal (&ten, 0x3040000000000000, 0x000000000000000a)); - BSON_ASSERT ( - decimal128_equal (&ten_again, 0x3042000000000000, 0x0000000000000001)); - BSON_ASSERT ( - decimal128_equal (&one, 0x303e000000000000, 0x000000000000000a)); - - bson_decimal128_from_string_w_len ("12345678901234567e6111", 22, &huge_exp); - bson_decimal128_from_string_w_len ("1e-6176", 7, &tiny_exp); - - BSON_ASSERT ( - decimal128_equal (&huge_exp, 0x5ffe000000000000, 0x002bdc545d6b4b87)); - BSON_ASSERT ( - decimal128_equal (&tiny_exp, 0x0000000000000000, 0x0000000000000001)); - - bson_decimal128_from_string_w_len ("-100E-10", 8, &fractional); - bson_decimal128_from_string_w_len ("10.50E8", 7, &trailing_zeros); - - BSON_ASSERT ( - decimal128_equal (&fractional, 0xb02c000000000000, 0x0000000000000064)); - BSON_ASSERT (decimal128_equal ( - &trailing_zeros, 0x304c000000000000, 0x000000000000041a)); -} - - -static void -test_decimal128_from_string__large (void) -{ - bson_decimal128_t large; - bson_decimal128_t all_digits; - bson_decimal128_t largest; - bson_decimal128_t tiniest; - bson_decimal128_t full_house; - - bson_decimal128_from_string ("12345689012345789012345", &large); - bson_decimal128_from_string ("1234567890123456789012345678901234", - &all_digits); - bson_decimal128_from_string ("9.999999999999999999999999999999999E+6144", - &largest); - bson_decimal128_from_string ("9.999999999999999999999999999999999E-6143", - &tiniest); - bson_decimal128_from_string ("5.192296858534827628530496329220095E+33", - &full_house); - - BSON_ASSERT ( - decimal128_equal (&large, 0x304000000000029d, 0x42da3a76f9e0d979)); - BSON_ASSERT ( - decimal128_equal (&all_digits, 0x30403cde6fff9732, 0xde825cd07e96aff2)); - BSON_ASSERT ( - decimal128_equal (&largest, 0x5fffed09bead87c0, 0x378d8e63ffffffff)); - BSON_ASSERT ( - decimal128_equal (&tiniest, 0x0001ed09bead87c0, 0x378d8e63ffffffff)); - BSON_ASSERT ( - decimal128_equal (&full_house, 0x3040ffffffffffff, 0xffffffffffffffff)); - - - bson_decimal128_from_string_w_len ("12345689012345789012345", -1, &large); - bson_decimal128_from_string_w_len ( - "1234567890123456789012345678901234", -1, &all_digits); - bson_decimal128_from_string_w_len ( - "9.999999999999999999999999999999999E+6144", -1, &largest); - bson_decimal128_from_string_w_len ( - "9.999999999999999999999999999999999E-6143", -1, &tiniest); - bson_decimal128_from_string_w_len ( - "5.192296858534827628530496329220095E+33", -1, &full_house); - - BSON_ASSERT ( - decimal128_equal (&large, 0x304000000000029d, 0x42da3a76f9e0d979)); - BSON_ASSERT ( - decimal128_equal (&all_digits, 0x30403cde6fff9732, 0xde825cd07e96aff2)); - BSON_ASSERT ( - decimal128_equal (&largest, 0x5fffed09bead87c0, 0x378d8e63ffffffff)); - BSON_ASSERT ( - decimal128_equal (&tiniest, 0x0001ed09bead87c0, 0x378d8e63ffffffff)); - BSON_ASSERT ( - decimal128_equal (&full_house, 0x3040ffffffffffff, 0xffffffffffffffff)); -} - - -static void -test_decimal128_from_string__exponent_normalization (void) -{ - bson_decimal128_t trailing_zeros; - bson_decimal128_t one_normalize; - bson_decimal128_t no_normalize; - bson_decimal128_t a_disaster; - - bson_decimal128_from_string ("1000000000000000000000000000000000000000", - &trailing_zeros); - bson_decimal128_from_string ("10000000000000000000000000000000000", - &one_normalize); - bson_decimal128_from_string ("1000000000000000000000000000000000", - &no_normalize); - bson_decimal128_from_string ( - "100000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "0000000000000000000000000000000000", - &a_disaster); - - BSON_ASSERT (decimal128_equal ( - &trailing_zeros, 0x304c314dc6448d93, 0x38c15b0a00000000)); - BSON_ASSERT (decimal128_equal ( - &one_normalize, 0x3042314dc6448d93, 0x38c15b0a00000000)); - BSON_ASSERT ( - decimal128_equal (&no_normalize, 0x3040314dc6448d93, 0x38c15b0a00000000)); - BSON_ASSERT ( - decimal128_equal (&a_disaster, 0x37cc314dc6448d93, 0x38c15b0a00000000)); - - - bson_decimal128_from_string_w_len ( - "1000000000000000000000000000000000000000", -1, &trailing_zeros); - bson_decimal128_from_string_w_len ( - "10000000000000000000000000000000000", -1, &one_normalize); - bson_decimal128_from_string_w_len ( - "1000000000000000000000000000000000", -1, &no_normalize); - bson_decimal128_from_string_w_len ( - "100000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "000000000000000000000000000000000000000000000000000000000000000000000" - "0000000000000000000000000000000000", - -1, - &a_disaster); - - BSON_ASSERT (decimal128_equal ( - &trailing_zeros, 0x304c314dc6448d93, 0x38c15b0a00000000)); - BSON_ASSERT (decimal128_equal ( - &one_normalize, 0x3042314dc6448d93, 0x38c15b0a00000000)); - BSON_ASSERT ( - decimal128_equal (&no_normalize, 0x3040314dc6448d93, 0x38c15b0a00000000)); - BSON_ASSERT ( - decimal128_equal (&a_disaster, 0x37cc314dc6448d93, 0x38c15b0a00000000)); -} - - -static void -test_decimal128_from_string__zeros (void) -{ - bson_decimal128_t zero; - bson_decimal128_t exponent_zero; - bson_decimal128_t large_exponent; - bson_decimal128_t negative_zero; - - bson_decimal128_from_string ("0", &zero); - bson_decimal128_from_string ("0e-611", &exponent_zero); - bson_decimal128_from_string ("0e+6000", &large_exponent); - bson_decimal128_from_string ("-0e-1", &negative_zero); - - BSON_ASSERT ( - decimal128_equal (&zero, 0x3040000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &exponent_zero, 0x2b7a000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &large_exponent, 0x5f20000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &negative_zero, 0xb03e000000000000, 0x0000000000000000)); - - - bson_decimal128_from_string_w_len ("0", 1, &zero); - bson_decimal128_from_string_w_len ("0e-611", -1, &exponent_zero); - bson_decimal128_from_string_w_len ("0e+6000", 7, &large_exponent); - bson_decimal128_from_string_w_len ("-0e-1", 5, &negative_zero); - - BSON_ASSERT ( - decimal128_equal (&zero, 0x3040000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &exponent_zero, 0x2b7a000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &large_exponent, 0x5f20000000000000, 0x0000000000000000)); - BSON_ASSERT (decimal128_equal ( - &negative_zero, 0xb03e000000000000, 0x0000000000000000)); -} - -static void -test_decimal128_from_string_w_len__special (void) -{ - bson_decimal128_t number; - bson_decimal128_t number_two; - bson_decimal128_t negative_number; - - /* These strings have more bytes than the length indicates. */ - bson_decimal128_from_string_w_len ("12345678901234567abcd", 17, &number); - bson_decimal128_from_string_w_len ("989898983458abcd", 12, &number_two); - bson_decimal128_from_string_w_len ( - "-12345678901234567abcd", 18, &negative_number); - - BSON_ASSERT ( - decimal128_equal (&number, 0x3040000000000000, 0x002bdc545d6b4b87)); - BSON_ASSERT ( - decimal128_equal (&number_two, 0x3040000000000000, 0x000000e67a93c822)); - BSON_ASSERT (decimal128_equal ( - &negative_number, 0xb040000000000000, 0x002bdc545d6b4b87)); -} - -void -test_decimal128_install (TestSuite *suite) -{ - TestSuite_Add (suite, - "/bson/decimal128/to_string/infinity", - test_decimal128_to_string__infinity); - TestSuite_Add ( - suite, "/bson/decimal128/to_string/nan", test_decimal128_to_string__nan); - TestSuite_Add (suite, - "/bson/decimal128/to_string/regular", - test_decimal128_to_string__regular); - TestSuite_Add (suite, - "/bson/decimal128/to_string/scientific", - test_decimal128_to_string__scientific); - TestSuite_Add (suite, - "/bson/decimal128/to_string/zero", - test_decimal128_to_string__zeros); - TestSuite_Add (suite, - "/bson/decimal128/from_string/invalid", - test_decimal128_from_string__invalid_inputs); - TestSuite_Add (suite, - "/bson/decimal128/from_string/nan", - test_decimal128_from_string__nan); - TestSuite_Add (suite, - "/bson/decimal128/from_string/infinity", - test_decimal128_from_string__infinity); - TestSuite_Add (suite, - "/bson/decimal128/from_string/basic", - test_decimal128_from_string__simple); - TestSuite_Add (suite, - "/bson/decimal128/from_string/scientific", - test_decimal128_from_string__scientific); - TestSuite_Add (suite, - "/bson/decimal128/from_string/large", - test_decimal128_from_string__large); - TestSuite_Add (suite, - "/bson/decimal128/from_string/exponent_normalization", - test_decimal128_from_string__exponent_normalization); - TestSuite_Add (suite, - "/bson/decimal128/from_string/zero", - test_decimal128_from_string__zeros); - TestSuite_Add (suite, - "/bson/decimal128/from_string/with_length", - test_decimal128_from_string_w_len__special); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-endian.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-endian.c deleted file mode 100644 index 0f4f247..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-endian.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "TestSuite.h" - - -static void -test_swap16 (void) -{ - uint16_t v = 0xFCBA; - - BSON_ASSERT (BSON_UINT16_SWAP_LE_BE (v) == 0xBAFC); - BSON_ASSERT (__bson_uint16_swap_slow (v) == 0xBAFC); -} - - -static void -test_swap32 (void) -{ - uint32_t v = 0x00112233; - - BSON_ASSERT (BSON_UINT32_SWAP_LE_BE (v) == 0x33221100); - BSON_ASSERT (__bson_uint32_swap_slow (v) == 0x33221100); -} - - -static void -test_swap64 (void) -{ - uint64_t v = 0x0011223344556677ULL; - - BSON_ASSERT (BSON_UINT64_SWAP_LE_BE (v) == 0x7766554433221100ULL); - BSON_ASSERT (__bson_uint64_swap_slow (v) == 0x7766554433221100ULL); -} - - -void -test_endian_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/endian/swap16", test_swap16); - TestSuite_Add (suite, "/endian/swap32", test_swap32); - TestSuite_Add (suite, "/endian/swap64", test_swap64); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-fnv.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-fnv.c deleted file mode 100644 index 138ef13..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-fnv.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Please do not copyright this code. This code is in the public domain. - * - * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO - * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF - * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * By: - * chongo /\oo/\ - * http://www.isthe.com/chongo/ - */ - -#include "bson/bson-fnv-private.h" -#include "TestSuite.h" - -/* REPEAT500 - repeat a string 500 times */ -#define R500(x) R100 (x) R100 (x) R100 (x) R100 (x) R100 (x) -#define R100(x) \ - R10 (x) \ - R10 (x) R10 (x) R10 (x) R10 (x) R10 (x) R10 (x) R10 (x) R10 (x) R10 (x) -#define R10(x) x x x x x x x x x x - -struct hash_test_vector { - char *str; /* start of test vector buffer */ - uint32_t hash; /* length of test vector */ -}; - -/* Source for below tests: http://www.isthe.com/chongo/src/fnv/test_fnv.c */ -static void -test_fnv_check_hashes (void) -{ - unsigned i; - - struct hash_test_vector v[] = { - {"", (uint32_t) 0x1c9d44}, - {"a", (uint32_t) 0x0c29c8}, - {"b", (uint32_t) 0x0c2d02}, - {"c", (uint32_t) 0x0c2cb4}, - {"d", (uint32_t) 0x0c2492}, - {"e", (uint32_t) 0x0c2200}, - {"f", (uint32_t) 0x0c277a}, - {"fo", (uint32_t) 0x22e820}, - {"foo", (uint32_t) 0xf37e7e}, - {"foob", (uint32_t) 0x5076d0}, - {"fooba", (uint32_t) 0xaaa1b3}, - {"foobar", (uint32_t) 0x9cf9d7}, - {"ch", (uint32_t) 0x299f11}, - {"cho", (uint32_t) 0x85801c}, - {"chon", (uint32_t) 0x29778b}, - {"chong", (uint32_t) 0x46b985}, - {"chongo", (uint32_t) 0x564ec0}, - {"chongo ", (uint32_t) 0xdd5c0c}, - {"chongo w", (uint32_t) 0x77eded}, - {"chongo wa", (uint32_t) 0xca9677}, - {"chongo was", (uint32_t) 0xeb9b9a}, - {"chongo was ", (uint32_t) 0xe67a30}, - {"chongo was h", (uint32_t) 0xd32f6a}, - {"chongo was he", (uint32_t) 0x743fc8}, - {"chongo was her", (uint32_t) 0x006376}, - {"chongo was here", (uint32_t) 0x9c99cb}, - {"chongo was here!", (uint32_t) 0x8524b9}, - {"chongo was here!\n", (uint32_t) 0x993001}, - {"cu", (uint32_t) 0x298129}, - {"cur", (uint32_t) 0x5637c9}, - {"curd", (uint32_t) 0xb9140f}, - {"curds", (uint32_t) 0x5bf5a7}, - {"curds ", (uint32_t) 0xc42805}, - {"curds a", (uint32_t) 0xcc0e97}, - {"curds an", (uint32_t) 0x3b4c5d}, - {"curds and", (uint32_t) 0x59f0a7}, - {"curds and ", (uint32_t) 0x94de0b}, - {"curds and w", (uint32_t) 0x5a0a72}, - {"curds and wh", (uint32_t) 0xbee56f}, - {"curds and whe", (uint32_t) 0x8363fd}, - {"curds and whey", (uint32_t) 0xd5346c}, - {"curds and whey\n", (uint32_t) 0xa14715}, - {"hi", (uint32_t) 0x3af6f2}, - {"hello", (uint32_t) 0x9f2ce4}, - {"\x40\x51\x4e\x44", (uint32_t) 0x17906a}, - {"\x44\x4e\x51\x40", (uint32_t) 0x0bfece}, - {"\x40\x51\x4e\x4a", (uint32_t) 0x178d02}, - {"\x4a\x4e\x51\x40", (uint32_t) 0xaddad9}, - {"\x40\x51\x4e\x54", (uint32_t) 0x17a9ca}, - {"\x54\x4e\x51\x40", (uint32_t) 0x2633a1}, - {"127.0.0.1", (uint32_t) 0xa3d116}, - {"127.0.0.2", (uint32_t) 0xa3cf8c}, - {"127.0.0.3", (uint32_t) 0xa3cdfe}, - {"64.81.78.68", (uint32_t) 0x5636ba}, - {"64.81.78.74", (uint32_t) 0x53e841}, - {"64.81.78.84", (uint32_t) 0x5b8948}, - {"feedface", (uint32_t) 0x88b139}, - {"feedfacedaffdeed", (uint32_t) 0x364109}, - {"feedfacedeadbeef", (uint32_t) 0x7604b9}, - {"line 1\nline 2\nline 3", (uint32_t) 0xb4eab4}, - {"chongo /\\../\\", (uint32_t) 0x4e927c}, - {"chongo (Landon Curt Noll) /\\../\\", (uint32_t) 0x1b25e1}, - {"Evgeni was here :D", (uint32_t) 0xebf05e}, - {"http://antwrp.gsfc.nasa.gov/apod/astropix.html", (uint32_t) 0x524a34}, - {"http://en.wikipedia.org/wiki/Fowler_Noll_Vo_hash", (uint32_t) 0x16ef98}, - {"http://epod.usra.edu/", (uint32_t) 0x648bd3}, - {"http://exoplanet.eu/", (uint32_t) 0xa4bc83}, - {"http://hvo.wr.usgs.gov/cam3/", (uint32_t) 0x53ae47}, - {"http://hvo.wr.usgs.gov/cams/HMcam/", (uint32_t) 0x302859}, - {"http://hvo.wr.usgs.gov/kilauea/update/deformation.html", - (uint32_t) 0x6deda7}, - {"http://hvo.wr.usgs.gov/kilauea/update/images.html", - (uint32_t) 0x36db15}, - {"http://hvo.wr.usgs.gov/kilauea/update/maps.html", (uint32_t) 0x9d33fc}, - {"http://hvo.wr.usgs.gov/volcanowatch/current_issue.html", - (uint32_t) 0xbb6ce2}, - {"http://neo.jpl.nasa.gov/risk/", (uint32_t) 0xf83893}, - {"http://norvig.com/21-days.html", (uint32_t) 0x08bf51}, - {"http://primes.utm.edu/curios/home.php", (uint32_t) 0xcc8e5f}, - {"http://slashdot.org/", (uint32_t) 0xe20f9f}, - {"http://tux.wr.usgs.gov/Maps/155.25-19.5.html", (uint32_t) 0xe97f2e}, - {"http://volcano.wr.usgs.gov/kilaueastatus.php", (uint32_t) 0x37b27b}, - {"http://www.avo.alaska.edu/activity/Redoubt.php", (uint32_t) 0x9e874a}, - {"http://www.dilbert.com/fast/", (uint32_t) 0xe63f5a}, - {"http://www.fourmilab.ch/gravitation/orbits/", (uint32_t) 0xb50b11}, - {"http://www.fpoa.net/", (uint32_t) 0xd678e6}, - {"http://www.ioccc.org/index.html", (uint32_t) 0xd5b723}, - {"http://www.isthe.com/cgi-bin/number.cgi", (uint32_t) 0x450bb7}, - {"http://www.isthe.com/chongo/bio.html", (uint32_t) 0x72d79d}, - {"http://www.isthe.com/chongo/index.html", (uint32_t) 0x06679c}, - {"http://www.isthe.com/chongo/src/calc/lucas-calc", (uint32_t) 0x52e15c}, - {"http://www.isthe.com/chongo/tech/astro/venus2004.html", - (uint32_t) 0x9664f7}, - {"http://www.isthe.com/chongo/tech/astro/vita.html", (uint32_t) 0x3258b6}, - {"http://www.isthe.com/chongo/tech/comp/c/expert.html", - (uint32_t) 0xed6ea7}, - {"http://www.isthe.com/chongo/tech/comp/calc/index.html", - (uint32_t) 0x7d7ce2}, - {"http://www.isthe.com/chongo/tech/comp/fnv/index.html", - (uint32_t) 0xc71ba1}, - {"http://www.isthe.com/chongo/tech/math/number/howhigh.html", - (uint32_t) 0x84f14b}, - {"http://www.isthe.com/chongo/tech/math/number/number.html", - (uint32_t) 0x8ecf2e}, - {"http://www.isthe.com/chongo/tech/math/prime/mersenne.html", - (uint32_t) 0x94f673}, - {"http://www.isthe.com/chongo/tech/math/prime/mersenne.html#largest", - (uint32_t) 0x970112}, - {"http://www.lavarnd.org/cgi-bin/corpspeak.cgi", (uint32_t) 0x6e172a}, - {"http://www.lavarnd.org/cgi-bin/haiku.cgi", (uint32_t) 0xf8f6e7}, - {"http://www.lavarnd.org/cgi-bin/rand-none.cgi", (uint32_t) 0xf58843}, - {"http://www.lavarnd.org/cgi-bin/randdist.cgi", (uint32_t) 0x17b6b2}, - {"http://www.lavarnd.org/index.html", (uint32_t) 0xad4cfb}, - {"http://www.lavarnd.org/what/nist-test.html", (uint32_t) 0x256811}, - {"http://www.macosxhints.com/", (uint32_t) 0xb18dd8}, - {"http://www.mellis.com/", (uint32_t) 0x61c153}, - {"http://www.nature.nps.gov/air/webcams/parks/havoso2alert/havoalert.cfm", - (uint32_t) 0x47d20d}, - {"http://www.nature.nps.gov/air/webcams/parks/havoso2alert/" - "timelines_24.cfm", - (uint32_t) 0x8b689f}, - {"http://www.paulnoll.com/", (uint32_t) 0xd2a40b}, - {"http://www.pepysdiary.com/", (uint32_t) 0x549b0a}, - {"http://www.sciencenews.org/index/home/activity/view", - (uint32_t) 0xe1b55b}, - {"http://www.skyandtelescope.com/", (uint32_t) 0x0cd3d1}, - {"http://www.sput.nl/~rob/sirius.html", (uint32_t) 0x471605}, - {"http://www.systemexperts.com/", (uint32_t) 0x5eef10}, - {"http://www.tq-international.com/phpBB3/index.php", (uint32_t) 0xed3629}, - {"http://www.travelquesttours.com/index.htm", (uint32_t) 0x624952}, - {"http://www.wunderground.com/global/stations/89606.html", - (uint32_t) 0x9b8688}, - {R10 ("21701"), (uint32_t) 0x15e25f}, - {R10 ("M21701"), (uint32_t) 0xa98d05}, - {R10 ("2^21701-1"), (uint32_t) 0xdf8bcc}, - {R10 ("\x54\xc5"), (uint32_t) 0x1e9051}, - {R10 ("\xc5\x54"), (uint32_t) 0x3f70db}, - {R10 ("23209"), (uint32_t) 0x95aedb}, - {R10 ("M23209"), (uint32_t) 0xa7f7d7}, - {R10 ("2^23209-1"), (uint32_t) 0x3bc660}, - {R10 ("\x5a\xa9"), (uint32_t) 0x610967}, - {R10 ("\xa9\x5a"), (uint32_t) 0x157785}, - {R10 ("391581216093"), (uint32_t) 0x2b2800}, - {R10 ("391581*2^216093-1"), (uint32_t) 0x8239ef}, - {R10 ("\x05\xf9\x9d\x03\x4c\x81"), (uint32_t) 0x5869f5}, - {R10 ("FEDCBA9876543210"), (uint32_t) 0x415c76}, - {R10 ("\xfe\xdc\xba\x98\x76\x54\x32\x10"), (uint32_t) 0xe4ff6f}, - {R10 ("EFCDAB8967452301"), (uint32_t) 0xb7977d}, - {R10 ("\xef\xcd\xab\x89\x67\x45\x23\x01"), (uint32_t) 0xa43a7b}, - {R10 ("0123456789ABCDEF"), (uint32_t) 0xb3be1e}, - {R10 ("\x01\x23\x45\x67\x89\xab\xcd\xef"), (uint32_t) 0x777aaf}, - {R10 ("1032547698BADCFE"), (uint32_t) 0x21c38a}, - {R10 ("\x10\x32\x54\x76\x98\xba\xdc\xfe"), (uint32_t) 0x9d0839}, - {R500 ("\x07"), (uint32_t) 0xa27250}, - {R500 ("~"), (uint32_t) 0xc5c656}, - {R500 ("\x7f"), (uint32_t) 0x3b0800}, - {NULL, 0} /* MUST BE LAST */ - }; - - for (i = 0; v[i].str != NULL; ++i) { - ASSERT_CMPUINT32 (_mongoc_fnv_24a_str (v[i].str), ==, v[i].hash); - } -} - -void -test_fnv_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/fnv/check_hashes", test_fnv_check_hashes); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iso8601.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iso8601.c deleted file mode 100644 index 91bb67f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iso8601.c +++ /dev/null @@ -1,386 +0,0 @@ -#include - -#include "bson/bson-iso8601-private.h" -#include "TestSuite.h" - -#define IS_TIME_T_SMALL (sizeof (time_t) == sizeof (int32_t)) - -static void -test_date (const char *str, int64_t millis) -{ - int64_t v; - bson_error_t error; - - if (!_bson_iso8601_date_parse (str, strlen (str), &v, &error)) { - fprintf (stderr, "could not parse (%s)\n", str); - abort (); - } - - if (v != millis) { - fprintf (stderr, - "parsed value not correct: %" PRId64 " != %" PRId64 "\n", - millis, - v); - - fprintf (stderr, "parsing: [%s]\n", str); - abort (); - } -} - - -static void -test_date_io (const char *str_in, const char *str_out, int64_t millis) -{ - bson_string_t *bson_str; - - test_date (str_in, millis); - - bson_str = bson_string_new (NULL); - _bson_iso8601_date_format (millis, bson_str); - ASSERT_CMPSTR (bson_str->str, str_out); - bson_string_free (bson_str, true); -} - - -/* round trip str -> millis -> str */ -static void -test_date_rt (const char *str, int64_t millis) -{ - test_date_io (str, str, millis); -} - - -static void -test_date_should_fail (const char *str) -{ - int64_t v; - bson_error_t error; - - if (_bson_iso8601_date_parse (str, strlen (str), &v, &error)) { - fprintf (stderr, "should not be able to parse (%s)\n", str); - abort (); - } -} - -static void -test_bson_iso8601_utc (void) -{ - /* Allowed date format: - * YYYY-MM-DDTHH:MM[:SS[.m[m[m]]]]Z - * Year, month, day, hour, and minute are required, while the seconds - * component and one to - * three milliseconds are optional. - */ - - test_date_rt ("1971-02-03T04:05:06.789Z", 34401906789ULL); - test_date_io ( - "1971-02-03T04:05:06.78Z", "1971-02-03T04:05:06.780Z", 34401906780ULL); - test_date_io ( - "1971-02-03T04:05:06.7Z", "1971-02-03T04:05:06.700Z", 34401906700ULL); - test_date_rt ("1971-02-03T04:05:06Z", 34401906000ULL); - test_date_io ("1971-02-03T04:05Z", "1971-02-03T04:05:00Z", 34401900000ULL); - test_date_io ("1970-01-01T00:00:00.000Z", "1970-01-01T00:00:00Z", 0ULL); - test_date_rt ("1970-06-30T01:06:40.981Z", 15556000981ULL); - test_date ("1970-01-01T00:00:00.000+0100", -3600LL * 1000); - - if (!IS_TIME_T_SMALL) { - test_date_rt ("2058-02-20T18:29:11.100Z", 2781455351100ULL); - test_date ("3001-01-01T08:00:00.000Z", 32535244800000ULL); - } - - test_date_rt ("2013-02-20T18:29:11.100Z", 1361384951100ULL); - - /* from the BSON Corpus Tests */ - test_date_io ("1970-01-01T00:00:00.000Z", "1970-01-01T00:00:00Z", 0); - test_date_rt ("2012-12-24T12:15:30.500Z", 1356351330500); - test_date ("1960-12-24T12:15:30.500Z", -284643869500LL); -} - -static void -test_bson_iso8601_local (void) -{ - /* Allowed date format: - * YYYY-MM-DDTHH:MM[:SS[.m[m[m]]]]+HHMM - * Year, month, day, hour, and minute are required, while the seconds - * component and one to - * three milliseconds are optional. The time zone offset must be four - * digits. - */ - - test_date_io ("1971-02-03T09:16:06.789+0511", - "1971-02-03T04:05:06.789Z", - 34401906789ULL); - test_date_io ("1971-02-03T09:16:06.78+0511", - "1971-02-03T04:05:06.780Z", - 34401906780ULL); - test_date_io ( - "1971-02-03T09:16:06.7+0511", "1971-02-03T04:05:06.700Z", 34401906700ULL); - test_date_io ( - "1971-02-03T09:16:06+0511", "1971-02-03T04:05:06Z", 34401906000ULL); - test_date_io ( - "1971-02-03T09:16+0511", "1971-02-03T04:05:00Z", 34401900000ULL); - test_date_io ("1970-01-01T00:00:00.000Z", "1970-01-01T00:00:00Z", 0ULL); - test_date_rt ("1970-06-30T01:06:40.981Z", 15556000981ULL); - test_date_io ("1970-06-29T21:06:40.981-0400", - "1970-06-30T01:06:40.981Z", - 15556000981ULL); - test_date_io ("1969-12-31T16:00:00.000-0800", "1970-01-01T00:00:00Z", 0ULL); - - if (!IS_TIME_T_SMALL) { - test_date_io ("2058-02-20T13:29:11.100-0500", - "2058-02-20T18:29:11.100Z", - 2781455351100ULL); - test_date_rt ("3000-12-31T23:59:59Z", 32535215999000ULL); - } else { - test_date_rt ("2038-01-19T03:14:07Z", 2147483647000ULL); - } - - test_date_io ("2013-02-20T13:29:11.100-0500", - "2013-02-20T18:29:11.100Z", - 1361384951100ULL); - test_date_io ("2013-02-20T13:29:11.100-0501", - "2013-02-20T18:30:11.100Z", - 1361385011100ULL); - test_date ("0000-01-01T00:00:00.000Z", -62167219200000LL); - test_date ("0000-01-01T00:00:00.000+2300", -62167302000000LL); - test_date ("9999-01-01T00:00:00.000Z", 253370764800000ULL); -} - -static void -test_bson_iso8601_invalid (void) -{ - /* Invalid decimal */ - test_date_should_fail ("1970-01-01T00:00:00.0.0Z"); - test_date_should_fail ("1970-01-01T00:00:.0.000Z"); - test_date_should_fail ("1970-01-01T00:.0:00.000Z"); - test_date_should_fail ("1970-01-01T.0:00:00.000Z"); - test_date_should_fail ("1970-01-.1T00:00:00.000Z"); - test_date_should_fail ("1970-.1-01T00:00:00.000Z"); - test_date_should_fail (".970-01-01T00:00:00.000Z"); - - /* Extra sign characters */ - test_date_should_fail ("1970-01-01T00:00:00.+00Z"); - test_date_should_fail ("1970-01-01T00:00:+0.000Z"); - test_date_should_fail ("1970-01-01T00:+0:00.000Z"); - test_date_should_fail ("1970-01-01T+0:00:00.000Z"); - test_date_should_fail ("1970-01-+1T00:00:00.000Z"); - test_date_should_fail ("1970-+1-01T00:00:00.000Z"); - test_date_should_fail ("+970-01-01T00:00:00.000Z"); - - test_date_should_fail ("1970-01-01T00:00:00.-00Z"); - test_date_should_fail ("1970-01-01T00:00:-0.000Z"); - test_date_should_fail ("1970-01-01T00:-0:00.000Z"); - test_date_should_fail ("1970-01-01T-0:00:00.000Z"); - test_date_should_fail ("1970-01--1T00:00:00.000Z"); - test_date_should_fail ("1970--1-01T00:00:00.000Z"); - test_date_should_fail ("-970-01-01T00:00:00.000Z"); - - /* Out of range */ - test_date_should_fail ("1970-01-01T00:60:00.000Z"); - test_date_should_fail ("1970-01-01T24:00:00.000Z"); - test_date_should_fail ("1970-01-32T00:00:00.000Z"); - test_date_should_fail ("1970-01-00T00:00:00.000Z"); - test_date_should_fail ("1970-13-01T00:00:00.000Z"); - test_date_should_fail ("1970-00-01T00:00:00.000Z"); - test_date_should_fail ("10000-01-01T00:00:00.000Z"); - test_date_should_fail ("-10000-01-01T00:00:00.000Z"); - - /* Invalid lengths */ - test_date_should_fail ("01970-01-01T00:00:00.000Z"); - test_date_should_fail ("1970-001-01T00:00:00.000Z"); - test_date_should_fail ("1970-01-001T00:00:00.000Z"); - test_date_should_fail ("1970-01-01T000:00:00.000Z"); - test_date_should_fail ("1970-01-01T00:000:00.000Z"); - test_date_should_fail ("1970-01-01T00:00:000.000Z"); - test_date_should_fail ("1970-01-01T00:00:00.0000Z"); - test_date_should_fail ("197-01-01T00:00:00.000Z"); - test_date_should_fail ("1970-1-01T00:00:00.000Z"); - test_date_should_fail ("1970-01-1T00:00:00.000Z"); - test_date_should_fail ("1970-01-01T0:00:00.000Z"); - test_date_should_fail ("1970-01-01T00:0:00.000Z"); - test_date_should_fail ("1970-01-01T00:00:0.000Z"); - - /* Invalid delimiters */ - test_date_should_fail ("1970+01-01T00:00:00.000Z"); - test_date_should_fail ("1970-01+01T00:00:00.000Z"); - test_date_should_fail ("1970-01-01Q00:00:00.000Z"); - test_date_should_fail ("1970-01-01T00-00:00.000Z"); - test_date_should_fail ("1970-01-01T00:00-00.000Z"); - test_date_should_fail ("1970-01-01T00:00:00-000Z"); - - /* Missing numbers */ - test_date_should_fail ("1970--01T00:00:00.000Z"); - test_date_should_fail ("1970-01-T00:00:00.000Z"); - test_date_should_fail ("1970-01-01T:00:00.000Z"); - test_date_should_fail ("1970-01-01T00::00.000Z"); - test_date_should_fail ("1970-01-01T00:00:.000Z"); - test_date_should_fail ("1970-01-01T00:00:00.Z"); - - /* Bad time offset field */ - test_date_should_fail ("1970-01-01T05:00:01ZZ"); - test_date_should_fail ("1970-01-01T05:00:01+"); - test_date_should_fail ("1970-01-01T05:00:01-"); - test_date_should_fail ("1970-01-01T05:00:01-11111"); - test_date_should_fail ("1970-01-01T05:00:01Z1111"); - test_date_should_fail ("1970-01-01T05:00:01+111"); - test_date_should_fail ("1970-01-01T05:00:01+1160"); - test_date_should_fail ("1970-01-01T05:00:01+2400"); - test_date_should_fail ("1970-01-01T05:00:01+00+0"); - - /* Bad prefixes */ - test_date_should_fail ("1970-01-01T05:00:01."); - test_date_should_fail ("1970-01-01T05:00:"); - test_date_should_fail ("1970-01-01T05:"); - test_date_should_fail ("1970-01-01T"); - test_date_should_fail ("1970-01-"); - test_date_should_fail ("1970-"); - test_date_should_fail ("1970-01-01T05+0500"); - test_date_should_fail ("1970-01-01+0500"); - test_date_should_fail ("1970-01+0500"); - test_date_should_fail ("1970+0500"); - test_date_should_fail ("1970-01-01T01Z"); - test_date_should_fail ("1970-01-01Z"); - test_date_should_fail ("1970-01Z"); - test_date_should_fail ("1970Z"); - - /* No local time */ - test_date_should_fail ("1970-01-01T00:00:00.000"); - test_date_should_fail ("1970-01-01T00:00:00"); - test_date_should_fail ("1970-01-01T00:00"); - test_date_should_fail ("1970-01-01T00"); - test_date_should_fail ("1970-01-01"); - test_date_should_fail ("1970-01"); - test_date_should_fail ("1970"); - - /* Invalid hex base specifiers */ - test_date_should_fail ("x970-01-01T00:00:00.000Z"); - test_date_should_fail ("1970-x1-01T00:00:00.000Z"); - test_date_should_fail ("1970-01-x1T00:00:00.000Z"); - test_date_should_fail ("1970-01-01Tx0:00:00.000Z"); - test_date_should_fail ("1970-01-01T00:x0:00.000Z"); - test_date_should_fail ("1970-01-01T00:00:x0.000Z"); - test_date_should_fail ("1970-01-01T00:00:00.x00Z"); -} - -static void -test_bson_iso8601_leap_year (void) -{ - test_date_rt ("1972-02-29T00:00:00Z", 68169600000ULL); - test_date_rt ("1976-02-29T00:00:00Z", 194400000000ULL); - test_date_rt ("1980-02-29T00:00:00Z", 320630400000ULL); - test_date_rt ("1984-02-29T00:00:00Z", 446860800000ULL); - test_date_rt ("1988-02-29T00:00:00Z", 573091200000ULL); - test_date_rt ("1992-02-29T00:00:00Z", 699321600000ULL); - test_date_rt ("1996-02-29T00:00:00Z", 825552000000ULL); - test_date_rt ("2000-02-29T00:00:00Z", 951782400000ULL); - test_date_rt ("2004-02-29T00:00:00Z", 1078012800000ULL); - test_date_rt ("2008-02-29T00:00:00Z", 1204243200000ULL); - test_date_rt ("2012-02-29T00:00:00Z", 1330473600000ULL); - test_date_rt ("2016-02-29T00:00:00Z", 1456704000000ULL); - test_date_rt ("2020-02-29T00:00:00Z", 1582934400000ULL); - test_date_rt ("2024-02-29T00:00:00Z", 1709164800000ULL); - test_date_rt ("2028-02-29T00:00:00Z", 1835395200000ULL); - test_date_rt ("2032-02-29T00:00:00Z", 1961625600000ULL); - test_date_rt ("2036-02-29T00:00:00Z", 2087856000000ULL); - - if (!IS_TIME_T_SMALL) { - test_date_rt ("2040-02-29T00:00:00Z", 2214086400000ULL); - test_date_rt ("2044-02-29T00:00:00Z", 2340316800000ULL); - test_date_rt ("2048-02-29T00:00:00Z", 2466547200000ULL); - test_date_rt ("2052-02-29T00:00:00Z", 2592777600000ULL); - test_date_rt ("2056-02-29T00:00:00Z", 2719008000000ULL); - test_date_rt ("2060-02-29T00:00:00Z", 2845238400000ULL); - test_date_rt ("2064-02-29T00:00:00Z", 2971468800000ULL); - test_date_rt ("2068-02-29T00:00:00Z", 3097699200000ULL); - test_date_rt ("2072-02-29T00:00:00Z", 3223929600000ULL); - test_date_rt ("2076-02-29T00:00:00Z", 3350160000000ULL); - test_date_rt ("2080-02-29T00:00:00Z", 3476390400000ULL); - test_date_rt ("2084-02-29T00:00:00Z", 3602620800000ULL); - test_date_rt ("2088-02-29T00:00:00Z", 3728851200000ULL); - test_date_rt ("2092-02-29T00:00:00Z", 3855081600000ULL); - test_date_rt ("2096-02-29T00:00:00Z", 3981312000000ULL); - test_date_rt ("2104-02-29T00:00:00Z", 4233686400000ULL); - test_date_rt ("2108-02-29T00:00:00Z", 4359916800000ULL); - test_date_rt ("2112-02-29T00:00:00Z", 4486147200000ULL); - test_date_rt ("2116-02-29T00:00:00Z", 4612377600000ULL); - test_date_rt ("2120-02-29T00:00:00Z", 4738608000000ULL); - test_date_rt ("2124-02-29T00:00:00Z", 4864838400000ULL); - test_date_rt ("2128-02-29T00:00:00Z", 4991068800000ULL); - test_date_rt ("2132-02-29T00:00:00Z", 5117299200000ULL); - test_date_rt ("2136-02-29T00:00:00Z", 5243529600000ULL); - test_date_rt ("2140-02-29T00:00:00Z", 5369760000000ULL); - test_date_rt ("2144-02-29T00:00:00Z", 5495990400000ULL); - test_date_rt ("2148-02-29T00:00:00Z", 5622220800000ULL); - test_date_rt ("2152-02-29T00:00:00Z", 5748451200000ULL); - test_date_rt ("2156-02-29T00:00:00Z", 5874681600000ULL); - test_date_rt ("2160-02-29T00:00:00Z", 6000912000000ULL); - test_date_rt ("2164-02-29T00:00:00Z", 6127142400000ULL); - test_date_rt ("2168-02-29T00:00:00Z", 6253372800000ULL); - test_date_rt ("2172-02-29T00:00:00Z", 6379603200000ULL); - test_date_rt ("2176-02-29T00:00:00Z", 6505833600000ULL); - test_date_rt ("2180-02-29T00:00:00Z", 6632064000000ULL); - test_date_rt ("2184-02-29T00:00:00Z", 6758294400000ULL); - test_date_rt ("2188-02-29T00:00:00Z", 6884524800000ULL); - test_date_rt ("2192-02-29T00:00:00Z", 7010755200000ULL); - test_date_rt ("2196-02-29T00:00:00Z", 7136985600000ULL); - test_date_rt ("2204-02-29T00:00:00Z", 7389360000000ULL); - test_date_rt ("2208-02-29T00:00:00Z", 7515590400000ULL); - test_date_rt ("2212-02-29T00:00:00Z", 7641820800000ULL); - test_date_rt ("2216-02-29T00:00:00Z", 7768051200000ULL); - test_date_rt ("2220-02-29T00:00:00Z", 7894281600000ULL); - test_date_rt ("2224-02-29T00:00:00Z", 8020512000000ULL); - test_date_rt ("2228-02-29T00:00:00Z", 8146742400000ULL); - test_date_rt ("2232-02-29T00:00:00Z", 8272972800000ULL); - test_date_rt ("2236-02-29T00:00:00Z", 8399203200000ULL); - test_date_rt ("2240-02-29T00:00:00Z", 8525433600000ULL); - test_date_rt ("2244-02-29T00:00:00Z", 8651664000000ULL); - test_date_rt ("2248-02-29T00:00:00Z", 8777894400000ULL); - test_date_rt ("2252-02-29T00:00:00Z", 8904124800000ULL); - test_date_rt ("2256-02-29T00:00:00Z", 9030355200000ULL); - test_date_rt ("2260-02-29T00:00:00Z", 9156585600000ULL); - test_date_rt ("2264-02-29T00:00:00Z", 9282816000000ULL); - test_date_rt ("2268-02-29T00:00:00Z", 9409046400000ULL); - test_date_rt ("2272-02-29T00:00:00Z", 9535276800000ULL); - test_date_rt ("2276-02-29T00:00:00Z", 9661507200000ULL); - test_date_rt ("2280-02-29T00:00:00Z", 9787737600000ULL); - test_date_rt ("2284-02-29T00:00:00Z", 9913968000000ULL); - test_date_rt ("2288-02-29T00:00:00Z", 10040198400000ULL); - test_date_rt ("2292-02-29T00:00:00Z", 10166428800000ULL); - test_date_rt ("2296-02-29T00:00:00Z", 10292659200000ULL); - test_date_rt ("2304-02-29T00:00:00Z", 10545033600000ULL); - test_date_rt ("2308-02-29T00:00:00Z", 10671264000000ULL); - test_date_rt ("2312-02-29T00:00:00Z", 10797494400000ULL); - test_date_rt ("2316-02-29T00:00:00Z", 10923724800000ULL); - test_date_rt ("2320-02-29T00:00:00Z", 11049955200000ULL); - test_date_rt ("2324-02-29T00:00:00Z", 11176185600000ULL); - test_date_rt ("2328-02-29T00:00:00Z", 11302416000000ULL); - test_date_rt ("2332-02-29T00:00:00Z", 11428646400000ULL); - test_date_rt ("2336-02-29T00:00:00Z", 11554876800000ULL); - test_date_rt ("2340-02-29T00:00:00Z", 11681107200000ULL); - test_date_rt ("2344-02-29T00:00:00Z", 11807337600000ULL); - test_date_rt ("2348-02-29T00:00:00Z", 11933568000000ULL); - test_date_rt ("2352-02-29T00:00:00Z", 12059798400000ULL); - test_date_rt ("2356-02-29T00:00:00Z", 12186028800000ULL); - test_date_rt ("2360-02-29T00:00:00Z", 12312259200000ULL); - test_date_rt ("2364-02-29T00:00:00Z", 12438489600000ULL); - test_date_rt ("2368-02-29T00:00:00Z", 12564720000000ULL); - test_date_rt ("2372-02-29T00:00:00Z", 12690950400000ULL); - test_date_rt ("2376-02-29T00:00:00Z", 12817180800000ULL); - test_date_rt ("2380-02-29T00:00:00Z", 12943411200000ULL); - test_date_rt ("2384-02-29T00:00:00Z", 13069641600000ULL); - test_date_rt ("2388-02-29T00:00:00Z", 13195872000000ULL); - test_date_rt ("2392-02-29T00:00:00Z", 13322102400000ULL); - test_date_rt ("2396-02-29T00:00:00Z", 13448332800000ULL); - test_date_rt ("2400-02-29T00:00:00Z", 13574563200000ULL); - } -} - -void -test_iso8601_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/iso8601/utc", test_bson_iso8601_utc); - TestSuite_Add (suite, "/bson/iso8601/local", test_bson_iso8601_local); - TestSuite_Add (suite, "/bson/iso8601/invalid", test_bson_iso8601_invalid); - TestSuite_Add ( - suite, "/bson/iso8601/leap_year", test_bson_iso8601_leap_year); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iter.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iter.c deleted file mode 100644 index 6f2c090..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-iter.c +++ /dev/null @@ -1,777 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "TestSuite.h" - -#define FUZZ_N_PASSES 100000 - -static bson_t * -get_bson (const char *filename) -{ - uint8_t buf[4096]; - bson_t *b; - ssize_t len; - int fd; - - if (-1 == (fd = bson_open (filename, O_RDONLY))) { - fprintf (stderr, "Failed to open: %s\n", filename); - abort (); - } - if ((len = bson_read (fd, buf, sizeof buf)) < 0) { - fprintf (stderr, "Failed to read: %s\n", filename); - abort (); - } - BSON_ASSERT (len > 0); - b = bson_new_from_data (buf, (uint32_t) len); - bson_close (fd); - - return b; -} - - -static void -test_bson_iter_utf8 (void) -{ - uint32_t len = 0; - bson_iter_t iter; - bson_t *b; - char *s; - - b = bson_new (); - BSON_ASSERT (bson_append_utf8 (b, "foo", -1, "bar", -1)); - BSON_ASSERT (bson_append_utf8 (b, "bar", -1, "baz", -1)); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_UTF8 (&iter)); - BSON_ASSERT (!strcmp (bson_iter_key (&iter), "foo")); - BSON_ASSERT (!strcmp (bson_iter_utf8 (&iter, NULL), "bar")); - s = bson_iter_dup_utf8 (&iter, &len); - ASSERT_CMPSTR ("bar", s); - ASSERT_CMPINT (len, ==, 3); - bson_free (s); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_UTF8 (&iter)); - BSON_ASSERT (!strcmp (bson_iter_key (&iter), "bar")); - BSON_ASSERT (!strcmp (bson_iter_utf8 (&iter, NULL), "baz")); - BSON_ASSERT (!bson_iter_next (&iter)); - bson_destroy (b); -} - - -static void -test_bson_iter_mixed (void) -{ - bson_iter_t iter; - bson_decimal128_t iter_value; - bson_decimal128_t value; - bson_t *b; - bson_t *b2; - - b = bson_new (); - b2 = bson_new (); - - value.high = 0; - value.low = 1; - - BSON_ASSERT (bson_append_utf8 (b2, "foo", -1, "bar", -1)); - BSON_ASSERT (bson_append_code (b, "0", -1, "var a = {};")); - BSON_ASSERT (bson_append_code_with_scope (b, "1", -1, "var b = {};", b2)); - BSON_ASSERT (bson_append_int32 (b, "2", -1, 1234)); - BSON_ASSERT (bson_append_int64 (b, "3", -1, 4567)); - BSON_ASSERT (bson_append_time_t (b, "4", -1, 123456)); - BSON_ASSERT (bson_append_decimal128 (b, "5", -1, &value)); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_CODE (&iter)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_CODEWSCOPE (&iter)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&iter)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_DATE_TIME (&iter)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_DECIMAL128 (&iter)); - BSON_ASSERT (!bson_iter_next (&iter)); - BSON_ASSERT (bson_iter_init_find (&iter, b, "3")); - BSON_ASSERT (!strcmp (bson_iter_key (&iter), "3")); - BSON_ASSERT (bson_iter_int64 (&iter) == 4567); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (BSON_ITER_HOLDS_DATE_TIME (&iter)); - BSON_ASSERT (bson_iter_time_t (&iter) == 123456); - BSON_ASSERT (bson_iter_date_time (&iter) == 123456000); - BSON_ASSERT (bson_iter_next (&iter)); - bson_iter_decimal128 (&iter, &iter_value); - /* This test uses memcmp because libbson lacks decimal128 comparison. */ - BSON_ASSERT (memcmp (&iter_value, &value, sizeof (value)) == 0); - BSON_ASSERT (!bson_iter_next (&iter)); - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_iter_overflow (void) -{ - bson_iter_t iter; - bson_t *b; - - b = get_bson (BSON_BINARY_DIR "/overflow1.bson"); - BSON_ASSERT (!b); - - b = get_bson (BSON_BINARY_DIR "/overflow2.bson"); - BSON_ASSERT (b); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (!bson_iter_next (&iter)); - bson_destroy (b); -} - - -static void -test_bson_iter_binary_deprecated (void) -{ - bson_subtype_t subtype; - uint32_t binary_len; - const uint8_t *binary; - bson_iter_t iter; - bson_t *b; - - b = get_bson (BSON_BINARY_DIR "/binary_deprecated.bson"); - BSON_ASSERT (b); - - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_next (&iter)); - bson_iter_binary (&iter, &subtype, &binary_len, &binary); - BSON_ASSERT (binary_len == 4); - BSON_ASSERT (memcmp (binary, "1234", 4) == 0); - - bson_destroy (b); -} - - -static void -test_bson_iter_timeval (void) -{ - bson_iter_t iter; - bson_t *b; - struct timeval tv; - - b = get_bson (BSON_BINARY_DIR "/test26.bson"); - BSON_ASSERT (b); - - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_next (&iter)); - bson_iter_timeval (&iter, &tv); - BSON_ASSERT (tv.tv_sec == 1234567890); - BSON_ASSERT (tv.tv_usec == 0); - - bson_destroy (b); -} - - -static void -test_bson_iter_trailing_null (void) -{ - bson_iter_t iter; - bson_t *b; - - b = get_bson (BSON_BINARY_DIR "/trailingnull.bson"); - BSON_ASSERT (b); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (!bson_iter_next (&iter)); - bson_destroy (b); -} - - -static void -test_bson_iter_fuzz (void) -{ - uint8_t *data; - uint32_t len = 512; - uint32_t len_le; - uint32_t r; - bson_iter_t iter; - bson_t *b; - uint32_t i; - int pass; - - len_le = BSON_UINT32_TO_LE (len); - - for (pass = 0; pass < FUZZ_N_PASSES; pass++) { - data = bson_malloc0 (len); - memcpy (data, &len_le, sizeof (len_le)); - - for (i = 4; i < len; i += 4) { - r = rand (); - memcpy (&data[i], &r, sizeof (r)); - } - - if (!(b = bson_new_from_data (data, len))) { - /* - * It could fail on buffer length or missing trailing null byte. - */ - bson_free (data); - continue; - } - - BSON_ASSERT (b); - - /* - * TODO: Most of the following ignores the key. That should be fixed - * but has it's own perils too. - */ - - BSON_ASSERT (bson_iter_init (&iter, b)); - while (bson_iter_next (&iter)) { - BSON_ASSERT (iter.next_off < len); - switch (bson_iter_type (&iter)) { - case BSON_TYPE_ARRAY: - case BSON_TYPE_DOCUMENT: { - const uint8_t *child = NULL; - uint32_t child_len = 0; - - bson_iter_document (&iter, &child_len, &child); - if (child_len) { - BSON_ASSERT (child); - BSON_ASSERT (child_len >= 5); - BSON_ASSERT ((iter.off + child_len) < b->len); - BSON_ASSERT (child_len < (uint32_t) -1); - memcpy (&child_len, child, sizeof (child_len)); - child_len = BSON_UINT32_FROM_LE (child_len); - BSON_ASSERT (child_len >= 5); - } - } break; - case BSON_TYPE_DOUBLE: - case BSON_TYPE_UTF8: - case BSON_TYPE_BINARY: - case BSON_TYPE_UNDEFINED: - break; - case BSON_TYPE_OID: - BSON_ASSERT (iter.off + 12 < iter.len); - break; - case BSON_TYPE_BOOL: - case BSON_TYPE_DATE_TIME: - case BSON_TYPE_NULL: - case BSON_TYPE_REGEX: - /* TODO: check for 2 valid cstring. */ - case BSON_TYPE_DBPOINTER: - case BSON_TYPE_CODE: - case BSON_TYPE_SYMBOL: - case BSON_TYPE_CODEWSCOPE: - case BSON_TYPE_INT32: - case BSON_TYPE_TIMESTAMP: - case BSON_TYPE_INT64: - case BSON_TYPE_DECIMAL128: - case BSON_TYPE_MAXKEY: - case BSON_TYPE_MINKEY: - break; - case BSON_TYPE_EOD: - default: - /* Code should not be reached. */ - BSON_ASSERT (false); - break; - } - } - - bson_destroy (b); - bson_free (data); - } -} - - -static void -test_bson_iter_regex (void) -{ - bson_iter_t iter; - bson_t *b; - - b = bson_new (); - BSON_ASSERT (bson_append_regex (b, "foo", -1, "^abcd", "")); - BSON_ASSERT (bson_append_regex (b, "foo", -1, "^abcd", NULL)); - BSON_ASSERT (bson_append_regex (b, "foo", -1, "^abcd", "ix")); - - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (bson_iter_next (&iter)); - BSON_ASSERT (bson_iter_next (&iter)); - - bson_destroy (b); -} - - -static void -test_bson_iter_next_after_finish (void) -{ - bson_iter_t iter; - bson_t *b; - int i; - - b = bson_new (); - BSON_ASSERT (bson_append_int32 (b, "key", -1, 1234)); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_next (&iter)); - for (i = 0; i < 1000; i++) { - BSON_ASSERT (!bson_iter_next (&iter)); - } - bson_destroy (b); -} - - -static void -test_bson_iter_find_case (void) -{ - bson_t b; - bson_iter_t iter; - - bson_init (&b); - BSON_ASSERT (bson_append_utf8 (&b, "key", -1, "value", -1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (bson_iter_find_case (&iter, "KEY")); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (!bson_iter_find (&iter, "KEY")); - bson_destroy (&b); -} - - -static void -test_bson_iter_find_w_len (void) -{ - bson_t b; - bson_iter_t iter; - - bson_init (&b); - BSON_ASSERT (bson_append_utf8 (&b, "key", -1, "value", -1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (bson_iter_find_w_len (&iter, "key", 3)); - bson_destroy (&b); - - bson_init (&b); - BSON_ASSERT (bson_append_utf8 (&b, "key", -1, "value", -1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (bson_iter_find_w_len (&iter, "keys", 3)); - bson_destroy (&b); - - bson_init (&b); - BSON_ASSERT (bson_append_utf8 (&b, "key", -1, "value", -1)); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (bson_iter_find_w_len (&iter, "key", -1)); - bson_destroy (&b); -} - - -static void -test_bson_iter_init_find_w_len (void) -{ - bson_t b; - bson_iter_t iter; - - bson_init (&b); - BSON_ASSERT (bson_append_utf8 (&b, "key", -1, "value", -1)); - BSON_ASSERT (bson_iter_init_find_w_len (&iter, &b, "key", 3)); - BSON_ASSERT (bson_iter_init_find_w_len (&iter, &b, "keys", 3)); - BSON_ASSERT (bson_iter_init_find_w_len (&iter, &b, "key", -1)); - bson_destroy (&b); -} - - -static void -test_bson_iter_empty_key (void) -{ - /* create a bson document empty keys. */ - bson_t *bson = BCON_NEW ( - "", "{", "x", BCON_INT32 (1), "", "{", "y", BCON_INT32 (2), "}", "}"); - bson_iter_t iter; - bson_iter_t descendant; - - BSON_ASSERT (bson_iter_init_find (&iter, bson, "")); - BSON_ASSERT (bson_iter_init_find_case (&iter, bson, "")); - BSON_ASSERT (BSON_ITER_HOLDS_DOCUMENT (&iter)); - /* tests fixes applied in CDRIVER-2755. */ - /* a find_w_len and length 0 should also find the key. */ - BSON_ASSERT (bson_iter_init_find_w_len (&iter, bson, "", 0)); - BSON_ASSERT (BSON_ITER_HOLDS_DOCUMENT (&iter)); - /* similarly, we should descend on an empty key. */ - bson_iter_init (&iter, bson); - BSON_ASSERT (bson_iter_find_descendant (&iter, ".x", &descendant)); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&descendant)); - ASSERT_CMPINT (bson_iter_int32 (&descendant), ==, 1); - bson_iter_init (&iter, bson); - BSON_ASSERT (bson_iter_find_descendant (&iter, "..y", &descendant)); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&descendant)); - ASSERT_CMPINT (bson_iter_int32 (&descendant), ==, 2); - bson_destroy (bson); -} - - -static void -test_bson_iter_as_double (void) -{ - bson_iter_t iter; - bson_t b; - - bson_init (&b); - ASSERT (bson_append_double (&b, "key", -1, 1234.1234)); - ASSERT (bson_iter_init_find (&iter, &b, "key")); - ASSERT (BSON_ITER_HOLDS_DOUBLE (&iter)); - ASSERT (bson_iter_as_double (&iter) == 1234.1234); - bson_destroy (&b); - - bson_init (&b); - ASSERT (bson_append_int32 (&b, "key", -1, 1234)); - ASSERT (bson_iter_init_find (&iter, &b, "key")); - ASSERT (BSON_ITER_HOLDS_INT32 (&iter)); - ASSERT (bson_iter_as_double (&iter) == 1234.0); - bson_destroy (&b); - - bson_init (&b); - ASSERT (bson_append_int64 (&b, "key", -1, 4321)); - ASSERT (bson_iter_init_find (&iter, &b, "key")); - ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT (bson_iter_as_double (&iter) == 4321.0); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_int32 (void) -{ - bson_iter_t iter; - bson_t b; - - bson_init (&b); - BSON_ASSERT (bson_append_int32 (&b, "key", -1, 1234)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&iter)); - bson_iter_overwrite_int32 (&iter, 4321); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&iter)); - ASSERT_CMPINT (bson_iter_int32 (&iter), ==, 4321); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_int64 (void) -{ - bson_iter_t iter; - bson_t b; - - bson_init (&b); - BSON_ASSERT (bson_append_int64 (&b, "key", -1, 1234)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - bson_iter_overwrite_int64 (&iter, 4641); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 (bson_iter_int64 (&iter), ==, (int64_t) 4641); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_decimal128 (void) -{ - bson_iter_t iter; - bson_t b; - bson_decimal128_t value; - bson_decimal128_t new_value; - bson_decimal128_t iter_value; - - value.high = 0; - value.low = 1; - - new_value.high = 0; - new_value.low = 2; - - bson_init (&b); - BSON_ASSERT (bson_append_decimal128 (&b, "key", -1, &value)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_DECIMAL128 (&iter)); - bson_iter_overwrite_decimal128 (&iter, &new_value); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_DECIMAL128 (&iter)); - BSON_ASSERT (bson_iter_decimal128 (&iter, &iter_value)); - BSON_ASSERT (memcmp (&iter_value, &new_value, sizeof (new_value)) == 0); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_double (void) -{ - bson_iter_t iter; - bson_t b; - - bson_init (&b); - BSON_ASSERT (bson_append_double (&b, "key", -1, 1234.1234)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_DOUBLE (&iter)); - bson_iter_overwrite_double (&iter, 4641.1234); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_DOUBLE (&iter)); - ASSERT_CMPDOUBLE (bson_iter_double (&iter), ==, 4641.1234); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_bool (void) -{ - bson_iter_t iter; - bson_t b; - - bson_init (&b); - BSON_ASSERT (bson_append_bool (&b, "key", -1, true)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_BOOL (&iter)); - bson_iter_overwrite_bool (&iter, false); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_BOOL (&iter)); - ASSERT_CMPINT (bson_iter_bool (&iter), ==, false); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_oid (void) -{ - bson_oid_t oid; - bson_iter_t iter; - bson_t b; - - bson_oid_init_from_string (&oid, "000000000000000000001234"); - bson_init (&b); - BSON_ASSERT (BSON_APPEND_OID (&b, "key", &oid)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - bson_oid_init_from_string (&oid, "000000000000000000004321"); - bson_iter_overwrite_oid (&iter, &oid); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - ASSERT_CMPOID (bson_iter_oid (&iter), &oid); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_timestamp (void) -{ - bson_iter_t iter; - bson_t b; - uint32_t t, i; - - bson_init (&b); - BSON_ASSERT (BSON_APPEND_TIMESTAMP (&b, "key", 1, 2)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - bson_iter_overwrite_timestamp (&iter, 3, 4); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - bson_iter_timestamp (&iter, &t, &i); - ASSERT_CMPUINT32 (t, ==, 3); - ASSERT_CMPUINT32 (i, ==, 4); - bson_destroy (&b); -} - - -static void -test_bson_iter_overwrite_date_time (void) -{ - bson_iter_t iter; - bson_t b; - - bson_init (&b); - BSON_ASSERT (BSON_APPEND_DATE_TIME (&b, "key", 1234567890)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - bson_iter_overwrite_date_time (&iter, -1234567890); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - ASSERT_CMPINT64 (bson_iter_date_time (&iter), ==, -1234567890); - bson_destroy (&b); -} - - -static void -test_bson_iter_recurse (void) -{ - bson_iter_t iter; - bson_iter_t child; - bson_t b; - bson_t cb; - - bson_init (&b); - bson_init (&cb); - BSON_ASSERT (bson_append_int32 (&cb, "0", 1, 0)); - BSON_ASSERT (bson_append_int32 (&cb, "1", 1, 1)); - BSON_ASSERT (bson_append_int32 (&cb, "2", 1, 2)); - BSON_ASSERT (bson_append_array (&b, "key", -1, &cb)); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_ARRAY (&iter)); - BSON_ASSERT (bson_iter_recurse (&iter, &child)); - BSON_ASSERT (bson_iter_find (&child, "0")); - BSON_ASSERT (bson_iter_find (&child, "1")); - BSON_ASSERT (bson_iter_find (&child, "2")); - BSON_ASSERT (!bson_iter_next (&child)); - bson_destroy (&b); - bson_destroy (&cb); -} - - -static void -test_bson_iter_init_find_case (void) -{ - bson_t b; - bson_iter_t iter; - - bson_init (&b); - BSON_ASSERT (bson_append_int32 (&b, "FOO", -1, 1234)); - BSON_ASSERT (bson_iter_init_find_case (&iter, &b, "foo")); - ASSERT_CMPINT (bson_iter_int32 (&iter), ==, 1234); - bson_destroy (&b); -} - - -static void -test_bson_iter_find_descendant (void) -{ - bson_iter_t iter; - bson_iter_t desc; - bson_t *b; - - b = get_bson (BSON_BINARY_DIR "/dotkey.bson"); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_find_descendant (&iter, "a.b.c.0", &desc)); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&desc)); - BSON_ASSERT (bson_iter_int32 (&desc) == 1); - bson_destroy (b); - - b = BCON_NEW ( - "foo", "{", "bar", "[", "{", "baz", BCON_INT32 (1), "}", "]", "}"); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_find_descendant (&iter, "foo.bar.0.baz", &desc)); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&desc)); - BSON_ASSERT (bson_iter_int32 (&desc) == 1); - bson_destroy (b); - - b = BCON_NEW ("nModified", BCON_INT32 (1), "n", BCON_INT32 (2)); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_find_descendant (&iter, "n", &desc)); - BSON_ASSERT (!strcmp (bson_iter_key (&desc), "n")); - bson_destroy (b); - - b = BCON_NEW ("", BCON_INT32 (1), "n", BCON_INT32 (2)); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (bson_iter_find_descendant (&iter, "n", &desc)); - BSON_ASSERT (!strcmp (bson_iter_key (&desc), "n")); - bson_destroy (b); -} - - -static void -test_bson_iter_as_bool (void) -{ - bson_iter_t iter; - bson_t b; - - bson_init (&b); - bson_append_int32 (&b, "int32[true]", -1, 1); - bson_append_int32 (&b, "int32[false]", -1, 0); - bson_append_int64 (&b, "int64[true]", -1, 1); - bson_append_int64 (&b, "int64[false]", -1, 0); - bson_append_double (&b, "int64[true]", -1, 1.0); - bson_append_double (&b, "int64[false]", -1, 0.0); - - bson_iter_init (&iter, &b); - bson_iter_next (&iter); - ASSERT_CMPINT (true, ==, bson_iter_as_bool (&iter)); - bson_iter_next (&iter); - ASSERT_CMPINT (false, ==, bson_iter_as_bool (&iter)); - bson_iter_next (&iter); - ASSERT_CMPINT (true, ==, bson_iter_as_bool (&iter)); - bson_iter_next (&iter); - ASSERT_CMPINT (false, ==, bson_iter_as_bool (&iter)); - bson_iter_next (&iter); - ASSERT_CMPINT (true, ==, bson_iter_as_bool (&iter)); - bson_iter_next (&iter); - ASSERT_CMPINT (false, ==, bson_iter_as_bool (&iter)); - - bson_destroy (&b); -} - -static void -test_bson_iter_from_data (void) -{ - /* {"b": true}, with implicit NULL at end */ - uint8_t data[] = "\x09\x00\x00\x00\x08\x62\x00\x01"; - bson_iter_t iter; - - ASSERT (bson_iter_init_from_data (&iter, data, sizeof data)); - ASSERT (bson_iter_next (&iter)); - ASSERT (BSON_ITER_HOLDS_BOOL (&iter)); - ASSERT (bson_iter_bool (&iter)); -} - -void -test_iter_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/iter/test_string", test_bson_iter_utf8); - TestSuite_Add (suite, "/bson/iter/test_mixed", test_bson_iter_mixed); - TestSuite_Add (suite, "/bson/iter/test_overflow", test_bson_iter_overflow); - TestSuite_Add (suite, "/bson/iter/test_timeval", test_bson_iter_timeval); - TestSuite_Add ( - suite, "/bson/iter/test_trailing_null", test_bson_iter_trailing_null); - TestSuite_Add (suite, "/bson/iter/test_fuzz", test_bson_iter_fuzz); - TestSuite_Add (suite, "/bson/iter/test_regex", test_bson_iter_regex); - TestSuite_Add (suite, - "/bson/iter/test_next_after_finish", - test_bson_iter_next_after_finish); - TestSuite_Add (suite, "/bson/iter/test_find_case", test_bson_iter_find_case); - TestSuite_Add ( - suite, "/bson/iter/test_find_w_len", test_bson_iter_find_w_len); - TestSuite_Add ( - suite, "/bson/iter/test_init_find_w_len", test_bson_iter_init_find_w_len); - TestSuite_Add ( - suite, "/bson/iter/test_bson_iter_as_double", test_bson_iter_as_double); - TestSuite_Add ( - suite, "/bson/iter/test_overwrite_int32", test_bson_iter_overwrite_int32); - TestSuite_Add ( - suite, "/bson/iter/test_overwrite_int64", test_bson_iter_overwrite_int64); - TestSuite_Add (suite, - "/bson/iter/test_overwrite_double", - test_bson_iter_overwrite_double); - TestSuite_Add ( - suite, "/bson/iter/test_overwrite_bool", test_bson_iter_overwrite_bool); - TestSuite_Add ( - suite, "/bson/iter/test_overwrite_oid", test_bson_iter_overwrite_oid); - TestSuite_Add (suite, - "/bson/iter/test_overwrite_timestamp", - test_bson_iter_overwrite_timestamp); - TestSuite_Add (suite, - "/bson/iter/test_overwrite_date_time", - test_bson_iter_overwrite_date_time); - TestSuite_Add (suite, - "/bson/iter/test_bson_iter_overwrite_decimal128", - test_bson_iter_overwrite_decimal128); - TestSuite_Add (suite, "/bson/iter/recurse", test_bson_iter_recurse); - TestSuite_Add ( - suite, "/bson/iter/init_find_case", test_bson_iter_init_find_case); - TestSuite_Add ( - suite, "/bson/iter/find_descendant", test_bson_iter_find_descendant); - TestSuite_Add (suite, "/bson/iter/as_bool", test_bson_iter_as_bool); - TestSuite_Add ( - suite, "/bson/iter/binary_deprecated", test_bson_iter_binary_deprecated); - TestSuite_Add (suite, "/bson/iter/from_data", test_bson_iter_from_data); - TestSuite_Add (suite, "/bson/iter/empty_key", test_bson_iter_empty_key); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-json.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-json.c deleted file mode 100644 index 9c63404..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-json.c +++ /dev/null @@ -1,2949 +0,0 @@ -/* required on old Windows for rand_s to be defined */ -#define _CRT_RAND_S - -#include -#include - -#include "TestSuite.h" -#include "test-conveniences.h" - -static ssize_t -test_bson_json_read_cb_helper (void *string, uint8_t *buf, size_t len) -{ - size_t str_size = strlen ((char *) string); - if (str_size) { - memcpy (buf, string, BSON_MIN (str_size, len)); - return str_size; - } else { - return 0; - } -} - -static void -test_bson_json_allow_multiple (void) -{ - int32_t one; - bson_error_t error; - bson_json_reader_t *reader; - bson_t bson; - const char *collection; - const bson_oid_t *oid; - bson_oid_t oid_expected; - int i; - /* nested JSON tests code that reuses parser stack frames, CDRIVER-2524 */ - char *multiple_json = - "{\"a\": 1}" - "{\"b\": {\"$dbPointer\": " - " {\"$ref\": \"c\", \"$id\": {\"$oid\": \"12341234123412abcdababcd\"}}}}" - "{\"c\": {\"x\": 1}}"; - - bson_oid_init_from_string (&oid_expected, "12341234123412abcdababcd"); - - for (i = 0; i < 2; i++) { - reader = bson_json_reader_new (multiple_json, - &test_bson_json_read_cb_helper, - NULL, - i == 1 /* allow_multiple */, - 0); - - BSON_ASSERT (reader); - - /* read first json */ - bson_init (&bson); - ASSERT_CMPINT (1, ==, bson_json_reader_read (reader, &bson, &error)); - BCON_EXTRACT (&bson, "a", BCONE_INT32 (one)); - ASSERT_CMPINT (1, ==, one); - - /* read second json */ - bson_reinit (&bson); - ASSERT_CMPINT (1, ==, bson_json_reader_read (reader, &bson, &error)); - BCON_EXTRACT (&bson, "b", BCONE_DBPOINTER (collection, oid)); - ASSERT_CMPSTR (collection, "c"); - BSON_ASSERT (0 == bson_oid_compare (oid, &oid_expected)); - - /* read third json */ - bson_reinit (&bson); - ASSERT_CMPINT (1, ==, bson_json_reader_read (reader, &bson, &error)); - BCON_EXTRACT (&bson, "c", BCONE_INT32 (one)); - ASSERT_CMPINT (1, ==, one); - - /* surprisingly, the reader begins at the start of the string again */ - bson_reinit (&bson); - ASSERT_CMPINT (1, ==, bson_json_reader_read (reader, &bson, &error)); - BCON_EXTRACT (&bson, "a", BCONE_INT32 (one)); - ASSERT_CMPINT (1, ==, one); - - bson_json_reader_destroy (reader); - bson_destroy (&bson); - } -} - - -static void -test_bson_as_json_x1000 (void) -{ - bson_oid_t oid; - bson_decimal128_t decimal128; - bson_t *b; - bson_t *b2; - char *str; - size_t len; - int i; - - decimal128.high = 0x3040000000000000ULL; - decimal128.low = 0x000000000000000B; - bson_oid_init_from_string (&oid, "123412341234abcdabcdabcd"); - - b = bson_new (); - BSON_ASSERT (bson_append_utf8 (b, "utf8", -1, "bar", -1)); - BSON_ASSERT (bson_append_int32 (b, "int32", -1, 1234)); - BSON_ASSERT (bson_append_int64 (b, "int64", -1, 4321)); - BSON_ASSERT (bson_append_double (b, "double", -1, 123.4)); - BSON_ASSERT (bson_append_undefined (b, "undefined", -1)); - BSON_ASSERT (bson_append_null (b, "null", -1)); - BSON_ASSERT (bson_append_oid (b, "oid", -1, &oid)); - BSON_ASSERT (bson_append_bool (b, "true", -1, true)); - BSON_ASSERT (bson_append_bool (b, "false", -1, false)); - BSON_ASSERT (bson_append_time_t (b, "date", -1, time (NULL))); - BSON_ASSERT ( - bson_append_timestamp (b, "timestamp", -1, (uint32_t) time (NULL), 1234)); - BSON_ASSERT (bson_append_regex (b, "regex", -1, "^abcd", "xi")); - BSON_ASSERT ( - bson_append_dbpointer (b, "dbpointer", -1, "mycollection", &oid)); - BSON_ASSERT (bson_append_minkey (b, "minkey", -1)); - BSON_ASSERT (bson_append_maxkey (b, "maxkey", -1)); - BSON_ASSERT (bson_append_symbol (b, "symbol", -1, "var a = {};", -1)); - BSON_ASSERT (bson_append_decimal128 (b, "decimal128", -1, &decimal128)); - - b2 = bson_new (); - BSON_ASSERT (bson_append_int32 (b2, "0", -1, 60)); - BSON_ASSERT (bson_append_document (b, "document", -1, b2)); - BSON_ASSERT (bson_append_array (b, "array", -1, b2)); - - { - const uint8_t binary[] = {0, 1, 2, 3, 4}; - BSON_ASSERT (bson_append_binary ( - b, "binary", -1, BSON_SUBTYPE_BINARY, binary, sizeof binary)); - } - - for (i = 0; i < 1000; i++) { - str = bson_as_json (b, &len); - bson_free (str); - } - - bson_destroy (b); - bson_destroy (b2); -} - - -static void -test_bson_as_json_multi (void) -{ - bson_t *b; - char *str; - size_t len; - - b = bson_new (); - - { - bson_oid_t oid; - bson_oid_init_from_string (&oid, "57e193d7a9cc81b4027498b5"); - BSON_ASSERT (bson_append_oid (b, "_id", -1, &oid)); - } - - BSON_ASSERT (bson_append_symbol (b, "Symbol", -1, "symbol", -1)); - BSON_ASSERT (bson_append_utf8 (b, "String", -1, "string", -1)); - BSON_ASSERT (bson_append_int32 (b, "Int32", -1, 42)); - BSON_ASSERT (bson_append_int64 (b, "Int64", -1, 42)); - BSON_ASSERT (bson_append_double (b, "Double", -1, -1.0)); - - { - const uint8_t binary[] = {0xa3, - 0x4c, - 0x38, - 0xf7, - 0xc3, - 0xab, - 0xed, - 0xc8, - 0xa3, - 0x78, - 0x14, - 0xa9, - 0x92, - 0xab, - 0x8d, - 0xb6}; - BSON_ASSERT (bson_append_binary ( - b, "Binary", -1, BSON_SUBTYPE_UUID_DEPRECATED, binary, sizeof binary)); - } - - { - const uint8_t binary[] = {1, 2, 3, 4, 5}; - BSON_ASSERT (bson_append_binary ( - b, "BinaryUserDefined", -1, BSON_SUBTYPE_USER, binary, sizeof binary)); - } - - BSON_ASSERT (bson_append_code (b, "Code", -1, "function() {}")); - - { - bson_t *scope = bson_new (); - BSON_ASSERT (bson_append_code_with_scope ( - b, "CodeWithScope", -1, "function() {}", scope)); - bson_destroy (scope); - } - - { - bson_t *document = bson_new (); - BSON_ASSERT (bson_append_utf8 (document, "foo", -1, "bar", -1)); - BSON_ASSERT (bson_append_document (b, "Subdocument", -1, document)); - bson_destroy (document); - } - - { - bson_t *array = bson_new (); - BSON_ASSERT (bson_append_int32 (array, "0", -1, 1)); - BSON_ASSERT (bson_append_int32 (array, "1", -1, 2)); - BSON_ASSERT (bson_append_int32 (array, "2", -1, 3)); - BSON_ASSERT (bson_append_int32 (array, "3", -1, 4)); - BSON_ASSERT (bson_append_int32 (array, "4", -1, 5)); - BSON_ASSERT (bson_append_array (b, "Array", -1, array)); - bson_destroy (array); - } - - BSON_ASSERT (bson_append_timestamp (b, "Timestamp", -1, 42, 1)); - BSON_ASSERT (bson_append_regex (b, "Regex", -1, "pattern", "")); - BSON_ASSERT (bson_append_date_time (b, "DatetimeEpoch", -1, 0)); - BSON_ASSERT (bson_append_date_time ( - b, "DatetimePositive", -1, (int64_t) 2147483647LL)); - BSON_ASSERT (bson_append_date_time ( - b, "DatetimeNegative", -1, (int64_t) -2147483648LL)); - BSON_ASSERT (bson_append_bool (b, "True", -1, true)); - BSON_ASSERT (bson_append_bool (b, "False", -1, false)); - - { - bson_oid_t oid; - bson_oid_init_from_string (&oid, "57e193d7a9cc81b4027498b1"); - BSON_ASSERT ( - bson_append_dbpointer (b, "DBPointer", -1, "collection", &oid)); - } - - { - bson_oid_t oid; - bson_t *dbref = bson_new (); - bson_oid_init_from_string (&oid, "57fd71e96e32ab4225b723fb"); - BSON_ASSERT (bson_append_utf8 (dbref, "$ref", -1, "collection", -1)); - BSON_ASSERT (bson_append_oid (dbref, "$id", -1, &oid)); - BSON_ASSERT (bson_append_utf8 (dbref, "$db", -1, "database", -1)); - BSON_ASSERT (bson_append_document (b, "DBRef", -1, dbref)); - bson_destroy (dbref); - } - - BSON_ASSERT (bson_append_minkey (b, "Minkey", -1)); - BSON_ASSERT (bson_append_maxkey (b, "Maxkey", -1)); - BSON_ASSERT (bson_append_null (b, "Null", -1)); - BSON_ASSERT (bson_append_undefined (b, "Undefined", -1)); - - { - bson_decimal128_t decimal128; - decimal128.high = 0x3040000000000000ULL; - decimal128.low = 0x000000000000000B; - BSON_ASSERT (bson_append_decimal128 (b, "Decimal128", -1, &decimal128)); - } - - str = bson_as_json (b, &len); - - /* Based on multi-type-deprecated.json from BSON Corpus Tests. */ - ASSERT_CMPSTR ( - str, - "{" - " \"_id\" : { \"$oid\" : \"57e193d7a9cc81b4027498b5\" }," - " \"Symbol\" : \"symbol\"," - " \"String\" : \"string\"," - " \"Int32\" : 42," - " \"Int64\" : 42," - " \"Double\" : -1.0," - " \"Binary\" : { \"$binary\" : \"o0w498Or7cijeBSpkquNtg==\", \"$type\" : " - "\"03\" }," - " \"BinaryUserDefined\" : { \"$binary\" : \"AQIDBAU=\", \"$type\" : " - "\"80\" }," - " \"Code\" : { \"$code\" : \"function() {}\" }," - " \"CodeWithScope\" : { \"$code\" : \"function() {}\", \"$scope\" : { } " - "}," - " \"Subdocument\" : { \"foo\" : \"bar\" }," - " \"Array\" : [ 1, 2, 3, 4, 5 ]," - " \"Timestamp\" : { \"$timestamp\" : { \"t\" : 42, \"i\" : 1 } }," - " \"Regex\" : { \"$regex\" : \"pattern\", \"$options\" : \"\" }," - " \"DatetimeEpoch\" : { \"$date\" : 0 }," - " \"DatetimePositive\" : { \"$date\" : 2147483647 }," - " \"DatetimeNegative\" : { \"$date\" : -2147483648 }," - " \"True\" : true," - " \"False\" : false," - " \"DBPointer\" : { \"$ref\" : \"collection\", \"$id\" : " - "\"57e193d7a9cc81b4027498b1\" }," - " \"DBRef\" : { \"$ref\" : \"collection\", \"$id\" : { \"$oid\" : " - "\"57fd71e96e32ab4225b723fb\" }, \"$db\" : \"database\" }," - " \"Minkey\" : { \"$minKey\" : 1 }," - " \"Maxkey\" : { \"$maxKey\" : 1 }," - " \"Null\" : null," - " \"Undefined\" : { \"$undefined\" : true }," - " \"Decimal128\" : { \"$numberDecimal\" : \"11\" } }"); - - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_string (void) -{ - size_t len; - bson_t *b; - char *str; - - b = bson_new (); - BSON_ASSERT (bson_append_utf8 (b, "foo", -1, "bar", -1)); - str = bson_as_json (b, &len); - BSON_ASSERT (len == 17); - BSON_ASSERT (!strcmp ("{ \"foo\" : \"bar\" }", str)); - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_int32 (void) -{ - size_t len; - bson_t *b; - char *str; - - b = bson_new (); - BSON_ASSERT (bson_append_int32 (b, "foo", -1, 1234)); - str = bson_as_json (b, &len); - BSON_ASSERT (len == 16); - BSON_ASSERT (!strcmp ("{ \"foo\" : 1234 }", str)); - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_int64 (void) -{ - size_t len; - bson_t *b; - char *str; - - b = bson_new (); - BSON_ASSERT (bson_append_int64 (b, "foo", -1, 341234123412341234ULL)); - str = bson_as_json (b, &len); - BSON_ASSERT (len == 30); - BSON_ASSERT (!strcmp ("{ \"foo\" : 341234123412341234 }", str)); - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_double (void) -{ - size_t len; - bson_t *b; - char *str; - char *expected; - - b = bson_new (); - BSON_ASSERT (bson_append_double (b, "foo", -1, 123.5)); - BSON_ASSERT (bson_append_double (b, "bar", -1, 3)); - BSON_ASSERT (bson_append_double (b, "baz", -1, -1)); - BSON_ASSERT (bson_append_double (b, "quux", -1, 0.03125)); - BSON_ASSERT (bson_append_double (b, "huge", -1, 1e99)); - str = bson_as_json (b, &len); - - expected = bson_strdup_printf ("{" - " \"foo\" : 123.5," - " \"bar\" : 3.0," - " \"baz\" : -1.0," - " \"quux\" : 0.03125," - " \"huge\" : %.20g }", - 1e99); - - ASSERT_CMPSTR (str, expected); - - bson_free (expected); - bson_free (str); - bson_destroy (b); -} - - -#if defined(NAN) && defined(INFINITY) -static void -test_bson_as_json_double_nonfinite (void) -{ - size_t len; - bson_t *b; - char *str; - char *expected; - - b = bson_new (); - BSON_ASSERT (bson_append_double (b, "nan", -1, NAN)); - BSON_ASSERT (bson_append_double (b, "pos_inf", -1, INFINITY)); - BSON_ASSERT (bson_append_double (b, "neg_inf", -1, -INFINITY)); - str = bson_as_json (b, &len); - - expected = bson_strdup_printf ("{" - " \"nan\" : %.20g," - " \"pos_inf\" : %.20g," - " \"neg_inf\" : %.20g }", - NAN, - INFINITY, - -INFINITY); - - ASSERT_CMPSTR (str, expected); - - bson_free (expected); - bson_free (str); - bson_destroy (b); -} -#endif - - -static void -test_bson_as_json_decimal128 (void) -{ - size_t len; - bson_t *b; - char *str; - bson_decimal128_t decimal128; - decimal128.high = 0x3040000000000000ULL; - decimal128.low = 0x000000000000000B; - - b = bson_new (); - BSON_ASSERT (bson_append_decimal128 (b, "decimal128", -1, &decimal128)); - str = bson_as_json (b, &len); - ASSERT_CMPSTR (str, - "{ " - "\"decimal128\" : { \"$numberDecimal\" : \"11\" }" - " }"); - - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_code (void) -{ - bson_t code = BSON_INITIALIZER; - bson_t scope = BSON_INITIALIZER; - char *str; - - BSON_ASSERT (bson_append_code (&code, "c", -1, "function () {}")); - str = bson_as_json (&code, NULL); - ASSERT_CMPSTR (str, "{ \"c\" : { \"$code\" : \"function () {}\" } }"); - - bson_free (str); - bson_reinit (&code); - - /* empty scope */ - BSON_ASSERT ( - BSON_APPEND_CODE_WITH_SCOPE (&code, "c", "function () {}", &scope)); - str = bson_as_json (&code, NULL); - ASSERT_CMPSTR ( - str, "{ \"c\" : { \"$code\" : \"function () {}\", \"$scope\" : { } } }"); - - bson_free (str); - bson_reinit (&code); - - BSON_APPEND_INT32 (&scope, "x", 1); - BSON_ASSERT ( - BSON_APPEND_CODE_WITH_SCOPE (&code, "c", "function () {}", &scope)); - str = bson_as_json (&code, NULL); - ASSERT_CMPSTR (str, - "{ \"c\" : { \"$code\" : \"function () {}\", \"$scope\" " - ": { \"x\" : 1 } } }"); - - bson_free (str); - bson_reinit (&code); - - /* test that embedded quotes are backslash-escaped */ - BSON_ASSERT (BSON_APPEND_CODE (&code, "c", "return \"a\"")); - str = bson_as_json (&code, NULL); - - /* hard to read, this is { "c" : { "$code" : "return \"a\"" } } */ - ASSERT_CMPSTR (str, "{ \"c\" : { \"$code\" : \"return \\\"a\\\"\" } }"); - - bson_free (str); - bson_destroy (&code); - bson_destroy (&scope); -} - - -static void -test_bson_as_json_date_time (void) -{ - bson_t *b; - char *str; - size_t len; - - b = bson_new (); - BSON_ASSERT (bson_append_date_time (b, "epoch", -1, 0)); - BSON_ASSERT (bson_append_date_time (b, "negative", -1, -123456000)); - BSON_ASSERT (bson_append_date_time (b, "positive", -1, 123456000)); - str = bson_as_json (b, &len); - - ASSERT_CMPSTR (str, - "{" - " \"epoch\" : { \"$date\" : 0 }," - " \"negative\" : { \"$date\" : -123456000 }," - " \"positive\" : { \"$date\" : 123456000 } }"); - - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_regex (void) -{ - bson_t *b; - char *str; - size_t len; - - b = bson_new (); - BSON_ASSERT (bson_append_regex (b, "regex", -1, "^abcd", "xi")); - BSON_ASSERT (bson_append_regex (b, "escaping", -1, "^\"", "")); - BSON_ASSERT (bson_append_regex (b, "ordered", -1, "^abcd", "ilmsux")); - BSON_ASSERT (bson_append_regex (b, "unordered", -1, "^abcd", "xusmli")); - BSON_ASSERT (bson_append_regex (b, "duplicate", -1, "^abcd", "mmiii")); - BSON_ASSERT (bson_append_regex (b, "unsupported", -1, "^abcd", "jkmlvz")); - str = bson_as_json (b, &len); - - ASSERT_CMPSTR (str, - "{" - " \"regex\" : { \"$regex\" : \"^abcd\", \"$options\" " - ": \"ix\" }," - " \"escaping\" : { \"$regex\" : \"^\\\"\", \"$options\" " - ": \"\" }," - " \"ordered\" : { \"$regex\" : \"^abcd\", \"$options\" " - ": \"ilmsux\" }," - " \"unordered\" : { \"$regex\" : \"^abcd\", \"$options\" " - ": \"ilmsux\" }," - " \"duplicate\" : { \"$regex\" : \"^abcd\", \"$options\" " - ": \"im\" }," - " \"unsupported\" : { \"$regex\" : \"^abcd\", \"$options\" " - ": \"lm\" } }"); - - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_symbol (void) -{ - bson_t *b; - char *str; - size_t len; - - b = bson_new (); - BSON_ASSERT (bson_append_symbol (b, "symbol", -1, "foo", -1)); - BSON_ASSERT (bson_append_symbol (b, "escaping", -1, "\"bar\"", -1)); - str = bson_as_json (b, &len); - - ASSERT_CMPSTR (str, - "{" - " \"symbol\" : \"foo\"," - " \"escaping\" : \"\\\"bar\\\"\" }"); - - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_utf8 (void) -{ -/* euro currency symbol */ -#define EU "\xe2\x82\xac" -#define FIVE_EUROS EU EU EU EU EU - size_t len; - bson_t *b; - char *str; - - b = bson_new (); - BSON_ASSERT (bson_append_utf8 (b, FIVE_EUROS, -1, FIVE_EUROS, -1)); - str = bson_as_json (b, &len); - BSON_ASSERT (!strcmp (str, "{ \"" FIVE_EUROS "\" : \"" FIVE_EUROS "\" }")); - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_json_dbpointer (void) -{ - bson_oid_t oid; - bson_t *b; - char *str; - size_t len; - - bson_oid_init_from_string (&oid, "12341234123412abcdababcd"); - - b = bson_new (); - BSON_ASSERT (bson_append_dbpointer (b, "dbpointer", -1, "collection", &oid)); - BSON_ASSERT (bson_append_dbpointer (b, "escaping", -1, "\"coll\"", &oid)); - str = bson_as_json (b, &len); - - ASSERT_CMPSTR (str, - "{" - " \"dbpointer\" : { \"$ref\" : \"collection\", \"$id\" " - ": \"12341234123412abcdababcd\" }," - " \"escaping\" : { \"$ref\" : \"\\\"coll\\\"\", \"$id\" " - ": \"12341234123412abcdababcd\" } }"); - - bson_free (str); - bson_destroy (b); -} - - -static void -test_bson_as_canonical_extended_json_dbpointer (void) -{ - bson_oid_t oid; - bson_t *b; - size_t len; - char *str; - - bson_oid_init_from_string (&oid, "12341234123412abcdababcd"); - b = bson_new (); - BSON_ASSERT (BSON_APPEND_DBPOINTER (b, "p", "coll", &oid)); - str = bson_as_canonical_extended_json (b, &len); - ASSERT_CMPJSON (str, - "{ \"p\" : { \"$dbPointer\" : { \"$ref\" : " - "\"coll\", \"$id\" : { \"$oid\" : " - "\"12341234123412abcdababcd\" } } } }"); - - bson_destroy (b); -} - - -static void -test_bson_as_json_stack_overflow (void) -{ - uint8_t *buf; - bson_t b; - size_t buflen = 1024 * 1024 * 17; - char *str; - int fd; - ssize_t r; - - buf = bson_malloc0 (buflen); - - fd = bson_open (BSON_BINARY_DIR "/stackoverflow.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - r = bson_read (fd, buf, buflen); - BSON_ASSERT (r == 16777220); - - r = bson_init_static (&b, buf, 16777220); - BSON_ASSERT (r); - - str = bson_as_json (&b, NULL); - BSON_ASSERT (str); - - r = !!strstr (str, "..."); - BSON_ASSERT (r); - - bson_free (str); - bson_destroy (&b); - bson_free (buf); -} - - -static void -test_bson_corrupt (void) -{ - uint8_t *buf; - bson_t b; - size_t buflen = 1024; - char *str; - int fd; - ssize_t r; - - buf = bson_malloc0 (buflen); - - fd = bson_open (BSON_BINARY_DIR "/test55.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - r = bson_read (fd, buf, buflen); - BSON_ASSERT (r == 24); - - r = bson_init_static (&b, buf, (uint32_t) r); - BSON_ASSERT (r); - - str = bson_as_json (&b, NULL); - BSON_ASSERT (!str); - - bson_destroy (&b); - bson_free (buf); -} - -static void -test_bson_corrupt_utf8 (void) -{ - uint8_t *buf; - bson_t b; - size_t buflen = 1024; - char *str; - int fd; - ssize_t r; - - buf = bson_malloc0 (buflen); - - fd = bson_open (BSON_BINARY_DIR "/test56.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - r = bson_read (fd, buf, buflen); - BSON_ASSERT (r == 42); - - r = bson_init_static (&b, buf, (uint32_t) r); - BSON_ASSERT (r); - - str = bson_as_json (&b, NULL); - BSON_ASSERT (!str); - - bson_destroy (&b); - bson_free (buf); -} - -static void -test_bson_corrupt_binary (void) -{ - uint8_t *buf; - bson_t b; - size_t buflen = 1024; - char *str; - int fd; - ssize_t r; - - buf = bson_malloc0 (buflen); - - fd = bson_open (BSON_BINARY_DIR "/test57.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - r = bson_read (fd, buf, buflen); - BSON_ASSERT (r == 26); - - r = bson_init_static (&b, buf, (uint32_t) r); - BSON_ASSERT (r); - - str = bson_as_json (&b, NULL); - BSON_ASSERT (!str); - - bson_destroy (&b); - bson_free (buf); -} - -#ifndef BSON_HAVE_RAND_R -static int -rand_r (unsigned int *seed) -{ - srand (*seed); - return rand (); -} -#endif - -#ifdef _WIN32 -#define RAND_R rand_s -#else -#define RAND_R rand_r -#endif - -static char * -rand_str (size_t maxlen, - unsigned int *seed /* IN / OUT */, - char *buf /* IN / OUT */) -{ - size_t len = RAND_R (seed) % (maxlen - 1); - size_t i; - - for (i = 0; i < len; i++) { - buf[i] = (char) ('a' + i % 26); - } - - buf[len] = '\0'; - return buf; -} - -/* test with random buffer sizes to ensure we parse whole keys and values when - * reads pause and resume in the middle of tokens */ -static void -test_bson_json_read_buffering (void) -{ - bson_t **bsons; - char *json_tmp; - bson_string_t *json; - bson_error_t error; - bson_t bson_out = BSON_INITIALIZER; - int i; - unsigned int seed = 42; - int n_docs, docs_idx; - int n_elems, elem_idx; - char key[25]; - char val[25]; - bson_json_reader_t *reader; - int r; - - json = bson_string_new (NULL); - - /* parse between 1 and 10 JSON objects */ - for (n_docs = 1; n_docs < 10; n_docs++) { - /* do 50 trials */ - for (i = 0; i < 50; i++) { - bsons = bson_malloc (n_docs * sizeof (bson_t *)); - for (docs_idx = 0; docs_idx < n_docs; docs_idx++) { - /* a BSON document with up to 10 strings and numbers */ - bsons[docs_idx] = bson_new (); - n_elems = RAND_R (&seed) % 5; - for (elem_idx = 0; elem_idx < n_elems; elem_idx++) { - bson_append_utf8 (bsons[docs_idx], - rand_str (sizeof key, &seed, key), - -1, - rand_str (sizeof val, &seed, val), - -1); - - bson_append_int32 (bsons[docs_idx], - rand_str (sizeof key, &seed, key), - -1, - RAND_R (&seed) % INT32_MAX); - } - - /* append the BSON document's JSON representation to "json" */ - json_tmp = bson_as_json (bsons[docs_idx], NULL); - BSON_ASSERT (json_tmp); - bson_string_append (json, json_tmp); - bson_free (json_tmp); - } - - reader = bson_json_data_reader_new ( - true /* "allow_multiple" is unused */, - (size_t) RAND_R (&seed) % 100 /* bufsize*/); - - bson_json_data_reader_ingest ( - reader, (uint8_t *) json->str, json->len); - - for (docs_idx = 0; docs_idx < n_docs; docs_idx++) { - bson_reinit (&bson_out); - r = bson_json_reader_read (reader, &bson_out, &error); - if (r == -1) { - fprintf (stderr, "%s\n", error.message); - abort (); - } - - BSON_ASSERT (r); - bson_eq_bson (&bson_out, bsons[docs_idx]); - } - - /* finished parsing */ - ASSERT_CMPINT ( - 0, ==, bson_json_reader_read (reader, &bson_out, &error)); - - bson_json_reader_destroy (reader); - bson_string_truncate (json, 0); - - for (docs_idx = 0; docs_idx < n_docs; docs_idx++) { - bson_destroy (bsons[docs_idx]); - } - - bson_free (bsons); - } - } - - bson_string_free (json, true); - bson_destroy (&bson_out); -} - -static void -_test_bson_json_read_compare (const char *json, int size, ...) -{ - bson_error_t error = {0}; - bson_json_reader_t *reader; - va_list ap; - int r; - bson_t *compare; - bson_t bson = BSON_INITIALIZER; - - reader = bson_json_data_reader_new ((size == 1), size); - bson_json_data_reader_ingest (reader, (uint8_t *) json, strlen (json)); - - va_start (ap, size); - - while ((r = bson_json_reader_read (reader, &bson, &error))) { - if (r == -1) { - fprintf (stderr, "%s\n", error.message); - abort (); - } - - compare = va_arg (ap, bson_t *); - - BSON_ASSERT (compare); - - bson_eq_bson (&bson, compare); - - bson_destroy (compare); - - bson_reinit (&bson); - } - - va_end (ap); - - bson_json_reader_destroy (reader); - bson_destroy (&bson); -} - -static void -test_bson_json_read (void) -{ - char *json = bson_strdup_printf ( - "%s { \"after\": \"b\" } { \"twice\" : true }", json_with_all_types ()); - - bson_oid_t oid; - bson_t *first, *second, *third; - - bson_oid_init_from_string (&oid, "000000000000000000000000"); - - first = bson_copy (bson_with_all_types ()); - second = BCON_NEW ("after", "b"); - third = BCON_NEW ("twice", BCON_BOOL (true)); - - _test_bson_json_read_compare (json, 5, first, second, third, NULL); - bson_free (json); -} - -static void -test_bson_json_read_raw_utf8 (void) -{ - bson_t *bson; - bson_iter_t iter; - - bson = bson_new_from_json ( - (const uint8_t *) "{\"" EU "\": \"" EU "\"}", -1, NULL); - ASSERT (bson); - ASSERT (bson_iter_init_find (&iter, bson, EU)); - ASSERT_CMPSTR (bson_iter_key (&iter), EU); - ASSERT_CMPSTR (bson_iter_utf8 (&iter, NULL), EU); - ASSERT (!bson_iter_next (&iter)); - - bson_destroy (bson); -} - -static void -test_bson_json_read_corrupt_utf8 (void) -{ - const char *bad_key = "{ \"\x80\" : \"a\"}"; - const char *bad_value = "{ \"a\" : \"\x80\"}"; - bson_error_t error = {0}; - - BSON_ASSERT (!bson_new_from_json ((uint8_t *) bad_key, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "invalid bytes in UTF8 string"); - - memset (&error, 0, sizeof error); - - BSON_ASSERT (!bson_new_from_json ((uint8_t *) bad_value, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "invalid bytes in UTF8 string"); -} - - -/* exercise early exit from _bson_as_json_visit_document/array, CDRIVER-2541 */ -static void -test_bson_json_read_corrupt_document (void) -{ - /* like {a: {a: "\x80"}}, the value is invalid UTF-8 */ - const char bad_doc[] = "\x16\x00\x00\x00" /* length */ - "\x03\x61\x00" /* subdoc field with key "a" */ - "\x0e\x00\x00\x00" /* length of subdoc in bytes */ - "\x02\x61\x00\x02\x00\x00\x00\x80\x00" /* a: "\x80" */ - "\x00"; /* terminator */ - - /* like {a: ["\x80"]}, the inner value is invalid UTF-8 */ - const char bad_array[] = "\x16\x00\x00\x00" /* length */ - "\x04\x61\x00" /* array field with key "a" */ - "\x0e\x00\x00\x00" /* length of array in bytes */ - "\x02\x30\x00" /* key "0" */ - "\x02\x00\x00\x00\x80\x00" /* string "\x80" */ - "\x00"; /* terminator */ - - bson_t bson; - BSON_ASSERT ( - bson_init_static (&bson, (uint8_t *) bad_doc, sizeof (bad_doc))); - BSON_ASSERT (!bson_as_json (&bson, NULL)); - BSON_ASSERT ( - bson_init_static (&bson, (uint8_t *) bad_array, sizeof (bad_array))); - BSON_ASSERT (!bson_as_json (&bson, NULL)); -} - - -static void -test_bson_json_read_decimal128 (void) -{ - const char *json = "{ \"decimal\" : { \"$numberDecimal\" : \"123.5\" }}"; - bson_decimal128_t dec; - bson_t *doc; - - bson_decimal128_from_string ("123.5", &dec); - doc = BCON_NEW ("decimal", BCON_DECIMAL128 (&dec)); - - _test_bson_json_read_compare (json, 5, doc, NULL); -} - - -static void -test_bson_json_read_dbpointer (void) -{ - bson_t b; - bson_error_t error; - bool r; - - /* must have both $ref and $id, $id must be ObjectId */ - const char *invalid[] = { - "{\"p\": {\"$dbPointer\": {\"$ref\": \"db.collection\"}}", - "$dbPointer requires both $id and $ref", - - "{\"p\": {\"$dbPointer\": {\"$ref\": \"db.collection\", \"$id\": 1}}", - "$dbPointer.$id must be like {\"$oid\": ...\"}", - - "{\"p\": {\"$dbPointer\": {\"$id\": {" - "\"$oid\": \"57e193d7a9cc81b4027498b1\"}}}}", - "$dbPointer requires both $id and $ref", - - "{\"p\": {\"$dbPointer\": {}}}", - "Empty $dbPointer", - - NULL}; - - const char **p; - - for (p = invalid; *p; p += 2) { - r = bson_init_from_json (&b, *p, -1, &error); - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS ( - error, BSON_ERROR_JSON, BSON_JSON_ERROR_READ_INVALID_PARAM, *(p + 1)); - } -} - - -static void -test_bson_json_read_legacy_regex (void) -{ - bson_t b; - bson_error_t error; - bool r; - const char *pattern; - const char *flags; - - r = bson_init_from_json ( - &b, "{\"a\": {\"$regex\": \"abc\", \"$options\": \"ix\"}}", -1, &error); - ASSERT_OR_PRINT (r, error); - BCON_EXTRACT (&b, "a", BCONE_REGEX (pattern, flags)); - ASSERT_CMPSTR (pattern, "abc"); - ASSERT_CMPSTR (flags, "ix"); - - bson_destroy (&b); - - r = bson_init_from_json (&b, "{\"a\": {\"$regex\": \"abc\"}}", -1, &error); - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Missing \"$options\" after \"$regex\""); - - memset (&error, 0, sizeof error); - - r = bson_init_from_json (&b, "{\"a\": {\"$options\": \"ix\"}}", -1, &error); - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Missing \"$regex\" after \"$options\""); -} - - -static void -test_bson_json_read_regex_options_order (void) -{ - bson_t b; - bson_error_t error; - bool r; - const char *pattern; - const char *flags; - - r = bson_init_from_json ( - &b, "{\"a\": {\"$regex\": \"\", \"$options\": \"ism\"}}", -1, &error); - ASSERT_OR_PRINT (r, error); - BCON_EXTRACT (&b, "a", BCONE_REGEX (pattern, flags)); - ASSERT_CMPSTR (flags, "ims"); - - bson_destroy (&b); - - r = bson_init_from_json ( - &b, "{\"a\": {\"$regex\": \"\", \"$options\": \"misl\"}}", -1, &error); - ASSERT_OR_PRINT (r, error); - BCON_EXTRACT (&b, "a", BCONE_REGEX (pattern, flags)); - ASSERT_CMPSTR (flags, "ilms"); - - bson_destroy (&b); -} - - -static void -test_bson_json_read_binary (void) -{ - bson_error_t error; - bson_t b; - bool r; - bson_subtype_t subtype; - uint32_t len; - const uint8_t *binary; - - r = bson_init_from_json ( - &b, - "{\"b\": {\"$binary\": {\"base64\": \"Zm9v\", \"subType\": \"05\"}}}", - -1, - &error); - ASSERT_OR_PRINT (r, error); - - BCON_EXTRACT (&b, "b", BCONE_BIN (subtype, binary, len)); - ASSERT_CMPINT ((int) subtype, ==, 5); - ASSERT_CMPUINT32 (len, ==, (uint32_t) 3); - ASSERT_CMPSTR ((const char *) binary, "foo"); - - bson_destroy (&b); - - r = bson_init_from_json ( - &b, - "{\"b\": {\"$binary\": {\"subType\": \"05\", \"base64\": \"Zm9v\"}}}", - -1, - &error); - ASSERT_OR_PRINT (r, error); - BCON_EXTRACT (&b, "b", BCONE_BIN (subtype, binary, len)); - ASSERT_CMPINT ((int) subtype, ==, 5); - ASSERT_CMPUINT32 (len, ==, (uint32_t) 3); - ASSERT_CMPSTR ((const char *) binary, "foo"); - - bson_destroy (&b); - - /* no base64 */ - r = bson_init_from_json ( - &b, "{\"b\": {\"$binary\": {\"subType\": \"5\"}}}", -1, &error); - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Missing \"base64\" after \"subType\""); - - memset (&error, 0, sizeof error); - - /* no subType */ - r = bson_init_from_json ( - &b, "{\"b\": {\"$binary\": {\"base64\": \"Zm9v\"}}}", -1, &error); - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Missing \"subType\" after \"base64\""); -} - - -static void -test_bson_json_read_legacy_binary (void) -{ - const char *jsons[] = {"{\"x\": {\"$binary\": \"Zm9v\", \"$type\": \"05\"}}", - "{\"x\": {\"$type\": \"05\", \"$binary\": \"Zm9v\"}}", - NULL}; - - const char **json; - bson_error_t error; - bson_t b; - bool r; - bson_subtype_t subtype; - uint32_t len; - const uint8_t *binary; - - for (json = jsons; *json; json++) { - r = bson_init_from_json (&b, *json, -1, &error); - - ASSERT_OR_PRINT (r, error); - BCON_EXTRACT (&b, "x", BCONE_BIN (subtype, binary, len)); - ASSERT_CMPINT ((int) subtype, ==, 5); - ASSERT_CMPUINT32 (len, ==, (uint32_t) 3); - ASSERT_CMPSTR ((const char *) binary, "foo"); - - bson_destroy (&b); - } -} - - -static void -test_json_reader_new_from_file (void) -{ - const char *path = BSON_JSON_DIR "/test.json"; - const char *bar; - const bson_oid_t *oid; - bson_oid_t oid_expected; - int32_t one; - bson_t bson = BSON_INITIALIZER; - bson_json_reader_t *reader; - bson_error_t error; - - reader = bson_json_reader_new_from_file (path, &error); - BSON_ASSERT (reader); - - /* read two documents */ - ASSERT_CMPINT (1, ==, bson_json_reader_read (reader, &bson, &error)); - - BCON_EXTRACT (&bson, "foo", BCONE_UTF8 (bar), "a", BCONE_INT32 (one)); - ASSERT_CMPSTR ("bar", bar); - ASSERT_CMPINT (1, ==, one); - - bson_reinit (&bson); - ASSERT_CMPINT (1, ==, bson_json_reader_read (reader, &bson, &error)); - - BCON_EXTRACT (&bson, "_id", BCONE_OID (oid)); - bson_oid_init_from_string (&oid_expected, "aabbccddeeff001122334455"); - BSON_ASSERT (bson_oid_equal (&oid_expected, oid)); - - bson_destroy (&bson); - bson_json_reader_destroy (reader); -} - -static void -test_json_reader_new_from_bad_path (void) -{ - const char *bad_path = BSON_JSON_DIR "/does-not-exist"; - bson_json_reader_t *reader; - bson_error_t error; - - reader = bson_json_reader_new_from_file (bad_path, &error); - BSON_ASSERT (!reader); - ASSERT_CMPINT (BSON_ERROR_READER, ==, error.domain); - ASSERT_CMPINT (BSON_ERROR_READER_BADFD, ==, error.code); -} - -static void -test_bson_json_error (const char *json, int domain, bson_json_error_code_t code) -{ - bson_error_t error; - bson_t *bson; - - bson = bson_new_from_json ((const uint8_t *) json, strlen (json), &error); - - BSON_ASSERT (!bson); - BSON_ASSERT (error.domain == domain); - BSON_ASSERT (error.code == code); -} - -static void -test_bson_json_read_empty (void) -{ - bson_error_t error; - bson_t *bson_ptr; - bson_t bson; - - bson_ptr = bson_new_from_json ((uint8_t *) "", 0, &error); - BSON_ASSERT (!bson_ptr); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Empty JSON string"); - - memset (&error, 0, sizeof error); - bson_init_from_json (&bson, "", 0, &error); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Empty JSON string"); -} - -static void -test_bson_json_read_missing_complex (void) -{ - const char *json = "{ \n\ - \"foo\" : { \n\ - \"$options\" : \"ism\"\n\ - }\n\ - }"; - - test_bson_json_error ( - json, BSON_ERROR_JSON, BSON_JSON_ERROR_READ_INVALID_PARAM); -} - -static void -test_bson_json_read_invalid_binary (void) -{ - bson_error_t error; - const char *json = - "{ " - " \"bin\" : { \"$binary\" : \"invalid\", \"$type\" : \"80\" } }"; - bson_t b; - bool r; - - r = bson_init_from_json (&b, json, -1, &error); - BSON_ASSERT (!r); -} - -static void -test_bson_json_read_invalid_json (void) -{ - const char *json = "{ \n\ - \"foo\" : { \n\ - }"; - bson_t *b; - - test_bson_json_error ( - json, BSON_ERROR_JSON, BSON_JSON_ERROR_READ_CORRUPT_JS); - - b = bson_new_from_json ((uint8_t *) "1", 1, NULL); - BSON_ASSERT (!b); - - b = bson_new_from_json ((uint8_t *) "*", 1, NULL); - BSON_ASSERT (!b); - - b = bson_new_from_json ((uint8_t *) "", 0, NULL); - BSON_ASSERT (!b); - - b = bson_new_from_json ((uint8_t *) "asdfasdf", -1, NULL); - BSON_ASSERT (!b); - - b = bson_new_from_json ((uint8_t *) "{\"a\":*}", -1, NULL); - BSON_ASSERT (!b); -} - -static ssize_t -test_bson_json_read_bad_cb_helper (void *_ctx, uint8_t *buf, size_t len) -{ - return -1; -} - -static void -test_bson_json_read_bad_cb (void) -{ - bson_error_t error; - bson_json_reader_t *reader; - int r; - bson_t bson = BSON_INITIALIZER; - - reader = bson_json_reader_new ( - NULL, &test_bson_json_read_bad_cb_helper, NULL, false, 0); - - r = bson_json_reader_read (reader, &bson, &error); - - BSON_ASSERT (r == -1); - BSON_ASSERT (error.domain == BSON_ERROR_JSON); - BSON_ASSERT (error.code == BSON_JSON_ERROR_READ_CB_FAILURE); - - bson_json_reader_destroy (reader); - bson_destroy (&bson); -} - -static ssize_t -test_bson_json_read_invalid_helper (void *ctx, uint8_t *buf, size_t len) -{ - BSON_ASSERT (len); - *buf = 0x80; /* no UTF-8 sequence can start with 0x80 */ - return 1; -} - -static void -test_bson_json_read_invalid (void) -{ - bson_error_t error; - bson_json_reader_t *reader; - int r; - bson_t bson = BSON_INITIALIZER; - - reader = bson_json_reader_new ( - NULL, test_bson_json_read_invalid_helper, NULL, false, 0); - - r = bson_json_reader_read (reader, &bson, &error); - - BSON_ASSERT (r == -1); - BSON_ASSERT (error.domain == BSON_ERROR_JSON); - BSON_ASSERT (error.code == BSON_JSON_ERROR_READ_CORRUPT_JS); - - bson_json_reader_destroy (reader); - bson_destroy (&bson); -} - -static void -test_bson_json_number_long (void) -{ - bson_error_t error; - bson_iter_t iter; - bson_t b; - bool r; - - r = bson_init_from_json ( - &b, "{\"key\": {\"$numberLong\": \"4611686018427387904\"}}", -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (bson_iter_find (&iter, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - BSON_ASSERT (bson_iter_int64 (&iter) == 4611686018427387904LL); - bson_destroy (&b); - - BSON_ASSERT (!bson_init_from_json ( - &b, "{\"key\": {\"$numberLong\": \"461168601abcd\"}}", -1, &error)); - BSON_ASSERT (!bson_init_from_json ( - &b, "{\"key\": {\"$numberLong\": \"461168601abcd\"}}", -1, &error)); - - /* INT64_MAX */ - r = bson_init_from_json ( - &b, "{\"x\": {\"$numberLong\": \"9223372036854775807\"}}", -1, &error); - ASSERT_OR_PRINT (r, error); - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 (bson_iter_int64 (&iter), ==, (int64_t) INT64_MAX); - bson_destroy (&b); - - /* INT64_MIN */ - r = bson_init_from_json ( - &b, "{\"x\": {\"$numberLong\": \"-9223372036854775808\"}}", -1, &error); - ASSERT_OR_PRINT (r, error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 (bson_iter_int64 (&iter), ==, (int64_t) INT64_MIN); - bson_destroy (&b); - - /* INT64_MAX + 1 */ - r = bson_init_from_json ( - &b, "{\"x\": {\"$numberLong\": \"9223372036854775808\"}}", -1, &error); - - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"9223372036854775808\" is out of range"); - - memset (&error, 0, sizeof error); - - /* INT64_MIN - 1 */ - r = bson_init_from_json ( - &b, "{\"x\": {\"$numberLong\": \"-9223372036854775809\"}}", -1, &error); - - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"-9223372036854775809\" is out of range"); - - memset (&error, 0, sizeof error); - - r = bson_init_from_json ( - &b, "{\"x\": {\"$numberLong\": \"10000000000000000000\"}}", -1, &error); - - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"10000000000000000000\" is out of range"); - - memset (&error, 0, sizeof error); - - /* INT64_MIN - 2 */ - r = bson_init_from_json (&b, "{\"x\": -10000000000000000000}", -1, &error); - - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"-10000000000000000000\" is out of range"); -} - -static void -test_bson_json_number_long_zero (void) -{ - bson_error_t error; - bson_iter_t iter; - const char *json = "{ \"key\": { \"$numberLong\": \"0\" }}"; - bson_t b; - bool r; - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (bson_iter_find (&iter, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - BSON_ASSERT (bson_iter_int64 (&iter) == 0); - bson_destroy (&b); -} - -static void -test_bson_json_code (void) -{ - const char *json_code = "{\"a\": {\"$code\": \"b\"}}"; - bson_t *bson_code = BCON_NEW ("a", BCON_CODE ("b")); - - const char *json_code_w_nulls = "{\"a\": {\"$code\": \"b\\u0000c\\u0000\"}}"; - bson_t *bson_code_w_nulls = BCON_NEW ("a", BCON_CODE ("b\0c\0")); - - const char *json_code_w_scope = "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {\"var\": 1}}}"; - bson_t *scope1 = BCON_NEW ("var", BCON_INT32 (1)); - bson_t *bson_code_w_scope = BCON_NEW ("a", BCON_CODEWSCOPE ("b", scope1)); - - const char *json_code_w_scope_special = - "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {\"var2\": {\"$numberLong\": \"2\"}}}}"; - bson_t *scope2 = BCON_NEW ("var2", BCON_INT64 (2)); - bson_t *bson_code_w_scope_special = - BCON_NEW ("a", BCON_CODEWSCOPE ("b", scope2)); - - const char *json_2_codes_w_scope = - "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {\"var\": 1}}," - " \"c\": {\"$code\": \"d\", " - " \"$scope\": {\"var2\": {\"$numberLong\": \"2\"}}}}"; - bson_t *bson_2_codes_w_scope = BCON_NEW ( - "a", BCON_CODEWSCOPE ("b", scope1), "c", BCON_CODEWSCOPE ("d", scope2)); - - const char *json_code_then_regular = - "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {\"var\": 1}}," - " \"c\": {\"key1\": \"value\", " - " \"subdoc\": {\"key2\": \"value2\"}}}"; - - bson_t *bson_code_then_regular = BCON_NEW ("a", - BCON_CODEWSCOPE ("b", scope1), - "c", - "{", - "key1", - BCON_UTF8 ("value"), - "subdoc", - "{", - "key2", - BCON_UTF8 ("value2"), - "}", - "}"); - - const char *json_code_w_scope_reverse = "{\"a\": {\"$scope\": {\"var\": 1}, " - " \"$code\": \"b\"}}"; - bson_t *bson_code_w_scope_reverse = - BCON_NEW ("a", BCON_CODEWSCOPE ("b", scope1)); - - const char *json_code_w_scope_nest = "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {\"var\": {}}}}"; - bson_t *scope3 = BCON_NEW ("var", "{", "}"); - bson_t *bson_code_w_scope_nest = - BCON_NEW ("a", BCON_CODEWSCOPE ("b", scope3)); - - const char *json_code_w_scope_nest_deep = - "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {\"arr\": [1, 2], \"d\": {}," - " \"n\": {\"$numberLong\": \"1\"}," - " \"d2\": {\"x\": 1, \"d3\": {\"z\": 3}}}}}"; - - bson_t *scope_deep = BCON_NEW ("arr", - "[", - BCON_INT32 (1), - BCON_INT32 (2), - "]", - "d", - "{", - "}", - "n", - BCON_INT64 (1), - "d2", - "{", - "x", - BCON_INT32 (1), - "d3", - "{", - "z", - BCON_INT32 (3), - "}", - "}"); - - bson_t *bson_code_w_scope_nest_deep = - BCON_NEW ("a", BCON_CODEWSCOPE ("b", scope_deep)); - - const char *json_code_w_empty_scope = "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {}}}"; - bson_t *empty = bson_new (); - bson_t *bson_code_w_empty_scope = - BCON_NEW ("a", BCON_CODEWSCOPE ("b", empty)); - - const char *json_code_in_scope = - "{\"a\": {\"$code\": \"b\", " - " \"$scope\": {\"x\": {\"$code\": \"c\"}}}}"; - - bson_t *code_in_scope = BCON_NEW ("x", "{", "$code", BCON_UTF8 ("c"), "}"); - bson_t *bson_code_in_scope = - BCON_NEW ("a", BCON_CODEWSCOPE ("b", code_in_scope)); - - typedef struct { - const char *json; - bson_t *expected_bson; - } code_test_t; - - code_test_t tests[] = { - {json_code, bson_code}, - {json_code_w_nulls, bson_code_w_nulls}, - {json_code_w_scope, bson_code_w_scope}, - {json_code_w_scope_special, bson_code_w_scope_special}, - {json_code_then_regular, bson_code_then_regular}, - {json_2_codes_w_scope, bson_2_codes_w_scope}, - {json_code_w_scope_reverse, bson_code_w_scope_reverse}, - {json_code_w_scope_nest, bson_code_w_scope_nest}, - {json_code_w_scope_nest_deep, bson_code_w_scope_nest_deep}, - {json_code_w_empty_scope, bson_code_w_empty_scope}, - {json_code_in_scope, bson_code_in_scope}, - }; - - int n_tests = sizeof (tests) / sizeof (code_test_t); - int i; - bson_t b; - bool r; - bson_error_t error; - - for (i = 0; i < n_tests; i++) { - r = bson_init_from_json (&b, tests[i].json, -1, &error); - if (!r) { - fprintf (stderr, "%s\n", error.message); - } - - BSON_ASSERT (r); - bson_eq_bson (&b, tests[i].expected_bson); - bson_destroy (&b); - } - - for (i = 0; i < n_tests; i++) { - bson_destroy (tests[i].expected_bson); - } - - bson_destroy (scope1); - bson_destroy (scope2); - bson_destroy (scope3); - bson_destroy (scope_deep); - bson_destroy (code_in_scope); - bson_destroy (empty); -} - -static void -test_bson_json_code_errors (void) -{ - bson_error_t error; - bson_t b; - bool r; - size_t i; - - typedef struct { - const char *json; - const char *error_message; - } code_error_test_t; - - code_error_test_t tests[] = { - {"{\"a\": {\"$scope\": {}}", "Missing $code after $scope"}, - {"{\"a\": {\"$scope\": {}, \"$x\": 1}", "Invalid key \"$x\""}, - {"{\"a\": {\"$scope\": {\"a\": 1}}", "Missing $code after $scope"}, - {"{\"a\": {\"$code\": \"\", \"$scope\": \"a\"}}", - "Invalid read of \"a\""}, - {"{\"a\": {\"$code\": \"\", \"$scope\": 1}}", - "Unexpected integer 1 in state \"IN_BSON_TYPE_SCOPE_STARTMAP\""}, - {"{\"a\": {\"$code\": \"\", \"$scope\": []}}", "Invalid read of \"[\""}, - {"{\"a\": {\"$code\": \"\", \"x\": 1}}", - "Invalid key \"x\". Looking for values for type \"code\""}, - {"{\"a\": {\"$code\": \"\", \"$x\": 1}}", "Invalid key \"$x\""}, - {"{\"a\": {\"$code\": \"\", \"$numberLong\": \"1\"}}", - "Invalid key \"$numberLong\""}, - }; - - for (i = 0; i < sizeof (tests) / (sizeof (code_error_test_t)); i++) { - r = bson_init_from_json (&b, tests[i].json, -1, &error); - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - tests[i].error_message); - } -} - -static const bson_oid_t * -oid_zero (void) -{ - static bool initialized = false; - static bson_oid_t oid; - - if (!initialized) { - bson_oid_init_from_string (&oid, "000000000000000000000000"); - initialized = true; - } - - return &oid; -} - -static void -test_bson_json_dbref (void) -{ - bson_error_t error; - - const char *json_with_objectid = - "{ \"key\": {" - "\"$ref\": \"collection\"," - "\"$id\": {\"$oid\": \"000000000000000000000000\"}}}"; - - bson_t *bson_with_objectid = BCON_NEW ("key", - "{", - "$ref", - BCON_UTF8 ("collection"), - "$id", - BCON_OID (oid_zero ()), - "}"); - - const char *json_with_int_id = "{ \"key\": {" - "\"$ref\": \"collection\"," - "\"$id\": 1}}"; - - bson_t *bson_with_int_id = BCON_NEW ( - "key", "{", "$ref", BCON_UTF8 ("collection"), "$id", BCON_INT32 (1), "}"); - - const char *json_with_subdoc_id = "{ \"key\": {" - "\"$ref\": \"collection\"," - "\"$id\": {\"a\": 1}}}"; - - bson_t *bson_with_subdoc_id = BCON_NEW ("key", - "{", - "$ref", - BCON_UTF8 ("collection"), - "$id", - "{", - "a", - BCON_INT32 (1), - "}", - "}"); - - const char *json_with_metadata = "{ \"key\": {" - "\"$ref\": \"collection\"," - "\"$id\": 1," - "\"meta\": true}}"; - - bson_t *bson_with_metadata = BCON_NEW ("key", - "{", - "$ref", - BCON_UTF8 ("collection"), - "$id", - BCON_INT32 (1), - "meta", - BCON_BOOL (true), - "}"); - - bson_t b; - bool r; - - typedef struct { - const char *json; - bson_t *expected_bson; - } dbref_test_t; - - dbref_test_t tests[] = { - {json_with_objectid, bson_with_objectid}, - {json_with_int_id, bson_with_int_id}, - {json_with_subdoc_id, bson_with_subdoc_id}, - {json_with_metadata, bson_with_metadata}, - }; - - int n_tests = sizeof (tests) / sizeof (dbref_test_t); - int i; - - for (i = 0; i < n_tests; i++) { - r = bson_init_from_json (&b, tests[i].json, -1, &error); - if (!r) { - fprintf (stderr, "%s\n", error.message); - } - - BSON_ASSERT (r); - bson_eq_bson (&b, tests[i].expected_bson); - bson_destroy (&b); - } - - for (i = 0; i < n_tests; i++) { - bson_destroy (tests[i].expected_bson); - } -} - -static void -test_bson_json_uescape (void) -{ - bson_error_t error; - bson_t b; - bool r; - - const char *euro = "{ \"euro\": \"\\u20AC\"}"; - bson_t *bson_euro = BCON_NEW ("euro", BCON_UTF8 ("\xE2\x82\xAC")); - - const char *crlf = "{ \"crlf\": \"\\r\\n\"}"; - bson_t *bson_crlf = BCON_NEW ("crlf", BCON_UTF8 ("\r\n")); - - const char *quote = "{ \"quote\": \"\\\"\"}"; - bson_t *bson_quote = BCON_NEW ("quote", BCON_UTF8 ("\"")); - - const char *backslash = "{ \"backslash\": \"\\\\\"}"; - bson_t *bson_backslash = BCON_NEW ("backslash", BCON_UTF8 ("\\")); - - const char *empty = "{ \"\": \"\"}"; - bson_t *bson_empty = BCON_NEW ("", BCON_UTF8 ("")); - - const char *escapes = "{ \"escapes\": \"\\f\\b\\t\"}"; - bson_t *bson_escapes = BCON_NEW ("escapes", BCON_UTF8 ("\f\b\t")); - - const char *nil_byte = "{ \"nil\": \"\\u0000\"}"; - bson_t *bson_nil_byte = bson_new (); /* we'll append "\0" to it, below */ - - typedef struct { - const char *json; - bson_t *expected_bson; - } uencode_test_t; - - uencode_test_t tests[] = { - {euro, bson_euro}, - {crlf, bson_crlf}, - {quote, bson_quote}, - {backslash, bson_backslash}, - {empty, bson_empty}, - {escapes, bson_escapes}, - {nil_byte, bson_nil_byte}, - }; - - int n_tests = sizeof (tests) / sizeof (uencode_test_t); - int i; - - bson_append_utf8 (bson_nil_byte, "nil", -1, "\0", 1); - - for (i = 0; i < n_tests; i++) { - r = bson_init_from_json (&b, tests[i].json, -1, &error); - - if (!r) { - fprintf (stderr, "%s\n", error.message); - } - - BSON_ASSERT (r); - bson_eq_bson (&b, tests[i].expected_bson); - bson_destroy (&b); - } - - for (i = 0; i < n_tests; i++) { - bson_destroy (tests[i].expected_bson); - } -} - -static void -test_bson_json_uescape_key (void) -{ - bson_error_t error; - bson_t b; - bool r; - - bson_t *bson_euro = BCON_NEW ("\xE2\x82\xAC", BCON_UTF8 ("euro")); - - r = bson_init_from_json (&b, "{ \"\\u20AC\": \"euro\"}", -1, &error); - BSON_ASSERT (r); - bson_eq_bson (&b, bson_euro); - - bson_destroy (&b); - bson_destroy (bson_euro); -} - -static void -test_bson_json_uescape_bad (void) -{ - bson_error_t error; - bson_t b; - bool r; - - r = bson_init_from_json (&b, "{ \"bad\": \"\\u1\"}", -1, &error); - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "UESCAPE_TOOSHORT"); -} - - -static void -test_bson_json_int32 (void) -{ - bson_t b; - bson_iter_t iter; - bson_error_t error; - - /* INT32_MAX */ - ASSERT_OR_PRINT ( - bson_init_from_json (&b, "{ \"x\": 2147483647 }", -1, &error), error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&iter)); - ASSERT_CMPINT32 (bson_iter_int32 (&iter), ==, (int32_t) 2147483647LL); - bson_destroy (&b); - - /* INT32_MIN */ - ASSERT_OR_PRINT ( - bson_init_from_json (&b, "{ \"x\": -2147483648 }", -1, &error), error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&iter)); - ASSERT_CMPINT32 (bson_iter_int32 (&iter), ==, (int32_t) -2147483648LL); - bson_destroy (&b); - - /* INT32_MAX + 1 */ - ASSERT_OR_PRINT ( - bson_init_from_json (&b, "{ \"x\": 2147483648 }", -1, &error), error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 (bson_iter_int64 (&iter), ==, (int64_t) 2147483648LL); - bson_destroy (&b); - - /* INT32_MIN - 1 */ - ASSERT_OR_PRINT ( - bson_init_from_json (&b, "{ \"x\": -2147483649 }", -1, &error), error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 (bson_iter_int64 (&iter), ==, (int64_t) -2147483649LL); - bson_destroy (&b); -} - - -static void -test_bson_json_int64 (void) -{ - bson_t b; - bson_iter_t iter; - bson_error_t error; - - /* INT64_MAX */ - ASSERT_OR_PRINT ( - bson_init_from_json (&b, "{ \"x\": 9223372036854775807 }", -1, &error), - error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 ( - bson_iter_int64 (&iter), ==, (int64_t) 9223372036854775807LL); - bson_destroy (&b); - - /* INT64_MIN */ - ASSERT_OR_PRINT ( - bson_init_from_json (&b, "{ \"x\": -9223372036854775808 }", -1, &error), - error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 (bson_iter_int64 (&iter), ==, (int64_t) INT64_MIN); - bson_destroy (&b); - - /* INT64_MAX + 1 */ - BSON_ASSERT ( - !bson_init_from_json (&b, "{ \"x\": 9223372036854775808 }", -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"9223372036854775808\" is out of range"); - - memset (&error, 0, sizeof error); - - /* INT64_MIN - 1 */ - BSON_ASSERT ( - !bson_init_from_json (&b, "{ \"x\": -9223372036854775809 }", -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"-9223372036854775809\" is out of range"); - - memset (&error, 0, sizeof error); - - BSON_ASSERT ( - !bson_init_from_json (&b, "{ \"x\": 10000000000000000000 }", -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"10000000000000000000\" is out of range"); - - memset (&error, 0, sizeof error); - - /* INT64_MIN - 2 */ - BSON_ASSERT (!bson_init_from_json ( - &b, "{ \"x\": -10000000000000000000 }", -1, &error)); - - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "Number \"-10000000000000000000\" is out of range"); -} - - -static void -test_bson_json_double (void) -{ - bson_t b; - bson_error_t error; - bson_iter_t iter; - - ASSERT_OR_PRINT (bson_init_from_json (&b, "{ \"x\": 1 }", -1, &error), - error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT32 (&iter)); - ASSERT_CMPINT32 (bson_iter_int32 (&iter), ==, (int32_t) 1); - bson_destroy (&b); - - ASSERT_OR_PRINT ( - bson_init_from_json (&b, "{ \"x\": 4294967296 }", -1, &error), error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_INT64 (&iter)); - ASSERT_CMPINT64 (bson_iter_int64 (&iter), ==, (int64_t) 4294967296); - bson_destroy (&b); - - ASSERT_OR_PRINT (bson_init_from_json (&b, "{ \"x\": 1.0 }", -1, &error), - error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_DOUBLE (&iter)); - ASSERT_CMPDOUBLE (bson_iter_double (&iter), ==, 1.0); - bson_destroy (&b); - - ASSERT_OR_PRINT (bson_init_from_json (&b, "{ \"x\": 0.0 }", -1, &error), - error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_DOUBLE (&iter)); - ASSERT_CMPDOUBLE (bson_iter_double (&iter), ==, 0.0); - bson_destroy (&b); - - ASSERT_OR_PRINT (bson_init_from_json (&b, "{ \"x\": -0.0 }", -1, &error), - error); - - BSON_ASSERT (bson_iter_init_find (&iter, &b, "x")); - BSON_ASSERT (BSON_ITER_HOLDS_DOUBLE (&iter)); - ASSERT_CMPDOUBLE (bson_iter_double (&iter), ==, 0.0); - -/* check that "x" is -0.0. signbit not available on Solaris or VS 2010 */ -#if !defined(__sun) && (!defined(_MSC_VER) || (_MSC_VER >= 1800)) - BSON_ASSERT (signbit (bson_iter_double (&iter))); -#endif - - bson_destroy (&b); -} - - -static void -test_bson_json_double_overflow (void) -{ - const char *nums[] = {"2e400", "-2e400", NULL}; - const char **p; - char *j; - bson_error_t error; - bson_t b; - - for (p = nums; *p; p++) { - j = bson_strdup_printf ("{ \"d\" : %s }", *p); - BSON_ASSERT (!bson_init_from_json (&b, j, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "out of range"); - - bson_free (j); - memset (&error, 0, sizeof error); - - /* same test with canonical Extended JSON */ - j = bson_strdup_printf ("{ \"d\" : { \"$numberDouble\" : \"%s\" } }", *p); - BSON_ASSERT (!bson_init_from_json (&b, j, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_INVALID_PARAM, - "out of range"); - - bson_free (j); - } -} - - -static void -test_bson_json_nan (void) -{ - bson_error_t error; - bson_t b; - double d; - - /* should parse any capitalization of NaN */ - const char *jsons[] = {"{ \"d\": NaN }", - "{ \"d\": nAn }", - "{ \"d\": {\"$numberDouble\": \"NaN\" } }", - "{ \"d\": {\"$numberDouble\": \"nAn\" } }", - NULL}; - - /* test our patch to JSONSL that updates its state while parsing "n..." */ - const char *bad[] = {"{ \"d\": NaNn }", - "{ \"d\": nul }", - "{ \"d\": nulll }", - "{ \"d\": nulll }", - "{ \"d\": foo }", - "{ \"d\": NULL }", - "{ \"d\": nall }", - NULL}; - - const char *partial[] = {"{ \"d\": nu", "{ \"d\": na", "{ \"d\": n", NULL}; - const char **j; - - for (j = jsons; *j; j++) { - BSON_ASSERT (bson_init_from_json (&b, *j, -1, &error)); - BSON_ASSERT (BCON_EXTRACT (&b, "d", BCONE_DOUBLE (d))); - BSON_ASSERT (d != d); - bson_destroy (&b); - } - - for (j = bad; *j; j++) { - BSON_ASSERT (!bson_init_from_json (&b, *j, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "Got parse error at"); - memset (&error, 0, sizeof error); - } - - for (j = partial; *j; j++) { - BSON_ASSERT (!bson_init_from_json (&b, *j, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "Incomplete JSON"); - memset (&error, 0, sizeof error); - } -} - -static void -test_bson_json_infinity (void) -{ - bson_error_t error; - bson_t b; - double d; - - /* should parse any capitalization of Infinity */ - const char *infs[] = {"{ \"d\": Infinity }", - "{ \"d\": infinity }", - "{ \"d\": inFINIty }", - NULL}; - - const char *negs[] = {"{ \"d\": -Infinity }", - "{ \"d\": -infinity }", - "{ \"d\": -inFINIty }", - NULL}; - - const char *bad[] = {"{ \"d\": Infinityy }", - "{ \"d\": Infinit }", - "{ \"d\": -Infinityy }", - "{ \"d\": -Infinit }", - "{ \"d\": infinityy }", - "{ \"d\": infinit }", - "{ \"d\": -infinityy }", - "{ \"d\": -infinit }", - NULL}; - - const char *partial[] = {"{ \"d\": In", "{ \"d\": I", "{ \"d\": i", NULL}; - const char **j; - - for (j = infs; *j; j++) { - BSON_ASSERT (bson_init_from_json (&b, *j, -1, &error)); - BSON_ASSERT (BCON_EXTRACT (&b, "d", BCONE_DOUBLE (d))); - /* Infinite */ - BSON_ASSERT (d == d && ((d - d) != (d - d))); - bson_destroy (&b); - } - - for (j = negs; *j; j++) { - BSON_ASSERT (bson_init_from_json (&b, *j, -1, &error)); - BSON_ASSERT (BCON_EXTRACT (&b, "d", BCONE_DOUBLE (d))); - /* Infinite */ - BSON_ASSERT (d == d && ((d - d) != (d - d))); - BSON_ASSERT (d < 0); - bson_destroy (&b); - } - - for (j = bad; *j; j++) { - BSON_ASSERT (!bson_init_from_json (&b, *j, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "Got parse error at"); - memset (&error, 0, sizeof error); - } - - for (j = partial; *j; j++) { - BSON_ASSERT (!bson_init_from_json (&b, *j, -1, &error)); - ASSERT_ERROR_CONTAINS (error, - BSON_ERROR_JSON, - BSON_JSON_ERROR_READ_CORRUPT_JS, - "Incomplete JSON"); - memset (&error, 0, sizeof error); - } -} - - -static void -test_bson_json_null (void) -{ - bson_error_t error; - bson_t b; - - const char *json = "{ \"x\": null }"; - BSON_ASSERT (bson_init_from_json (&b, json, -1, &error)); - BSON_ASSERT (BCON_EXTRACT (&b, "x", BCONE_NULL)); - bson_destroy (&b); -} - - -static void -test_bson_json_empty_final_object (void) -{ - const char *json = "{\"a\": {\"b\": {}}}"; - bson_t *bson = BCON_NEW ("a", "{", "b", "{", "}", "}"); - bson_t b; - bool r; - bson_error_t error; - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) { - fprintf (stderr, "%s\n", error.message); - } - - BSON_ASSERT (r); - bson_eq_bson (&b, bson); - - bson_destroy (&b); - bson_destroy (bson); -} - -static void -test_bson_json_number_decimal (void) -{ - bson_error_t error; - bson_iter_t iter; - bson_decimal128_t decimal128; - const char *json = "{ \"key\" : { \"$numberDecimal\": \"11\" }}"; - bson_t b; - bool r; - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - BSON_ASSERT (bson_iter_init (&iter, &b)); - BSON_ASSERT (bson_iter_find (&iter, "key")); - BSON_ASSERT (BSON_ITER_HOLDS_DECIMAL128 (&iter)); - bson_iter_decimal128 (&iter, &decimal128); - BSON_ASSERT (decimal128.low == 11); - BSON_ASSERT (decimal128.high == 0x3040000000000000ULL); - bson_destroy (&b); -} - -static void -test_bson_json_inc (void) -{ - /* test that reproduces a bug with special mode checking. Specifically, - * mistaking '$inc' for '$id' - * - * From https://github.com/mongodb/mongo-c-driver/issues/62 - */ - bson_error_t error; - const char *json = "{ \"$inc\" : { \"ref\" : 1 } }"; - bson_t b; - bool r; - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - bson_destroy (&b); -} - -static void -test_bson_json_array (void) -{ - bson_error_t error; - const char *json = "[ 0, 1, 2, 3 ]"; - bson_t b, compare; - bool r; - - bson_init (&compare); - bson_append_int32 (&compare, "0", 1, 0); - bson_append_int32 (&compare, "1", 1, 1); - bson_append_int32 (&compare, "2", 1, 2); - bson_append_int32 (&compare, "3", 1, 3); - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - - bson_eq_bson (&b, &compare); - bson_destroy (&compare); - bson_destroy (&b); -} - -static void -test_bson_json_array_single (void) -{ - bson_error_t error; - const char *json = "[ 0 ]"; - bson_t b, compare; - bool r; - - bson_init (&compare); - bson_append_int32 (&compare, "0", 1, 0); - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - - bson_eq_bson (&b, &compare); - bson_destroy (&compare); - bson_destroy (&b); -} - -static void -test_bson_json_array_int64 (void) -{ - bson_error_t error; - const char *json = "[ { \"$numberLong\" : \"123\" }," - " { \"$numberLong\" : \"42\" } ]"; - bson_t b, compare; - bool r; - - bson_init (&compare); - bson_append_int64 (&compare, "0", 1, 123); - bson_append_int64 (&compare, "1", 1, 42); - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - - bson_eq_bson (&b, &compare); - bson_destroy (&compare); - bson_destroy (&b); -} - -static void -test_bson_json_array_subdoc (void) -{ - bson_error_t error; - const char *json = "[ { \"a\" : 123 } ]"; - bson_t b, compare, subdoc; - bool r; - - bson_init (&compare); - bson_init (&subdoc); - bson_append_int32 (&subdoc, "a", 1, 123); - bson_append_document (&compare, "0", 1, &subdoc); - - r = bson_init_from_json (&b, json, -1, &error); - if (!r) - fprintf (stderr, "%s\n", error.message); - BSON_ASSERT (r); - - bson_eq_bson (&b, &compare); - bson_destroy (&subdoc); - bson_destroy (&compare); - bson_destroy (&b); -} - -static void -test_bson_json_date_check (const char *json, int64_t value) -{ - bson_error_t error = {0}; - bson_t b, compare; - bool r; - - bson_init (&compare); - - BSON_APPEND_DATE_TIME (&compare, "dt", value); - - r = bson_init_from_json (&b, json, -1, &error); - - if (!r) { - fprintf (stderr, "%s\n", error.message); - } - - BSON_ASSERT (r); - - bson_eq_bson (&b, &compare); - bson_destroy (&compare); - bson_destroy (&b); -} - - -static void -test_bson_json_date_error (const char *json, const char *msg) -{ - bson_error_t error = {0}; - bson_t b; - bool r; - r = bson_init_from_json (&b, json, -1, &error); - if (r) { - fprintf (stderr, "parsing %s should fail\n", json); - } - BSON_ASSERT (!r); - ASSERT_ERROR_CONTAINS ( - error, BSON_ERROR_JSON, BSON_JSON_ERROR_READ_INVALID_PARAM, msg); -} - -static void -test_bson_json_date (void) -{ - /* to make a timestamp, "python3 -m pip install iso8601" and in Python 3: - * iso8601.parse_date("2016-12-13T12:34:56.123Z").timestamp() * 1000 - */ - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : \"2016-12-13T12:34:56.123Z\" } }", - 1481632496123); - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T00:00:00.000Z\" } }", 0); - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : \"1969-12-31T16:00:00.000-0800\" } }", 0); - - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000+01:00\" } }", - "Could not parse"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:30:\" } }", - "reached end of date while looking for seconds"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:+01:00\" } }", - "seconds is required"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:30:00.\" } }", - "reached end of date while looking for milliseconds"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.+01:00\" } }", - "milliseconds is required"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"foo-01-01T00:00:00.000Z\" } }", - "year must be an integer"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-foo-01T00:00:00.000Z\" } }", - "month must be an integer"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-fooT00:00:00.000Z\" } }", - "day must be an integer"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01Tfoo:00:00.000Z\" } }", - "hour must be an integer"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T00:foo:00.000Z\" } }", - "minute must be an integer"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T00:00:foo.000Z\" } }", - "seconds must be an integer"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000\" } }", - "timezone is required"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000X\" } }", - "timezone is required"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000+1\" } }", - "could not parse timezone"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000+xx00\" } }", - "could not parse timezone"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000+2400\" } }", - "timezone hour must be at most 23"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000-2400\" } }", - "timezone hour must be at most 23"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000+0060\" } }", - "timezone minute must be at most 59"); - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : \"1970-01-01T01:00:00.000-0060\" } }", - "timezone minute must be at most 59"); -} - - -static void -test_bson_json_date_legacy (void) -{ - test_bson_json_date_check ("{ \"dt\" : { \"$date\" : 0 } }", 0); - test_bson_json_date_check ("{ \"dt\" : { \"$date\" : 1356351330500 } }", - 1356351330500); - test_bson_json_date_check ("{ \"dt\" : { \"$date\" : -62135593139000 } }", - -62135593139000); - - /* INT64_MAX */ - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : 9223372036854775807 } }", INT64_MAX); - - /* INT64_MIN */ - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : -9223372036854775808 } }", INT64_MIN); - - /* INT64_MAX + 1 */ - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : 9223372036854775808 } }", - "Number \"9223372036854775808\" is out of range"); - - /* INT64_MIN - 1 */ - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : -9223372036854775809 } }", - "Number \"-9223372036854775809\" is out of range"); - - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : 10000000000000000000 } }", - "Number \"10000000000000000000\" is out of range"); - - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : -10000000000000000000 } }", - "Number \"-10000000000000000000\" is out of range"); -} - - -static void -test_bson_json_date_numberlong (void) -{ - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : {\"$numberLong\": \"0\" } } }", 0); - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : {\"$numberLong\": \"1356351330500\" } } }", - 1356351330500); - test_bson_json_date_check ( - "{ \"dt\" : { \"$date\" : { \"$numberLong\" : \"-62135593139000\" } } }", - -62135593139000); - - /* INT64_MAX */ - test_bson_json_date_check ("{ \"dt\" : { \"$date\" : { \"$numberLong\" " - ": \"9223372036854775807\" } } }", - INT64_MAX); - - /* INT64_MIN */ - test_bson_json_date_check ("{ \"dt\" : { \"$date\" : { \"$numberLong\" " - ": \"-9223372036854775808\" } } }", - INT64_MIN); - - /* INT64_MAX + 1 */ - test_bson_json_date_error ("{ \"dt\" : { \"$date\" : { \"$numberLong\" " - ": \"9223372036854775808\" } } }", - "Number \"9223372036854775808\" is out of range"); - - /* INT64_MIN - 1 */ - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : { \"$numberLong\" " - ": \"-9223372036854775809\" } } }", - "Number \"-9223372036854775809\" is out of range"); - - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : { \"$numberLong\" " - ": \"10000000000000000000\" } } }", - "Number \"10000000000000000000\" is out of range"); - - test_bson_json_date_error ( - "{ \"dt\" : { \"$date\" : { \"$numberLong\" " - ": \"-10000000000000000000\" } } }", - "Number \"-10000000000000000000\" is out of range"); -} - - -static void -test_bson_json_timestamp (void) -{ - bson_error_t error = {0}; - bson_t b, compare; - bool r; - - bson_init (&compare); - - BSON_APPEND_TIMESTAMP ( - &compare, "ts", (uint32_t) 1486785977, (uint32_t) 1234); - - r = bson_init_from_json ( - &b, - "{\"ts\": {\"$timestamp\": {\"t\": 1486785977, \"i\": 1234}}}", - -1, - &error); - - if (!r) { - fprintf (stderr, "%s\n", error.message); - } - - BSON_ASSERT (r); - - bson_eq_bson (&b, &compare); - bson_destroy (&compare); - bson_destroy (&b); -} - - -static void -test_bson_array_as_json (void) -{ - bson_t d = BSON_INITIALIZER; - size_t len; - char *str; - - str = bson_array_as_json (&d, &len); - BSON_ASSERT (0 == strcmp (str, "[ ]")); - BSON_ASSERT (len == 3); - bson_free (str); - - BSON_APPEND_INT32 (&d, "0", 1); - str = bson_array_as_json (&d, &len); - BSON_ASSERT (0 == strcmp (str, "[ 1 ]")); - BSON_ASSERT (len == 5); - bson_free (str); - - /* test corrupted bson */ - BSON_APPEND_UTF8 (&d, "1", "\x80"); /* bad UTF-8 */ - str = bson_array_as_json (&d, &len); - BSON_ASSERT (!str); - BSON_ASSERT (!len); - - bson_destroy (&d); -} - - -static void -test_bson_as_json_spacing (void) -{ - bson_t d = BSON_INITIALIZER; - size_t len; - char *str; - - str = bson_as_json (&d, &len); - BSON_ASSERT (0 == strcmp (str, "{ }")); - BSON_ASSERT (len == 3); - bson_free (str); - - BSON_APPEND_INT32 (&d, "a", 1); - str = bson_as_json (&d, &len); - BSON_ASSERT (0 == strcmp (str, "{ \"a\" : 1 }")); - BSON_ASSERT (len == 11); - bson_free (str); - - bson_destroy (&d); -} - - -static void -test_bson_json_errors (void) -{ - typedef const char *test_bson_json_error_t[2]; - test_bson_json_error_t tests[] = { - {"{\"x\": {\"$numberLong\": 1}}", - "Invalid state for integer read: INT64"}, - {"{\"x\": {\"$binary\": 1}}", "Unexpected integer 1 in type \"binary\""}, - {"{\"x\": {\"$numberInt\": true}}", - "Invalid read of boolean in state IN_BSON_TYPE"}, - {"{\"x\": {\"$dbPointer\": true}}", - "Invalid read of boolean in state IN_BSON_TYPE_DBPOINTER_STARTMAP"}, - {"{\"x\": {\"$numberInt\": \"8589934592\"}}", - "Invalid input string \"8589934592\", looking for INT32"}, - {0}, - }; - - bson_error_t error; - test_bson_json_error_t *p; - - for (p = tests; *(p[0]); p++) { - BSON_ASSERT (!bson_new_from_json ((const uint8_t *) (*p)[0], -1, &error)); - ASSERT_ERROR_CONTAINS ( - error, BSON_ERROR_JSON, BSON_JSON_ERROR_READ_INVALID_PARAM, (*p)[1]); - } -} - - -static void -test_bson_integer_width (void) -{ - const char *sd = "{\"v\":-1234567890123, \"x\":12345678901234}"; - char *match; - bson_error_t err; - bson_t *bs = bson_new_from_json ((const uint8_t *) sd, strlen (sd), &err); - - match = bson_as_json (bs, 0); - ASSERT_CMPSTR (match, "{ \"v\" : -1234567890123, \"x\" : 12345678901234 }"); - - bson_free (match); - bson_destroy (bs); -} - - -static void -test_bson_json_null_in_str (void) -{ - const char bad_json[] = "{\"a\":\"\0\"}"; - const char cdriver2305[] = "{\"\0"; - bson_error_t err; - ASSERT (!bson_new_from_json ( - (const uint8_t *) bad_json, sizeof (bad_json) - 1, &err)); - ASSERT_ERROR_CONTAINS ( - err, BSON_ERROR_JSON, BSON_JSON_ERROR_READ_CORRUPT_JS, "Got parse error"); - memset (&err, 0, sizeof err); - ASSERT (!bson_new_from_json ( - (const uint8_t *) cdriver2305, sizeof (cdriver2305) - 1, &err)); - ASSERT_ERROR_CONTAINS ( - err, BSON_ERROR_JSON, BSON_JSON_ERROR_READ_CORRUPT_JS, "Got parse error"); -} - -static char * -_single_to_double (const char *json) -{ - char *copy; - char *to_ret = copy = bson_malloc (strlen (json) + 1); - strcpy (copy, json); - while (*copy) { - if (*copy == '\'') { - *copy = '\"'; - } else { - copy++; - } - } - return to_ret; -} - -static void -_test_json_produces_multiple (const char *json_in, int err_expected, ...) -{ - bson_t bson_in = BSON_INITIALIZER; - bson_t *bson_expected; - bson_error_t err = {0}; - int ret; - va_list ap; - char *json = _single_to_double (json_in); - bson_json_reader_t *reader = - bson_json_data_reader_new (false /* ignored */, 512 /* buffer size */); - - va_start (ap, err_expected); - - bson_json_data_reader_ingest (reader, (uint8_t *) json, strlen (json)); - while ((ret = bson_json_reader_read (reader, &bson_in, &err)) == 1) { - bson_expected = va_arg (ap, bson_t *); - if (!bson_expected) { - fprintf (stderr, "Extra bson documents returned for input %s\n", json); - abort (); - } - if (bson_compare (&bson_in, bson_expected) != 0) { - char *expect = bson_as_json (bson_expected, NULL); - char *in = bson_as_json (&bson_in, NULL); - fprintf ( - stderr, "Got %s, but expected %s for input %s\n", expect, in, json); - bson_free (expect); - bson_free (in); - abort (); - } - bson_destroy (bson_expected); - bson_reinit (&bson_in); - } - - if (ret == 0) { - ASSERT (!err_expected); - } else { - ASSERT_OR_PRINT (err_expected, err); - } - - if (va_arg (ap, bson_t *) != NULL) { - fprintf (stderr, "Not all bson docs matched for input %s\n", json); - abort (); - } - - va_end (ap); - - bson_json_reader_destroy (reader); - bson_destroy (&bson_in); - bson_free (json); -} - -#define TEST_JSON_PRODUCES_MULTIPLE(_json, _has_err, ...) \ - _test_json_produces_multiple (_json, _has_err, __VA_ARGS__, NULL); - -static void -test_bson_as_json_multi_object (void) -{ - /* Test malformed documents that produce errors */ - TEST_JSON_PRODUCES_MULTIPLE ("[],[{''", 1, NULL); - - TEST_JSON_PRODUCES_MULTIPLE ("{},[{''", 1, NULL); - - - /* Test the desired multiple document behavior */ - TEST_JSON_PRODUCES_MULTIPLE ("{'a': 1} {'b': 1}", - 0, - BCON_NEW ("a", BCON_INT32 (1)), - BCON_NEW ("b", BCON_INT32 (1))); - - TEST_JSON_PRODUCES_MULTIPLE ( - "{}{}{}", 0, bson_new (), bson_new (), bson_new ()); - - /* Test strange behavior we may consider changing */ - - /* Combines both documents into one? */ - TEST_JSON_PRODUCES_MULTIPLE ( - "{'a': 1}, {'b': 1}", - 0, - BCON_NEW ("a", BCON_INT32 (1), "b", BCON_INT32 (1))); - - TEST_JSON_PRODUCES_MULTIPLE ( - "{},{'a': 1}", 0, BCON_NEW ("a", BCON_INT32 (1))); - - TEST_JSON_PRODUCES_MULTIPLE ( - "{},{},{'a': 1}", 0, BCON_NEW ("a", BCON_INT32 (1))); - - TEST_JSON_PRODUCES_MULTIPLE ( - "[],{'a': 1}", 0, BCON_NEW ("a", BCON_INT32 (1))); - - /* We support a root level array */ - TEST_JSON_PRODUCES_MULTIPLE ("[]", 0, bson_new ()); - - TEST_JSON_PRODUCES_MULTIPLE ( - "[{'x': 0}]", 0, BCON_NEW ("0", "{", "x", BCON_INT32 (0), "}")); - - /* Yet this fails */ - TEST_JSON_PRODUCES_MULTIPLE ("[],[{'a': 1}]", 1, NULL); -} - -void -test_json_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/as_json/x1000", test_bson_as_json_x1000); - TestSuite_Add (suite, "/bson/as_json/multi", test_bson_as_json_multi); - TestSuite_Add (suite, "/bson/as_json/string", test_bson_as_json_string); - TestSuite_Add (suite, "/bson/as_json/int32", test_bson_as_json_int32); - TestSuite_Add (suite, "/bson/as_json/int64", test_bson_as_json_int64); - TestSuite_Add (suite, "/bson/as_json/double", test_bson_as_json_double); -#if defined(NAN) && defined(INFINITY) - TestSuite_Add (suite, - "/bson/as_json/double/nonfinite", - test_bson_as_json_double_nonfinite); -#endif - TestSuite_Add (suite, "/bson/as_json/code", test_bson_as_json_code); - TestSuite_Add ( - suite, "/bson/as_json/date_time", test_bson_as_json_date_time); - TestSuite_Add (suite, "/bson/as_json/regex", test_bson_as_json_regex); - TestSuite_Add (suite, "/bson/as_json/symbol", test_bson_as_json_symbol); - TestSuite_Add (suite, "/bson/as_json/utf8", test_bson_as_json_utf8); - TestSuite_Add ( - suite, "/bson/as_json/dbpointer", test_bson_as_json_dbpointer); - TestSuite_Add (suite, - "/bson/as_canonical_extended_json/dbpointer", - test_bson_as_canonical_extended_json_dbpointer); - TestSuite_Add ( - suite, "/bson/as_json/stack_overflow", test_bson_as_json_stack_overflow); - TestSuite_Add (suite, "/bson/as_json/corrupt", test_bson_corrupt); - TestSuite_Add (suite, "/bson/as_json/corrupt_utf8", test_bson_corrupt_utf8); - TestSuite_Add ( - suite, "/bson/as_json/corrupt_binary", test_bson_corrupt_binary); - TestSuite_Add (suite, "/bson/as_json_spacing", test_bson_as_json_spacing); - TestSuite_Add (suite, "/bson/array_as_json", test_bson_array_as_json); - TestSuite_Add ( - suite, "/bson/json/allow_multiple", test_bson_json_allow_multiple); - TestSuite_Add ( - suite, "/bson/json/read/buffering", test_bson_json_read_buffering); - TestSuite_Add (suite, "/bson/json/read", test_bson_json_read); - TestSuite_Add (suite, "/bson/json/inc", test_bson_json_inc); - TestSuite_Add (suite, "/bson/json/array", test_bson_json_array); - TestSuite_Add ( - suite, "/bson/json/array/single", test_bson_json_array_single); - TestSuite_Add (suite, "/bson/json/array/int64", test_bson_json_array_int64); - TestSuite_Add ( - suite, "/bson/json/array/subdoc", test_bson_json_array_subdoc); - TestSuite_Add (suite, "/bson/json/date", test_bson_json_date); - TestSuite_Add (suite, "/bson/json/date/legacy", test_bson_json_date_legacy); - TestSuite_Add ( - suite, "/bson/json/date/long", test_bson_json_date_numberlong); - TestSuite_Add (suite, "/bson/json/timestamp", test_bson_json_timestamp); - TestSuite_Add (suite, "/bson/json/read/empty", test_bson_json_read_empty); - TestSuite_Add (suite, - "/bson/json/read/missing_complex", - test_bson_json_read_missing_complex); - TestSuite_Add (suite, - "/bson/json/read/invalid_binary", - test_bson_json_read_invalid_binary); - TestSuite_Add ( - suite, "/bson/json/read/invalid_json", test_bson_json_read_invalid_json); - TestSuite_Add (suite, "/bson/json/read/bad_cb", test_bson_json_read_bad_cb); - TestSuite_Add ( - suite, "/bson/json/read/invalid", test_bson_json_read_invalid); - TestSuite_Add ( - suite, "/bson/json/read/raw_utf8", test_bson_json_read_raw_utf8); - TestSuite_Add ( - suite, "/bson/json/read/corrupt_utf8", test_bson_json_read_corrupt_utf8); - TestSuite_Add (suite, - "/bson/json/read/corrupt_document", - test_bson_json_read_corrupt_document); - TestSuite_Add ( - suite, "/bson/json/read/decimal128", test_bson_json_read_decimal128); - TestSuite_Add ( - suite, "/bson/json/read/dbpointer", test_bson_json_read_dbpointer); - TestSuite_Add ( - suite, "/bson/json/read/legacy_regex", test_bson_json_read_legacy_regex); - TestSuite_Add (suite, - "/bson/json/read/regex_options_order", - test_bson_json_read_regex_options_order); - TestSuite_Add (suite, "/bson/json/read/binary", test_bson_json_read_binary); - TestSuite_Add (suite, - "/bson/json/read/legacy_binary", - test_bson_json_read_legacy_binary); - TestSuite_Add ( - suite, "/bson/json/read/file", test_json_reader_new_from_file); - TestSuite_Add ( - suite, "/bson/json/read/bad_path", test_json_reader_new_from_bad_path); - TestSuite_Add ( - suite, "/bson/json/read/$numberLong", test_bson_json_number_long); - TestSuite_Add (suite, - "/bson/json/read/$numberLong/zero", - test_bson_json_number_long_zero); - TestSuite_Add (suite, "/bson/json/read/code", test_bson_json_code); - TestSuite_Add ( - suite, "/bson/json/read/code/errors", test_bson_json_code_errors); - TestSuite_Add (suite, "/bson/json/read/dbref", test_bson_json_dbref); - TestSuite_Add (suite, "/bson/json/read/uescape", test_bson_json_uescape); - TestSuite_Add ( - suite, "/bson/json/read/uescape/key", test_bson_json_uescape_key); - TestSuite_Add ( - suite, "/bson/json/read/uescape/bad", test_bson_json_uescape_bad); - TestSuite_Add (suite, "/bson/json/read/int32", test_bson_json_int32); - TestSuite_Add (suite, "/bson/json/read/int64", test_bson_json_int64); - TestSuite_Add (suite, "/bson/json/read/double", test_bson_json_double); - TestSuite_Add ( - suite, "/bson/json/read/double/overflow", test_bson_json_double_overflow); - TestSuite_Add (suite, "/bson/json/read/double/nan", test_bson_json_nan); - TestSuite_Add ( - suite, "/bson/json/read/double/infinity", test_bson_json_infinity); - TestSuite_Add (suite, "/bson/json/read/null", test_bson_json_null); - TestSuite_Add ( - suite, "/bson/json/read/empty_final", test_bson_json_empty_final_object); - TestSuite_Add ( - suite, "/bson/as_json/decimal128", test_bson_as_json_decimal128); - TestSuite_Add ( - suite, "/bson/json/read/$numberDecimal", test_bson_json_number_decimal); - TestSuite_Add (suite, "/bson/json/errors", test_bson_json_errors); - TestSuite_Add (suite, "/bson/integer/width", test_bson_integer_width); - TestSuite_Add ( - suite, "/bson/json/read/null_in_str", test_bson_json_null_in_str); - TestSuite_Add ( - suite, "/bson/as_json/multi_object", test_bson_as_json_multi_object); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-oid.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-oid.c deleted file mode 100644 index 50f50b6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-oid.c +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#define BSON_INSIDE -#include "common-thread-private.h" -#undef BSON_INSIDE - -#ifdef BSON_HAVE_STRINGS_H -#include -#endif - -#include "TestSuite.h" - -#define N_THREADS 4 - -static const char *gTestOids[] = {"000000000000000000000000", - "010101010101010101010101", - "0123456789abcdefafcdef03", - "fcdeab182763817236817236", - "ffffffffffffffffffffffff", - "eeeeeeeeeeeeeeeeeeeeeeee", - "999999999999999999999999", - "111111111111111111111111", - NULL}; - -static const char *gTestOidsCase[] = {"0123456789ABCDEFAFCDEF03", - "FCDEAB182763817236817236", - "FFFFFFFFFFFFFFFFFFFFFFFF", - "EEEEEEEEEEEEEEEEEEEEEEEE", - "01234567890ACBCDEFabcdef", - NULL}; - -static const char *gTestOidsFail[] = {" ", - "abasdf ", - "asdfasdfasdfasdfasdf ", - "00000000000000000000000z", - "00187263123ghh21382812a8", - NULL}; - -static void * -oid_worker (void *data) -{ - bson_context_t *context = data; - bson_oid_t oid; - bson_oid_t oid2; - int i; - - bson_oid_init (&oid2, context); - for (i = 0; i < 500000; i++) { - bson_oid_init (&oid, context); - BSON_ASSERT (false == bson_oid_equal (&oid, &oid2)); - BSON_ASSERT (0 < bson_oid_compare (&oid, &oid2)); - bson_oid_copy (&oid, &oid2); - } - - return NULL; -} - -static void -test_bson_oid_init_from_string (void) -{ - bson_context_t *context; - bson_oid_t oid; - char str[25]; - int i; - - context = bson_context_new (BSON_CONTEXT_NONE); - - /* - * Test successfully parsed oids. - */ - - for (i = 0; gTestOids[i]; i++) { - bson_oid_init_from_string (&oid, gTestOids[i]); - bson_oid_to_string (&oid, str); - BSON_ASSERT (!strcmp (str, gTestOids[i])); - } - - /* - * Test successfully parsed oids (case-insensitive). - */ - for (i = 0; gTestOidsCase[i]; i++) { - char oid_lower[25]; - int j; - - bson_oid_init_from_string (&oid, gTestOidsCase[i]); - bson_oid_to_string (&oid, str); - BSON_ASSERT (!bson_strcasecmp (str, gTestOidsCase[i])); - - for (j = 0; gTestOidsCase[i][j]; j++) { - oid_lower[j] = tolower (gTestOidsCase[i][j]); - } - - oid_lower[24] = '\0'; - BSON_ASSERT (!strcmp (str, oid_lower)); - } - - /* - * Test that sizeof(str) works (len of 25 with \0 instead of 24). - */ - BSON_ASSERT (bson_oid_is_valid ("ffffffffffffffffffffffff", 24)); - bson_oid_init_from_string (&oid, "ffffffffffffffffffffffff"); - bson_oid_to_string (&oid, str); - BSON_ASSERT (bson_oid_is_valid (str, sizeof str)); - - /* - * Test the failures. - */ - - for (i = 0; gTestOidsFail[i]; i++) { - bson_oid_init_from_string (&oid, gTestOidsFail[i]); - bson_oid_to_string (&oid, str); - BSON_ASSERT (strcmp (str, gTestOidsFail[i])); - } - - bson_context_destroy (context); -} - - -static void -test_bson_oid_hash (void) -{ - bson_oid_t oid; - - bson_oid_init_from_string (&oid, "000000000000000000000000"); - BSON_ASSERT (bson_oid_hash (&oid) == 1487062149); -} - - -static void -test_bson_oid_compare (void) -{ - bson_oid_t oid; - bson_oid_t oid2; - - bson_oid_init_from_string (&oid, "000000000000000000001234"); - bson_oid_init_from_string (&oid2, "000000000000000000001234"); - BSON_ASSERT (0 == bson_oid_compare (&oid, &oid2)); - BSON_ASSERT (true == bson_oid_equal (&oid, &oid2)); - - bson_oid_init_from_string (&oid, "000000000000000000001234"); - bson_oid_init_from_string (&oid2, "000000000000000000004321"); - BSON_ASSERT (bson_oid_compare (&oid, &oid2) < 0); - BSON_ASSERT (bson_oid_compare (&oid2, &oid) > 0); - BSON_ASSERT (false == bson_oid_equal (&oid, &oid2)); -} - - -static void -test_bson_oid_copy (void) -{ - bson_oid_t oid; - bson_oid_t oid2; - - bson_oid_init_from_string (&oid, "000000000000000000001234"); - bson_oid_init_from_string (&oid2, "000000000000000000004321"); - bson_oid_copy (&oid, &oid2); - BSON_ASSERT (true == bson_oid_equal (&oid, &oid2)); -} - - -static void -test_bson_oid_init (void) -{ - bson_context_t *context; - bson_oid_t oid; - bson_oid_t oid2; - int i; - - context = bson_context_new (BSON_CONTEXT_NONE); - bson_oid_init (&oid, context); - for (i = 0; i < 10000; i++) { - bson_oid_init (&oid2, context); - BSON_ASSERT (false == bson_oid_equal (&oid, &oid2)); - BSON_ASSERT (0 > bson_oid_compare (&oid, &oid2)); - bson_oid_copy (&oid2, &oid); - } - bson_context_destroy (context); - - /* - * Test that the shared context works. - */ - bson_oid_init (&oid, NULL); - BSON_ASSERT (bson_context_get_default ()); -} - - -static void -test_bson_oid_init_sequence (void) -{ - bson_context_t *context; - bson_oid_t oid; - bson_oid_t oid2; - int i; - - context = bson_context_new (BSON_CONTEXT_NONE); - bson_oid_init_sequence (&oid, context); - for (i = 0; i < 10000; i++) { - bson_oid_init_sequence (&oid2, context); - BSON_ASSERT (false == bson_oid_equal (&oid, &oid2)); - BSON_ASSERT (0 > bson_oid_compare (&oid, &oid2)); - bson_oid_copy (&oid2, &oid); - } - bson_context_destroy (context); -} - - -static void -test_bson_oid_init_sequence_thread_safe (void) -{ - bson_context_t *context; - bson_oid_t oid; - bson_oid_t oid2; - int i; - - context = bson_context_new (BSON_CONTEXT_THREAD_SAFE); - bson_oid_init_sequence (&oid, context); - for (i = 0; i < 10000; i++) { - bson_oid_init_sequence (&oid2, context); - BSON_ASSERT (false == bson_oid_equal (&oid, &oid2)); - BSON_ASSERT (0 > bson_oid_compare (&oid, &oid2)); - bson_oid_copy (&oid2, &oid); - } - bson_context_destroy (context); -} - - -#ifdef BSON_HAVE_SYSCALL_TID -static void -test_bson_oid_init_sequence_with_tid (void) -{ - bson_context_t *context; - bson_oid_t oid; - bson_oid_t oid2; - int i; - - context = bson_context_new (BSON_CONTEXT_USE_TASK_ID); - bson_oid_init_sequence (&oid, context); - for (i = 0; i < 10000; i++) { - bson_oid_init_sequence (&oid2, context); - BSON_ASSERT (false == bson_oid_equal (&oid, &oid2)); - BSON_ASSERT (0 > bson_oid_compare (&oid, &oid2)); - bson_oid_copy (&oid2, &oid); - } - bson_context_destroy (context); -} -#endif - - -static void -test_bson_oid_get_time_t (void) -{ - bson_context_t *context; - bson_oid_t oid; - uint32_t start = (uint32_t) time (NULL); - - context = bson_context_new (BSON_CONTEXT_NONE); - bson_oid_init (&oid, context); - ASSERT_CMPUINT32 ((uint32_t) bson_oid_get_time_t (&oid), >=, start); - ASSERT_CMPUINT32 ( - (uint32_t) bson_oid_get_time_t (&oid), <=, (uint32_t) time (NULL)); - - bson_context_destroy (context); -} - - -static void -test_bson_oid_init_with_threads (void) -{ - bson_context_t *context; - int i; - - { - bson_context_flags_t flags = BSON_CONTEXT_NONE; - bson_context_t *contexts[N_THREADS]; - bson_thread_t threads[N_THREADS]; - -#ifdef BSON_HAVE_SYSCALL_TID - flags |= BSON_CONTEXT_USE_TASK_ID; -#endif - - for (i = 0; i < N_THREADS; i++) { - contexts[i] = bson_context_new (flags); - bson_thread_create (&threads[i], oid_worker, contexts[i]); - } - - for (i = 0; i < N_THREADS; i++) { - bson_thread_join (threads[i]); - } - - for (i = 0; i < N_THREADS; i++) { - bson_context_destroy (contexts[i]); - } - } - - /* - * Test threaded generation of oids using a single context; - */ - { - bson_thread_t threads[N_THREADS]; - - context = bson_context_new (BSON_CONTEXT_THREAD_SAFE); - - for (i = 0; i < N_THREADS; i++) { - bson_thread_create (&threads[i], oid_worker, context); - } - - for (i = 0; i < N_THREADS; i++) { - bson_thread_join (threads[i]); - } - - bson_context_destroy (context); - } -} - -void -test_oid_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/oid/init", test_bson_oid_init); - TestSuite_Add ( - suite, "/bson/oid/init_from_string", test_bson_oid_init_from_string); - TestSuite_Add ( - suite, "/bson/oid/init_sequence", test_bson_oid_init_sequence); - TestSuite_Add (suite, - "/bson/oid/init_sequence_thread_safe", - test_bson_oid_init_sequence_thread_safe); -#ifdef BSON_HAVE_SYSCALL_TID - TestSuite_Add (suite, - "/bson/oid/init_sequence_with_tid", - test_bson_oid_init_sequence_with_tid); -#endif - TestSuite_Add ( - suite, "/bson/oid/init_with_threads", test_bson_oid_init_with_threads); - TestSuite_Add (suite, "/bson/oid/hash", test_bson_oid_hash); - TestSuite_Add (suite, "/bson/oid/compare", test_bson_oid_compare); - TestSuite_Add (suite, "/bson/oid/copy", test_bson_oid_copy); - TestSuite_Add (suite, "/bson/oid/get_time_t", test_bson_oid_get_time_t); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-reader.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-reader.c deleted file mode 100644 index 9c6b6e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-reader.c +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include - -#include "TestSuite.h" - - -static void -test_reader_from_data (void) -{ - bson_reader_t *reader; - uint8_t *buffer; - const bson_t *b; - uint32_t i; - bool eof = false; - - buffer = bson_malloc0 (4095); - for (i = 0; i < 4095; i += 5) { - buffer[i] = 5; - } - - reader = bson_reader_new_from_data (buffer, 4095); - - for (i = 0; (b = bson_reader_read (reader, &eof)); i++) { - const uint8_t *buf = bson_get_data (b); - - /* do nothing */ - BSON_ASSERT (b->len == 5); - BSON_ASSERT (buf[0] == 5); - BSON_ASSERT (buf[1] == 0); - BSON_ASSERT (buf[2] == 0); - BSON_ASSERT (buf[3] == 0); - BSON_ASSERT (buf[4] == 0); - } - - BSON_ASSERT (i == (4095 / 5)); - - ASSERT_CMPINT (eof, ==, true); - - bson_free (buffer); - - bson_reader_destroy (reader); -} - - -static void -test_reader_from_data_overflow (void) -{ - bson_reader_t *reader; - uint8_t *buffer; - const bson_t *b; - uint32_t i; - bool eof = false; - - buffer = bson_malloc0 (4096); - for (i = 0; i < 4095; i += 5) { - buffer[i] = 5; - } - - buffer[4095] = 5; - - reader = bson_reader_new_from_data (buffer, 4096); - - for (i = 0; (b = bson_reader_read (reader, &eof)); i++) { - const uint8_t *buf = bson_get_data (b); - BSON_ASSERT (b->len == 5); - BSON_ASSERT (buf[0] == 5); - BSON_ASSERT (buf[1] == 0); - BSON_ASSERT (buf[2] == 0); - BSON_ASSERT (buf[3] == 0); - BSON_ASSERT (buf[4] == 0); - eof = false; - } - - BSON_ASSERT (i == (4095 / 5)); - - ASSERT_CMPINT (eof, ==, false); - - bson_free (buffer); - - bson_reader_destroy (reader); -} - -static void -test_reader_from_data_document_length_too_large (void) -{ - bson_reader_t *reader; - uint8_t *buffer; - bool eof = false; - - buffer = bson_malloc0 (5); - buffer[0] = 6; - - reader = bson_reader_new_from_data (buffer, 5); - BSON_ASSERT (!bson_reader_read (reader, &eof)); - ASSERT_CMPINT (eof, ==, false); - - bson_free (buffer); - - bson_reader_destroy (reader); -} - -static void -test_reader_from_data_document_length_too_small (void) -{ - bson_reader_t *reader; - uint8_t *buffer; - bool eof = false; - - buffer = bson_malloc0 (5); - buffer[0] = 4; - - reader = bson_reader_new_from_data (buffer, 5); - BSON_ASSERT (!bson_reader_read (reader, &eof)); - ASSERT_CMPINT (eof, ==, false); - - bson_free (buffer); - - bson_reader_destroy (reader); -} - -static ssize_t -test_reader_from_handle_read (void *handle, void *buf, size_t len) -{ - return bson_read (*(int *) handle, buf, len); -} - -static void -test_reader_from_handle_destroy (void *handle) -{ - bson_close (*(int *) handle); -} - -static void -test_reader_from_handle (void) -{ - bson_reader_t *reader; - const bson_t *b; - bson_iter_t iter; - uint32_t i; - bool eof = true; - int fd; - - fd = bson_open (BSON_BINARY_DIR "/stream.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - reader = bson_reader_new_from_handle ((void *) &fd, - &test_reader_from_handle_read, - &test_reader_from_handle_destroy); - - for (i = 0; i < 1000; i++) { - eof = false; - b = bson_reader_read (reader, &eof); - BSON_ASSERT (b); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (!bson_iter_next (&iter)); - } - - ASSERT_CMPINT (eof, ==, false); - b = bson_reader_read (reader, &eof); - BSON_ASSERT (!b); - ASSERT_CMPINT (eof, ==, true); - bson_reader_destroy (reader); -} - - -static void -test_reader_tell (void) -{ - bson_reader_t *reader; - const bson_t *b; - uint32_t i; - bson_iter_t iter; - bool eof = true; - int fd; - - fd = bson_open (BSON_BINARY_DIR "/stream.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - reader = bson_reader_new_from_handle ((void *) &fd, - &test_reader_from_handle_read, - &test_reader_from_handle_destroy); - - for (i = 0; i < 1000; i++) { - if (i) { - ASSERT_CMPINT (5 * i, ==, (int) bson_reader_tell (reader)); - } else { - ASSERT_CMPINT (0, ==, (int) bson_reader_tell (reader)); - } - eof = false; - b = bson_reader_read (reader, &eof); - BSON_ASSERT (b); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (!bson_iter_next (&iter)); - } - - ASSERT_CMPINT (5000, ==, (int) bson_reader_tell (reader)); - ASSERT (!eof); - b = bson_reader_read (reader, &eof); - BSON_ASSERT (!b); - BSON_ASSERT (eof); - bson_reader_destroy (reader); -} - - -static void -test_reader_from_handle_corrupt (void) -{ - bson_reader_t *reader; - const bson_t *b; - uint32_t i; - bson_iter_t iter; - bool eof; - int fd; - - fd = bson_open (BSON_BINARY_DIR "/stream_corrupt.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - reader = bson_reader_new_from_handle ((void *) &fd, - &test_reader_from_handle_read, - &test_reader_from_handle_destroy); - - for (i = 0; i < 1000; i++) { - b = bson_reader_read (reader, &eof); - BSON_ASSERT (b); - BSON_ASSERT (bson_iter_init (&iter, b)); - BSON_ASSERT (!bson_iter_next (&iter)); - } - - b = bson_reader_read (reader, &eof); - BSON_ASSERT (!b); - bson_reader_destroy (reader); -} - - -static void -test_reader_grow_buffer (void) -{ - bson_reader_t *reader; - const bson_t *b; - bool eof = false; - int fd; - - fd = bson_open (BSON_BINARY_DIR "/readergrow.bson", O_RDONLY); - BSON_ASSERT (-1 != fd); - - reader = bson_reader_new_from_handle ((void *) &fd, - &test_reader_from_handle_read, - &test_reader_from_handle_destroy); - - b = bson_reader_read (reader, &eof); - BSON_ASSERT (b); - BSON_ASSERT (!eof); - - b = bson_reader_read (reader, &eof); - BSON_ASSERT (!b); - BSON_ASSERT (eof); - - bson_reader_destroy (reader); -} - - -static void -test_reader_reset (void) -{ - uint8_t buffer[10]; - bson_reader_t *reader; - bool eof; - - memset (buffer, 0, sizeof buffer); - - /* two empty bson documents, length prefix indicates 5 bytes */ - buffer[0] = buffer[5] = 5; - - reader = bson_reader_new_from_data (buffer, sizeof buffer); - - BSON_ASSERT (bson_reader_read (reader, &eof)->len == 5 && !eof); - BSON_ASSERT (bson_reader_read (reader, &eof)->len == 5 && !eof); - BSON_ASSERT (!bson_reader_read (reader, &eof) && eof); - BSON_ASSERT (bson_reader_tell (reader) == 10); - - bson_reader_reset (reader); - - BSON_ASSERT (bson_reader_tell (reader) == 0); - BSON_ASSERT (bson_reader_read (reader, &eof)->len == 5 && !eof); - BSON_ASSERT (bson_reader_read (reader, &eof)->len == 5 && !eof); - BSON_ASSERT (!bson_reader_read (reader, &eof) && eof); - BSON_ASSERT (bson_reader_tell (reader) == 10); - - bson_reader_destroy (reader); -} - - -void -test_reader_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/reader/new_from_data", test_reader_from_data); - TestSuite_Add (suite, - "/bson/reader/new_from_data_overflow", - test_reader_from_data_overflow); - TestSuite_Add (suite, - "/bson/reader/new_from_data_document_length_too_large", - test_reader_from_data_document_length_too_large); - TestSuite_Add (suite, - "/bson/reader/new_from_data_document_length_too_small", - test_reader_from_data_document_length_too_small); - TestSuite_Add ( - suite, "/bson/reader/new_from_handle", test_reader_from_handle); - TestSuite_Add (suite, "/bson/reader/tell", test_reader_tell); - TestSuite_Add (suite, - "/bson/reader/new_from_handle_corrupt", - test_reader_from_handle_corrupt); - TestSuite_Add (suite, "/bson/reader/grow_buffer", test_reader_grow_buffer); - TestSuite_Add (suite, "/bson/reader/reset", test_reader_reset); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-string.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-string.c deleted file mode 100644 index 8efd004..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-string.c +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "TestSuite.h" - - -static void -test_bson_string_new (void) -{ - bson_string_t *str; - char *s; - - str = bson_string_new (NULL); - s = bson_string_free (str, false); - BSON_ASSERT (s); - BSON_ASSERT (!strcmp (s, "")); - bson_free (s); - - str = bson_string_new (""); - s = bson_string_free (str, false); - BSON_ASSERT (s); - BSON_ASSERT (!*s); - BSON_ASSERT (0 == strcmp (s, "")); - bson_free (s); - - str = bson_string_new ("abcdef"); - s = bson_string_free (str, false); - BSON_ASSERT (s); - BSON_ASSERT (!strcmp (s, "abcdef")); - bson_free (s); - - str = bson_string_new (""); - s = bson_string_free (str, true); - BSON_ASSERT (!s); -} - - -static void -test_bson_string_append (void) -{ - bson_string_t *str; - char *s; - - str = bson_string_new (NULL); - bson_string_append (str, "christian was here"); - bson_string_append (str, "\n"); - s = bson_string_free (str, false); - BSON_ASSERT (s); - BSON_ASSERT (!strcmp (s, "christian was here\n")); - bson_free (s); - - str = bson_string_new (">>>"); - bson_string_append (str, "^^^"); - bson_string_append (str, "<<<"); - s = bson_string_free (str, false); - BSON_ASSERT (s); - BSON_ASSERT (!strcmp (s, ">>>^^^<<<")); - bson_free (s); -} - - -static void -test_bson_string_append_c (void) -{ - bson_string_t *str; - char *s; - - str = bson_string_new (NULL); - bson_string_append_c (str, 'c'); - bson_string_append_c (str, 'h'); - bson_string_append_c (str, 'r'); - bson_string_append_c (str, 'i'); - bson_string_append_c (str, 's'); - s = bson_string_free (str, false); - BSON_ASSERT (s); - BSON_ASSERT (!strcmp (s, "chris")); - bson_free (s); -} - - -static void -test_bson_string_append_printf (void) -{ - bson_string_t *str; - - str = bson_string_new ("abcd "); - bson_string_append_printf (str, "%d %d %d", 1, 2, 3); - BSON_ASSERT (!strcmp (str->str, "abcd 1 2 3")); - bson_string_truncate (str, 2); - BSON_ASSERT (!strcmp (str->str, "ab")); - bson_string_free (str, true); -} - - -static void -test_bson_string_append_unichar (void) -{ - static const unsigned char test1[] = {0xe2, 0x82, 0xac, 0}; - bson_string_t *str; - char *s; - - str = bson_string_new (NULL); - bson_string_append_unichar (str, 0x20AC); - s = bson_string_free (str, false); - BSON_ASSERT (s); - BSON_ASSERT (!strcmp (s, (const char *) test1)); - bson_free (s); -} - - -static void -test_bson_strdup_printf (void) -{ - char *s; - - s = bson_strdup_printf ("%s:%u", "localhost", 27017); - BSON_ASSERT (!strcmp (s, "localhost:27017")); - bson_free (s); -} - - -static void -test_bson_strdup (void) -{ - char *s; - - s = bson_strdup ("localhost:27017"); - BSON_ASSERT (!strcmp (s, "localhost:27017")); - bson_free (s); -} - - -static void -test_bson_strndup (void) -{ - char *s; - - s = bson_strndup ("asdf", 2); - BSON_ASSERT (!strcmp (s, "as")); - bson_free (s); - - s = bson_strndup ("asdf", 10); - BSON_ASSERT (!strcmp (s, "asdf")); - bson_free (s); - - /* Some tests where we truncate to size n-1, n, n+1 */ - s = bson_strndup ("asdf", 3); - BSON_ASSERT (!strcmp (s, "asd")); - bson_free (s); - - s = bson_strndup ("asdf", 4); - BSON_ASSERT (!strcmp (s, "asdf")); - bson_free (s); - - s = bson_strndup ("asdf", 5); - BSON_ASSERT (!strcmp (s, "asdf")); - bson_free (s); -} - - -static void -test_bson_strnlen (void) -{ - char *s = "test"; - - ASSERT_CMPINT ((int) strlen (s), ==, (int) bson_strnlen (s, 100)); -} - - -typedef struct { - const char *str; - int base; - int64_t rv; - const char *remaining; - int _errno; -} strtoll_test; - - -static void -test_bson_ascii_strtoll (void) -{ -#ifdef END -#undef END -#endif -#define END "" - int64_t rv; - int i; - char *endptr; - strtoll_test tests[] = { - /* input, base, expected output, # of chars parsed, expected errno */ - {"1", 10, 1, END, 0}, - {"+1", 10, 1, END, 0}, - {"-1", 10, -1, END, 0}, - {"0", 10, 0, END, 0}, - {"0 ", 10, 0, " ", 0}, - {" 0 ", 10, 0, " ", 0}, - {" 0", 10, 0, END, 0}, - {" 0\"", 10, 0, "\"", 0}, - {"0l", 10, 0, "l", 0}, - {"0l ", 10, 0, "l ", 0}, - {"0u", 10, 0, "u", 0}, - {"0u ", 10, 0, "u ", 0}, - {"0L", 10, 0, "L", 0}, - {"0L ", 10, 0, "L ", 0}, - {"0U", 10, 0, "U", 0}, - {"0U ", 10, 0, "U ", 0}, - {"-0", 10, 0, END, 0}, - {"+0", 10, 0, END, 0}, - {"010", 8, 8, END, 0}, - /* stroll "takes as many characters as possible to form a valid base-n - * integer", so it ignores "8" and returns 0 */ - {"08", 0, 0, "8", 0}, - {"010", 10, 10, END, 0}, - {"010", 8, 8, END, 0}, - {"010", 0, 8, END, 0}, - {"68719476736", 10, 68719476736, END, 0}, - {"-68719476736", 10, -68719476736, END, 0}, - {"+68719476736", 10, 68719476736, END, 0}, - {" 68719476736 ", 10, 68719476736, " ", 0}, - {" 68719476736 ", 0, 68719476736, " ", 0}, - {" -68719476736 ", 10, -68719476736, " ", 0}, - {" -68719476736 ", 0, -68719476736, " ", 0}, - {" 4611686018427387904LL", 10, 4611686018427387904LL, "LL", 0}, - {" -4611686018427387904LL ", 10, -4611686018427387904LL, "LL ", 0}, - {"0x1000000000", 16, 68719476736, END, 0}, - {"0x1000000000", 0, 68719476736, END, 0}, - {"-0x1000000000", 16, -68719476736, END, 0}, - {"-0x1000000000", 0, -68719476736, END, 0}, - {"+0x1000000000", 16, 68719476736, END, 0}, - {"+0x1000000000", 0, 68719476736, END, 0}, - {"01234", 8, 668, END, 0}, - {"01234", 0, 668, END, 0}, - {"-01234", 8, -668, END, 0}, - {"-01234", 0, -668, END, 0}, - {"+01234", 8, 668, END, 0}, - {"+01234", 0, 668, END, 0}, - {"9223372036854775807", 10, INT64_MAX, END, 0}, - {"-9223372036854775808", 10, INT64_MIN, END, 0}, - {"9223372036854775808", 10, INT64_MAX, "8", ERANGE}, /* LLONG_MAX+1 */ - {"-9223372036854775809", 10, INT64_MIN, "9", ERANGE}, /* LLONG_MIN-1 */ - {"18446744073709551615", 10, INT64_MAX, "5", ERANGE}, /* 2*LLONG_MAX+1 */ - {"-18446744073709551618", 10, INT64_MIN, "8", ERANGE}, /* 2*LLONG_MIN-1 */ - {NULL}}; - - for (i = 0; tests[i].str; i++) { - errno = 0; - - rv = bson_ascii_strtoll (tests[i].str, &endptr, tests[i].base); - ASSERT_CMPINT64 (rv, ==, tests[i].rv); - ASSERT_CMPINT (errno, ==, tests[i]._errno); - ASSERT_CMPSTR (endptr, tests[i].remaining); - } -#undef END -} - - -static void -test_bson_strncpy (void) -{ - char buf[5]; - - bson_strncpy (buf, "foo", sizeof buf); - ASSERT_CMPSTR ("foo", buf); - bson_strncpy (buf, "foobar", sizeof buf); - ASSERT_CMPSTR ("foob", buf); - /* CDRIVER-2596 make sure strncpy with size 0 doesn't write to buf[-1] */ - bson_strncpy (buf + 1, "z", 0); - ASSERT_CMPSTR ("foob", buf); -} - - -static void -test_bson_snprintf (void) -{ - char buf[] = "ab"; - - /* CDRIVER-2595 make sure snprintf with size 0 doesn't write to buf[-1] */ - ASSERT_CMPINT (bson_snprintf (buf + 1, 0, "%d", 1), ==, 0); - ASSERT_CMPSTR (buf, "ab"); -} - - -static void -test_bson_strcasecmp (void) -{ - BSON_ASSERT (!bson_strcasecmp ("FoO", "foo")); - BSON_ASSERT (bson_strcasecmp ("Foa", "foo") < 0); - BSON_ASSERT (bson_strcasecmp ("FoZ", "foo") > 0); -} - - -void -test_string_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/string/new", test_bson_string_new); - TestSuite_Add (suite, "/bson/string/append", test_bson_string_append); - TestSuite_Add (suite, "/bson/string/append_c", test_bson_string_append_c); - TestSuite_Add ( - suite, "/bson/string/append_printf", test_bson_string_append_printf); - TestSuite_Add ( - suite, "/bson/string/append_unichar", test_bson_string_append_unichar); - TestSuite_Add (suite, "/bson/string/strdup", test_bson_strdup); - TestSuite_Add (suite, "/bson/string/strdup_printf", test_bson_strdup_printf); - TestSuite_Add (suite, "/bson/string/strndup", test_bson_strndup); - TestSuite_Add (suite, "/bson/string/ascii_strtoll", test_bson_ascii_strtoll); - TestSuite_Add (suite, "/bson/string/strncpy", test_bson_strncpy); - TestSuite_Add (suite, "/bson/string/snprintf", test_bson_snprintf); - TestSuite_Add (suite, "/bson/string/strnlen", test_bson_strnlen); - TestSuite_Add (suite, "/bson/string/strcasecmp", test_bson_strcasecmp); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-utf8.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-utf8.c deleted file mode 100644 index 14fe08d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-utf8.c +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "TestSuite.h" - - -static void -test_bson_utf8_validate (void) -{ - static const unsigned char test1[] = { - 0xe2, 0x82, 0xac, ' ', 0xe2, 0x82, 0xac, ' ', 0xe2, 0x82, 0xac, 0}; - static const unsigned char test2[] = {0xc0, 0x80, 0}; - static const unsigned char out_of_bound[] = { - 0xfd, 0x9f, 0xb0, 0x80, 0x80, 0x80, 0}; - static const unsigned char bad[] = {0xed, 0xa0, 0xa5, 0}; - - BSON_ASSERT (bson_utf8_validate ("asdf", 4, false)); - BSON_ASSERT (bson_utf8_validate ("asdf", 4, true)); - BSON_ASSERT (bson_utf8_validate ("asdf", 5, true)); - BSON_ASSERT (!bson_utf8_validate ("asdf", 5, false)); - - BSON_ASSERT (bson_utf8_validate ((const char *) test1, 11, true)); - BSON_ASSERT (bson_utf8_validate ((const char *) test1, 11, false)); - BSON_ASSERT (bson_utf8_validate ((const char *) test1, 12, true)); - BSON_ASSERT (!bson_utf8_validate ((const char *) test1, 12, false)); - - BSON_ASSERT (bson_utf8_validate ((const char *) test2, 2, true)); - BSON_ASSERT (!bson_utf8_validate ((const char *) test2, 2, false)); - - /* - * This character is allowed in 6-byte-sequence UTF-8 standard but seen as - * out of bound in 4-byte-sequence UTF-8 standard (RFC 3629). - */ - BSON_ASSERT (!bson_utf8_validate ((const char *) out_of_bound, 1, true)); - BSON_ASSERT (!bson_utf8_validate ((const char *) out_of_bound, 1, false)); - - /* - * Some UTF-8 code points are prohibited to match the constraints of - * the UTF-16 character encoding (RFC 3629). - */ - BSON_ASSERT (!bson_utf8_validate ((const char *) bad, 1, true)); - BSON_ASSERT (!bson_utf8_validate ((const char *) bad, 1, false)); -} - - -static void -test_bson_utf8_escape_for_json (void) -{ - char *str; - char *unescaped = "\x0e"; - - str = bson_utf8_escape_for_json ("my\0key", 6); - BSON_ASSERT (0 == memcmp (str, "my\\u0000key", 7)); - bson_free (str); - - str = bson_utf8_escape_for_json ("my\"key", 6); - BSON_ASSERT (0 == memcmp (str, "my\\\"key", 8)); - bson_free (str); - - str = bson_utf8_escape_for_json ("my\\key", 6); - BSON_ASSERT (0 == memcmp (str, "my\\\\key", 8)); - bson_free (str); - - str = bson_utf8_escape_for_json ("\\\"\\\"", -1); - BSON_ASSERT (0 == memcmp (str, "\\\\\\\"\\\\\\\"", 9)); - bson_free (str); - - str = bson_utf8_escape_for_json (unescaped, -1); - BSON_ASSERT (0 == memcmp (str, "\\u000e", 7)); - bson_free (str); -} - - -static void -test_bson_utf8_invalid (void) -{ - /* no UTF-8 sequence can start with 0x80 */ - static const unsigned char bad[] = {0x80, 0}; - - BSON_ASSERT (!bson_utf8_validate ((const char *) bad, 1, true)); - BSON_ASSERT (!bson_utf8_validate ((const char *) bad, 1, false)); - BSON_ASSERT (!bson_utf8_escape_for_json ((const char *) bad, 1)); -} - - -static void -test_bson_utf8_nil (void) -{ - static const unsigned char test[] = {'a', 0, 'b', 0}; - char *str; - - BSON_ASSERT (bson_utf8_validate ((const char *) test, 3, true)); - BSON_ASSERT (!bson_utf8_validate ((const char *) test, 3, false)); - - /* no length provided, stop at first nil */ - str = bson_utf8_escape_for_json ((const char *) test, -1); - ASSERT_CMPSTR ("a", str); - bson_free (str); - - str = bson_utf8_escape_for_json ((const char *) test, 3); - ASSERT_CMPSTR ("a\\u0000b", str); - bson_free (str); -} - - -static void -test_bson_utf8_get_char (void) -{ - static const char *test1 = "asdf"; - static const unsigned char test2[] = { - 0xe2, 0x82, 0xac, ' ', 0xe2, 0x82, 0xac, ' ', 0xe2, 0x82, 0xac, 0}; - const char *c; - - c = test1; - BSON_ASSERT (bson_utf8_get_char (c) == 'a'); - c = bson_utf8_next_char (c); - BSON_ASSERT (bson_utf8_get_char (c) == 's'); - c = bson_utf8_next_char (c); - BSON_ASSERT (bson_utf8_get_char (c) == 'd'); - c = bson_utf8_next_char (c); - BSON_ASSERT (bson_utf8_get_char (c) == 'f'); - c = bson_utf8_next_char (c); - BSON_ASSERT (!*c); - - c = (const char *) test2; - BSON_ASSERT (bson_utf8_get_char (c) == 0x20AC); - c = bson_utf8_next_char (c); - BSON_ASSERT (c == (const char *) test2 + 3); - BSON_ASSERT (bson_utf8_get_char (c) == ' '); - c = bson_utf8_next_char (c); - BSON_ASSERT (bson_utf8_get_char (c) == 0x20AC); - c = bson_utf8_next_char (c); - BSON_ASSERT (bson_utf8_get_char (c) == ' '); - c = bson_utf8_next_char (c); - BSON_ASSERT (bson_utf8_get_char (c) == 0x20AC); - c = bson_utf8_next_char (c); - BSON_ASSERT (!*c); -} - - -static void -test_bson_utf8_from_unichar (void) -{ - static const char test1[] = {'a'}; - static const unsigned char test2[] = {0xc3, 0xbf}; - static const unsigned char test3[] = {0xe2, 0x82, 0xac}; - uint32_t len; - char str[6]; - - /* - * First possible sequence of a certain length. - */ - bson_utf8_from_unichar (0, str, &len); - BSON_ASSERT (len == 1); - bson_utf8_from_unichar (0x00000080, str, &len); - BSON_ASSERT (len == 2); - bson_utf8_from_unichar (0x00000800, str, &len); - BSON_ASSERT (len == 3); - bson_utf8_from_unichar (0x00010000, str, &len); - BSON_ASSERT (len == 4); - - /* - * Last possible sequence of a certain length. - */ - bson_utf8_from_unichar (0x0000007F, str, &len); - BSON_ASSERT (len == 1); - bson_utf8_from_unichar (0x000007FF, str, &len); - BSON_ASSERT (len == 2); - bson_utf8_from_unichar (0x0000FFFF, str, &len); - BSON_ASSERT (len == 3); - bson_utf8_from_unichar (0x0010FFFF, str, &len); - BSON_ASSERT (len == 4); - - /* - * Other interesting values. - */ - bson_utf8_from_unichar (0x0000D7FF, str, &len); - BSON_ASSERT (len == 3); - bson_utf8_from_unichar (0x0000E000, str, &len); - BSON_ASSERT (len == 3); - bson_utf8_from_unichar (0x0000FFFD, str, &len); - BSON_ASSERT (len == 3); - bson_utf8_from_unichar (0x0010EFFF, str, &len); - BSON_ASSERT (len == 4); - bson_utf8_from_unichar (0x00110000, str, &len); - BSON_ASSERT (len == 4); - - bson_utf8_from_unichar ('a', str, &len); - BSON_ASSERT (len == 1); - BSON_ASSERT (!memcmp (test1, str, 1)); - - bson_utf8_from_unichar (0xFF, str, &len); - BSON_ASSERT (len == 2); - BSON_ASSERT (!memcmp ((const char *) test2, str, 2)); - - bson_utf8_from_unichar (0x20AC, str, &len); - BSON_ASSERT (len == 3); - BSON_ASSERT (!memcmp ((const char *) test3, str, 3)); -} - - -static void -test_bson_utf8_non_shortest (void) -{ - static const char *tests[] = { - "\xE0\x80\x80", /* Non-shortest form representation of U+0000 */ - "\xF0\x80\x80\x80", /* Non-shortest form representation of U+0000 */ - - "\xE0\x83\xBF", /* Non-shortest form representation of U+00FF */ - "\xF0\x80\x83\xBF", /* Non-shortest form representation of U+00FF */ - - "\xF0\x80\xA3\x80", /* Non-shortest form representation of U+08C0 */ - - NULL}; - static const char *valid_tests[] = { - "\xC0\x80", /* Non-shortest form representation of U+0000. - * This is how \0 should be encoded. Special casing - * to allow for use in things like strlen(). */ - - NULL}; - int i; - - for (i = 0; tests[i]; i++) { - if (bson_utf8_validate (tests[i], strlen (tests[i]), false)) { - fprintf (stderr, "non-shortest form failure, test %d\n", i); - BSON_ASSERT (false); - } - } - - for (i = 0; valid_tests[i]; i++) { - if (!bson_utf8_validate (valid_tests[i], strlen (valid_tests[i]), true)) { - fprintf (stderr, "non-shortest form failure, valid_tests %d\n", i); - BSON_ASSERT (false); - } - } -} - - -void -test_utf8_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/utf8/validate", test_bson_utf8_validate); - TestSuite_Add (suite, "/bson/utf8/invalid", test_bson_utf8_invalid); - TestSuite_Add (suite, "/bson/utf8/nil", test_bson_utf8_nil); - TestSuite_Add ( - suite, "/bson/utf8/escape_for_json", test_bson_utf8_escape_for_json); - TestSuite_Add ( - suite, "/bson/utf8/get_char_next_char", test_bson_utf8_get_char); - TestSuite_Add ( - suite, "/bson/utf8/from_unichar", test_bson_utf8_from_unichar); - TestSuite_Add ( - suite, "/bson/utf8/non_shortest", test_bson_utf8_non_shortest); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-value.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-value.c deleted file mode 100644 index cd82658..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-value.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2014 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include - -#include "TestSuite.h" - - -static void -test_value_basic (void) -{ - static const uint8_t raw[16] = {0}; - const bson_value_t *value; - bson_value_t copy; - bson_iter_t iter; - bson_oid_t oid; - bson_t other = BSON_INITIALIZER; - bson_t *doc; - bson_t sub = BSON_INITIALIZER; - bool r; - int i; - - bson_oid_init (&oid, NULL); - - doc = BCON_NEW ("double", - BCON_DOUBLE (123.4), - "utf8", - "this is my string", - "document", - BCON_DOCUMENT (&sub), - "array", - BCON_DOCUMENT (&sub), - "binary", - BCON_BIN (BSON_SUBTYPE_BINARY, raw, sizeof raw), - "undefined", - BCON_UNDEFINED, - "oid", - BCON_OID (&oid), - "bool", - BCON_BOOL (true), - "datetime", - BCON_DATE_TIME (12345678), - "null", - BCON_NULL, - "regex", - BCON_REGEX ("^hello", "i"), - "dbpointer", - BCON_DBPOINTER ("test.test", &oid), - "code", - BCON_CODE ("var a = function() {}"), - "symbol", - BCON_SYMBOL ("my_symbol"), - "codewscope", - BCON_CODEWSCOPE ("var a = 1;", &sub), - "int32", - BCON_INT32 (1234), - "timestamp", - BCON_TIMESTAMP (1234, 4567), - "int64", - BCON_INT32 (4321), - "maxkey", - BCON_MAXKEY, - "minkey", - BCON_MINKEY); - - r = bson_iter_init (&iter, doc); - BSON_ASSERT (r); - - for (i = 0; i < 20; i++) { - r = bson_iter_next (&iter); - BSON_ASSERT (r); - - value = bson_iter_value (&iter); - BSON_ASSERT (value); - - bson_value_copy (value, ©); - - r = bson_append_value (&other, bson_iter_key (&iter), -1, ©); - BSON_ASSERT (r); - - bson_value_destroy (©); - } - - r = bson_iter_next (&iter); - BSON_ASSERT (!r); - - bson_destroy (doc); - bson_destroy (&sub); - bson_destroy (&other); -} - - -static void -test_value_decimal128 (void) -{ - const bson_value_t *value; - bson_value_t copy; - bson_iter_t iter; - bson_decimal128_t dec; - bson_t other = BSON_INITIALIZER; - bson_t *doc; - - BSON_ASSERT (bson_decimal128_from_string ("123.5", &dec)); - doc = BCON_NEW ("decimal128", BCON_DECIMAL128 (&dec)); - BSON_ASSERT (bson_iter_init (&iter, doc) && bson_iter_next (&iter)); - value = bson_iter_value (&iter); - BSON_ASSERT (value); - bson_value_copy (value, ©); - BSON_ASSERT (bson_append_value (&other, bson_iter_key (&iter), -1, ©)); - - bson_value_destroy (©); - bson_destroy (doc); - bson_destroy (&other); -} - - -void -test_value_install (TestSuite *suite) -{ - TestSuite_Add (suite, "/bson/value/basic", test_value_basic); - TestSuite_Add (suite, "/bson/value/decimal128", test_value_decimal128); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-writer.c b/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-writer.c deleted file mode 100644 index f786049..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libbson/tests/test-writer.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2013 MongoDB, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include - -#include "TestSuite.h" - - -static void * -test_bson_writer_custom_realloc_helper (void *mem, size_t num_bytes, void *ctx) -{ - int *x = (int *) ctx; - - *x = *x + 1; - return bson_realloc (mem, num_bytes); -} - -static void -test_bson_writer_custom_realloc (void) -{ - bson_writer_t *writer; - uint8_t *buf = bson_malloc (0); - size_t buflen = 0; - bson_t *b; - int x = 0; - - writer = bson_writer_new ( - &buf, &buflen, 0, test_bson_writer_custom_realloc_helper, &x); - - BSON_ASSERT (bson_writer_begin (writer, &b)); - - BSON_ASSERT (bson_append_utf8 (b, "hello", -1, "world", -1)); - - bson_writer_end (writer); - - bson_writer_destroy (writer); - - ASSERT_CMPINT (x, >, 0); - - bson_free (buf); -} - - -static void -test_bson_writer_shared_buffer (void) -{ - bson_writer_t *writer; - uint8_t *buf = bson_malloc0 (32); - bool rolled_back = false; - size_t buflen = 32; - size_t n_bytes; - bson_t *b; - const char *key; - char keystr[32]; - int i = 0; - int j = 0; - int n_docs = 10000; - - writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); - - for (i = 0; i < n_docs; i++) { - BSON_ASSERT (bson_writer_begin (writer, &b)); - - for (j = 0; j < 1000; j++) { - bson_uint32_to_string (j, &key, keystr, sizeof keystr); - BSON_ASSERT (bson_append_int64 (b, key, -1, j)); - } - - if (bson_writer_get_length (writer) > (48 * 1024 * 1024)) { - rolled_back = true; - bson_writer_rollback (writer); - break; - } else { - bson_writer_end (writer); - } - } - - n_bytes = bson_writer_get_length (writer); - - bson_writer_destroy (writer); - - ASSERT_CMPSIZE_T (n_bytes, <, (size_t) (48 * 1024 * 1024)); - BSON_ASSERT (rolled_back); - - bson_free (buf); -} - - -static void -test_bson_writer_empty_sequence (void) -{ - const uint8_t testdata[] = {5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, - 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 0, 0}; - bson_writer_t *writer; - uint8_t *buf = NULL; - bson_t *b; - size_t len = 0; - int r; - int i; - - writer = bson_writer_new (&buf, &len, 0, bson_realloc_ctx, NULL); - for (i = 0; i < 5; i++) { - BSON_ASSERT (bson_writer_begin (writer, &b)); - bson_writer_end (writer); - } - r = memcmp (buf, testdata, 25); - BSON_ASSERT (r == 0); - bson_writer_destroy (writer); - bson_free (buf); -} - - -static void -test_bson_writer_null_realloc (void) -{ - const uint8_t testdata[] = {5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0}; - bson_writer_t *writer; - uint8_t *buf = bson_malloc0 (32); - size_t buflen = 32; - bson_t *b; - int r; - int i; - - writer = bson_writer_new (&buf, &buflen, 0, NULL, NULL); - for (i = 0; i < 6; i++) { - BSON_ASSERT (bson_writer_begin (writer, &b)); - bson_writer_end (writer); - } - - BSON_ASSERT (!bson_writer_begin (writer, &b)); - - r = memcmp (buf, testdata, 32); - BSON_ASSERT (r == 0); - bson_writer_destroy (writer); - - bson_free (buf); -} - -static void -test_bson_writer_null_realloc_2 (void) -{ - const uint8_t testdata[] = {5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0}; - bson_writer_t *writer; - uint8_t *buf = bson_malloc0 (32); - size_t buflen = 32; - bson_t *b; - int r; - int i; - - writer = bson_writer_new (&buf, &buflen, 0, NULL, NULL); - for (i = 0; i < 5; i++) { - BSON_ASSERT (bson_writer_begin (writer, &b)); - bson_writer_end (writer); - } - - BSON_ASSERT (bson_writer_begin (writer, &b)); - BSON_ASSERT (!bson_append_int32 (b, "a", -1, 123)); - bson_writer_end (writer); - - r = memcmp (buf, testdata, 32); - BSON_ASSERT (r == 0); - bson_writer_destroy (writer); - - bson_free (buf); -} - -void -test_writer_install (TestSuite *suite) -{ - TestSuite_Add ( - suite, "/bson/writer/custom_realloc", test_bson_writer_custom_realloc); - TestSuite_Add ( - suite, "/bson/writer/shared_buffer", test_bson_writer_shared_buffer); - TestSuite_Add ( - suite, "/bson/writer/empty_sequence", test_bson_writer_empty_sequence); - TestSuite_Add ( - suite, "/bson/writer/null_realloc", test_bson_writer_null_realloc); - TestSuite_Add ( - suite, "/bson/writer/null_realloc_2", test_bson_writer_null_realloc_2); -} diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/CMakeLists.txt deleted file mode 100644 index b474ba9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/CMakeLists.txt +++ /dev/null @@ -1,1004 +0,0 @@ -cmake_minimum_required (VERSION 3.1) - -project (libmongoc C) - -set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/../../build/cmake) - -include (InstallRequiredSystemLibraries) - -message ("libmongoc version (from VERSION_CURRENT file): ${MONGOC_VERSION}") -if (NOT ${MONGOC_VERSION} STREQUAL ${MONGOC_RELEASED_VERSION}) - message ("libmongoc previous release (from VERSION_RELEASED file): ${MONGOC_RELEASED_VERSION}") -endif () - -# Defaults. -set (MONGOC_ENABLE_SSL 0) -set (MONGOC_ENABLE_SSL_OPENSSL 0) -set (MONGOC_HAVE_ASN1_STRING_GET0_DATA 0) -set (MONGOC_ENABLE_SSL_LIBRESSL 0) -set (MONGOC_ENABLE_SSL_SECURE_TRANSPORT 0) -set (MONGOC_ENABLE_SSL_SECURE_CHANNEL 0) - -set (MONGOC_ENABLE_CRYPTO 0) -set (MONGOC_ENABLE_CRYPTO_LIBCRYPTO 0) -set (MONGOC_ENABLE_CRYPTO_COMMON_CRYPTO 0) -set (MONGOC_ENABLE_CRYPTO_CNG 0) - -set (MONGOC_ENABLE_CRYPTO_SYSTEM_PROFILE 0) - -set (MONGOC_ENABLE_COMPRESSION 0) -set (MONGOC_ENABLE_COMPRESSION_SNAPPY 0) -set (MONGOC_ENABLE_COMPRESSION_ZLIB 0) - -if (ENABLE_COVERAGE) - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g --coverage") -endif () - -if (NOT ENABLE_ZLIB MATCHES "SYSTEM|AUTO|BUNDLED|OFF") - message (FATAL_ERROR - "ENABLE_ZLIB option must be SYSTEM, BUNDLED, AUTO, or OFF" - ) -endif () - -# Disable warnings on bundled zlib source files. -set_source_files_properties (${ZLIB_SOURCES} PROPERTIES COMPILE_FLAGS -w) - -# Copy zconf.h.in to zconf.h; even when using system zlib, the 'dist' target -# will look for zconf.h in that location. -configure_file ( - "${SOURCE_DIR}/src/zlib-1.2.11/zconf.h.in" - "${CMAKE_BINARY_DIR}/src/zlib-1.2.11/zconf.h" - COPYONLY -) -if (ENABLE_ZLIB MATCHES "SYSTEM|AUTO") - message (STATUS "Searching for zlib CMake packages") - include (FindZLIB) - if (ZLIB_FOUND) - message ("-- zlib found version \"${ZLIB_VERSION_STRING}\"") - message ("-- zlib include path \"${ZLIB_INCLUDE_DIRS}\"") - message ("-- zlib libraries \"${ZLIB_LIBRARIES}\"") - include_directories ("${ZLIB_INCLUDE_DIRS}") - else () - if (ENABLE_ZLIB STREQUAL "SYSTEM") - message (FATAL_ERROR - "Unable to find system zlib package. Either specify the zlib \ - location by setting ZLIB_ROOT, or else set ENABLE_ZLIB=BUNDLED or \ - set ENABLE_ZLIB=OFF." - ) - endif () - set (ZLIB_LIBRARIES "") - endif () -endif () - -if ( (ENABLE_ZLIB STREQUAL "BUNDLED") - OR (ENABLE_ZLIB STREQUAL "AUTO" AND NOT ZLIB_FOUND) ) - message (STATUS "Enabling zlib compression (bundled)") - set (SOURCES ${SOURCES} ${ZLIB_SOURCES}) - - list ( - APPEND - MONGOC_INTERNAL_INCLUDE_DIRS - "${SOURCE_DIR}/src/zlib-1.2.11" - "${CMAKE_BINARY_DIR}/src/zlib-1.2.11" - ) -endif () - -if (NOT ENABLE_ZLIB STREQUAL "OFF") - # At this point the system zlib was found, or the bundled library was used - include (CheckIncludeFiles) - check_include_files ("unistd.h" HAVE_UNISTD_H) - check_include_files ("stdarg.h" HAVE_STDARG_H) - set (MONGOC_ENABLE_COMPRESSION 1) - set (MONGOC_ENABLE_COMPRESSION_ZLIB 1) -else () - message (STATUS "Disabling zlib compression") -endif () - -if (NOT ENABLE_SSL STREQUAL OFF) - # Try OpenSSL automatically everywhere but Mac and Windows. - if (ENABLE_SSL STREQUAL "OPENSSL" - OR (NOT APPLE AND NOT WIN32 AND ENABLE_SSL STREQUAL "AUTO")) - # Sets OPENSSL_FOUND on success. - include (FindOpenSSL) - endif () - - if (ENABLE_SSL STREQUAL LIBRESSL) - include (FindPkgConfig) - message ("-- Searching for LibreSSL/libtls") - pkg_check_modules (LIBRESSL libtls) - if (LIBRESSL_FOUND) - message ("-- Found ${LIBRESSL_LIBRARIES}") - set (SSL_LIBRARIES ${LIBRESSL_LIBRARIES}) - if (LIBRESSL_INCLUDE_DIRS) - include_directories ("${LIBRESSL_INCLUDE_DIRS}") - endif () - link_directories ("${LIBRESSL_LIBRARY_DIRS}") - set (LIBRESSL 1) - else () - message ("-- Not found") - endif () - endif () - - if (ENABLE_SSL STREQUAL DARWIN OR (APPLE AND ENABLE_SSL STREQUAL "AUTO")) - if (APPLE) - set (SECURE_TRANSPORT 1) - else () - message (FATAL_ERROR "ENABLE_SSL=DARWIN only supported on Mac OS X") - endif () - endif () - - if (ENABLE_SSL STREQUAL WINDOWS OR (WIN32 AND ENABLE_SSL STREQUAL "AUTO")) - if (WIN32) - set (SECURE_CHANNEL 1) - else () - message (FATAL_ERROR "ENABLE_SSL=WINDOWS only supported on Windows") - endif () - endif () - - if (NOT OPENSSL_FOUND AND NOT SECURE_TRANSPORT AND NOT SECURE_CHANNEL AND NOT LIBRESSL) - if (ENABLE_SSL STREQUAL AUTO) - set (ENABLE_SSL OFF) - else () - message (FATAL_ERROR "No SSL library found") - endif () - endif () -endif () - -if (OPENSSL_FOUND) - if (WIN32 AND OPENSSL_VERSION GREATER 1.1 AND NOT - ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.7) - message (FATAL_ERROR "Building against OpenSSL 1.1.0 and later requires CMake 3.7 or later (hint:" - " You can also compile against Windows Secure Transport with -DENABLE_SSL=WINDOWS") - endif () - if (APPLE AND NOT OPENSSL_ROOT_DIR) - message (WARNING "Building with OpenSSL but OPENSSL_ROOT_DIR not defined. If build fails to link" - " to OpenSSL, define OPENSSL_ROOT_DIR as the path to the OpenSSL installation directory.") - endif () - include (CheckLibraryExists) - # Check for newer OpenSSL string function. - check_library_exists (ssl - ASN1_STRING_get0_data "openssl/asn1.h" HAVE_ASN1_STRING_GET0_DATA - ) - if (HAVE_ASN1_STRING_GET0_DATA) - set (MONGOC_HAVE_ASN1_STRING_GET0_DATA 1) - endif () - set (MONGOC_ENABLE_SSL 1) - set (MONGOC_ENABLE_SSL_OPENSSL 1) - set (MONGOC_ENABLE_CRYPTO 1) - set (MONGOC_ENABLE_CRYPTO_LIBCRYPTO 1) -elseif (SECURE_TRANSPORT) - set (MONGOC_ENABLE_SSL 1) - set (MONGOC_ENABLE_SSL_SECURE_TRANSPORT 1) - set (MONGOC_ENABLE_CRYPTO 1) - set (MONGOC_ENABLE_CRYPTO_COMMON_CRYPTO 1) -elseif (SECURE_CHANNEL) - set (MONGOC_ENABLE_SSL 1) - set (MONGOC_ENABLE_SSL_SECURE_CHANNEL 1) - set (MONGOC_ENABLE_CRYPTO 1) - set (MONGOC_ENABLE_CRYPTO_CNG 1) -elseif (LIBRESSL) - set (MONGOC_ENABLE_SSL 1) - set (MONGOC_ENABLE_SSL_LIBRESSL 1) - set (MONGOC_ENABLE_CRYPTO 1) - set (MONGOC_ENABLE_CRYPTO_LIBCRYPTO 1) -endif () - -if (ENABLE_CRYPTO_SYSTEM_PROFILE) - if (OPENSSL_FOUND) - set (MONGOC_ENABLE_CRYPTO_SYSTEM_PROFILE 1) - else () - message (FATAL_ERROR "ENABLE_CRYPTO_SYSTEM_PROFILE only available with OpenSSL") - endif () -endif () - -if (NOT ENABLE_SASL MATCHES "CYRUS|GSSAPI|SSPI|AUTO|OFF") - message (FATAL_ERROR - "ENABLE_SASL option must be CYRUS, GSSAPI, SSPI, AUTO, or OFF") -endif () - -# Defaults. -set (MONGOC_ENABLE_SASL 0) -set (MONGOC_ENABLE_SASL_CYRUS 0) -set (MONGOC_ENABLE_SASL_GSSAPI 0) -set (MONGOC_ENABLE_SASL_SSPI 0) -set (MONGOC_HAVE_SASL_CLIENT_DONE 0) - -# After CDRIVER-2654, the GSSAPI option will be entirely removed. -if (ENABLE_SASL STREQUAL "GSSAPI") - message (WARNING "ENABLE_SASL=GSSAPI is not supported. Using CYRUS instead.") - set (ENABLE_SASL "CYRUS") -endif() - -if (NOT ENABLE_SASL STREQUAL OFF) - if (ENABLE_SASL MATCHES "AUTO|CYRUS") - # Sets SASL_LIBRARIES. - include (FindSASL2) - endif () - - if (SASL_FOUND) - set (MONGOC_ENABLE_SASL 1) - set (MONGOC_ENABLE_SASL_CYRUS 1) - elseif ( (ENABLE_SASL MATCHES "SSPI|AUTO") AND WIN32) - set (MONGOC_ENABLE_SASL 1) - set (MONGOC_ENABLE_SASL_SSPI 1) - elseif ( (ENABLE_SASL MATCHES "GSSAPI|AUTO") AND DARWIN) - set (MONGOC_ENABLE_SASL 1) - set (MONGOC_ENABLE_SASL_GSSAPI 1) - endif () -else () - set (MONGOC_ENABLE_SASL 0) -endif () - - -if (ENABLE_AUTOMATIC_INIT_AND_CLEANUP) - set (MONGOC_NO_AUTOMATIC_GLOBALS 0) -else () - set (MONGOC_NO_AUTOMATIC_GLOBALS 1) -endif () - -include (CheckTypeSize) -if (WIN32) - SET (CMAKE_EXTRA_INCLUDE_FILES "ws2tcpip.h") -else () - SET (CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h") -endif () -CHECK_TYPE_SIZE (socklen_t HAVE_SOCKLEN) -SET (CMAKE_EXTRA_INCLUDE_FILES) - -if (HAVE_SOCKLEN) - set (MONGOC_HAVE_SOCKLEN 1) - set (MONGOC_SOCKET_ARG3 "socklen_t") -else () - set (MONGOC_HAVE_SOCKLEN 0) - set (MONGOC_SOCKET_ARG3 "int") -endif () - -include (FindResSearch) -include (CheckSchedGetCPU) - -function (mongoc_get_accept_args ARG2 ARG3) - SET (VAR 0) - foreach (ARG2_VAL "struct sockaddr" "void") - foreach (ARG3_VAL "socklen_t" "size_t" "int") - - MATH (EXPR VAR "${VAR}+1") - - FILE (WRITE ${CMAKE_CURRENT_BINARY_DIR}/accept_test${VAR}.c - "#include - #include - - int main () - { - int a = 0; - ${ARG2_VAL} *b = 0; - ${ARG3_VAL} *c = 0; - accept (a, b, c); - return 0; - } - ") - - TRY_COMPILE (RES ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/accept_test${VAR}.c CMAKE_FLAGS - "-Werror -DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'" OUTPUT_VARIABLE LOG2) - - if (RES) - message ( - STATUS - "Detected parameters: accept (int, ${ARG2_VAL} *, ${ARG3_VAL} *)") - - set (${ARG2} ${ARG2_VAL} PARENT_SCOPE) - set (${ARG3} ${ARG3_VAL} PARENT_SCOPE) - return () - endif () - - endforeach () - endforeach () - -endfunction () - -# Reasonable defaults. -set (MONGOC_SOCKET_ARG2 "struct sockaddr") -set (MONGOC_SOCKET_ARG3 "socklen_t") - -if (NOT WIN32) - mongoc_get_accept_args (MONGOC_SOCKET_ARG2 MONGOC_SOCKET_ARG3) -endif () - -set (MONGOC_API_VERSION 1.0) - -set (CPACK_PACKAGE_VERSION_MAJOR ${MONGOC_MAJOR_VERSION}) -set (CPACK_PACKAGE_VERSION_MINOR ${MONGOC_MINOR_VERSION}) - -set (MONGOC_CC ${CMAKE_C_COMPILER}) -set (MONGOC_USER_SET_CFLAGS ${CMAKE_C_FLAGS}) -set (MONGOC_USER_SET_LDFLAGS ${CMAKE_EXE_LINKER_FLAGS}) - -set (MONGOC_TRACE 0) - -if (ENABLE_TRACING) - set (MONGOC_TRACE 1) -endif () - -# Sets SNAPPY_LIBRARIES and SNAPPY_INCLUDE_DIRS. -include (FindSnappy) -if (SNAPPY_INCLUDE_DIRS) - set (MONGOC_ENABLE_COMPRESSION 1) - include_directories ("${SNAPPY_INCLUDE_DIRS}") -endif () - -set (MONGOC_ENABLE_SHM_COUNTERS 0) - -if (NOT ENABLE_SHM_COUNTERS MATCHES "ON|OFF|AUTO") - message (FATAL_ERROR "ENABLE_SHM_COUNTERS option must be ON, OFF, or AUTO") -endif () - -if (ENABLE_SHM_COUNTERS STREQUAL "AUTO") - if (UNIX AND NOT APPLE) - set (ENABLE_SHM_COUNTERS ON) - endif () -endif () - -if (ENABLE_SHM_COUNTERS STREQUAL "ON") - if (APPLE OR NOT UNIX) - message ( - FATAL_ERROR - "Shared memory performance counters not supported on Mac or Windows") - endif () - set (MONGOC_ENABLE_SHM_COUNTERS 1) - set (SHM_LIBRARIES rt) -endif () - -if (NOT ENABLE_ICU MATCHES "AUTO|ON|OFF") - message (FATAL_ERROR, "ENABLE_ICU option must be AUTO, ON, or OFF") -endif() - -if (NOT ENABLE_ICU STREQUAL OFF) - if (ENABLE_ICU STREQUAL ON) - # do not suppress log output if find_package cannot find ICU - find_package (ICU COMPONENTS uc) - elseif (ENABLE_ICU STREQUAL AUTO) - find_package (ICU QUIET COMPONENTS uc) - endif() - if (ICU_FOUND) - set (MONGOC_ENABLE_ICU 1) - include_directories ("${ICU_INCLUDE_DIR}") - elseif (ENABLE_ICU STREQUAL ON) - message (FATAL_ERROR "No ICU library found. If ICU is installed in a non-standard directory, define ICU_ROOT as the ICU installation path.") - elseif (ENABLE_ICU STREQUAL AUTO) - message (STATUS "No ICU library found, SASLPrep disabled for SCRAM-SHA-256 authentication.") - message (STATUS "If ICU is installed in a non-standard directory, define ICU_ROOT as the ICU installation path.") - endif() -endif() - -configure_file ( - "${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-config.h.in" - "${PROJECT_BINARY_DIR}/src/mongoc/mongoc-config.h" -) - -configure_file ( - "${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-version.h.in" - "${PROJECT_BINARY_DIR}/src/mongoc/mongoc-version.h" -) - -if (ENABLE_APPLE_FRAMEWORK) - configure_file ( - "${PROJECT_SOURCE_DIR}/src/mongoc/modules/module.modulemap.in" - "${PROJECT_BINARY_DIR}/src/mongoc/modules/module.modulemap" - ) -endif () - -include_directories ("${PROJECT_BINARY_DIR}/src") -include_directories ("${PROJECT_SOURCE_DIR}/src") -include_directories ("${PROJECT_SOURCE_DIR}/../../src/common") - -set (SOURCES ${SOURCES} - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-apm.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-array.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-async.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-async-cmd.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-buffer.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-bulk-operation.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-change-stream.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client-pool.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cluster.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cluster-sasl.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-collection.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-compression.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-counters.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-array.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-cmd.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-cmd-deprecated.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-find.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-find-cmd.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-find-opquery.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-legacy.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-array.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-database.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-error.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-find-and-modify.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-init.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs-file.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs-file-list.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs-file-page.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs-file-list.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-handshake.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-host-list.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-index.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-init.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-list.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-linux-distro-scanner.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-log.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-matcher.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-matcher-op.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-memcmp.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cmd.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opts.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opts-helpers.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-queue.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-concern.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-prefs.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-rpc.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-description.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-stream.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client-session.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-set.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-socket.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-buffered.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-buffered.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-file.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-gridfs.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-socket.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-topology.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-topology-description.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-topology-description-apm.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-topology-scanner.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-uri.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-util.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-version-functions.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-write-command.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-write-command-legacy.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-write-concern.c - ${PROJECT_SOURCE_DIR}/../../src/common/common-b64.c - ${PROJECT_SOURCE_DIR}/../../src/common/common-md5.c -) - -set (HEADERS - ${PROJECT_BINARY_DIR}/src/mongoc/mongoc-config.h - ${PROJECT_BINARY_DIR}/src/mongoc/mongoc-version.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-apm.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-bulk-operation.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-change-stream.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client-pool.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-collection.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-database.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-error.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-flags.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-find-and-modify.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs-file.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs-file-page.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gridfs-file-list.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-handshake.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-host-list.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-init.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-index.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-iovec.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-log.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-macros.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-matcher.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opcode.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-concern.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-prefs.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-description.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client-session.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-socket.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls-libressl.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls-openssl.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-buffered.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-file.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-gridfs.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-socket.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-topology-description.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-uri.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-version-functions.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-write-concern.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-rand.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls.h - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-ssl.h -) - -set (HEADERS_FORWARDING - ${PROJECT_SOURCE_DIR}/src/mongoc/forwarding/mongoc.h -) - -if (NOT ENABLE_SSL STREQUAL OFF) - set (SOURCES ${SOURCES} - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-crypto.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-scram.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-ssl.c - ) - - if (OPENSSL_FOUND) - message (STATUS "Compiling against OpenSSL") - set (SOURCES ${SOURCES} - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-crypto-openssl.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-rand-openssl.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls-openssl.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls-openssl-bio.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-openssl.c - ) - set (SSL_LIBRARIES ${OPENSSL_LIBRARIES}) - include_directories (${OPENSSL_INCLUDE_DIR}) - if (WIN32) - set (SSL_LIBRARIES ${SSL_LIBRARIES} crypt32.lib) - endif () - elseif (SECURE_TRANSPORT) - message (STATUS "Compiling against Secure Transport") - set (SOURCES ${SOURCES} - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-crypto-common-crypto.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-rand-common-crypto.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls-secure-transport.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-secure-transport.c - ) - set (SSL_LIBRARIES "-framework CoreFoundation -framework Security") - elseif (SECURE_CHANNEL) - message (STATUS "Compiling against Secure Channel") - set (SOURCES ${SOURCES} - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-crypto-cng.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-rand-cng.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls-secure-channel.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-secure-channel.c - ) - set (SSL_LIBRARIES secur32.lib crypt32.lib Bcrypt.lib) - elseif (LIBRESSL) - message (STATUS "Compiling against LibreSSL") - set (SOURCES ${SOURCES} - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-crypto-openssl.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-rand-openssl.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-stream-tls-libressl.c - ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-libressl.c - ) - set (SSL_LIBRARIES -ltls -lcrypto) - endif () -else () - message (STATUS "SSL disabled") -endif () # ENABLE_SSL - -if (MONGOC_ENABLE_SASL) - set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-sasl.c) - if (MONGOC_ENABLE_SASL_CYRUS) - message (STATUS "Compiling against Cyrus SASL") - set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cluster-cyrus.c) - set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cyrus.c) - include_directories (${SASL_INCLUDE_DIRS}) - elseif (MONGOC_ENABLE_SASL_SSPI) - message (STATUS "Compiling against Windows SSPI") - set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cluster-sspi.c) - set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-sspi.c) - set (SASL_LIBRARIES secur32.lib crypt32.lib Shlwapi.lib) - elseif (MONGOC_ENABLE_SASL_GSSAPI) - set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cluster-gssapi.c) - set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-gssapi.c) - if (APPLE) - message (STATUS "Compiling against macOS GSS") - set (LIBRARIES ${LIBRARIES} -framework GSS) - else () - message (FATAL_ERROR "gssapi missing krb5-config support in cmake") - endif () - endif () -else () - message (STATUS "SASL disabled") -endif () - - -set (THREADS_PREFER_PTHREAD_FLAG 1) -find_package (Threads REQUIRED) -if (CMAKE_USE_PTHREADS_INIT) - set (THREAD_LIB ${CMAKE_THREAD_LIBS_INIT}) -endif () - -set (LIBRARIES - ${SASL_LIBRARIES} ${SSL_LIBRARIES} ${SHM_LIBRARIES} ${RESOLV_LIBRARIES} - ${SNAPPY_LIBRARIES} ${ZLIB_LIBRARIES} Threads::Threads ${ICU_LIBRARIES} -) - -if (WIN32) - set (LIBRARIES ${LIBRARIES} ws2_32) -endif () - -add_library (mongoc_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) -set_target_properties (mongoc_shared PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden) -target_link_libraries (mongoc_shared ${LIBRARIES} ${BSON_LIBRARIES}) -target_include_directories (mongoc_shared BEFORE PUBLIC ${BSON_INCLUDE_DIRS} ${MONGOC_INTERNAL_INCLUDE_DIRS}) -target_compile_definitions (mongoc_shared PUBLIC MONGOC_COMPILATION ${BSON_DEFINITIONS}) - -set_target_properties (mongoc_shared PROPERTIES VERSION 0.0.0 SOVERSION 0) -set_target_properties (mongoc_shared PROPERTIES OUTPUT_NAME "mongoc-${MONGOC_API_VERSION}" PREFIX "lib") - -if (MONGOC_ENABLE_STATIC) - add_library (mongoc_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) - target_link_libraries (mongoc_static ${LIBRARIES} ${BSON_STATIC_LIBRARIES}) - target_include_directories (mongoc_static BEFORE PUBLIC ${BSON_STATIC_INCLUDE_DIRS} ${MONGOC_INTERNAL_INCLUDE_DIRS}) - target_compile_definitions (mongoc_static PUBLIC MONGOC_COMPILATION MONGOC_STATIC ${BSON_STATIC_DEFINITIONS}) - set_target_properties (mongoc_static PROPERTIES VERSION 0.0.0) - set_target_properties (mongoc_static PROPERTIES OUTPUT_NAME "mongoc-static-${MONGOC_API_VERSION}") -endif () - -if (ENABLE_APPLE_FRAMEWORK) - set_target_properties (mongoc_shared PROPERTIES - FRAMEWORK TRUE - MACOSX_FRAMEWORK_BUNDLE_VERSION ${MONGOC_VERSION} - MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${MONGOC_VERSION} - MACOSX_FRAMEWORK_IDENTIFIER org.mongodb.mongoc - OUTPUT_NAME "mongoc" - PUBLIC_HEADER "${HEADERS}" - ) -endif () - -add_executable (mongoc-stat ${PROJECT_SOURCE_DIR}/../../src/tools/mongoc-stat.c) -target_link_libraries (mongoc-stat mongoc_shared) - -# mongoc-stat works if shared memory performance counters are enabled. -if (ENABLE_SHM_COUNTERS STREQUAL "ON") - install (PROGRAMS ${PROJECT_BINARY_DIR}/mongoc-stat - DESTINATION ${CMAKE_INSTALL_BINDIR} - ) -endif () - -function (mongoc_add_test test use_shared) - if (ENABLE_TESTS) - add_executable (${test} ${ARGN}) - if (NOT MSVC) - # We've tests that test our deprecated api. MSVC 2013 will complain about invalid flag - set_source_files_properties (${ARGN} PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) - endif () - target_include_directories (${test} PRIVATE ${PROJECT_SOURCE_DIR}/tests) - if (${use_shared}) - target_link_libraries (${test} mongoc_shared) - target_include_directories (${test} PRIVATE ${BSON_INCLUDE_DIRS} ${MONGOC_INTERNAL_INCLUDE_DIRS}) - else () - target_compile_definitions (${test} PUBLIC "MONGOC_COMPILATION") - target_link_libraries (${test} mongoc_static) - target_include_directories (${test} PRIVATE ${BSON_STATIC_INCLUDE_DIRS} ${MONGOC_INTERNAL_INCLUDE_DIRS}) - endif () - target_link_libraries (${test} ${RESOLV_LIBRARIES}) - if (WIN32) - target_link_libraries (${test} shlwapi) - else () - target_link_libraries (${test}) - endif () - endif () -endfunction () - -function (mongoc_add_example example use_shared) - if (ENABLE_EXAMPLES) - add_executable (${example} ${ARGN}) - if (${use_shared}) - target_link_libraries (${example} mongoc_shared) - else () - target_link_libraries (${example} mongoc_static) - endif () - if (WIN32) - target_link_libraries (${example} shlwapi) - endif () - set (EXAMPLES ${EXAMPLES} ${example}) - endif () -endfunction () - -set (test-libmongoc-sources - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/corpus-test.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/corpus-test.h - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-atomic.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-bson.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-bson-corpus.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-bson-error.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-bson-version.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-endian.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-clock.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-decimal128.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-fnv.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-iso8601.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-iter.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-json.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-oid.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-reader.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-string.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-utf8.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-value.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-writer.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-bcon-basic.c - ${PROJECT_SOURCE_DIR}/../../src/libbson/tests/test-bcon-extract.c - ${PROJECT_SOURCE_DIR}/tests/debug-stream.c - ${PROJECT_SOURCE_DIR}/tests/json-test.c - ${PROJECT_SOURCE_DIR}/tests/json-test-monitoring.c - ${PROJECT_SOURCE_DIR}/tests/json-test-operations.c - ${PROJECT_SOURCE_DIR}/tests/mock_server/future.c - ${PROJECT_SOURCE_DIR}/tests/mock_server/future-functions.c - ${PROJECT_SOURCE_DIR}/tests/mock_server/future-value.c - ${PROJECT_SOURCE_DIR}/tests/mock_server/sync-queue.c - ${PROJECT_SOURCE_DIR}/tests/mock_server/mock-rs.c - ${PROJECT_SOURCE_DIR}/tests/mock_server/mock-server.c - ${PROJECT_SOURCE_DIR}/tests/mock_server/request.c - ${PROJECT_SOURCE_DIR}/tests/test-conveniences.c - ${PROJECT_SOURCE_DIR}/tests/test-libmongoc.c - ${PROJECT_SOURCE_DIR}/tests/test-happy-eyeballs.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-array.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-async.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-buffer.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-bulk.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-change-stream.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-client.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-client-pool.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-cluster.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-collection.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-collection-find.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-collection-find-with-opts.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-connection-uri.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-command-monitoring.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-counters.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-crud.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-cursor.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-database.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-error.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-exhaust.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-find-and-modify.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-gridfs.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-gridfs-file-page.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-handshake.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-linux-distro-scanner.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-list.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-log.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-matcher.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-max-staleness.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-opts.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-queue.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-read-concern.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-read-write-concern.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-read-prefs.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-retryable-writes.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-rpc.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-sample-commands.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-scram.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-sdam.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-sdam-monitoring.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-server-selection.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-server-selection-errors.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-transactions.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-client-session.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-set.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-socket.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-dns.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-stream.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-thread.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-topology.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-topology-description.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-topology-reconcile.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-topology-scanner.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-uri.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-version.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-usleep.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-util.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-write-commands.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-write-concern.c - ${PROJECT_SOURCE_DIR}/tests/TestSuite.c -) - -if (MONGOC_ENABLE_SSL) - set (test-libmongoc-sources ${test-libmongoc-sources} - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-x509.c - ${PROJECT_SOURCE_DIR}/tests/ssl-test.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-stream-tls.c - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-stream-tls-error.c - ) -endif () - -if (MONGOC_ENABLE_SASL_CYRUS) - set (test-libmongoc-sources ${test-libmongoc-sources} - ${PROJECT_SOURCE_DIR}/tests/test-mongoc-cyrus.c - ) -endif () - -mongoc_add_test (test-libmongoc FALSE ${test-libmongoc-sources}) -mongoc_add_test (test-mongoc-gssapi TRUE ${PROJECT_SOURCE_DIR}/tests/test-mongoc-gssapi.c) - -if (ENABLE_TESTS) - enable_testing () - add_test (NAME test-libmongoc - COMMAND test-libmongoc - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/../.. - ) - - # "make test" doesn't compile tests, so we create "make check" which compiles - # and runs tests: https://gitlab.kitware.com/cmake/cmake/issues/8774 - add_custom_target (check COMMAND ${CMAKE_CTEST_COMMAND} -V - DEPENDS test-libmongoc - ) -endif () - -# examples/ -mongoc_add_example (example-client TRUE ${PROJECT_SOURCE_DIR}/examples/example-client.c) -mongoc_add_example (example-collection-watch TRUE ${PROJECT_SOURCE_DIR}/examples/example-collection-watch.c) -if (NOT WIN32) - mongoc_add_example (example-resume TRUE ${PROJECT_SOURCE_DIR}/examples/example-resume.c) -endif() -mongoc_add_example (example-start-at-optime TRUE ${PROJECT_SOURCE_DIR}/examples/example-start-at-optime.c) -mongoc_add_example (example-command-monitoring TRUE ${PROJECT_SOURCE_DIR}/examples/example-command-monitoring.c) -mongoc_add_example (example-command-with-opts TRUE ${PROJECT_SOURCE_DIR}/examples/example-command-with-opts.c) -mongoc_add_example (example-create-indexes TRUE ${PROJECT_SOURCE_DIR}/examples/example-create-indexes.c) -mongoc_add_example (example-gridfs TRUE ${PROJECT_SOURCE_DIR}/examples/example-gridfs.c) -if (NOT WIN32 AND ENABLE_EXAMPLES) - mongoc_add_example (example-pool TRUE ${PROJECT_SOURCE_DIR}/examples/example-pool.c) - target_link_libraries (example-pool Threads::Threads) -endif () -mongoc_add_example (example-scram TRUE ${PROJECT_SOURCE_DIR}/examples/example-scram.c) -mongoc_add_example (example-sdam-monitoring TRUE ${PROJECT_SOURCE_DIR}/examples/example-sdam-monitoring.c) -mongoc_add_example (example-session TRUE ${PROJECT_SOURCE_DIR}/examples/example-session.c) -mongoc_add_example (example-transaction TRUE ${PROJECT_SOURCE_DIR}/examples/example-transaction.c) -mongoc_add_example (example-update TRUE ${PROJECT_SOURCE_DIR}/examples/example-update.c) -mongoc_add_example (find-and-modify TRUE ${PROJECT_SOURCE_DIR}/examples/find-and-modify.c) -mongoc_add_example (hello_mongoc TRUE ${PROJECT_SOURCE_DIR}/examples/hello_mongoc.c) -mongoc_add_example (mongoc-dump TRUE ${PROJECT_SOURCE_DIR}/examples/mongoc-dump.c) -mongoc_add_example (mongoc-ping TRUE ${PROJECT_SOURCE_DIR}/examples/mongoc-ping.c) -mongoc_add_example (mongoc-tail TRUE ${PROJECT_SOURCE_DIR}/examples/mongoc-tail.c) - -# examples/aggregation/ -mongoc_add_example (aggregation1 TRUE ${PROJECT_SOURCE_DIR}/examples/aggregation/aggregation1.c) - -# examples/basic_aggregation/ -mongoc_add_example (basic-aggregation TRUE ${PROJECT_SOURCE_DIR}/examples/basic_aggregation/basic-aggregation.c) - -# examples/bulk/ -mongoc_add_example (bulk-collation TRUE ${PROJECT_SOURCE_DIR}/examples/bulk/bulk-collation.c) -mongoc_add_example (bulk1 TRUE ${PROJECT_SOURCE_DIR}/examples/bulk/bulk1.c) -mongoc_add_example (bulk2 TRUE ${PROJECT_SOURCE_DIR}/examples/bulk/bulk2.c) -mongoc_add_example (bulk3 TRUE ${PROJECT_SOURCE_DIR}/examples/bulk/bulk3.c) -mongoc_add_example (bulk4 TRUE ${PROJECT_SOURCE_DIR}/examples/bulk/bulk4.c) -mongoc_add_example (bulk5 TRUE ${PROJECT_SOURCE_DIR}/examples/bulk/bulk5.c) -mongoc_add_example (bulk6 TRUE ${PROJECT_SOURCE_DIR}/examples/bulk/bulk6.c) - -# examples/common_operations/ -mongoc_add_example (common-operations TRUE ${PROJECT_SOURCE_DIR}/examples/common_operations/common-operations.c) - -# examples/find_and_modify_with_opts/ -mongoc_add_example (fam TRUE ${PROJECT_SOURCE_DIR}/examples/find_and_modify_with_opts/fam.c) - -file (COPY ${PROJECT_SOURCE_DIR}/tests/binary DESTINATION ${PROJECT_BINARY_DIR}/tests) -file (COPY ${PROJECT_SOURCE_DIR}/tests/json DESTINATION ${PROJECT_BINARY_DIR}/tests) -file (COPY ${PROJECT_SOURCE_DIR}/tests/x509gen DESTINATION ${PROJECT_BINARY_DIR}/tests) -file (COPY ${PROJECT_SOURCE_DIR}/tests/release_files DESTINATION ${PROJECT_BINARY_DIR}/tests) - -install ( - TARGETS mongoc_shared ${EXAMPLES} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} -) - -if (MONGOC_ENABLE_STATIC) - install ( - TARGETS mongoc_shared mongoc_static ${EXAMPLES} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} - ) -endif () - -set (MONGOC_HEADER_INSTALL_DIR - "${CMAKE_INSTALL_INCLUDEDIR}/libmongoc-${MONGOC_API_VERSION}" -) - -install ( - FILES ${HEADERS} - DESTINATION "${MONGOC_HEADER_INSTALL_DIR}/mongoc" -) - -install ( - FILES ${HEADERS_FORWARDING} - DESTINATION "${MONGOC_HEADER_INSTALL_DIR}" -) - -if (ENABLE_APPLE_FRAMEWORK) - install ( - FILES "${PROJECT_BINARY_DIR}/src/mongoc/modules/module.modulemap" - DESTINATION "${CMAKE_INSTALL_BINDIR}/mongoc.framework/Modules/" - ) -endif () - -# Define pkg-config files -set (VERSION "${MONGOC_VERSION}") -set (prefix "${CMAKE_INSTALL_PREFIX}") -set (libdir "\${prefix}/lib") - -foreach ( - FLAG - ${SASL_LIBRARIES} ${SSL_LIBRARIES} ${SHM_LIBRARIES} ${RESOLV_LIBRARIES} - ${THREAD_LIB} ${ZLIB_LIBRARIES} ${SNAPPY_LIBRARIES} ${ICU_LIBRARIES}) - - if (IS_ABSOLUTE "${FLAG}") - get_filename_component (FLAG_DIR "${FLAG}" DIRECTORY) - get_filename_component (FLAG_FILE "${FLAG}" NAME_WE) - STRING (REGEX REPLACE "^lib" "" FLAG_FILE "${FLAG_FILE}") - set (MONGOC_LIBRARIES "${MONGOC_LIBRARIES} -L${FLAG_DIR} -l${FLAG_FILE}") - elseif (FLAG MATCHES "^-.*") - # Flag starts with dash, add it as-is. - set (MONGOC_LIBRARIES "${MONGOC_LIBRARIES} ${FLAG}") - else () - # Flag doesn't start with dash, add it with a dash. - set (MONGOC_LIBRARIES "${MONGOC_LIBRARIES} -l${FLAG}") - endif () -endforeach () - -configure_file ( - ${CMAKE_CURRENT_SOURCE_DIR}/src/libmongoc-1.0.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/src/libmongoc-1.0.pc -@ONLY) -install ( - FILES ${CMAKE_CURRENT_BINARY_DIR}/src/libmongoc-1.0.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig -) -if (MONGOC_ENABLE_STATIC) - configure_file ( - ${CMAKE_CURRENT_SOURCE_DIR}/src/libmongoc-static-1.0.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/src/libmongoc-static-1.0.pc - @ONLY) - install ( - FILES ${CMAKE_CURRENT_BINARY_DIR}/src/libmongoc-static-1.0.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) -endif () -# Deprecated alias for libmongoc-1.0.pc, see CDRIVER-2086. -if (MONGOC_ENABLE_SSL) - configure_file ( - ${CMAKE_CURRENT_SOURCE_DIR}/src/libmongoc-ssl-1.0.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/src/libmongoc-ssl-1.0.pc - @ONLY) - install ( - FILES ${CMAKE_CURRENT_BINARY_DIR}/src/libmongoc-ssl-1.0.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) -endif () - -include (../../build/cmake/MongoCPackage.cmake) - -if (ENABLE_MAN_PAGES STREQUAL ON OR ENABLE_HTML_DOCS STREQUAL ON) - find_package (Sphinx REQUIRED) - add_subdirectory (doc) - add_custom_target (mongoc-doc - ALL - DEPENDS - $<$:mongoc-man> - $<$:mongoc-html> - ) -endif () - -add_subdirectory (build) -# sub-directory 'doc' was already included above -add_subdirectory (examples) -add_subdirectory (src) -add_subdirectory (tests) - -set_local_dist (src_libmongoc_DIST_local - CMakeLists.txt - THIRD_PARTY_NOTICES -) - -set (src_libmongoc_DIST - ${src_libmongoc_DIST_local} - ${src_libmongoc_build_DIST} - ${src_libmongoc_doc_DIST} - ${src_libmongoc_examples_DIST} - ${src_libmongoc_src_DIST} - ${src_libmongoc_tests_DIST} - PARENT_SCOPE -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/THIRD_PARTY_NOTICES b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/THIRD_PARTY_NOTICES deleted file mode 100644 index 2bba00a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/THIRD_PARTY_NOTICES +++ /dev/null @@ -1,56 +0,0 @@ -The MongoDB C Driver uses third-party code distributed under different licenses. - -License notice for mongoc-stream-tls-secure-channel.c -------------------------------------------------------------------------------- - -Curl License - -Significant portions of mongoc-stream-tls-secure-channel.c are from Curl. - -Copyright (C) 2012 - 2015, Marc Hoersken, -Copyright (C) 2012, Mark Salisbury, -Copyright (C) 2012 - 2015, Daniel Stenberg, , et al. - -All rights reserved. - -Permission to use, copy, modify, and distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright -notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE -OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not -be used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization of the copyright holder. - - -License notice for utlist.h -------------------------------------------------------------------------------- - -BSD 1-Clause License - -Copyright: 2007-2014, Troy D. Hanson http://troydhanson.github.com/uthash/ - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/CMakeLists.txt deleted file mode 100644 index 25fa7f6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -include (SphinxBuild) - -if (ENABLE_HTML_DOCS) - sphinx_build_html (mongoc-html mongo-c-driver) - set (src_libmongoc_doc_DIST_htmls ${doc_DIST_htmls}) -endif () - -if (ENABLE_MAN_PAGES) - sphinx_build_man (mongoc-man) - set (src_libmongoc_doc_DIST_mans ${doc_DIST_mans}) -endif () - -add_subdirectory (html) -add_subdirectory (includes) -add_subdirectory (man) -add_subdirectory (static) - -file (GLOB src_libmongoc_doc_DIST_rsts RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.rst) - -extra_dist_generated ( - ${src_libmongoc_doc_DIST_htmls} - ${src_libmongoc_doc_DIST_mans} -) - -set_local_dist (src_libmongoc_doc_DIST_local - CMakeLists.txt - ${src_libmongoc_doc_DIST_rsts} - conf.py - libbson-objects.inv -) - -set (src_libmongoc_doc_DIST - ${src_libmongoc_doc_DIST_local} - ${src_libmongoc_doc_html_DIST} - ${src_libmongoc_doc_includes_DIST} - ${src_libmongoc_doc_man_DIST} - ${src_libmongoc_doc_mongoc_DIST} - ${src_libmongoc_doc_mongoc-theme_DIST} - ${src_libmongoc_doc_static_DIST} - PARENT_SCOPE -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/advanced-connections.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/advanced-connections.rst deleted file mode 100644 index 67a7eb9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/advanced-connections.rst +++ /dev/null @@ -1,196 +0,0 @@ -:man_page: mongoc_advanced_connections - -Advanced Connections -==================== - -The following guide contains information specific to certain types of MongoDB configurations. - -For an example of connecting to a simple standalone server, see the :ref:`Tutorial `. To establish a connection with authentication options enabled, see the :doc:`Authentication ` page. - -Connecting to a Replica Set ---------------------------- - -Connecting to a `replica set `_ is much like connecting to a standalone MongoDB server. Simply specify the replica set name using the ``?replicaSet=myreplset`` URI option. - -.. code-block:: c - - #include - #include - - int - main (int argc, char *argv[]) - { - mongoc_client_t *client; - - mongoc_init (); - - /* Create our MongoDB Client */ - client = mongoc_client_new ( - "mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset"); - - /* Do some work */ - /* TODO */ - - /* Clean up */ - mongoc_client_destroy (client); - mongoc_cleanup (); - - return 0; - } - -.. tip:: - - Multiple hostnames can be specified in the MongoDB connection string URI, with a comma separating hosts in the seed list. - - It is recommended to use a seed list of members of the replica set to allow the driver to connect to any node. - -Connecting to a Sharded Cluster -------------------------------- - -To connect to a `sharded cluster `_, specify the ``mongos`` nodes the client should connect to. The C Driver will automatically detect that it has connected to a ``mongos`` sharding server. - -If more than one hostname is specified, a seed list will be created to attempt failover between the ``mongos`` instances. - -.. warning:: - - Specifying the ``replicaSet`` parameter when connecting to a ``mongos`` sharding server is invalid. - -.. code-block:: c - - #include - #include - - int - main (int argc, char *argv[]) - { - mongoc_client_t *client; - - mongoc_init (); - - /* Create our MongoDB Client */ - client = mongoc_client_new ("mongodb://myshard01:27017/"); - - /* Do something with client ... */ - - /* Free the client */ - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return 0; - } - -Connecting to an IPv6 Address ------------------------------ - -The MongoDB C Driver will automatically resolve IPv6 addresses from host names. However, to specify an IPv6 address directly, wrap the address in ``[]``. - -.. code-block:: none - - mongoc_uri_t *uri = mongoc_uri_new ("mongodb://[::1]:27017"); - -Connecting with IPv4 and IPv6 ------------------------------ - -.. include:: includes/ipv4-and-ipv6.txt - -Connecting to a UNIX Domain Socket ----------------------------------- - -On UNIX-like systems, the C Driver can connect directly to a MongoDB server using a UNIX domain socket. Pass the URL-encoded path to the socket, which *must* be suffixed with ``.sock``. For example, to connect to a domain socket at ``/tmp/mongodb-27017.sock``: - -.. code-block:: none - - mongoc_uri_t *uri = mongoc_uri_new ("mongodb://%2Ftmp%2Fmongodb-27017.sock"); - -Include username and password like so: - -.. code-block:: none - - mongoc_uri_t *uri = mongoc_uri_new ("mongodb://user:pass@%2Ftmp%2Fmongodb-27017.sock"); - -Connecting to a server over SSL -------------------------------- - -These are instructions for configuring TLS/SSL connections. - -To run a server locally (on port 27017, for example): - -.. code-block:: none - - $ mongod --port 27017 --sslMode requireSSL --sslPEMKeyFile server.pem --sslCAFile ca.pem - -Add ``/?ssl=true`` to the end of a client URI. - -.. code-block:: none - - mongoc_client_t *client = NULL; - client = mongoc_client_new ("mongodb://localhost:27017/?ssl=true"); - -MongoDB requires client certificates by default, unless the ``--sslAllowConnectionsWithoutCertificates`` is provided. The C Driver can be configured to present a client certificate using a ``mongoc_ssl_opt_t``: - -.. code-block:: none - - const mongoc_ssl_opt_t *ssl_default = mongoc_ssl_opt_get_default (); - mongoc_ssl_opt_t ssl_opts = { 0 }; - - /* optionally copy in a custom trust directory or file; otherwise the default is used. */ - memcpy (&ssl_opts, ssl_default, sizeof ssl_opts); - ssl_opts.pem_file = "client.pem" - - mongoc_client_set_ssl_opts (client, &ssl_opts); - -The client certificate provided by ``pem_file`` must be issued by one of the server trusted Certificate Authorities listed in ``--sslCAFile``, or issued by a CA in the native certificate store on the server when omitted. - -To verify the server certificate against a specific CA, provide a PEM armored file with a CA certificate, or concatenated list of CA certificates using the ``ca_file`` option, or ``c_rehash`` directory structure of CAs, pointed to using the ``ca_dir`` option. When no ``ca_file`` or ``ca_dir`` is provided, the driver will use CAs provided by the native platform certificate store. - -See :doc:`mongoc_ssl_opt_t` for more information on the various SSL related options. - -Compressing data to and from MongoDB ------------------------------------- - -MongoDB 3.4 added Snappy compression support, and zlib compression in 3.6. -To enable compression support the client must be configured with which compressors to use: - -.. code-block:: none - - mongoc_client_t *client = NULL; - client = mongoc_client_new ("mongodb://localhost:27017/?compressors=snappy,zlib"); - -The ``compressors`` option specifies the priority order of compressors the -client wants to use. Messages are compressed if the client and server share any -compressors in common. - -Note that the compressor used by the server might not be the same compressor as -the client used. For example, if the client uses the connection string -``compressors=zlib,snappy`` the client will use ``zlib`` compression to send -data (if possible), but the server might still reply using ``snappy``, -depending on how the server was configured. - -The driver must be built with zlib and/or snappy support to enable compression -support, any unknown (or not compiled in) compressor value will be ignored. - -Additional Connection Options ------------------------------ - -The full list of connection options can be found in the :symbol:`mongoc_uri_t` docs. - -Certain socket/connection related options are not configurable: - -============== ===================================================== ====================== -Option Description Value -============== ===================================================== ====================== -SO_KEEPALIVE TCP Keep Alive Enabled --------------- ----------------------------------------------------- ---------------------- -TCP_KEEPIDLE How long a connection needs to remain idle before TCP 300 seconds - starts sending keepalive probes --------------- ----------------------------------------------------- ---------------------- -TCP_KEEPINTVL The time in seconds between TCP probes 10 seconds --------------- ----------------------------------------------------- ---------------------- -TCP_KEEPCNT How many probes to send, without acknowledgement, 9 probes - before dropping the connection --------------- ----------------------------------------------------- ---------------------- -TCP_NODELAY Send packets as soon as possible or buffer small Enabled (no buffering) - packets (Nagle algorithm) -============== ===================================================== ====================== - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/aggregate.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/aggregate.rst deleted file mode 100644 index 0103a58..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/aggregate.rst +++ /dev/null @@ -1,138 +0,0 @@ -:man_page: mongoc_aggregate - -Aggregation Framework Examples -============================== - -This document provides a number of practical examples that display the capabilities of the aggregation framework. - -The `Aggregations using the Zip Codes Data Set `_ examples uses a publicly available data set of all zipcodes and populations in the United States. These data are available at: `zips.json `_. - -Requirements ------------- - -Let's check if everything is installed. - -Use the following command to load zips.json data set into mongod instance: - -.. code-block:: none - - $ mongoimport --drop -d test -c zipcodes zips.json - -Let's use the MongoDB shell to verify that everything was imported successfully. - -.. code-block:: none - - $ mongo test - connecting to: test - > db.zipcodes.count() - 29467 - > db.zipcodes.findOne() - { - "_id" : "35004", - "city" : "ACMAR", - "loc" : [ - -86.51557, - 33.584132 - ], - "pop" : 6055, - "state" : "AL" - } - -Aggregations using the Zip Codes Data Set ------------------------------------------ - -Each document in this collection has the following form: - -.. code-block:: json - - { - "_id" : "35004", - "city" : "Acmar", - "state" : "AL", - "pop" : 6055, - "loc" : [-86.51557, 33.584132] - } - -In these documents: - -* The ``_id`` field holds the zipcode as a string. -* The ``city`` field holds the city name. -* The ``state`` field holds the two letter state abbreviation. -* The ``pop`` field holds the population. -* The ``loc`` field holds the location as a ``[latitude, longitude]`` array. - -States with Populations Over 10 Million ---------------------------------------- - -To get all states with a population greater than 10 million, use the following aggregation pipeline: - -.. literalinclude:: ../examples/aggregation/aggregation1.c - :language: c - :caption: aggregation1.c - -You should see a result like the following: - -.. code-block:: json - - { "_id" : "PA", "total_pop" : 11881643 } - { "_id" : "OH", "total_pop" : 10847115 } - { "_id" : "NY", "total_pop" : 17990455 } - { "_id" : "FL", "total_pop" : 12937284 } - { "_id" : "TX", "total_pop" : 16986510 } - { "_id" : "IL", "total_pop" : 11430472 } - { "_id" : "CA", "total_pop" : 29760021 } - -The above aggregation pipeline is build from two pipeline operators: ``$group`` and ``$match``. - -The ``$group`` pipeline operator requires _id field where we specify grouping; remaining fields specify how to generate composite value and must use one of the group aggregation functions: ``$addToSet``, ``$first``, ``$last``, ``$max``, ``$min``, ``$avg``, ``$push``, ``$sum``. The ``$match`` pipeline operator syntax is the same as the read operation query syntax. - -The ``$group`` process reads all documents and for each state it creates a separate document, for example: - -.. code-block:: json - - { "_id" : "WA", "total_pop" : 4866692 } - -The ``total_pop`` field uses the $sum aggregation function to sum the values of all pop fields in the source documents. - -Documents created by ``$group`` are piped to the ``$match`` pipeline operator. It returns the documents with the value of ``total_pop`` field greater than or equal to 10 million. - -Average City Population by State --------------------------------- - -To get the first three states with the greatest average population per city, use the following aggregation: - -.. code-block:: c - - pipeline = BCON_NEW ("pipeline", "[", - "{", "$group", "{", "_id", "{", "state", "$state", "city", "$city", "}", "pop", "{", "$sum", "$pop", "}", "}", "}", - "{", "$group", "{", "_id", "$_id.state", "avg_city_pop", "{", "$avg", "$pop", "}", "}", "}", - "{", "$sort", "{", "avg_city_pop", BCON_INT32 (-1), "}", "}", - "{", "$limit", BCON_INT32 (3) "}", - "]"); - -This aggregate pipeline produces: - -.. code-block:: json - - { "_id" : "DC", "avg_city_pop" : 303450.0 } - { "_id" : "FL", "avg_city_pop" : 27942.29805615551 } - { "_id" : "CA", "avg_city_pop" : 27735.341099720412 } - -The above aggregation pipeline is build from three pipeline operators: ``$group``, ``$sort`` and ``$limit``. - -The first ``$group`` operator creates the following documents: - -.. code-block:: json - - { "_id" : { "state" : "WY", "city" : "Smoot" }, "pop" : 414 } - -Note, that the ``$group`` operator can't use nested documents except the ``_id`` field. - -The second ``$group`` uses these documents to create the following documents: - -.. code-block:: json - - { "_id" : "FL", "avg_city_pop" : 27942.29805615551 } - -These documents are sorted by the ``avg_city_pop`` field in descending order. Finally, the ``$limit`` pipeline operator returns the first 3 documents from the sorted set. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/api.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/api.rst deleted file mode 100644 index 752e5e5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/api.rst +++ /dev/null @@ -1,54 +0,0 @@ -API Reference -============= - -.. toctree:: - :titlesonly: - :maxdepth: 1 - - init-cleanup - logging - errors - lifecycle - mongoc_bulk_operation_t - mongoc_change_stream_t - mongoc_client_pool_t - mongoc_client_session_t - mongoc_client_t - mongoc_collection_t - mongoc_cursor_t - mongoc_database_t - mongoc_delete_flags_t - mongoc_find_and_modify_opts_t - mongoc_gridfs_file_list_t - mongoc_gridfs_file_opt_t - mongoc_gridfs_file_t - mongoc_gridfs_t - mongoc_host_list_t - mongoc_index_opt_geo_t - mongoc_index_opt_t - mongoc_index_opt_wt_t - mongoc_insert_flags_t - mongoc_iovec_t - mongoc_matcher_t - mongoc_query_flags_t - mongoc_rand - mongoc_read_concern_t - mongoc_read_mode_t - mongoc_read_prefs_t - mongoc_remove_flags_t - mongoc_reply_flags_t - mongoc_server_description_t - mongoc_session_opt_t - mongoc_socket_t - mongoc_ssl_opt_t - mongoc_stream_buffered_t - mongoc_stream_file_t - mongoc_stream_socket_t - mongoc_stream_t - mongoc_stream_tls_t - mongoc_topology_description_t - mongoc_transaction_opt_t - mongoc_update_flags_t - mongoc_uri_t - mongoc_version - mongoc_write_concern_t diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/application-performance-monitoring.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/application-performance-monitoring.rst deleted file mode 100644 index 47f4bb4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/application-performance-monitoring.rst +++ /dev/null @@ -1,160 +0,0 @@ -:man_page: mongoc_application_performance_monitoring - -Application Performance Monitoring (APM) -======================================== - -The MongoDB C Driver allows you to monitor all the MongoDB operations the driver executes. This event-notification system conforms to two MongoDB driver specs: - -* `Command Monitoring `_: events related to all application operations. -* `SDAM Monitoring `_: events related to the driver's Server Discovery And Monitoring logic. - -To receive notifications, create a ``mongoc_apm_callbacks_t`` with :symbol:`mongoc_apm_callbacks_new`, set callbacks on it, then pass it to :symbol:`mongoc_client_set_apm_callbacks` or :symbol:`mongoc_client_pool_set_apm_callbacks`. - -Command-Monitoring Example --------------------------- - -.. literalinclude:: ../examples/example-command-monitoring.c - :language: c - :caption: example-command-monitoring.c - -This example program prints: - -.. code-block:: none - - Command drop started on 127.0.0.1: - { "drop" : "test" } - - Command drop succeeded: - { "ns" : "test.test", "nIndexesWas" : 1, "ok" : 1.0 } - - Command insert started on 127.0.0.1: - { - "insert" : "test", - "ordered" : true, - "documents" : [ - { "_id" : 0 }, { "_id" : 1 } - ] - } - - Command insert succeeded: - { "n" : 2, "ok" : 1.0 } - - Command insert started on 127.0.0.1: - { - "insert" : "test", - "ordered" : true, - "documents" : [ - { "_id" : 0 } - ] - } - - Command insert succeeded: - { - "n" : 0, - "writeErrors" : [ - { "index" : 0, "code" : 11000, "errmsg" : "duplicate key" } - ], - "ok" : 1.0 - } - - started: 3 - succeeded: 3 - failed: 0 - -The output has been edited and formatted for clarity. Depending on your server configuration, messages may include metadata like database name, logical session ids, or cluster times that are not shown here. - -The final "insert" command is considered successful, despite the writeError, because the server replied to the overall command with ``"ok": 1``. - -SDAM Monitoring Example ------------------------ - -.. literalinclude:: ../examples/example-sdam-monitoring.c - :language: c - :caption: example-sdam-monitoring.c - -Start a 3-node replica set on localhost with set name "rs" and start the program: - -.. code-block:: none - - ./example-sdam-monitoring "mongodb://localhost:27017,localhost:27018/?replicaSet=rs" - -This example program prints something like: - -.. code-block:: none - - topology opening - topology changed: Unknown -> ReplicaSetNoPrimary - secondary UNAVAILABLE - primary UNAVAILABLE - server opening: localhost:27017 - server opening: localhost:27018 - localhost:27017 heartbeat started - localhost:27018 heartbeat started - localhost:27017 heartbeat succeeded: { ... reply ... } - server changed: localhost:27017 Unknown -> RSPrimary - server opening: localhost:27019 - topology changed: ReplicaSetNoPrimary -> ReplicaSetWithPrimary - new servers: - RSPrimary localhost:27017 - secondary UNAVAILABLE - primary AVAILABLE - localhost:27019 heartbeat started - localhost:27018 heartbeat succeeded: { ... reply ... } - server changed: localhost:27018 Unknown -> RSSecondary - topology changed: ReplicaSetWithPrimary -> ReplicaSetWithPrimary - previous servers: - RSPrimary localhost:27017 - new servers: - RSPrimary localhost:27017 - RSSecondary localhost:27018 - secondary AVAILABLE - primary AVAILABLE - localhost:27019 heartbeat succeeded: { ... reply ... } - server changed: localhost:27019 Unknown -> RSSecondary - topology changed: ReplicaSetWithPrimary -> ReplicaSetWithPrimary - previous servers: - RSPrimary localhost:27017 - RSSecondary localhost:27018 - new servers: - RSPrimary localhost:27017 - RSSecondary localhost:27018 - RSSecondary localhost:27019 - secondary AVAILABLE - primary AVAILABLE - topology closed - - Events: - server changed: 3 - server opening: 3 - server closed: 0 - topology changed: 4 - topology opening: 1 - topology closed: 1 - heartbeat started: 3 - heartbeat succeeded: 3 - heartbeat failed: 0 - -The driver connects to the mongods on ports 27017 and 27018, which were specified in the URI, and determines which is primary. It also discovers the third member, "localhost:27019", and adds it to the topology. - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - mongoc_apm_callbacks_t - mongoc_apm_command_failed_t - mongoc_apm_command_started_t - mongoc_apm_command_succeeded_t - mongoc_apm_server_changed_t - mongoc_apm_server_closed_t - mongoc_apm_server_heartbeat_failed_t - mongoc_apm_server_heartbeat_started_t - mongoc_apm_server_heartbeat_succeeded_t - mongoc_apm_server_opening_t - mongoc_apm_topology_changed_t - mongoc_apm_topology_closed_t - mongoc_apm_topology_opening_t diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/authentication.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/authentication.rst deleted file mode 100644 index 2bcefeb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/authentication.rst +++ /dev/null @@ -1,205 +0,0 @@ -:man_page: mongoc_authentication - -Authentication -============== - -This guide covers the use of authentication options with the MongoDB C Driver. Ensure that the MongoDB server is also properly configured for authentication before making a connection. For more information, see the `MongoDB security documentation `_. - -The MongoDB C driver supports several authentication mechanisms through the use of MongoDB connection URIs. - -By default, if a username and password are provided as part of the connection string (and an optional authentication database), they are used to connect via the default authentication mechanism of the server. - -To select a specific authentication mechanism other than the default, see the list of supported mechanism below. - -.. code-block:: none - - mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb"); - -Currently supported values for the authMechanism connection string option are: - -* :ref:`SCRAM-SHA-1 ` -* :ref:`MONGODB-CR (deprecated) ` -* :ref:`GSSAPI ` -* :ref:`PLAIN ` -* :ref:`X509 ` - -.. _authentication_scram_sha_256: - -Basic Authentication (SCRAM-SHA-256) ------------------------------------- - -MongoDB 4.0 introduces support for authenticating using the SCRAM protocol -with the more secure SHA-256 hash described in `RFC 7677 -`_. Using this authentication mechanism -means that the password is never actually sent over the wire when -authenticating, but rather a computed proof that the client password is the -same as the password the server knows. In MongoDB 4.0, the C driver can -determine the correct default authentication mechanism for users with stored -SCRAM-SHA-1 and SCRAM-SHA-256 credentials: - -.. code-block:: none - - mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb"); - /* the correct authMechanism is negotiated between the driver and server. */ - -Alternatively, SCRAM-SHA-256 can be explicitly specified as an authMechanism. - -.. code-block:: none - - mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM-SHA-256&authSource=mydb"); - -Passwords for SCRAM-SHA-256 undergo the preprocessing step known as SASLPrep -specified in `RFC 4013 `_. SASLPrep will -only be performed for passwords containing non-ASCII characters. SASLPrep -requires libicu. If libicu is not available, attempting to authenticate over -SCRAM-SHA-256 with non-ASCII passwords will result in error. - -Usernames *never* undergo SASLPrep. - -By default, when building the C driver libicu is linked if available. This can -be changed with the ``ENABLE_ICU`` cmake option. To specify an installation -path of libicu, specify ``ICU_ROOT`` as a cmake option. See the -`FindICU `_ documentation -for more information. - - -.. _authentication_scram_sha_1: - -Basic Authentication (SCRAM-SHA-1) ----------------------------------- - -The default authentication mechanism before MongoDB 4.0 is ``SCRAM-SHA-1`` (`RFC 5802 `_). Using this authentication mechanism means that the password is never actually sent over the wire when authenticating, but rather a computed proof that the client password is the same as the password the server knows. - -.. code-block:: none - - mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM-SHA-1&authSource=mydb"); - -.. note:: - - ``SCRAM-SHA-1`` authenticates against the ``admin`` database by default. If the user is created in another database, then specifying the authSource is required. - -.. _authentication_mongodbcr: - -Legacy Authentication (MONGODB-CR) ----------------------------------- - -The MONGODB-CR authMechanism is deprecated and will no longer function in MongoDB 4.0. Instead, specify no authMechanism and the driver -will use an authentication mechanism compatible with your server. - -.. _authentication_kerberos: - -GSSAPI (Kerberos) Authentication --------------------------------- - -.. note:: - - Kerberos support requires compiling the driver against ``cyrus-sasl`` on UNIX-like environments. On Windows, configure the driver to build against the Windows Native SSPI. - -``GSSAPI`` (Kerberos) authentication is available in the Enterprise Edition of MongoDB. To authenticate using ``GSSAPI``, the MongoDB C driver must be installed with SASL support. - -On UNIX-like environments, run the ``kinit`` command before using the following authentication methods: - -.. code-block:: none - - $ kinit mongodbuser@EXAMPLE.COM - mongodbuser@EXAMPLE.COM's Password: - $ klistCredentials cache: FILE:/tmp/krb5cc_1000 - Principal: mongodbuser@EXAMPLE.COM - - Issued Expires Principal - Feb 9 13:48:51 2013 Feb 9 23:48:51 2013 krbtgt/EXAMPLE.COM@EXAMPLE.COM - -Now authenticate using the MongoDB URI. ``GSSAPI`` authenticates against the ``$external`` virtual database, so a database does not need to be specified in the URI. Note that the Kerberos principal *must* be URL-encoded: - -.. code-block:: none - - mongoc_client_t *client; - - client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo-server.example.com/?authMechanism=GSSAPI"); - -.. note:: - - ``GSSAPI`` authenticates against the ``$external`` database, so specifying the authSource database is not required. - -The driver supports these GSSAPI properties: - -* ``CANONICALIZE_HOST_NAME``: This might be required with Cyrus-SASL when the hosts report different hostnames than what is used in the Kerberos database. The default is "false". -* ``SERVICE_NAME``: Use a different service name than the default, "mongodb". - -Set properties in the URL: - -.. code-block:: none - - mongoc_client_t *client; - - client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo-server.example.com/?authMechanism=GSSAPI&" - "authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true"); - -If you encounter errors such as ``Invalid net address``, check if the application is behind a NAT (Network Address Translation) firewall. If so, create a ticket that uses ``forwardable`` and ``addressless`` Kerberos tickets. This can be done by passing ``-f -A`` to ``kinit``. - -.. code-block:: none - - $ kinit -f -A mongodbuser@EXAMPLE.COM - -.. _authentication_plain: - -SASL Plain Authentication -------------------------- - -.. note:: - - The MongoDB C Driver must be compiled with SASL support in order to use ``SASL PLAIN`` authentication. - -MongoDB Enterprise Edition supports the ``SASL PLAIN`` authentication mechanism, initially intended for delegating authentication to an LDAP server. Using the ``SASL PLAIN`` mechanism is very similar to the challenge response mechanism with usernames and passwords. This authentication mechanism uses the ``$external`` virtual database for ``LDAP`` support: - -.. note:: - - ``SASL PLAIN`` is a clear-text authentication mechanism. It is strongly recommended to connect to MongoDB using SSL with certificate validation when using the ``PLAIN`` mechanism. - -.. code-block:: none - - mongoc_client_t *client; - - client = mongoc_client_new ("mongodb://user:password@example.com/?authMechanism=PLAIN"); - -``PLAIN`` authenticates against the ``$external`` database, so specifying the authSource database is not required. - -.. _authentication_x509: - -X.509 Certificate Authentication --------------------------------- - -.. note:: - - The MongoDB C Driver must be compiled with SSL support for X.509 authentication support. Once this is done, start a server with the following options: - - .. code-block:: none - - $ mongod --sslMode requireSSL --sslPEMKeyFile server.pem --sslCAFile ca.pem - -The ``MONGODB-X509`` mechanism authenticates a username derived from the distinguished subject name of the X.509 certificate presented by the driver during SSL negotiation. This authentication method requires the use of SSL connections with certificate validation. - -.. code-block:: none - - mongoc_client_t *client; - mongoc_ssl_opt_t ssl_opts = { 0 }; - - ssl_opts.pem_file = "mycert.pem"; - ssl_opts.pem_pwd = "mycertpassword"; - ssl_opts.ca_file = "myca.pem"; - ssl_opts.ca_dir = "trust_dir"; - ssl_opts.weak_cert_validation = false; - - client = mongoc_client_new ("mongodb://x509_derived_username@localhost/?authMechanism=MONGODB-X509"); - mongoc_client_set_ssl_opts (client, &ssl_opts); - -``MONGODB-X509`` authenticates against the ``$external`` database, so specifying the authSource database is not required. For more information on the x509_derived_username, see the MongoDB server `x.509 tutorial `_. - -.. note:: - - The MongoDB C Driver will attempt to determine the x509 derived username when none is provided, and as of MongoDB 3.4 providing the username is not required at all. - -.. only:: html - - .. taglist:: See Also: - :tags: authmechanism diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/basic-troubleshooting.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/basic-troubleshooting.rst deleted file mode 100644 index 21e53b5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/basic-troubleshooting.rst +++ /dev/null @@ -1,90 +0,0 @@ -:man_page: mongoc_basic_troubleshooting - -Basic Troubleshooting -===================== - -Troubleshooting Checklist -------------------------- - -The following is a short list of things to check when you have a problem. - -* Did you call ``mongoc_init()`` in ``main()``? If not, you will likely see a segfault. -* Have you leaked any clients or cursors as can be found with ``mongoc-stat ``? -* Have packets been delivered to the server? See egress bytes from ``mongoc-stat ``. -* Does ``valgrind`` show any leaks? Ensure you call ``mongoc_cleanup()`` at the end of your process to cleanup lingering allocations from the MongoDB C driver. -* If compiling your own copy of MongoDB C Driver, consider using the cmake option ``-DENABLE_TRACING=ON`` to enable function tracing and hex dumps of network packets to ``STDERR`` and ``STDOUT``. - -Performance Counters --------------------- - -The MongoDB C driver comes with an optional unique feature to help developers and sysadmins troubleshoot problems in production. -Performance counters are available for each process using the driver. -If available, the counters can be accessed outside of the application process via a shared memory segment. -This means that you can graph statistics about your application process easily from tools like Munin or Nagios. -Your author often uses ``watch --interval=0.5 -d mongoc-stat $PID`` to monitor an application. - -Performance counters are only available on Linux platforms supporting shared memory segments. -On supported platforms they are enabled by default. -Applications can be built without the counters by specifying the cmake option ``-DENABLE_SHM_COUNTERS=OFF``. Additionally, if -performance counters are already compiled, they can be disabled at runtime by specifying the environment variable ``MONGOC_DISABLE_SHM``. - -Performance counters keep track of the following: - -* Active and Disposed Cursors -* Active and Disposed Clients, Client Pools, and Socket Streams. -* Number of operations sent and received, by type. -* Bytes transferred and received. -* Authentication successes and failures. -* Number of wire protocol errors. - -To access counters for a given process, simply provide the process id to the ``mongoc-stat`` program installed with the MongoDB C Driver. - -.. code-block:: none - - $ mongoc-stat 22203 - Operations : Egress Total : The number of sent operations. : 13247 - Operations : Ingress Total : The number of received operations. : 13246 - Operations : Egress Queries : The number of sent Query operations. : 13247 - Operations : Ingress Queries : The number of received Query operations. : 0 - Operations : Egress GetMore : The number of sent GetMore operations. : 0 - Operations : Ingress GetMore : The number of received GetMore operations. : 0 - Operations : Egress Insert : The number of sent Insert operations. : 0 - Operations : Ingress Insert : The number of received Insert operations. : 0 - Operations : Egress Delete : The number of sent Delete operations. : 0 - Operations : Ingress Delete : The number of received Delete operations. : 0 - Operations : Egress Update : The number of sent Update operations. : 0 - Operations : Ingress Update : The number of received Update operations. : 0 - Operations : Egress KillCursors : The number of sent KillCursors operations. : 0 - Operations : Ingress KillCursors : The number of received KillCursors operations. : 0 - Operations : Egress Msg : The number of sent Msg operations. : 0 - Operations : Ingress Msg : The number of received Msg operations. : 0 - Operations : Egress Reply : The number of sent Reply operations. : 0 - Operations : Ingress Reply : The number of received Reply operations. : 13246 - Cursors : Active : The number of active cursors. : 1 - Cursors : Disposed : The number of disposed cursors. : 13246 - Clients : Active : The number of active clients. : 1 - Clients : Disposed : The number of disposed clients. : 0 - Streams : Active : The number of active streams. : 1 - Streams : Disposed : The number of disposed streams. : 0 - Streams : Egress Bytes : The number of bytes sent. : 794931 - Streams : Ingress Bytes : The number of bytes received. : 589694 - Streams : N Socket Timeouts : The number of socket timeouts. : 0 - Client Pools : Active : The number of active client pools. : 1 - Client Pools : Disposed : The number of disposed client pools. : 0 - Protocol : Ingress Errors : The number of protocol errors on ingress. : 0 - Auth : Failures : The number of failed authentication requests. : 0 - Auth : Success : The number of successful authentication requests. : 0 - -.. _basic-troubleshooting_file_bug: - -Submitting a Bug Report ------------------------ - -Think you've found a bug? Want to see a new feature in the MongoDB C driver? Please open a case in our issue management tool, JIRA: - -* `Create an account and login `_. -* Navigate to `the CDRIVER project `_. -* Click *Create Issue* - Please provide as much information as possible about the issue type and how to reproduce it. - -Bug reports in JIRA for all driver projects (i.e. CDRIVER, CSHARP, JAVA) and the Core Server (i.e. SERVER) project are *public*. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/bulk.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/bulk.rst deleted file mode 100644 index 428d211..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/bulk.rst +++ /dev/null @@ -1,210 +0,0 @@ -:man_page: mongoc_bulk - -Bulk Write Operations -===================== - -This tutorial explains how to take advantage of MongoDB C driver bulk write operation features. Executing write operations in batches reduces the number of network round trips, increasing write throughput. - -Bulk Insert ------------ - -First we need to fetch a bulk operation handle from the :symbol:`mongoc_collection_t`. - -.. code-block:: c - - mongoc_bulk_operation_t *bulk = - mongoc_collection_create_bulk_operation_with_opts (collection, NULL); - -We can now start inserting documents to the bulk operation. These will be buffered until we execute the operation. - -The bulk operation will coalesce insertions as a single batch for each consecutive call to :symbol:`mongoc_bulk_operation_insert()`. This creates a pipelined effect when possible. - -To execute the bulk operation and receive the result we call :symbol:`mongoc_bulk_operation_execute()`. - -.. literalinclude:: ../examples/bulk/bulk1.c - :language: c - :caption: bulk1.c - -Example ``reply`` document: - -.. code-block:: none - - {"nInserted" : 10000, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [] - "writeConcernErrors" : [] } - -Mixed Bulk Write Operations ---------------------------- - -MongoDB C driver also supports executing mixed bulk write operations. A batch of insert, update, and remove operations can be executed together using the bulk write operations API. - -Ordered Bulk Write Operations ------------------------------ - -Ordered bulk write operations are batched and sent to the server in the order provided for serial execution. The ``reply`` document describes the type and count of operations performed. - -.. literalinclude:: ../examples/bulk/bulk2.c - :language: c - :caption: bulk2.c - -Example ``reply`` document: - -.. code-block:: none - - { "nInserted" : 3, - "nMatched" : 2, - "nModified" : 2, - "nRemoved" : 10000, - "nUpserted" : 1, - "upserted" : [{"index" : 5, "_id" : 4}], - "writeErrors" : [] - "writeConcernErrors" : [] } - -The ``index`` field in the ``upserted`` array is the 0-based index of the upsert operation; in this example, the sixth operation of the overall bulk operation was an upsert, so its index is 5. - -Unordered Bulk Write Operations -------------------------------- - -Unordered bulk write operations are batched and sent to the server in *arbitrary order* where they may be executed in parallel. Any errors that occur are reported after all operations are attempted. - -In the next example the first and third operations fail due to the unique constraint on ``_id``. Since we are doing unordered execution the second and fourth operations succeed. - -.. literalinclude:: ../examples/bulk/bulk3.c - :language: c - :caption: bulk3.c - -Example ``reply`` document: - -.. code-block:: none - - { "nInserted" : 0, - "nMatched" : 1, - "nModified" : 1, - "nRemoved" : 1, - "nUpserted" : 0, - "writeErrors" : [ - { "index" : 0, - "code" : 11000, - "errmsg" : "E11000 duplicate key error index: test.test.$_id_ dup key: { : 1 }" }, - { "index" : 2, - "code" : 11000, - "errmsg" : "E11000 duplicate key error index: test.test.$_id_ dup key: { : 3 }" } ], - "writeConcernErrors" : [] } - - Error: E11000 duplicate key error index: test.test.$_id_ dup key: { : 1 } - -The :symbol:`bson_error_t ` domain is ``MONGOC_ERROR_COMMAND`` and its code is 11000. - -.. _bulk_operation_bypassing_document_validation: - -Bulk Operation Bypassing Document Validation --------------------------------------------- - -This feature is only available when using MongoDB 3.2 and later. - -By default bulk operations are validated against the schema, if any is defined. In certain cases however it may be necessary to bypass the document validation. - -.. literalinclude:: ../examples/bulk/bulk5.c - :language: c - :caption: bulk5.c - -Running the above example will result in: - -.. code-block:: none - - { "nInserted" : 0, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [ - { "index" : 0, - "code" : 121, - "errmsg" : "Document failed validation" } ] } - - Error: Document failed validation - - { "nInserted" : 2, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [] } - -The :symbol:`bson_error_t ` domain is ``MONGOC_ERROR_COMMAND``. - -Bulk Operation Write Concerns ------------------------------ - -By default bulk operations are executed with the :symbol:`write_concern ` of the collection they are executed against. A custom write concern can be passed to the :symbol:`mongoc_collection_create_bulk_operation_with_opts()` method. Write concern errors (e.g. wtimeout) will be reported after all operations are attempted, regardless of execution order. - -.. literalinclude:: ../examples/bulk/bulk4.c - :language: c - :caption: bulk4.c - -Example ``reply`` document and error message: - -.. code-block:: none - - { "nInserted" : 2, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [], - "writeConcernErrors" : [ - { "code" : 64, - "errmsg" : "waiting for replication timed out" } - ] } - - Error: waiting for replication timed out - -The :symbol:`bson_error_t ` domain is ``MONGOC_ERROR_WRITE_CONCERN`` if there are write concern errors and no write errors. Write errors indicate failed operations, so they take precedence over write concern errors, which mean merely that the write concern is not satisfied *yet*. - -.. _setting_collation_order: - -Setting Collation Order ------------------------ - -This feature is only available when using MongoDB 3.4 and later. - -.. literalinclude:: ../examples/bulk/bulk-collation.c - :language: c - :caption: bulk-collation.c - -Running the above example will result in: - -.. code-block:: none - - { "nInserted" : 2, - "nMatched" : 1, - "nModified" : 1, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [ ] - } - -Unacknowledged Bulk Writes --------------------------- - -Set "w" to zero for an unacknowledged write. The driver sends unacknowledged writes using the legacy opcodes ``OP_INSERT``, ``OP_UPDATE``, and ``OP_DELETE``. - -.. literalinclude:: ../examples/bulk/bulk6.c - :language: c - :caption: bulk6.c - -The ``reply`` document is empty: - -.. code-block:: none - - { } - -Further Reading ---------------- - -See the `Driver Bulk API Spec `_, which describes bulk write operations for all MongoDB drivers. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/conf.py b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/conf.py deleted file mode 100644 index 80cfc4d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/conf.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -import os.path -import sys - -# Ensure we can import "mongoc" and "taglist" extension modules. -this_path = os.path.dirname(__file__) -sys.path.append(this_path) -sys.path.append(os.path.normpath(os.path.join(this_path, '../../../build/sphinx'))) - -from mongoc_common import * - -extensions = [ - 'mongoc', - 'taglist', - 'sphinx.ext.intersphinx', - 'sphinx.ext.extlinks', -] - -# General information about the project. -project = 'MongoDB C Driver' -copyright = '2017-present, MongoDB, Inc' -author = 'MongoDB, Inc' - -version_path = os.path.join( - os.path.dirname(__file__), '../../..', 'VERSION_CURRENT') -version = open(version_path).read().strip() -release_path = os.path.join( - os.path.dirname(__file__), '../../..', 'VERSION_RELEASED') -release = open(release_path).read().strip() -release_major, release_minor, release_patch = release.split('.') -release_download = 'https://github.com/mongodb/mongo-c-driver/releases/download/{0}/mongo-c-driver-{0}.tar.gz'.format(release) -rst_prolog = """ -.. |release_major| replace:: %(release_major)s - -.. |release_minor| replace:: %(release_minor)s - -.. |release_patch| replace:: %(release_patch)s - -.. |release_download| replace:: https://github.com/mongodb/mongo-c-driver/releases/download/%(release)s/mongo-c-driver-%(release)s.tar.gz -""" % locals() - -# The extension requires the "base" to contain '%s' exactly once, but we never intend to use it though -extlinks = {'release': (release_download+'%s', '')} - -language = 'en' -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] -master_doc = 'index' - -# don't fetch libbson's inventory from mongoc.org during build - Debian and -# Fedora package builds must work offline - maintain a recent copy here -intersphinx_mapping = { - 'bson': ('http://mongoc.org/libbson/current', 'libbson-objects.inv'), -} - -# -- Options for HTML output ---------------------------------------------- - -html_theme_path = ['../../../build/sphinx'] -html_theme = 'mongoc-theme' -html_title = html_shorttitle = 'MongoDB C Driver %s' % version -# html_favicon = None - -html_sidebars = { - '**': ['globaltoc.html'], - 'errors': [], # Make more room for the big table. - 'mongoc_uri_t': [], # Make more room for the big table. -} - - -def add_canonical_link(app, pagename, templatename, context, doctree): - link = ('' % pagename) - - context['metatags'] = context.get('metatags', '') + link - - -def setup(app): - mongoc_common_setup(app) - app.connect('html-page-context', add_canonical_link) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/connection-pooling.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/connection-pooling.rst deleted file mode 100644 index 5b3b50c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/connection-pooling.rst +++ /dev/null @@ -1,54 +0,0 @@ -:man_page: mongoc_connection_pooling - -Connection Pooling -================== - -The MongoDB C driver has two connection modes: single-threaded and pooled. Single-threaded mode is optimized for embedding the driver within languages like PHP. Multi-threaded programs should use pooled mode: this mode minimizes the total connection count, and in pooled mode a background thread monitors the MongoDB server topology, so the program need not block to scan it. - -Single Mode ------------ - -In single mode, your program creates a :symbol:`mongoc_client_t` directly: - -.. code-block:: c - - mongoc_client_t *client = mongoc_client_new ( - "mongodb://hostA,hostB/?replicaSet=my_rs"); - -The client connects on demand when your program first uses it for a MongoDB operation. Using a non-blocking socket per server, it begins a check on each server concurrently, and uses the asynchronous ``poll`` or ``select`` function to receive events from the sockets, until all have responded or timed out. Put another way, in single-threaded mode the C Driver fans out to begin all checks concurrently, then fans in once all checks have completed or timed out. Once the scan completes, the client executes your program's operation and returns. - -In single mode, the client re-scans the server topology roughly once per minute. If more than a minute has elapsed since the previous scan, the next operation on the client will block while the client completes its scan. This interval is configurable with ``heartbeatFrequencyMS`` in the connection string. (See :symbol:`mongoc_uri_t`.) - -A single client opens one connection per server in your topology: these connections are used both for scanning the topology and performing normal operations. - -Pooled Mode ------------ - -To activate pooled mode, create a :symbol:`mongoc_client_pool_t`: - -.. code-block:: c - - mongoc_uri_t *uri = mongoc_uri_new ( - "mongodb://hostA,hostB/?replicaSet=my_rs"); - - mongoc_client_pool_t *pool = mongoc_client_pool_new (uri); - -When your program first calls :symbol:`mongoc_client_pool_pop`, the pool launches a background thread for monitoring. The thread fans out and connects to all servers in the connection string, using non-blocking sockets and a simple event loop. As it receives ismaster responses from the servers, it updates its view of the server topology. Each time the thread discovers a new server it begins connecting to it, and adds the new socket to the list of non-blocking sockets in the event loop. - -Each thread that executes MongoDB operations must check out a client from the pool: - -.. code-block:: c - - mongoc_client_t *client = mongoc_client_pool_pop (pool); - - /* use the client for operations ... */ - - mongoc_client_pool_push (pool, client); - -The :symbol:`mongoc_client_t` object is not thread-safe, only the :symbol:`mongoc_client_pool_t` is. - -When the driver is in pooled mode, your program's operations are unblocked as soon as monitoring discovers a usable server. For example, if a thread in your program is waiting to execute an "insert" on the primary, it is unblocked as soon as the primary is discovered, rather than waiting for all secondaries to be checked as well. - -The pool opens one connection per server for monitoring, and each client opens its own connection to each server it uses for application operations. The background thread re-scans the server topology roughly every 10 seconds. This interval is configurable with ``heartbeatFrequencyMS`` in the connection string. (See :symbol:`mongoc_uri_t`.) - -See :ref:`connection_pool_options` to configure pool size and behavior, and see :symbol:`mongoc_client_pool_t` for an extended example of a multi-threaded program that uses the driver in pooled mode. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/create-indexes.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/create-indexes.rst deleted file mode 100644 index 4bf9f4d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/create-indexes.rst +++ /dev/null @@ -1,17 +0,0 @@ -:man_page: mongoc_create_indexes - -Creating Indexes -================ - -To create indexes on a MongoDB collection, execute the ``createIndexes`` command -with a command function like :symbol:`mongoc_database_write_command_with_opts` or -:symbol:`mongoc_collection_write_command_with_opts`. See `the MongoDB -Manual entry for the createIndexes command -`_ for details. - -Example -------- - -.. literalinclude:: ../examples/example-create-indexes.c - :language: c - :caption: example-create-indexes.c diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/cursors.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/cursors.rst deleted file mode 100644 index 0c9a82e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/cursors.rst +++ /dev/null @@ -1,90 +0,0 @@ -:man_page: mongoc_cursors - -Cursors -======= - -Handling Cursor Failures ------------------------- - -Cursors exist on a MongoDB server. However, the ``mongoc_cursor_t`` structure gives the local process a handle to the cursor. It is possible for errors to occur on the server while iterating a cursor on the client. Even a network partition may occur. This means that applications should be robust in handling cursor failures. - -While iterating cursors, you should check to see if an error has occurred. See the following example for how to robustly check for errors. - -.. code-block:: c - - static void - print_all_documents (mongoc_collection_t *collection) - { - mongoc_cursor_t *cursor; - const bson_t *doc; - bson_error_t error; - bson_t query = BSON_INITIALIZER; - char *str; - - cursor = mongoc_collection_find_with_opts (collection, query, NULL, NULL); - - while (mongoc_cursor_next (cursor, &doc)) { - str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\n", str); - bson_free (str); - } - - if (mongoc_cursor_error (cursor, &error)) { - fprintf (stderr, "Failed to iterate all documents: %s\n", error.message); - } - - mongoc_cursor_destroy (cursor); - } - -Destroying Server-Side Cursors ------------------------------- - -The MongoDB C driver will automatically destroy a server-side cursor when :symbol:`mongoc_cursor_destroy()` is called. Failure to call this function when done with a cursor will leak memory client side as well as consume extra memory server side. If the cursor was configured to never timeout, it will become a memory leak on the server. - -.. _cursors_tailable: - -Tailable Cursors ----------------- - -Tailable cursors are cursors that remain open even after they've returned a final result. This way, if more documents are added to a collection (i.e., to the cursor's result set), then you can continue to call :symbol:`mongoc_cursor_next()` to retrieve those additional results. - -Here's a complete test case that demonstrates the use of tailable cursors. - -.. note:: - - Tailable cursors are for capped collections only. - -An example to tail the oplog from a replica set. - -.. literalinclude:: ../examples/mongoc-tail.c - :language: c - :caption: mongoc-tail.c - -Let's compile and run this example against a replica set to see updates as they are made. - -.. code-block:: none - - $ gcc -Wall -o mongoc-tail mongoc-tail.c $(pkg-config --cflags --libs libmongoc-1.0) - $ ./mongoc-tail mongodb://example.com/?replicaSet=myReplSet - { - "h" : -8458503739429355503, - "ns" : "test.test", - "o" : { - "_id" : { - "$oid" : "5372ab0a25164be923d10d50" - } - }, - "op" : "i", - "ts" : { - "$timestamp" : { - "i" : 1, - "t" : 1400023818 - } - }, - "v" : 2 - } - -The line of output is a sample from performing ``db.test.insert({})`` from the mongo shell on the replica set. - -See also :symbol:`mongoc_cursor_set_max_await_time_ms`. - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/debugging.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/debugging.rst deleted file mode 100644 index 8b4e38e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/debugging.rst +++ /dev/null @@ -1,106 +0,0 @@ -:man_page: mongoc_debugging - -Aids for Debugging -================== - -GDB ---- - -This repository contains a ``.gdbinit`` file that contains helper functions to -aid debugging of data structures. GDB will load this file -`automatically`_ if you have added the directory which contains the `.gdbinit` file to GDB's -`auto-load safe-path`_, *and* you start GDB from the directory which holds the `.gdbinit` file. - -You can see the safe-path with ``show auto-load safe-path`` on a GDB prompt. You -can configure it by setting it in ``~/.gdbinit`` with:: - - add-auto-load-safe-path /path/to/mongo-c-driver - -If you haven't added the path to your auto-load safe-path, or start GDB in -another directory, load the file with:: - - source path/to/mongo-c-driver/.gdbinit - -The ``.gdbinit`` file defines the ``printbson`` function, which shows the contents of a ``bson_t *`` variable. -If you have a local ``bson_t``, then you must prefix the variable with a `&`. - -An example GDB session looks like:: - - (gdb) printbson bson - ALLOC [0x555556cd7310 + 0] (len=475) - { - 'bool' : true, - 'int32' : NumberInt("42"), - 'int64' : NumberLong("3000000042"), - 'string' : "Stŕìñg", - 'objectId' : ObjectID("5A1442F3122D331C3C6757E1"), - 'utcDateTime' : UTCDateTime(1511277299031), - 'arrayOfInts' : [ - '0' : NumberInt("1"), - '1' : NumberInt("2") - ], - 'embeddedDocument' : { - 'arrayOfStrings' : [ - '0' : "one", - '1' : "two" - ], - 'double' : 2.718280, - 'notherDoc' : { - 'true' : NumberInt("1"), - 'false' : false - } - }, - 'binary' : Binary("02", "3031343532333637"), - 'regex' : Regex("@[a-z]+@", "im"), - 'null' : null, - 'js' : JavaScript("print foo"), - 'jsws' : JavaScript("print foo") with scope: { - 'f' : NumberInt("42"), - 'a' : [ - '0' : 3.141593, - '1' : 2.718282 - ] - }, - 'timestamp' : Timestamp(4294967295, 4294967295), - 'double' : 3.141593 - } - -.. _automatically: https://sourceware.org/gdb/onlinedocs/gdb/Auto_002dloading.html -.. _auto-load safe-path: https://sourceware.org/gdb/onlinedocs/gdb/Auto_002dloading-safe-path.html - -LLDB ----- - -This repository also includes a script that customizes LLDB's standard ``print`` command to print a ``bson_t`` or ``bson_t *`` as JSON:: - - (lldb) print b - (bson_t) $0 = {"x": 1, "y": 2} - -The custom ``bson`` command provides more options:: - - (lldb) bson --verbose b - len=19 - flags=INLINE|STATIC - { - "x": 1, - "y": 2 - } - (lldb) bson --raw b - '\x13\x00\x00\x00\x10x\x00\x01\x00\x00\x00\x10y\x00\x02\x00\x00\x00\x00' - -Type ``help bson`` for a list of options. - -The script requires a build of libbson with debug symbols, and an installation of `PyMongo`_. Install PyMongo with:: - - python -m pip install pymongo - -If you see "No module named pip" then you must `install pip`_, then run the previous command again. - -Create a file ``~/.lldbinit`` containing:: - - command script import /path/to/mongo-c-driver/lldb_bson.py - -If you see "bson command installed by lldb_bson" at the beginning of your LLDB session, you've installed the script correctly. - -.. _PyMongo: https://pypi.python.org/pypi/pymongo -.. _install pip: https://pip.pypa.io/en/stable/installing/#installing-with-get-pip-py) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/distinct-mapreduce.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/distinct-mapreduce.rst deleted file mode 100644 index 159ada2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/distinct-mapreduce.rst +++ /dev/null @@ -1,90 +0,0 @@ -:man_page: mongoc_distinct_mapreduce - -"distinct" and "mapReduce" -========================== - -This document provides some practical, simple, examples to demonstrate the ``distinct`` and ``mapReduce`` commands. - -Setup ------ - -First we'll write some code to insert sample data: - -.. literalinclude:: ../examples/doc-common-insert.c - :language: c - :caption: doc-common-insert.c - -"distinct" command ------------------- - -This is how to use the ``distinct`` command to get the distinct values of ``x`` which are greater than ``1``: - -.. literalinclude:: ../examples/basic_aggregation/distinct.c - :language: c - :caption: distinct.c - -"mapReduce" - basic example ---------------------------- - -A simple example using the map reduce framework. It simply adds up the number of occurrences of each "tag". - -First define the ``map`` and ``reduce`` functions: - -.. literalinclude:: ../examples/basic_aggregation/constants.c - :language: c - :caption: constants.c - -Run the ``mapReduce`` command: - -.. literalinclude:: ../examples/basic_aggregation/map-reduce-basic.c - :language: c - :caption: map-reduce-basic.c - -"mapReduce" - more complicated example --------------------------------------- - -You must have replica set running for this. - -In this example we contact a secondary in the replica set and do an "inline" map reduce, so the results are returned immediately: - -.. literalinclude:: ../examples/basic_aggregation/map-reduce-advanced.c - :language: c - :caption: map-reduce-advanced.c - -Running the Examples --------------------- - -Here's how to run the example code - -.. literalinclude:: ../examples/basic_aggregation/basic-aggregation.c - :language: c - :caption: basic-aggregation.c - -If you want to try the advanced map reduce example with a secondary, start a replica set (instructions for how to do this can be found `here `_). - -Otherwise, just start an instance of MongoDB: - -.. code-block:: none - - $ mongod - -Now compile and run the example program: - -.. code-block:: none - - $ cd examples/basic_aggregation/ - $ gcc -Wall -o agg-example basic-aggregation.c $(pkg-config --cflags --libs libmongoc-1.0) - $ ./agg-example localhost - - Inserting data - distinct - Next double: 2.000000 - Next double: 3.000000 - map reduce - { "result" : "outCollection", "timeMillis" : 155, "counts" : { "input" : 84, "emit" : 126, "reduce" : 3, "output" : 3 }, "ok" : 1 } - { "_id" : "cat", "value" : 63 } - { "_id" : "dog", "value" : 42 } - { "_id" : "mouse", "value" : 21 } - more complicated map reduce - { "results" : [ { "_id" : "cat", "value" : 63 }, { "_id" : "dog", "value" : 42 }, { "_id" : "mouse", "value" : 21 } ], "timeMillis" : 14, "counts" : { "input" : 84, "emit" : 126, "reduce" : 3, "output" : 3 }, "ok" : 1 } - diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/errors.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/errors.rst deleted file mode 100644 index 43c7142..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/errors.rst +++ /dev/null @@ -1,168 +0,0 @@ -:man_page: mongoc_errors - -« :doc:`index` - -Error Reporting -=============== - -Description ------------ - -Many C Driver functions report errors by returning ``false`` or -1 and filling out a :symbol:`bson:bson_error_t` structure with an error domain, error code, and message. Use ``domain`` to determine which subsystem generated the error, and ``code`` for the specific error. ``message`` is a human-readable error description. - -See also: :doc:`Handling Errors in libbson `. - -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -|Domain | Code | Description | -+===================================+=================================================================================================================================+============================================================================================================================================================================================================================================================================================================================================+ -| ``MONGOC_ERROR_CLIENT`` | ``MONGOC_ERROR_CLIENT_TOO_BIG`` | You tried to send a message larger than the server's max message size. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_CLIENT_AUTHENTICATE`` | Wrong credentials, or failure sending or receiving authentication messages. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_CLIENT_NO_ACCEPTABLE_PEER`` | You tried an SSL connection but the driver was not built with SSL. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_CLIENT_IN_EXHAUST`` | You began iterating an exhaust cursor, then tried to begin another operation with the same :symbol:`mongoc_client_t`. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_CLIENT_SESSION_FAILURE`` | Failure related to creating or using a logical session. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_STREAM`` | ``MONGOC_ERROR_STREAM_NAME_RESOLUTION`` | DNS failure. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_STREAM_SOCKET`` | Timeout communicating with server, or connection closed. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_STREAM_CONNECT`` | Failed to connect to server. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_PROTOCOL`` | ``MONGOC_ERROR_PROTOCOL_INVALID_REPLY`` | Corrupt response from server. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSION`` | The server version is too old or too new to communicate with the driver. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_CURSOR`` | ``MONGOC_ERROR_CURSOR_INVALID_CURSOR`` | You passed bad arguments to :symbol:`mongoc_collection_find_with_opts`, or you called :symbol:`mongoc_cursor_next` on a completed or failed cursor, or the cursor timed out on the server. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_CHANGE_STREAM_NO_RESUME_TOKEN`` | A resume token was not returned in a document found with :symbol:`mongoc_change_stream_next` | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_QUERY`` | ``MONGOC_ERROR_QUERY_FAILURE`` | :ref:`Error API Version 1 `: Server error from command or query. The server error message is in ``message``. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_SERVER`` | ``MONGOC_ERROR_QUERY_FAILURE`` | :ref:`Error API Version 2 `: Server error from command or query. The server error message is in ``message``. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_SASL`` | A SASL error code. | ``man sasl_errors`` for a list of codes. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_BSON`` | ``MONGOC_ERROR_BSON_INVALID`` | You passed an invalid or oversized BSON document as a parameter, or called :symbol:`mongoc_collection_create_index` with invalid keys, or the server reply was corrupt. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_NAMESPACE`` | ``MONGOC_ERROR_NAMESPACE_INVALID`` | You tried to create a collection with an invalid name. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_COMMAND`` | ``MONGOC_ERROR_COMMAND_INVALID_ARG`` | Many functions set this error code when passed bad parameters. Print the error message for details. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSION`` | You tried to use a command option the server does not support. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_DUPLICATE_KEY`` | An insert or update failed because because of a duplicate ``_id`` or other unique-index violation. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_COMMAND`` | `Error code from server `_. | :ref:`Error API Version 1 `: Server error from a command. The server error message is in ``message``. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_SERVER`` | `Error code from server `_. | :ref:`Error API Version 2 `: Server error from a command. The server error message is in ``message``. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_COLLECTION`` | ``MONGOC_ERROR_COLLECTION_INSERT_FAILED``, ``MONGOC_ERROR_COLLECTION_UPDATE_FAILED``, ``MONGOC_ERROR_COLLECTION_DELETE_FAILED``.| Invalid or empty input to :symbol:`mongoc_collection_insert_one`, :symbol:`mongoc_collection_insert_bulk`, :symbol:`mongoc_collection_update_one`, :symbol:`mongoc_collection_update_many`, :symbol:`mongoc_collection_replace_one`, :symbol:`mongoc_collection_delete_one`, or :symbol:`mongoc_collection_delete_many`. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_COLLECTION`` | `Error code from server `_. | :ref:`Error API Version 1 `: Server error from :symbol:`mongoc_collection_insert_one`, :symbol:`mongoc_collection_insert_bulk`, :symbol:`mongoc_collection_update_one`, :symbol:`mongoc_collection_update_many`, :symbol:`mongoc_collection_replace_one`, | -| | | :symbol:`mongoc_collection_delete_one`, or :symbol:`mongoc_collection_delete_many`. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_SERVER`` | `Error code from server `_. | :ref:`Error API Version 2 `: Server error from :symbol:`mongoc_collection_insert_one`, :symbol:`mongoc_collection_insert_bulk`, :symbol:`mongoc_collection_update_one`, :symbol:`mongoc_collection_update_many`, :symbol:`mongoc_collection_replace_one`, | -| | | :symbol:`mongoc_collection_delete_one`, or :symbol:`mongoc_collection_delete_many`. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_GRIDFS`` | ``MONGOC_ERROR_GRIDFS_CHUNK_MISSING`` | The GridFS file is missing a document in its ``chunks`` collection. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_GRIDFS_CORRUPT`` | A data inconsistency was detected in GridFS. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_GRIDFS_INVALID_FILENAME`` | You passed a NULL filename to :symbol:`mongoc_gridfs_remove_by_filename`. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | ``MONGOC_ERROR_GRIDFS_PROTOCOL_ERROR`` | You called :symbol:`mongoc_gridfs_file_set_id` after :symbol:`mongoc_gridfs_file_save`. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_SCRAM`` | ``MONGOC_ERROR_SCRAM_PROTOCOL_ERROR`` | Failure in SCRAM-SHA-1 authentication. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_SERVER_SELECTION`` | ``MONGOC_ERROR_SERVER_SELECTION_FAILURE`` | No replica set member or mongos is available, or none matches your :doc:`read preference `, or you supplied an invalid :symbol:`mongoc_read_prefs_t`. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_WRITE_CONCERN`` | `Error code from server `_. | There was a :doc:`write concern ` error or :doc:`timeout ` from the server. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``MONGOC_ERROR_TRANSACTION`` | ``MONGOC_ERROR_TRANSACTION_INVALID`` | You attempted to start a transaction when one is already in progress, or commit or abort when there is no transaction. | -+-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _error_labels: - -Error Labels ------------- - -In some cases your application must make decisions based on what category of error the driver has returned, but these categories do not correspond perfectly to an error domain or code. In such cases, error *labels* provide a reliable way to determine how your application should respond to an error. - -Any C Driver function that has a :symbol:`bson:bson_t` out-parameter named ``reply`` may include error labels to the reply, in the form of a BSON field named "errorLabels" containing an array of strings: - -.. code-block:: none - - { "errorLabels": [ "TransientTransactionError" ] } - -Use :symbol:`mongoc_error_has_label` to test if a reply contains a specific label. See :symbol:`mongoc_client_session_start_transaction` for example code that demonstrates the use of error labels in application logic. - -The following error labels are currently defined. Future versions of MongoDB may introduce new labels. - -TransientTransactionError -^^^^^^^^^^^^^^^^^^^^^^^^^ - -Within a multi-document transaction, certain errors can leave the transaction in an unknown or aborted state. These include write conflicts, primary stepdowns, and network errors. In response, the application should abort the transaction and try the same sequence of operations again in a new transaction. - -UnknownTransactionCommitResult -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -When :symbol:`mongoc_client_session_commit_transaction` encounters a network error or certain server errors, it is not known whether the transaction was committed. Applications should attempt to commit the transaction again until: the commit succeeds, the commit fails with an error *not* labeled "UnknownTransactionCommitResult", or the application chooses to give up. - -.. _errors_error_api_version: -.. _error_api_version: - -Setting the Error API Version ------------------------------ - -The driver's error reporting began with a design flaw: when the error *domain* is ``MONGOC_ERROR_COLLECTION``, ``MONGOC_ERROR_QUERY``, or ``MONGOC_ERROR_COMMAND``, the error *code* might originate from the server or the driver. An application cannot always know where an error originated, and therefore cannot tell what the code means. - -For example, if :symbol:`mongoc_collection_update_one` sets the error's domain to ``MONGOC_ERROR_COLLECTION`` and its code to 24, the application cannot know whether 24 is the generic driver error code ``MONGOC_ERROR_COLLECTION_UPDATE_FAILED`` or the specific server error code "LockTimeout". - -To fix this flaw while preserving backward compatibility, the C Driver 1.4 introduces "Error API Versions". Version 1, the default Error API Version, maintains the flawed behavior. Version 2 adds a new error domain, ``MONGOC_ERROR_SERVER``. In Version 2, error codes originating on the server always have error domain ``MONGOC_ERROR_SERVER`` or ``MONGOC_ERROR_WRITE_CONCERN``. When the driver uses Version 2 the application can always determine the origin and meaning of error codes. New applications should use Version 2, and existing applications should be updated to use Version 2 as well. - -+------------------------------------------------------+----------------------------------------+----------------------------------------+ -| Error Source | API Version 1 | API Version 2 | -+------------------------------------------------------+----------------------------------------+----------------------------------------+ -| :symbol:`mongoc_cursor_error` | ``MONGOC_ERROR_QUERY`` | ``MONGOC_ERROR_SERVER`` | -+------------------------------------------------------+----------------------------------------+----------------------------------------+ -| :symbol:`mongoc_client_command_with_opts`, | ``MONGOC_ERROR_QUERY`` | ``MONGOC_ERROR_SERVER`` | -| :symbol:`mongoc_database_command_with_opts`, and | | | -| other command functions | | | -+------------------------------------------------------+----------------------------------------+----------------------------------------+ -| :symbol:`mongoc_collection_count_with_opts` | ``MONGOC_ERROR_QUERY`` | ``MONGOC_ERROR_SERVER`` | -| :symbol:`mongoc_client_get_database_names_with_opts`,| | | -| and other command helper functions | | | -+------------------------------------------------------+----------------------------------------+----------------------------------------+ -| :symbol:`mongoc_collection_insert_one` | ``MONGOC_ERROR_COMMAND`` | ``MONGOC_ERROR_SERVER`` | -| :symbol:`mongoc_collection_insert_bulk` | | | -| :symbol:`mongoc_collection_update_one` | | | -| :symbol:`mongoc_collection_update_many` | | | -| :symbol:`mongoc_collection_replace_one` | | | -| :symbol:`mongoc_collection_delete_one` | | | -| :symbol:`mongoc_collection_delete_many` | | | -+------------------------------------------------------+----------------------------------------+----------------------------------------+ -| :symbol:`mongoc_bulk_operation_execute` | ``MONGOC_ERROR_COMMAND`` | ``MONGOC_ERROR_SERVER`` | -+------------------------------------------------------+----------------------------------------+----------------------------------------+ -| Write-concern timeout | ``MONGOC_ERROR_WRITE_CONCERN`` | ``MONGOC_ERROR_WRITE_CONCERN`` | -+------------------------------------------------------+----------------------------------------+----------------------------------------+ - -The Error API Versions are defined with ``MONGOC_ERROR_API_VERSION_LEGACY`` and ``MONGOC_ERROR_API_VERSION_2``. Set the version with :symbol:`mongoc_client_set_error_api` or :symbol:`mongoc_client_pool_set_error_api`. - -See Also --------- - -`MongoDB Server Error Codes `_ - -.. only:: html - - Functions - --------- - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - mongoc_error_has_label diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/full_index.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/full_index.rst deleted file mode 100644 index 72f8447..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/full_index.rst +++ /dev/null @@ -1,15 +0,0 @@ -:man_page: mongoc_reference -:orphan: - -.. Yes it's confusing: the home page is called "index" so this is "full_index", - and it works by including the complete Table of Contents from the homepage, - i.e., "index". - -Index -===== - -.. toctree:: - :maxdepth: 6 - :titlesonly: - - index diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/guides.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/guides.rst deleted file mode 100644 index e5dac4e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/guides.rst +++ /dev/null @@ -1,19 +0,0 @@ -:man_page: mongoc_guides - -Guides -====== - -.. toctree:: - :titlesonly: - :maxdepth: 1 - - mongoc-common-task-examples - advanced-connections - connection-pooling - cursors - bulk - aggregate - distinct-mapreduce - visual-studio-guide - create-indexes - debugging diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/.nojekyll b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/.nojekyll deleted file mode 100644 index 1910281..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/.nojekyll +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/CMakeLists.txt deleted file mode 100644 index 6211f56..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -file (GLOB_RECURSE _images_pngs - RELATIVE ${PROJECT_SOURCE_DIR}/doc/static - ${PROJECT_SOURCE_DIR}/doc/static/*.png -) -foreach (png IN LISTS _images_pngs) - extra_dist_generated (_images/${png}) -endforeach () - -# Additional generated static files -extra_dist_generated ( - .nojekyll - objects.inv - _static/ajax-loader.gif - _static/basic.css - _static/comment-bright.png - _static/comment-close.png - _static/comment.png - _static/doctools.js - _static/down-pressed.png - _static/down.png - _static/file.png - _static/jquery.js - _static/minus.png - _static/mongoc.css - _static/plus.png - _static/pygments.css - _static/searchtools.js - _static/underscore.js - _static/up-pressed.png - _static/up.png - _static/websupport.js - genindex.html - search.html - searchindex.js -) - -set_dist_list (src_libmongoc_doc_html_DIST - CMakeLists.txt -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-add-dependencies-static.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-add-dependencies-static.png deleted file mode 100644 index b70984e5b94463f3292966ed74d2fb4fc7a92343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23627 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 HhkyKk$a?E; diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-add-dependencies.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-add-dependencies.png deleted file mode 100644 index 3fe2c7ae74660fb2096f6442aba0972d42f77aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7855 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 QAnXjnYNRD9ZY^=+qP!6 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 z z&wU50+YdJ?8I4;=4hQac+A} zcyr8`>jtve2B0g$Tp^@FzdFT|&ULb1W6Zzlkxcd1XA4Q3=Vuwq0L~M^hgv)<; zz#af9aARDVc_wY6OXh@pDtiLoXD`jte88SFm{;?-0f$r>kyS&;v`5d{6U*V)a+i)tD>c>XJgmW6UX9B8~GJx{No9JrYeM zvj}rA_%xU{$mkH<_cjyYq{>uZ5obIcUk;}7^JG;@nK z!N|pf{O2FP%nkeS#~>0ma4yO#c-ut!Kt{cvfh}8PH5bjR#fQifX7)Owr-DpC!e;j0 zjj*X)hD@pv>T>U=i~7OL%~m?i51zzl<59bSG73yShP(7$N2lod{^VUTk}!^cPSvZeVd1vBFNe=Hw^s0Kpo@IQ57sa3xxd3O}AXCq7crfBTc*WpUx=__Eud zhEmM2x=5iqVt)lqjwpTNbYZ~6#*4!rmRbKyhXdk%b8pXUb-Y+A`tR>lzSEk)W{%x# z)4eNsh81z3i<_T|EJwySA*8nl$BPesn^Cq(wd{!^=R6r5CW4O18>wtOW(P!B#U0dQ znqVz}KMl~to;;~UsI%Ost>KC~PsVAqZ_8#Rd@G|LP#Me%c%`=U)VMooelhCdU{1yU zMO|m~sH!(?=yTM8@Wv;K%%TW1Tsf}-1MstpMt2Z{_O=kTMKdXMVumhxv%T~~`Kj$y zo7elmZkdfjGJ z)jYk^Au61~PHu7UYHnRpOx&xI!rRhkjX1~|9pIw&GY+XRC7r@gOJITGDQ%?6GWTk| zD}In4uuttp0#al6U;^V>@yg^M(q}N2v@x93|J(WP%CeEL3{e~%?gAB8SJ02e*}H|- zZ*K^nvc|q>h`#$EiQ;2kHIF1FuoHjZ%D#;n0|zW&jtBfuDzB2KL>NG-#&`H^?+F7F zV1c4VB>N;*w{O^Epz^AEfZLEiOY|%}#WEq&-)-OD7U=XY&6*UGl3l=@FoR0u8DFSt ze@*iJfpH}tr8_!XjDkT2(`3{ld6g8BVfTFA`GBidL*`y+8dTHjo z5Wp-PBS)1pO-2*j!b%>*6$_MnyOK9g%uGL>3HS810sZ44$Y6a>x1ljuxEwhq$Hk9y znUh5cLv7>f;4(F@E*Rgo^N||Wx&0yXVE15LPS3h)i9whqqpFUR40$=Xhre-E_N@TFBtl zym+Ra&`f9dQWvkT{7v)<;o;zzr0Cq3$AYouzZ6j?q4+~B>Tvb#*3!oCJgp!0R(|#| zd{QdAPn}DtOPODBa1Ar;;mT{j%+~imu`CareHyRyLYertr&97s&8iNpGXG>b59V;iMVBgsr3FC1pZui M?s0yyHq)$ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-create-project.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-create-project.png deleted file mode 100644 index 8c7f749c65be2289f93a0e5ddbc0568fe9b982ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12266 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 diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-set-path.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_images/msvc-set-path.png deleted file mode 100644 index c135b1a014a61186b2873a9caf80b972d2384c5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24767 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 F{U1PbSjYeX diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/ajax-loader.gif b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/ajax-loader.gif deleted file mode 100644 index 61faf8cab23993bd3e1560bff0668bd628642330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/basic.css b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/basic.css deleted file mode 100644 index 104f076..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/basic.css +++ /dev/null @@ -1,676 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 450px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist td { - vertical-align: top; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -div.code-block-caption { - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: relative; - left: 0px; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/comment-bright.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/comment-bright.png deleted file mode 100644 index 15e27edb12ac25701ac0ac21b97b52bb4e45415e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmVgfIX78 z$8Pzv({A~p%??+>KickCb#0FM1rYN=mBmQ&Nwp<#JXUhU;{|)}%&s>suq6lXw*~s{ zvHx}3C%<;wE5CH!BR{p5@ml9ws}y)=QN-kL2?#`S5d*6j zk`h<}j1>tD$b?4D^N9w}-k)bxXxFg>+#kme^xx#qg6FI-%iv2U{0h(Y)cs%5a|m%Pn_K3X_bDJ>EH#(Fb73Z zfUt2Q3B>N+ot3qb*DqbTZpFIn4a!#_R-}{?-~Hs=xSS6p&$sZ-k1zDdtqU`Y@`#qL z&zv-~)Q#JCU(dI)Hf;$CEnK=6CK50}q7~wdbI->?E07bJ0R;!GSQTs5Am`#;*WHjvHRvY?&$Lm-vq1a_BzocI^ULXV!lbMd%|^B#fY;XX)n<&R^L z=84u1e_3ziq;Hz-*k5~zwY3*oDKt0;bM@M@@89;@m*4RFgvvM_4;5LB!@OB@^WbVT zjl{t;a8_>od-~P4 m{5|DvB&z#xT;*OnJqG}gk~_7HcNkCr0000W zanA~u9RIXo;n7c96&U)YLgs-FGlx~*_c{Jgvesu1E5(8YEf&5wF=YFPcRe@1=MJmi zag(L*xc2r0(slpcN!vC5CUju;vHJkHc*&70_n2OZsK%O~A=!+YIw z7zLLl7~Z+~RgWOQ=MI6$#0pvpu$Q43 zP@36QAmu6!_9NPM?o<1_!+stoVRRZbW9#SPe!n;#A_6m8f}|xN1;H{`0RoXQ2LM47 zt(g;iZ6|pCb@h2xk&(}S3=EVBUO0e90m2Lp5CB<(SPIaB;n4))3JB87Or#XPOPcum z?<^(g+m9}VNn4Y&B`g8h{t_$+RB1%HKRY6fjtd-<7&EsU;vs0GM(Lmbhi%Gwcfs0FTF}T zL{_M6Go&E0Eg8FuB*(Yn+Z*RVTBE@10eIOb3El^MhO`GabDll(V0&FlJi2k^;q8af zkENdk2}x2)_KVp`5OAwXZM;dG0?M-S)xE1IKDi6BY@5%Or?#aZ9$gcX)dPZ&wA1a< z$rFXHPn|TBf`e?>Are8sKtKrKcjF$i^lp!zkL?C|y^vlHr1HXeVJd;1I~g&Ob-q)& z(fn7s-KI}G{wnKzg_U5G(V%bX6uk zIa+<@>rdmZYd!9Y=C0cuchrbIjuRB_Wq{-RXlic?flu1*_ux}x%(HDH&nT`k^xCeC ziHi1!ChH*sQ6|UqJpTTzX$aw8e(UfcS^f;6yBWd+(1-70zU(rtxtqR%j z-lsH|CKQJXqD{+F7V0OTv8@{~(wp(`oIP^ZykMWgR>&|RsklFMCnOo&Bd{le} zV5F6424Qzl;o2G%oVvmHgRDP9!=rK8fy^!yV8y*4p=??uIRrrr0?>O!(z*g5AvL2!4z0{sq%vhG*Po}`a<6%kTK5TNhtC8}rXNu&h^QH4A&Sk~Autm*s~45(H7+0bi^MraaRVzr05hQ3iK?j` zR#U@^i0WhkIHTg29u~|ypU?sXCQEQgXfObPW;+0YAF;|5XyaMAEM0sQ@4-xCZe=0e z7r$ofiAxn@O5#RodD8rh5D@nKQ;?lcf@tg4o+Wp44aMl~c47azN_(im0N)7OqdPBC zGw;353_o$DqGRDhuhU$Eaj!@m000000NkvXXu0mjfjZ7Z_ diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/doctools.js b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/doctools.js deleted file mode 100644 index ffadbec..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/doctools.js +++ /dev/null @@ -1,315 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('

    ') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/down-pressed.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/down-pressed.png deleted file mode 100644 index 5756c8cad8854722893dc70b9eb4bb0400343a39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`OFdm2Ln;`PZ^+1>KjR?B@S0W7 z%OS_REiHONoJ6{+Ks@6k3590|7k9F+ddB6!zw3#&!aw#S`x}3V3&=A(a#84O-&F7T z^k3tZB;&iR9siw0|F|E|DAL<8r-F4!1H-;1{e*~yAKZN5f0|Ei6yUmR#Is)EM(Po_ zi`qJR6|P<~+)N+kSDgL7AjdIC_!O7Q?eGb+L+qOjm{~LLinM4NHn7U%HcK%uoMYO5 VJ~8zD2B3o(JYD@<);T3K0RV0%P>BEl diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/down.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/down.png deleted file mode 100644 index 1b3bdad2ceffae91cee61b32f3295f9bbe646e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6CVIL!hEy=F?b*7pIY7kW{q%Rg zx!yQ<9v8bmJwa`TQk7YSw}WVQ()mRdQ;TC;* diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/file.png b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/file.png deleted file mode 100644 index a858a410e4faa62ce324d814e4b816fff83a6fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/jquery.js b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/jquery.js deleted file mode 100644 index 644d35e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/_static/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), -a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), -null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Advanced Connections

    -

    The following guide contains information specific to certain types of MongoDB configurations.

    -

    For an example of connecting to a simple standalone server, see the Tutorial. To establish a connection with authentication options enabled, see the Authentication page.

    -
    -

    Connecting to a Replica Set

    -

    Connecting to a replica set is much like connecting to a standalone MongoDB server. Simply specify the replica set name using the ?replicaSet=myreplset URI option.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -
    -   mongoc_init ();
    -
    -   /* Create our MongoDB Client */
    -   client = mongoc_client_new (
    -      "mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset");
    -
    -   /* Do some work */
    -   /* TODO */
    -
    -   /* Clean up */
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -
    -

    Tip

    -

    Multiple hostnames can be specified in the MongoDB connection string URI, with a comma separating hosts in the seed list.

    -

    It is recommended to use a seed list of members of the replica set to allow the driver to connect to any node.

    -
    -
    -
    -

    Connecting to a Sharded Cluster

    -

    To connect to a sharded cluster, specify the mongos nodes the client should connect to. The C Driver will automatically detect that it has connected to a mongos sharding server.

    -

    If more than one hostname is specified, a seed list will be created to attempt failover between the mongos instances.

    -
    -

    Warning

    -

    Specifying the replicaSet parameter when connecting to a mongos sharding server is invalid.

    -
    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -
    -   mongoc_init ();
    -
    -   /* Create our MongoDB Client */
    -   client = mongoc_client_new ("mongodb://myshard01:27017/");
    -
    -   /* Do something with client ... */
    -
    -   /* Free the client */
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -
    -
    -

    Connecting to an IPv6 Address

    -

    The MongoDB C Driver will automatically resolve IPv6 addresses from host names. However, to specify an IPv6 address directly, wrap the address in [].

    -
    mongoc_uri_t *uri = mongoc_uri_new ("mongodb://[::1]:27017");
    -
    -
    -
    -
    -

    Connecting with IPv4 and IPv6

    -

    If connecting to a hostname that has both IPv4 and IPv6 DNS records, the behavior follows RFC-6555. A connection to the IPv6 address is attempted first. If IPv6 fails, then a connection is attempted to the IPv4 address. If the connection attempt to IPv6 does not complete within 250ms, then IPv4 is tried in parallel. Whichever succeeds connection first cancels the other. The successful DNS result is cached for 10 minutes.

    -

    As a consequence, attempts to connect to a mongod only listening on IPv4 may be delayed if there are both A (IPv4) and AAAA (IPv6) DNS records associated with the host.

    -

    To avoid a delay, configure hostnames to match the MongoDB configuration. That is, only create an A record if the mongod is only listening on IPv4.

    -
    -
    -

    Connecting to a UNIX Domain Socket

    -

    On UNIX-like systems, the C Driver can connect directly to a MongoDB server using a UNIX domain socket. Pass the URL-encoded path to the socket, which must be suffixed with .sock. For example, to connect to a domain socket at /tmp/mongodb-27017.sock:

    -
    mongoc_uri_t *uri = mongoc_uri_new ("mongodb://%2Ftmp%2Fmongodb-27017.sock");
    -
    -
    -

    Include username and password like so:

    -
    mongoc_uri_t *uri = mongoc_uri_new ("mongodb://user:pass@%2Ftmp%2Fmongodb-27017.sock");
    -
    -
    -
    -
    -

    Connecting to a server over SSL

    -

    These are instructions for configuring TLS/SSL connections.

    -

    To run a server locally (on port 27017, for example):

    -
    $ mongod --port 27017 --sslMode requireSSL --sslPEMKeyFile server.pem --sslCAFile ca.pem
    -
    -
    -

    Add /?ssl=true to the end of a client URI.

    -
    mongoc_client_t *client = NULL;
    -client = mongoc_client_new ("mongodb://localhost:27017/?ssl=true");
    -
    -
    -

    MongoDB requires client certificates by default, unless the --sslAllowConnectionsWithoutCertificates is provided. The C Driver can be configured to present a client certificate using a mongoc_ssl_opt_t:

    -
    const mongoc_ssl_opt_t *ssl_default = mongoc_ssl_opt_get_default ();
    -mongoc_ssl_opt_t ssl_opts = { 0 };
    -
    -/* optionally copy in a custom trust directory or file; otherwise the default is used. */
    -memcpy (&ssl_opts, ssl_default, sizeof ssl_opts);
    -ssl_opts.pem_file = "client.pem"
    -
    -mongoc_client_set_ssl_opts (client, &ssl_opts);
    -
    -
    -

    The client certificate provided by pem_file must be issued by one of the server trusted Certificate Authorities listed in --sslCAFile, or issued by a CA in the native certificate store on the server when omitted.

    -

    To verify the server certificate against a specific CA, provide a PEM armored file with a CA certificate, or concatenated list of CA certificates using the ca_file option, or c_rehash directory structure of CAs, pointed to using the ca_dir option. When no ca_file or ca_dir is provided, the driver will use CAs provided by the native platform certificate store.

    -

    See mongoc_ssl_opt_t for more information on the various SSL related options.

    -
    -
    -

    Compressing data to and from MongoDB

    -

    MongoDB 3.4 added Snappy compression support, and zlib compression in 3.6. -To enable compression support the client must be configured with which compressors to use:

    -
    mongoc_client_t *client = NULL;
    -client = mongoc_client_new ("mongodb://localhost:27017/?compressors=snappy,zlib");
    -
    -
    -

    The compressors option specifies the priority order of compressors the -client wants to use. Messages are compressed if the client and server share any -compressors in common.

    -

    Note that the compressor used by the server might not be the same compressor as -the client used. For example, if the client uses the connection string -compressors=zlib,snappy the client will use zlib compression to send -data (if possible), but the server might still reply using snappy, -depending on how the server was configured.

    -

    The driver must be built with zlib and/or snappy support to enable compression -support, any unknown (or not compiled in) compressor value will be ignored.

    -
    -
    -

    Additional Connection Options

    -

    The full list of connection options can be found in the mongoc_uri_t docs.

    -

    Certain socket/connection related options are not configurable:

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValue
    SO_KEEPALIVETCP Keep AliveEnabled
    TCP_KEEPIDLEHow long a connection needs to remain idle before TCP -starts sending keepalive probes300 seconds
    TCP_KEEPINTVLThe time in seconds between TCP probes10 seconds
    TCP_KEEPCNTHow many probes to send, without acknowledgement, -before dropping the connection9 probes
    TCP_NODELAYSend packets as soon as possible or buffer small -packets (Nagle algorithm)Enabled (no buffering)
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/aggregate.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/aggregate.html deleted file mode 100644 index 23845e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/aggregate.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - - Aggregation Framework Examples — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Aggregation Framework Examples

    -

    This document provides a number of practical examples that display the capabilities of the aggregation framework.

    -

    The Aggregations using the Zip Codes Data Set examples uses a publicly available data set of all zipcodes and populations in the United States. These data are available at: zips.json.

    -
    -

    Requirements

    -

    Let’s check if everything is installed.

    -

    Use the following command to load zips.json data set into mongod instance:

    -
    $ mongoimport --drop -d test -c zipcodes zips.json
    -
    -
    -

    Let’s use the MongoDB shell to verify that everything was imported successfully.

    -
    $ mongo test
    -connecting to: test
    -> db.zipcodes.count()
    -29467
    -> db.zipcodes.findOne()
    -{
    -      "_id" : "35004",
    -      "city" : "ACMAR",
    -      "loc" : [
    -              -86.51557,
    -              33.584132
    -      ],
    -      "pop" : 6055,
    -      "state" : "AL"
    -}
    -
    -
    -
    -
    -

    Aggregations using the Zip Codes Data Set

    -

    Each document in this collection has the following form:

    -
    {
    -  "_id" : "35004",
    -  "city" : "Acmar",
    -  "state" : "AL",
    -  "pop" : 6055,
    -  "loc" : [-86.51557, 33.584132]
    -}
    -
    -
    -

    In these documents:

    -
      -
    • The _id field holds the zipcode as a string.
    • -
    • The city field holds the city name.
    • -
    • The state field holds the two letter state abbreviation.
    • -
    • The pop field holds the population.
    • -
    • The loc field holds the location as a [latitude, longitude] array.
    • -
    -
    -
    -

    States with Populations Over 10 Million

    -

    To get all states with a population greater than 10 million, use the following aggregation pipeline:

    -
    -
    aggregation1.c
    -
    #include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_pipeline (mongoc_collection_t *collection)
    -{
    -   mongoc_cursor_t *cursor;
    -   bson_error_t error;
    -   const bson_t *doc;
    -   bson_t *pipeline;
    -   char *str;
    -
    -   pipeline = BCON_NEW ("pipeline",
    -                        "[",
    -                        "{",
    -                        "$group",
    -                        "{",
    -                        "_id",
    -                        "$state",
    -                        "total_pop",
    -                        "{",
    -                        "$sum",
    -                        "$pop",
    -                        "}",
    -                        "}",
    -                        "}",
    -                        "{",
    -                        "$match",
    -                        "{",
    -                        "total_pop",
    -                        "{",
    -                        "$gte",
    -                        BCON_INT32 (10000000),
    -                        "}",
    -                        "}",
    -                        "}",
    -                        "]");
    -
    -   cursor = mongoc_collection_aggregate (
    -      collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "Cursor Failure: %s\n", error.message);
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -   bson_destroy (pipeline);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   const char *uri_string =
    -      "mongodb://localhost:27017/?appname=aggregation-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "test", "zipcodes");
    -
    -   print_pipeline (collection);
    -
    -   mongoc_uri_destroy (uri);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    You should see a result like the following:

    -
    { "_id" : "PA", "total_pop" : 11881643 }
    -{ "_id" : "OH", "total_pop" : 10847115 }
    -{ "_id" : "NY", "total_pop" : 17990455 }
    -{ "_id" : "FL", "total_pop" : 12937284 }
    -{ "_id" : "TX", "total_pop" : 16986510 }
    -{ "_id" : "IL", "total_pop" : 11430472 }
    -{ "_id" : "CA", "total_pop" : 29760021 }
    -
    -
    -

    The above aggregation pipeline is build from two pipeline operators: $group and $match.

    -

    The $group pipeline operator requires _id field where we specify grouping; remaining fields specify how to generate composite value and must use one of the group aggregation functions: $addToSet, $first, $last, $max, $min, $avg, $push, $sum. The $match pipeline operator syntax is the same as the read operation query syntax.

    -

    The $group process reads all documents and for each state it creates a separate document, for example:

    -
    { "_id" : "WA", "total_pop" : 4866692 }
    -
    -
    -

    The total_pop field uses the $sum aggregation function to sum the values of all pop fields in the source documents.

    -

    Documents created by $group are piped to the $match pipeline operator. It returns the documents with the value of total_pop field greater than or equal to 10 million.

    -
    -
    -

    Average City Population by State

    -

    To get the first three states with the greatest average population per city, use the following aggregation:

    -
    pipeline = BCON_NEW ("pipeline", "[",
    -   "{", "$group", "{", "_id", "{", "state", "$state", "city", "$city", "}", "pop", "{", "$sum", "$pop", "}", "}", "}",
    -   "{", "$group", "{", "_id", "$_id.state", "avg_city_pop", "{", "$avg", "$pop", "}", "}", "}",
    -   "{", "$sort", "{", "avg_city_pop", BCON_INT32 (-1), "}", "}",
    -   "{", "$limit", BCON_INT32 (3) "}",
    -"]");
    -
    -
    -

    This aggregate pipeline produces:

    -
    { "_id" : "DC", "avg_city_pop" : 303450.0 }
    -{ "_id" : "FL", "avg_city_pop" : 27942.29805615551 }
    -{ "_id" : "CA", "avg_city_pop" : 27735.341099720412 }
    -
    -
    -

    The above aggregation pipeline is build from three pipeline operators: $group, $sort and $limit.

    -

    The first $group operator creates the following documents:

    -
    { "_id" : { "state" : "WY", "city" : "Smoot" }, "pop" : 414 }
    -
    -
    -

    Note, that the $group operator can’t use nested documents except the _id field.

    -

    The second $group uses these documents to create the following documents:

    -
    { "_id" : "FL", "avg_city_pop" : 27942.29805615551 }
    -
    -
    -

    These documents are sorted by the avg_city_pop field in descending order. Finally, the $limit pipeline operator returns the first 3 documents from the sorted set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/api.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/api.html deleted file mode 100644 index 7a6b802..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/api.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - API Reference — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    - - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/application-performance-monitoring.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/application-performance-monitoring.html deleted file mode 100644 index a3106f7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/application-performance-monitoring.html +++ /dev/null @@ -1,680 +0,0 @@ - - - - - - - - Application Performance Monitoring (APM) — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Application Performance Monitoring (APM)

    -

    The MongoDB C Driver allows you to monitor all the MongoDB operations the driver executes. This event-notification system conforms to two MongoDB driver specs:

    - -

    To receive notifications, create a mongoc_apm_callbacks_t with mongoc_apm_callbacks_new(), set callbacks on it, then pass it to mongoc_client_set_apm_callbacks() or mongoc_client_pool_set_apm_callbacks().

    -
    -

    Command-Monitoring Example

    -
    -
    example-command-monitoring.c
    -
    /* gcc example-command-monitoring.c -o example-command-monitoring \
    - *     $(pkg-config --cflags --libs libmongoc-1.0) */
    -
    -/* ./example-command-monitoring [CONNECTION_STRING] */
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -
    -typedef struct {
    -   int started;
    -   int succeeded;
    -   int failed;
    -} stats_t;
    -
    -
    -void
    -command_started (const mongoc_apm_command_started_t *event)
    -{
    -   char *s;
    -
    -   s = bson_as_relaxed_extended_json (
    -      mongoc_apm_command_started_get_command (event), NULL);
    -   printf ("Command %s started on %s:\n%s\n\n",
    -           mongoc_apm_command_started_get_command_name (event),
    -           mongoc_apm_command_started_get_host (event)->host,
    -           s);
    -
    -   ((stats_t *) mongoc_apm_command_started_get_context (event))->started++;
    -
    -   bson_free (s);
    -}
    -
    -
    -void
    -command_succeeded (const mongoc_apm_command_succeeded_t *event)
    -{
    -   char *s;
    -
    -   s = bson_as_relaxed_extended_json (
    -      mongoc_apm_command_succeeded_get_reply (event), NULL);
    -   printf ("Command %s succeeded:\n%s\n\n",
    -           mongoc_apm_command_succeeded_get_command_name (event),
    -           s);
    -
    -   ((stats_t *) mongoc_apm_command_succeeded_get_context (event))->succeeded++;
    -
    -   bson_free (s);
    -}
    -
    -
    -void
    -command_failed (const mongoc_apm_command_failed_t *event)
    -{
    -   bson_error_t error;
    -
    -   mongoc_apm_command_failed_get_error (event, &error);
    -   printf ("Command %s failed:\n\"%s\"\n\n",
    -           mongoc_apm_command_failed_get_command_name (event),
    -           error.message);
    -
    -   ((stats_t *) mongoc_apm_command_failed_get_context (event))->failed++;
    -}
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_apm_callbacks_t *callbacks;
    -   stats_t stats = {0};
    -   mongoc_collection_t *collection;
    -   bson_error_t error;
    -   const char *uri_string =
    -      "mongodb://127.0.0.1/?appname=cmd-monitoring-example";
    -   mongoc_uri_t *uri;
    -   const char *collection_name = "test";
    -   bson_t *docs[2];
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   callbacks = mongoc_apm_callbacks_new ();
    -   mongoc_apm_set_command_started_cb (callbacks, command_started);
    -   mongoc_apm_set_command_succeeded_cb (callbacks, command_succeeded);
    -   mongoc_apm_set_command_failed_cb (callbacks, command_failed);
    -   mongoc_client_set_apm_callbacks (
    -      client, callbacks, (void *) &stats /* context pointer */);
    -
    -   collection = mongoc_client_get_collection (client, "test", collection_name);
    -   mongoc_collection_drop (collection, NULL);
    -
    -   docs[0] = BCON_NEW ("_id", BCON_INT32 (0));
    -   docs[1] = BCON_NEW ("_id", BCON_INT32 (1));
    -   mongoc_collection_insert_many (
    -      collection, (const bson_t **) docs, 2, NULL, NULL, NULL);
    -
    -   /* duplicate key error on the second insert */
    -   mongoc_collection_insert_one (collection, docs[0], NULL, NULL, NULL);
    -
    -   mongoc_collection_destroy (collection);
    -   mongoc_apm_callbacks_destroy (callbacks);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   printf ("started: %d\nsucceeded: %d\nfailed: %d\n",
    -           stats.started,
    -           stats.succeeded,
    -           stats.failed);
    -
    -   bson_destroy (docs[0]);
    -   bson_destroy (docs[1]);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    This example program prints:

    -
    Command drop started on 127.0.0.1:
    -{ "drop" : "test" }
    -
    -Command drop succeeded:
    -{ "ns" : "test.test", "nIndexesWas" : 1, "ok" : 1.0 }
    -
    -Command insert started on 127.0.0.1:
    -{
    -  "insert" : "test",
    -  "ordered" : true,
    -  "documents" : [
    -    { "_id" : 0 }, { "_id" : 1 }
    -  ]
    -}
    -
    -Command insert succeeded:
    -{ "n" : 2, "ok" : 1.0 }
    -
    -Command insert started on 127.0.0.1:
    -{
    -  "insert" : "test",
    -  "ordered" : true,
    -  "documents" : [
    -    { "_id" : 0 }
    -  ]
    -}
    -
    -Command insert succeeded:
    -{
    -  "n" : 0,
    -  "writeErrors" : [
    -    { "index" : 0, "code" : 11000, "errmsg" : "duplicate key" }
    -  ],
    -  "ok" : 1.0
    -}
    -
    -started: 3
    -succeeded: 3
    -failed: 0
    -
    -
    -

    The output has been edited and formatted for clarity. Depending on your server configuration, messages may include metadata like database name, logical session ids, or cluster times that are not shown here.

    -

    The final “insert” command is considered successful, despite the writeError, because the server replied to the overall command with "ok": 1.

    -
    -
    -

    SDAM Monitoring Example

    -
    -
    example-sdam-monitoring.c
    -
    /* gcc example-sdam-monitoring.c -o example-sdam-monitoring \
    - *     $(pkg-config --cflags --libs libmongoc-1.0) */
    -
    -/* ./example-sdam-monitoring [CONNECTION_STRING] */
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -
    -typedef struct {
    -   int server_changed_events;
    -   int server_opening_events;
    -   int server_closed_events;
    -   int topology_changed_events;
    -   int topology_opening_events;
    -   int topology_closed_events;
    -   int heartbeat_started_events;
    -   int heartbeat_succeeded_events;
    -   int heartbeat_failed_events;
    -} stats_t;
    -
    -
    -static void
    -server_changed (const mongoc_apm_server_changed_t *event)
    -{
    -   stats_t *context;
    -   const mongoc_server_description_t *prev_sd, *new_sd;
    -
    -   context = (stats_t *) mongoc_apm_server_changed_get_context (event);
    -   context->server_changed_events++;
    -
    -   prev_sd = mongoc_apm_server_changed_get_previous_description (event);
    -   new_sd = mongoc_apm_server_changed_get_new_description (event);
    -
    -   printf ("server changed: %s %s -> %s\n",
    -           mongoc_apm_server_changed_get_host (event)->host_and_port,
    -           mongoc_server_description_type (prev_sd),
    -           mongoc_server_description_type (new_sd));
    -}
    -
    -
    -static void
    -server_opening (const mongoc_apm_server_opening_t *event)
    -{
    -   stats_t *context;
    -
    -   context = (stats_t *) mongoc_apm_server_opening_get_context (event);
    -   context->server_opening_events++;
    -
    -   printf ("server opening: %s\n",
    -           mongoc_apm_server_opening_get_host (event)->host_and_port);
    -}
    -
    -
    -static void
    -server_closed (const mongoc_apm_server_closed_t *event)
    -{
    -   stats_t *context;
    -
    -   context = (stats_t *) mongoc_apm_server_closed_get_context (event);
    -   context->server_closed_events++;
    -
    -   printf ("server closed: %s\n",
    -           mongoc_apm_server_closed_get_host (event)->host_and_port);
    -}
    -
    -
    -static void
    -topology_changed (const mongoc_apm_topology_changed_t *event)
    -{
    -   stats_t *context;
    -   const mongoc_topology_description_t *prev_td;
    -   const mongoc_topology_description_t *new_td;
    -   mongoc_server_description_t **prev_sds;
    -   size_t n_prev_sds;
    -   mongoc_server_description_t **new_sds;
    -   size_t n_new_sds;
    -   size_t i;
    -   mongoc_read_prefs_t *prefs;
    -
    -   context = (stats_t *) mongoc_apm_topology_changed_get_context (event);
    -   context->topology_changed_events++;
    -
    -   prev_td = mongoc_apm_topology_changed_get_previous_description (event);
    -   prev_sds = mongoc_topology_description_get_servers (prev_td, &n_prev_sds);
    -   new_td = mongoc_apm_topology_changed_get_new_description (event);
    -   new_sds = mongoc_topology_description_get_servers (new_td, &n_new_sds);
    -
    -   printf ("topology changed: %s -> %s\n",
    -           mongoc_topology_description_type (prev_td),
    -           mongoc_topology_description_type (new_td));
    -
    -   if (n_prev_sds) {
    -      printf ("  previous servers:\n");
    -      for (i = 0; i < n_prev_sds; i++) {
    -         printf ("      %s %s\n",
    -                 mongoc_server_description_type (prev_sds[i]),
    -                 mongoc_server_description_host (prev_sds[i])->host_and_port);
    -      }
    -   }
    -
    -   if (n_new_sds) {
    -      printf ("  new servers:\n");
    -      for (i = 0; i < n_new_sds; i++) {
    -         printf ("      %s %s\n",
    -                 mongoc_server_description_type (new_sds[i]),
    -                 mongoc_server_description_host (new_sds[i])->host_and_port);
    -      }
    -   }
    -
    -   prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
    -
    -   /* it is safe, and unfortunately necessary, to cast away const here */
    -   if (mongoc_topology_description_has_readable_server (
    -          (mongoc_topology_description_t *) new_td, prefs)) {
    -      printf ("  secondary AVAILABLE\n");
    -   } else {
    -      printf ("  secondary UNAVAILABLE\n");
    -   }
    -
    -   if (mongoc_topology_description_has_writable_server (
    -          (mongoc_topology_description_t *) new_td)) {
    -      printf ("  primary AVAILABLE\n");
    -   } else {
    -      printf ("  primary UNAVAILABLE\n");
    -   }
    -
    -   mongoc_read_prefs_destroy (prefs);
    -   mongoc_server_descriptions_destroy_all (prev_sds, n_prev_sds);
    -   mongoc_server_descriptions_destroy_all (new_sds, n_new_sds);
    -}
    -
    -
    -static void
    -topology_opening (const mongoc_apm_topology_opening_t *event)
    -{
    -   stats_t *context;
    -
    -   context = (stats_t *) mongoc_apm_topology_opening_get_context (event);
    -   context->topology_opening_events++;
    -
    -   printf ("topology opening\n");
    -}
    -
    -
    -static void
    -topology_closed (const mongoc_apm_topology_closed_t *event)
    -{
    -   stats_t *context;
    -
    -   context = (stats_t *) mongoc_apm_topology_closed_get_context (event);
    -   context->topology_closed_events++;
    -
    -   printf ("topology closed\n");
    -}
    -
    -
    -static void
    -server_heartbeat_started (const mongoc_apm_server_heartbeat_started_t *event)
    -{
    -   stats_t *context;
    -
    -   context =
    -      (stats_t *) mongoc_apm_server_heartbeat_started_get_context (event);
    -   context->heartbeat_started_events++;
    -
    -   printf ("%s heartbeat started\n",
    -           mongoc_apm_server_heartbeat_started_get_host (event)->host_and_port);
    -}
    -
    -
    -static void
    -server_heartbeat_succeeded (
    -   const mongoc_apm_server_heartbeat_succeeded_t *event)
    -{
    -   stats_t *context;
    -   char *reply;
    -
    -   context =
    -      (stats_t *) mongoc_apm_server_heartbeat_succeeded_get_context (event);
    -   context->heartbeat_succeeded_events++;
    -
    -   reply = bson_as_canonical_extended_json (
    -      mongoc_apm_server_heartbeat_succeeded_get_reply (event), NULL);
    -
    -   printf (
    -      "%s heartbeat succeeded: %s\n",
    -      mongoc_apm_server_heartbeat_succeeded_get_host (event)->host_and_port,
    -      reply);
    -
    -   bson_free (reply);
    -}
    -
    -
    -static void
    -server_heartbeat_failed (const mongoc_apm_server_heartbeat_failed_t *event)
    -{
    -   stats_t *context;
    -   bson_error_t error;
    -
    -   context = (stats_t *) mongoc_apm_server_heartbeat_failed_get_context (event);
    -   context->heartbeat_failed_events++;
    -   mongoc_apm_server_heartbeat_failed_get_error (event, &error);
    -
    -   printf ("%s heartbeat failed: %s\n",
    -           mongoc_apm_server_heartbeat_failed_get_host (event)->host_and_port,
    -           error.message);
    -}
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_apm_callbacks_t *cbs;
    -   stats_t stats = {0};
    -   const char *uri_string =
    -      "mongodb://127.0.0.1/?appname=sdam-monitoring-example";
    -   mongoc_uri_t *uri;
    -   bson_t cmd = BSON_INITIALIZER;
    -   bson_t reply;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   cbs = mongoc_apm_callbacks_new ();
    -   mongoc_apm_set_server_changed_cb (cbs, server_changed);
    -   mongoc_apm_set_server_opening_cb (cbs, server_opening);
    -   mongoc_apm_set_server_closed_cb (cbs, server_closed);
    -   mongoc_apm_set_topology_changed_cb (cbs, topology_changed);
    -   mongoc_apm_set_topology_opening_cb (cbs, topology_opening);
    -   mongoc_apm_set_topology_closed_cb (cbs, topology_closed);
    -   mongoc_apm_set_server_heartbeat_started_cb (cbs, server_heartbeat_started);
    -   mongoc_apm_set_server_heartbeat_succeeded_cb (cbs,
    -                                                 server_heartbeat_succeeded);
    -   mongoc_apm_set_server_heartbeat_failed_cb (cbs, server_heartbeat_failed);
    -   mongoc_client_set_apm_callbacks (
    -      client, cbs, (void *) &stats /* context pointer */);
    -
    -   /* the driver connects on demand to perform first operation */
    -   BSON_APPEND_INT32 (&cmd, "buildinfo", 1);
    -   mongoc_client_command_simple (client, "admin", &cmd, NULL, &reply, &error);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   printf ("Events:\n"
    -           "   server changed: %d\n"
    -           "   server opening: %d\n"
    -           "   server closed: %d\n"
    -           "   topology changed: %d\n"
    -           "   topology opening: %d\n"
    -           "   topology closed: %d\n"
    -           "   heartbeat started: %d\n"
    -           "   heartbeat succeeded: %d\n"
    -           "   heartbeat failed: %d\n",
    -           stats.server_changed_events,
    -           stats.server_opening_events,
    -           stats.server_closed_events,
    -           stats.topology_changed_events,
    -           stats.topology_opening_events,
    -           stats.topology_closed_events,
    -           stats.heartbeat_started_events,
    -           stats.heartbeat_succeeded_events,
    -           stats.heartbeat_failed_events);
    -
    -   bson_destroy (&cmd);
    -   bson_destroy (&reply);
    -   mongoc_apm_callbacks_destroy (cbs);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Start a 3-node replica set on localhost with set name “rs” and start the program:

    -
    ./example-sdam-monitoring "mongodb://localhost:27017,localhost:27018/?replicaSet=rs"
    -
    -
    -

    This example program prints something like:

    -
    topology opening
    -topology changed: Unknown -> ReplicaSetNoPrimary
    -  secondary UNAVAILABLE
    -  primary UNAVAILABLE
    -server opening: localhost:27017
    -server opening: localhost:27018
    -localhost:27017 heartbeat started
    -localhost:27018 heartbeat started
    -localhost:27017 heartbeat succeeded: { ... reply ... }
    -server changed: localhost:27017 Unknown -> RSPrimary
    -server opening: localhost:27019
    -topology changed: ReplicaSetNoPrimary -> ReplicaSetWithPrimary
    -  new servers:
    -      RSPrimary localhost:27017
    -  secondary UNAVAILABLE
    -  primary AVAILABLE
    -localhost:27019 heartbeat started
    -localhost:27018 heartbeat succeeded: { ... reply ... }
    -server changed: localhost:27018 Unknown -> RSSecondary
    -topology changed: ReplicaSetWithPrimary -> ReplicaSetWithPrimary
    -  previous servers:
    -      RSPrimary localhost:27017
    -  new servers:
    -      RSPrimary localhost:27017
    -      RSSecondary localhost:27018
    -  secondary AVAILABLE
    -  primary AVAILABLE
    -localhost:27019 heartbeat succeeded: { ... reply ... }
    -server changed: localhost:27019 Unknown -> RSSecondary
    -topology changed: ReplicaSetWithPrimary -> ReplicaSetWithPrimary
    -  previous servers:
    -      RSPrimary localhost:27017
    -      RSSecondary localhost:27018
    -  new servers:
    -      RSPrimary localhost:27017
    -      RSSecondary localhost:27018
    -      RSSecondary localhost:27019
    -  secondary AVAILABLE
    -  primary AVAILABLE
    -topology closed
    -
    -Events:
    -   server changed: 3
    -   server opening: 3
    -   server closed: 0
    -   topology changed: 4
    -   topology opening: 1
    -   topology closed: 1
    -   heartbeat started: 3
    -   heartbeat succeeded: 3
    -   heartbeat failed: 0
    -
    -
    -

    The driver connects to the mongods on ports 27017 and 27018, which were specified in the URI, and determines which is primary. It also discovers the third member, “localhost:27019”, and adds it to the topology.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/authentication.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/authentication.html deleted file mode 100644 index c6800b7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/authentication.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - Authentication — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Authentication

    -

    This guide covers the use of authentication options with the MongoDB C Driver. Ensure that the MongoDB server is also properly configured for authentication before making a connection. For more information, see the MongoDB security documentation.

    -

    The MongoDB C driver supports several authentication mechanisms through the use of MongoDB connection URIs.

    -

    By default, if a username and password are provided as part of the connection string (and an optional authentication database), they are used to connect via the default authentication mechanism of the server.

    -

    To select a specific authentication mechanism other than the default, see the list of supported mechanism below.

    -
    mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb");
    -
    -
    -

    Currently supported values for the authMechanism connection string option are:

    - -
    -

    Basic Authentication (SCRAM-SHA-256)

    -

    MongoDB 4.0 introduces support for authenticating using the SCRAM protocol -with the more secure SHA-256 hash described in RFC 7677. Using this authentication mechanism -means that the password is never actually sent over the wire when -authenticating, but rather a computed proof that the client password is the -same as the password the server knows. In MongoDB 4.0, the C driver can -determine the correct default authentication mechanism for users with stored -SCRAM-SHA-1 and SCRAM-SHA-256 credentials:

    -
    mongoc_client_t *client =  mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb");
    -/* the correct authMechanism is negotiated between the driver and server. */
    -
    -
    -

    Alternatively, SCRAM-SHA-256 can be explicitly specified as an authMechanism.

    -
    mongoc_client_t *client =  mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM-SHA-256&authSource=mydb");
    -
    -
    -

    Passwords for SCRAM-SHA-256 undergo the preprocessing step known as SASLPrep -specified in RFC 4013. SASLPrep will -only be performed for passwords containing non-ASCII characters. SASLPrep -requires libicu. If libicu is not available, attempting to authenticate over -SCRAM-SHA-256 with non-ASCII passwords will result in error.

    -

    Usernames never undergo SASLPrep.

    -

    By default, when building the C driver libicu is linked if available. This can -be changed with the ENABLE_ICU cmake option. To specify an installation -path of libicu, specify ICU_ROOT as a cmake option. See the -FindICU documentation -for more information.

    -
    -
    -

    Basic Authentication (SCRAM-SHA-1)

    -

    The default authentication mechanism before MongoDB 4.0 is SCRAM-SHA-1 (RFC 5802). Using this authentication mechanism means that the password is never actually sent over the wire when authenticating, but rather a computed proof that the client password is the same as the password the server knows.

    -
    mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM-SHA-1&authSource=mydb");
    -
    -
    -
    -

    Note

    -

    SCRAM-SHA-1 authenticates against the admin database by default. If the user is created in another database, then specifying the authSource is required.

    -
    -
    -
    -

    Legacy Authentication (MONGODB-CR)

    -

    The MONGODB-CR authMechanism is deprecated and will no longer function in MongoDB 4.0. Instead, specify no authMechanism and the driver -will use an authentication mechanism compatible with your server.

    -
    -
    -

    GSSAPI (Kerberos) Authentication

    -
    -

    Note

    -

    Kerberos support requires compiling the driver against cyrus-sasl on UNIX-like environments. On Windows, configure the driver to build against the Windows Native SSPI.

    -
    -

    GSSAPI (Kerberos) authentication is available in the Enterprise Edition of MongoDB. To authenticate using GSSAPI, the MongoDB C driver must be installed with SASL support.

    -

    On UNIX-like environments, run the kinit command before using the following authentication methods:

    -
    $ kinit mongodbuser@EXAMPLE.COM
    -mongodbuser@EXAMPLE.COM's Password:
    -$ klistCredentials cache: FILE:/tmp/krb5cc_1000
    -        Principal: mongodbuser@EXAMPLE.COM
    -
    -  Issued                Expires               Principal
    -Feb  9 13:48:51 2013  Feb  9 23:48:51 2013  krbtgt/EXAMPLE.COM@EXAMPLE.COM
    -
    -
    -

    Now authenticate using the MongoDB URI. GSSAPI authenticates against the $external virtual database, so a database does not need to be specified in the URI. Note that the Kerberos principal must be URL-encoded:

    -
    mongoc_client_t *client;
    -
    -client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo-server.example.com/?authMechanism=GSSAPI");
    -
    -
    -
    -

    Note

    -

    GSSAPI authenticates against the $external database, so specifying the authSource database is not required.

    -
    -

    The driver supports these GSSAPI properties:

    -
      -
    • CANONICALIZE_HOST_NAME: This might be required with Cyrus-SASL when the hosts report different hostnames than what is used in the Kerberos database. The default is “false”.
    • -
    • SERVICE_NAME: Use a different service name than the default, “mongodb”.
    • -
    -

    Set properties in the URL:

    -
    mongoc_client_t *client;
    -
    -client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo-server.example.com/?authMechanism=GSSAPI&"
    -                            "authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true");
    -
    -
    -

    If you encounter errors such as Invalid net address, check if the application is behind a NAT (Network Address Translation) firewall. If so, create a ticket that uses forwardable and addressless Kerberos tickets. This can be done by passing -f -A to kinit.

    -
    $ kinit -f -A mongodbuser@EXAMPLE.COM
    -
    -
    -
    -
    -

    SASL Plain Authentication

    -
    -

    Note

    -

    The MongoDB C Driver must be compiled with SASL support in order to use SASL PLAIN authentication.

    -
    -

    MongoDB Enterprise Edition supports the SASL PLAIN authentication mechanism, initially intended for delegating authentication to an LDAP server. Using the SASL PLAIN mechanism is very similar to the challenge response mechanism with usernames and passwords. This authentication mechanism uses the $external virtual database for LDAP support:

    -
    -

    Note

    -

    SASL PLAIN is a clear-text authentication mechanism. It is strongly recommended to connect to MongoDB using SSL with certificate validation when using the PLAIN mechanism.

    -
    -
    mongoc_client_t *client;
    -
    -client = mongoc_client_new ("mongodb://user:password@example.com/?authMechanism=PLAIN");
    -
    -
    -

    PLAIN authenticates against the $external database, so specifying the authSource database is not required.

    -
    -
    -

    X.509 Certificate Authentication

    -
    -

    Note

    -

    The MongoDB C Driver must be compiled with SSL support for X.509 authentication support. Once this is done, start a server with the following options:

    -
    $ mongod --sslMode requireSSL --sslPEMKeyFile server.pem --sslCAFile ca.pem
    -
    -
    -
    -

    The MONGODB-X509 mechanism authenticates a username derived from the distinguished subject name of the X.509 certificate presented by the driver during SSL negotiation. This authentication method requires the use of SSL connections with certificate validation.

    -
    mongoc_client_t *client;
    -mongoc_ssl_opt_t ssl_opts = { 0 };
    -
    -ssl_opts.pem_file = "mycert.pem";
    -ssl_opts.pem_pwd = "mycertpassword";
    -ssl_opts.ca_file = "myca.pem";
    -ssl_opts.ca_dir = "trust_dir";
    -ssl_opts.weak_cert_validation = false;
    -
    -client = mongoc_client_new ("mongodb://x509_derived_username@localhost/?authMechanism=MONGODB-X509");
    -mongoc_client_set_ssl_opts (client, &ssl_opts);
    -
    -
    -

    MONGODB-X509 authenticates against the $external database, so specifying the authSource database is not required. For more information on the x509_derived_username, see the MongoDB server x.509 tutorial.

    -
    -

    Note

    -

    The MongoDB C Driver will attempt to determine the x509 derived username when none is provided, and as of MongoDB 3.4 providing the username is not required at all.

    -
    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/basic-troubleshooting.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/basic-troubleshooting.html deleted file mode 100644 index d0cbb16..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/basic-troubleshooting.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - Basic Troubleshooting — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Basic Troubleshooting

    -
    -

    Troubleshooting Checklist

    -

    The following is a short list of things to check when you have a problem.

    -
      -
    • Did you call mongoc_init() in main()? If not, you will likely see a segfault.
    • -
    • Have you leaked any clients or cursors as can be found with mongoc-stat <PID>?
    • -
    • Have packets been delivered to the server? See egress bytes from mongoc-stat <PID>.
    • -
    • Does valgrind show any leaks? Ensure you call mongoc_cleanup() at the end of your process to cleanup lingering allocations from the MongoDB C driver.
    • -
    • If compiling your own copy of MongoDB C Driver, consider using the cmake option -DENABLE_TRACING=ON to enable function tracing and hex dumps of network packets to STDERR and STDOUT.
    • -
    -
    -
    -

    Performance Counters

    -

    The MongoDB C driver comes with an optional unique feature to help developers and sysadmins troubleshoot problems in production. -Performance counters are available for each process using the driver. -If available, the counters can be accessed outside of the application process via a shared memory segment. -This means that you can graph statistics about your application process easily from tools like Munin or Nagios. -Your author often uses watch --interval=0.5 -d mongoc-stat $PID to monitor an application.

    -

    Performance counters are only available on Linux platforms supporting shared memory segments. -On supported platforms they are enabled by default. -Applications can be built without the counters by specifying the cmake option -DENABLE_SHM_COUNTERS=OFF. Additionally, if -performance counters are already compiled, they can be disabled at runtime by specifying the environment variable MONGOC_DISABLE_SHM.

    -

    Performance counters keep track of the following:

    -
      -
    • Active and Disposed Cursors
    • -
    • Active and Disposed Clients, Client Pools, and Socket Streams.
    • -
    • Number of operations sent and received, by type.
    • -
    • Bytes transferred and received.
    • -
    • Authentication successes and failures.
    • -
    • Number of wire protocol errors.
    • -
    -

    To access counters for a given process, simply provide the process id to the mongoc-stat program installed with the MongoDB C Driver.

    -
    $ mongoc-stat 22203
    -   Operations : Egress Total        : The number of sent operations.                    : 13247
    -   Operations : Ingress Total       : The number of received operations.                : 13246
    -   Operations : Egress Queries      : The number of sent Query operations.              : 13247
    -   Operations : Ingress Queries     : The number of received Query operations.          : 0
    -   Operations : Egress GetMore      : The number of sent GetMore operations.            : 0
    -   Operations : Ingress GetMore     : The number of received GetMore operations.        : 0
    -   Operations : Egress Insert       : The number of sent Insert operations.             : 0
    -   Operations : Ingress Insert      : The number of received Insert operations.         : 0
    -   Operations : Egress Delete       : The number of sent Delete operations.             : 0
    -   Operations : Ingress Delete      : The number of received Delete operations.         : 0
    -   Operations : Egress Update       : The number of sent Update operations.             : 0
    -   Operations : Ingress Update      : The number of received Update operations.         : 0
    -   Operations : Egress KillCursors  : The number of sent KillCursors operations.        : 0
    -   Operations : Ingress KillCursors : The number of received KillCursors operations.    : 0
    -   Operations : Egress Msg          : The number of sent Msg operations.                : 0
    -   Operations : Ingress Msg         : The number of received Msg operations.            : 0
    -   Operations : Egress Reply        : The number of sent Reply operations.              : 0
    -   Operations : Ingress Reply       : The number of received Reply operations.          : 13246
    -      Cursors : Active              : The number of active cursors.                     : 1
    -      Cursors : Disposed            : The number of disposed cursors.                   : 13246
    -      Clients : Active              : The number of active clients.                     : 1
    -      Clients : Disposed            : The number of disposed clients.                   : 0
    -      Streams : Active              : The number of active streams.                     : 1
    -      Streams : Disposed            : The number of disposed streams.                   : 0
    -      Streams : Egress Bytes        : The number of bytes sent.                         : 794931
    -      Streams : Ingress Bytes       : The number of bytes received.                     : 589694
    -      Streams : N Socket Timeouts   : The number of socket timeouts.                    : 0
    - Client Pools : Active              : The number of active client pools.                : 1
    - Client Pools : Disposed            : The number of disposed client pools.              : 0
    -     Protocol : Ingress Errors      : The number of protocol errors on ingress.         : 0
    -         Auth : Failures            : The number of failed authentication requests.     : 0
    -         Auth : Success             : The number of successful authentication requests. : 0
    -
    -
    -
    -
    -

    Submitting a Bug Report

    -

    Think you’ve found a bug? Want to see a new feature in the MongoDB C driver? Please open a case in our issue management tool, JIRA:

    - -

    Bug reports in JIRA for all driver projects (i.e. CDRIVER, CSHARP, JAVA) and the Core Server (i.e. SERVER) project are public.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/bulk.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/bulk.html deleted file mode 100644 index b2d12e9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/bulk.html +++ /dev/null @@ -1,970 +0,0 @@ - - - - - - - - Bulk Write Operations — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Bulk Write Operations

    -

    This tutorial explains how to take advantage of MongoDB C driver bulk write operation features. Executing write operations in batches reduces the number of network round trips, increasing write throughput.

    -
    -

    Bulk Insert

    -

    First we need to fetch a bulk operation handle from the mongoc_collection_t.

    -
    mongoc_bulk_operation_t *bulk =
    -   mongoc_collection_create_bulk_operation_with_opts (collection, NULL);
    -
    -
    -

    We can now start inserting documents to the bulk operation. These will be buffered until we execute the operation.

    -

    The bulk operation will coalesce insertions as a single batch for each consecutive call to mongoc_bulk_operation_insert(). This creates a pipelined effect when possible.

    -

    To execute the bulk operation and receive the result we call mongoc_bulk_operation_execute().

    -
    -
    bulk1.c
    -
    #include <assert.h>
    -#include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -bulk1 (mongoc_collection_t *collection)
    -{
    -   mongoc_bulk_operation_t *bulk;
    -   bson_error_t error;
    -   bson_t *doc;
    -   bson_t reply;
    -   char *str;
    -   bool ret;
    -   int i;
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL);
    -
    -   for (i = 0; i < 10000; i++) {
    -      doc = BCON_NEW ("i", BCON_INT32 (i));
    -      mongoc_bulk_operation_insert (bulk, doc);
    -      bson_destroy (doc);
    -   }
    -
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      fprintf (stderr, "Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   mongoc_bulk_operation_destroy (bulk);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   const char *uri_string = "mongodb://localhost/?appname=bulk1-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "test", "test");
    -
    -   bulk1 (collection);
    -
    -   mongoc_uri_destroy (uri);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Example reply document:

    -
    {"nInserted"   : 10000,
    - "nMatched"    : 0,
    - "nModified"   : 0,
    - "nRemoved"    : 0,
    - "nUpserted"   : 0,
    - "writeErrors" : []
    - "writeConcernErrors" : [] }
    -
    -
    -
    -
    -

    Mixed Bulk Write Operations

    -

    MongoDB C driver also supports executing mixed bulk write operations. A batch of insert, update, and remove operations can be executed together using the bulk write operations API.

    -
    -
    -

    Ordered Bulk Write Operations

    -

    Ordered bulk write operations are batched and sent to the server in the order provided for serial execution. The reply document describes the type and count of operations performed.

    -
    -
    bulk2.c
    -
    #include <assert.h>
    -#include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -bulk2 (mongoc_collection_t *collection)
    -{
    -   mongoc_bulk_operation_t *bulk;
    -   bson_error_t error;
    -   bson_t *query;
    -   bson_t *doc;
    -   bson_t *opts;
    -   bson_t reply;
    -   char *str;
    -   bool ret;
    -   int i;
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL);
    -
    -   /* Remove everything */
    -   query = bson_new ();
    -   mongoc_bulk_operation_remove (bulk, query);
    -   bson_destroy (query);
    -
    -   /* Add a few documents */
    -   for (i = 1; i < 4; i++) {
    -      doc = BCON_NEW ("_id", BCON_INT32 (i));
    -      mongoc_bulk_operation_insert (bulk, doc);
    -      bson_destroy (doc);
    -   }
    -
    -   /* {_id: 1} => {$set: {foo: "bar"}} */
    -   query = BCON_NEW ("_id", BCON_INT32 (1));
    -   doc = BCON_NEW ("$set", "{", "foo", BCON_UTF8 ("bar"), "}");
    -   mongoc_bulk_operation_update_many_with_opts (bulk, query, doc, NULL, &error);
    -   bson_destroy (query);
    -   bson_destroy (doc);
    -
    -   /* {_id: 4} => {'$inc': {'j': 1}} (upsert) */
    -   opts = BCON_NEW ("upsert", BCON_BOOL (true));
    -   query = BCON_NEW ("_id", BCON_INT32 (4));
    -   doc = BCON_NEW ("$inc", "{", "j", BCON_INT32 (1), "}");
    -   mongoc_bulk_operation_update_many_with_opts (bulk, query, doc, opts, &error);
    -   bson_destroy (query);
    -   bson_destroy (doc);
    -   bson_destroy (opts);
    -
    -   /* replace {j:1} with {j:2} */
    -   query = BCON_NEW ("j", BCON_INT32 (1));
    -   doc = BCON_NEW ("j", BCON_INT32 (2));
    -   mongoc_bulk_operation_replace_one_with_opts (bulk, query, doc, NULL, &error);
    -   bson_destroy (query);
    -   bson_destroy (doc);
    -
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      printf ("Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   mongoc_bulk_operation_destroy (bulk);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   const char *uri_string = "mongodb://localhost/?appname=bulk2-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "test", "test");
    -
    -   bulk2 (collection);
    -
    -   mongoc_uri_destroy (uri);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Example reply document:

    -
    { "nInserted"   : 3,
    -  "nMatched"    : 2,
    -  "nModified"   : 2,
    -  "nRemoved"    : 10000,
    -  "nUpserted"   : 1,
    -  "upserted"    : [{"index" : 5, "_id" : 4}],
    -  "writeErrors" : []
    -  "writeConcernErrors" : [] }
    -
    -
    -

    The index field in the upserted array is the 0-based index of the upsert operation; in this example, the sixth operation of the overall bulk operation was an upsert, so its index is 5.

    -
    -
    -

    Unordered Bulk Write Operations

    -

    Unordered bulk write operations are batched and sent to the server in arbitrary order where they may be executed in parallel. Any errors that occur are reported after all operations are attempted.

    -

    In the next example the first and third operations fail due to the unique constraint on _id. Since we are doing unordered execution the second and fourth operations succeed.

    -
    -
    bulk3.c
    -
    #include <assert.h>
    -#include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -bulk3 (mongoc_collection_t *collection)
    -{
    -   bson_t opts = BSON_INITIALIZER;
    -   mongoc_bulk_operation_t *bulk;
    -   bson_error_t error;
    -   bson_t *query;
    -   bson_t *doc;
    -   bson_t reply;
    -   char *str;
    -   bool ret;
    -
    -   /* false indicates unordered */
    -   BSON_APPEND_BOOL (&opts, "ordered", false);
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, &opts);
    -   bson_destroy (&opts);
    -
    -   /* Add a document */
    -   doc = BCON_NEW ("_id", BCON_INT32 (1));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   /* remove {_id: 2} */
    -   query = BCON_NEW ("_id", BCON_INT32 (2));
    -   mongoc_bulk_operation_remove_one (bulk, query);
    -   bson_destroy (query);
    -
    -   /* insert {_id: 3} */
    -   doc = BCON_NEW ("_id", BCON_INT32 (3));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   /* replace {_id:4} {'i': 1} */
    -   query = BCON_NEW ("_id", BCON_INT32 (4));
    -   doc = BCON_NEW ("i", BCON_INT32 (1));
    -   mongoc_bulk_operation_replace_one (bulk, query, doc, false);
    -   bson_destroy (query);
    -   bson_destroy (doc);
    -
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      printf ("Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   mongoc_bulk_operation_destroy (bulk);
    -   bson_destroy (&opts);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   const char *uri_string = "mongodb://localhost/?appname=bulk3-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "test", "test");
    -
    -   bulk3 (collection);
    -
    -   mongoc_uri_destroy (uri);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Example reply document:

    -
    { "nInserted"    : 0,
    -  "nMatched"     : 1,
    -  "nModified"    : 1,
    -  "nRemoved"     : 1,
    -  "nUpserted"    : 0,
    -  "writeErrors"  : [
    -    { "index"  : 0,
    -      "code"   : 11000,
    -      "errmsg" : "E11000 duplicate key error index: test.test.$_id_ dup key: { : 1 }" },
    -    { "index"  : 2,
    -      "code"   : 11000,
    -      "errmsg" : "E11000 duplicate key error index: test.test.$_id_ dup key: { : 3 }" } ],
    -  "writeConcernErrors" : [] }
    -
    -Error: E11000 duplicate key error index: test.test.$_id_ dup key: { : 1 }
    -
    -
    -

    The bson_error_t domain is MONGOC_ERROR_COMMAND and its code is 11000.

    -
    -
    -

    Bulk Operation Bypassing Document Validation

    -

    This feature is only available when using MongoDB 3.2 and later.

    -

    By default bulk operations are validated against the schema, if any is defined. In certain cases however it may be necessary to bypass the document validation.

    -
    -
    bulk5.c
    -
    #include <assert.h>
    -#include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -bulk5_fail (mongoc_collection_t *collection)
    -{
    -   mongoc_bulk_operation_t *bulk;
    -   bson_error_t error;
    -   bson_t *doc;
    -   bson_t reply;
    -   char *str;
    -   bool ret;
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL);
    -
    -   /* Two inserts */
    -   doc = BCON_NEW ("_id", BCON_INT32 (31));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   doc = BCON_NEW ("_id", BCON_INT32 (32));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   /* The above documents do not comply to the schema validation rules
    -    * we created previously, so this will result in an error */
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      printf ("Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   mongoc_bulk_operation_destroy (bulk);
    -}
    -
    -static void
    -bulk5_success (mongoc_collection_t *collection)
    -{
    -   mongoc_bulk_operation_t *bulk;
    -   bson_error_t error;
    -   bson_t *doc;
    -   bson_t reply;
    -   char *str;
    -   bool ret;
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL);
    -
    -   /* Allow this document to bypass document validation.
    -    * NOTE: When authentication is enabled, the authenticated user must have
    -    * either the "dbadmin" or "restore" roles to bypass document validation */
    -   mongoc_bulk_operation_set_bypass_document_validation (bulk, true);
    -
    -   /* Two inserts */
    -   doc = BCON_NEW ("_id", BCON_INT32 (31));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   doc = BCON_NEW ("_id", BCON_INT32 (32));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      printf ("Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   mongoc_bulk_operation_destroy (bulk);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   bson_t *options;
    -   bson_error_t error;
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   mongoc_database_t *database;
    -   const char *uri_string = "mongodb://localhost/?appname=bulk5-example";
    -   mongoc_uri_t *uri;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   database = mongoc_client_get_database (client, "testasdf");
    -
    -   /* Create schema validator */
    -   options = BCON_NEW (
    -      "validator", "{", "number", "{", "$gte", BCON_INT32 (5), "}", "}");
    -   collection =
    -      mongoc_database_create_collection (database, "collname", options, &error);
    -
    -   if (collection) {
    -      bulk5_fail (collection);
    -      bulk5_success (collection);
    -      mongoc_collection_destroy (collection);
    -   } else {
    -      fprintf (stderr, "Couldn't create collection: '%s'\n", error.message);
    -   }
    -
    -   bson_free (options);
    -   mongoc_uri_destroy (uri);
    -   mongoc_database_destroy (database);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Running the above example will result in:

    -
    { "nInserted" : 0,
    -  "nMatched" : 0,
    -  "nModified" : 0,
    -  "nRemoved" : 0,
    -  "nUpserted" : 0,
    -  "writeErrors" : [
    -    { "index" : 0,
    -      "code" : 121,
    -      "errmsg" : "Document failed validation" } ] }
    -
    -Error: Document failed validation
    -
    -{ "nInserted" : 2,
    -  "nMatched" : 0,
    -  "nModified" : 0,
    -  "nRemoved" : 0,
    -  "nUpserted" : 0,
    -  "writeErrors" : [] }
    -
    -
    -

    The bson_error_t domain is MONGOC_ERROR_COMMAND.

    -
    -
    -

    Bulk Operation Write Concerns

    -

    By default bulk operations are executed with the write_concern of the collection they are executed against. A custom write concern can be passed to the mongoc_collection_create_bulk_operation_with_opts() method. Write concern errors (e.g. wtimeout) will be reported after all operations are attempted, regardless of execution order.

    -
    -
    bulk4.c
    -
    #include <assert.h>
    -#include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -bulk4 (mongoc_collection_t *collection)
    -{
    -   bson_t opts = BSON_INITIALIZER;
    -   mongoc_write_concern_t *wc;
    -   mongoc_bulk_operation_t *bulk;
    -   bson_error_t error;
    -   bson_t *doc;
    -   bson_t reply;
    -   char *str;
    -   bool ret;
    -
    -   wc = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_w (wc, 4);
    -   mongoc_write_concern_set_wtimeout (wc, 100); /* milliseconds */
    -   mongoc_write_concern_append (wc, &opts);
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, &opts);
    -
    -   /* Two inserts */
    -   doc = BCON_NEW ("_id", BCON_INT32 (10));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   doc = BCON_NEW ("_id", BCON_INT32 (11));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      printf ("Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   mongoc_bulk_operation_destroy (bulk);
    -   mongoc_write_concern_destroy (wc);
    -   bson_destroy (&opts);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   const char *uri_string = "mongodb://localhost/?appname=bulk4-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "test", "test");
    -
    -   bulk4 (collection);
    -
    -   mongoc_uri_destroy (uri);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Example reply document and error message:

    -
    { "nInserted"    : 2,
    -  "nMatched"     : 0,
    -  "nModified"    : 0,
    -  "nRemoved"     : 0,
    -  "nUpserted"    : 0,
    -  "writeErrors"  : [],
    -  "writeConcernErrors" : [
    -    { "code"   : 64,
    -      "errmsg" : "waiting for replication timed out" }
    -] }
    -
    -Error: waiting for replication timed out
    -
    -
    -

    The bson_error_t domain is MONGOC_ERROR_WRITE_CONCERN if there are write concern errors and no write errors. Write errors indicate failed operations, so they take precedence over write concern errors, which mean merely that the write concern is not satisfied yet.

    -
    -
    -

    Setting Collation Order

    -

    This feature is only available when using MongoDB 3.4 and later.

    -
    -
    bulk-collation.c
    -
    #include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -bulk_collation (mongoc_collection_t *collection)
    -{
    -   mongoc_bulk_operation_t *bulk;
    -   bson_t *opts;
    -   bson_t *doc;
    -   bson_t *selector;
    -   bson_t *update;
    -   bson_error_t error;
    -   bson_t reply;
    -   char *str;
    -   uint32_t ret;
    -
    -   /* insert {_id: "one"} and {_id: "One"} */
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (
    -      collection, NULL);
    -   doc = BCON_NEW ("_id", BCON_UTF8 ("one"));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   doc = BCON_NEW ("_id", BCON_UTF8 ("One"));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   /* "One" normally sorts before "one"; make "one" come first */
    -   opts = BCON_NEW ("collation",
    -                    "{",
    -                    "locale",
    -                    BCON_UTF8 ("en_US"),
    -                    "caseFirst",
    -                    BCON_UTF8 ("lower"),
    -                    "}");
    -
    -   /* set x=1 on the document with _id "One", which now sorts after "one" */
    -   update = BCON_NEW ("$set", "{", "x", BCON_INT64 (1), "}");
    -   selector = BCON_NEW ("_id", "{", "$gt", BCON_UTF8 ("one"), "}");
    -   mongoc_bulk_operation_update_one_with_opts (
    -      bulk, selector, update, opts, &error);
    -
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      printf ("Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (selector);
    -   bson_destroy (opts);
    -   mongoc_bulk_operation_destroy (bulk);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   const char *uri_string = "mongodb://localhost/?appname=bulk-collation";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "db", "collection");
    -   bulk_collation (collection);
    -
    -   mongoc_uri_destroy (uri);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Running the above example will result in:

    -
    { "nInserted" : 2,
    -   "nMatched" : 1,
    -   "nModified" : 1,
    -   "nRemoved" : 0,
    -   "nUpserted" : 0,
    -   "writeErrors" : [  ]
    -}
    -
    -
    -
    -
    -

    Unacknowledged Bulk Writes

    -

    Set “w” to zero for an unacknowledged write. The driver sends unacknowledged writes using the legacy opcodes OP_INSERT, OP_UPDATE, and OP_DELETE.

    -
    -
    bulk6.c
    -
    #include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -bulk6 (mongoc_collection_t *collection)
    -{
    -   bson_t opts = BSON_INITIALIZER;
    -   mongoc_write_concern_t *wc;
    -   mongoc_bulk_operation_t *bulk;
    -   bson_error_t error;
    -   bson_t *doc;
    -   bson_t *selector;
    -   bson_t reply;
    -   char *str;
    -   bool ret;
    -
    -   wc = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_w (wc, 0);
    -   mongoc_write_concern_append (wc, &opts);
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, &opts);
    -
    -   doc = BCON_NEW ("_id", BCON_INT32 (10));
    -   mongoc_bulk_operation_insert (bulk, doc);
    -   bson_destroy (doc);
    -
    -   selector = BCON_NEW ("_id", BCON_INT32 (11));
    -   mongoc_bulk_operation_remove_one (bulk, selector);
    -   bson_destroy (selector);
    -
    -   ret = mongoc_bulk_operation_execute (bulk, &reply, &error);
    -
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   if (!ret) {
    -      printf ("Error: %s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   mongoc_bulk_operation_destroy (bulk);
    -   mongoc_write_concern_destroy (wc);
    -   bson_destroy (&opts);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   const char *uri_string = "mongodb://localhost/?appname=bulk6-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "test", "test");
    -
    -   bulk6 (collection);
    -
    -   mongoc_uri_destroy (uri);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    The reply document is empty:

    -
    { }
    -
    -
    -
    -
    -

    Further Reading

    -

    See the Driver Bulk API Spec, which describes bulk write operations for all MongoDB drivers.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/connection-pooling.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/connection-pooling.html deleted file mode 100644 index 42c0f84..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/connection-pooling.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - Connection Pooling — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Connection Pooling

    -

    The MongoDB C driver has two connection modes: single-threaded and pooled. Single-threaded mode is optimized for embedding the driver within languages like PHP. Multi-threaded programs should use pooled mode: this mode minimizes the total connection count, and in pooled mode a background thread monitors the MongoDB server topology, so the program need not block to scan it.

    -
    -

    Single Mode

    -

    In single mode, your program creates a mongoc_client_t directly:

    -
    mongoc_client_t *client = mongoc_client_new (
    -   "mongodb://hostA,hostB/?replicaSet=my_rs");
    -
    -
    -

    The client connects on demand when your program first uses it for a MongoDB operation. Using a non-blocking socket per server, it begins a check on each server concurrently, and uses the asynchronous poll or select function to receive events from the sockets, until all have responded or timed out. Put another way, in single-threaded mode the C Driver fans out to begin all checks concurrently, then fans in once all checks have completed or timed out. Once the scan completes, the client executes your program’s operation and returns.

    -

    In single mode, the client re-scans the server topology roughly once per minute. If more than a minute has elapsed since the previous scan, the next operation on the client will block while the client completes its scan. This interval is configurable with heartbeatFrequencyMS in the connection string. (See mongoc_uri_t.)

    -

    A single client opens one connection per server in your topology: these connections are used both for scanning the topology and performing normal operations.

    -
    -
    -

    Pooled Mode

    -

    To activate pooled mode, create a mongoc_client_pool_t:

    -
    mongoc_uri_t *uri = mongoc_uri_new (
    -   "mongodb://hostA,hostB/?replicaSet=my_rs");
    -
    -mongoc_client_pool_t *pool = mongoc_client_pool_new (uri);
    -
    -
    -

    When your program first calls mongoc_client_pool_pop(), the pool launches a background thread for monitoring. The thread fans out and connects to all servers in the connection string, using non-blocking sockets and a simple event loop. As it receives ismaster responses from the servers, it updates its view of the server topology. Each time the thread discovers a new server it begins connecting to it, and adds the new socket to the list of non-blocking sockets in the event loop.

    -

    Each thread that executes MongoDB operations must check out a client from the pool:

    -
    mongoc_client_t *client = mongoc_client_pool_pop (pool);
    -
    -/* use the client for operations ... */
    -
    -mongoc_client_pool_push (pool, client);
    -
    -
    -

    The mongoc_client_t object is not thread-safe, only the mongoc_client_pool_t is.

    -

    When the driver is in pooled mode, your program’s operations are unblocked as soon as monitoring discovers a usable server. For example, if a thread in your program is waiting to execute an “insert” on the primary, it is unblocked as soon as the primary is discovered, rather than waiting for all secondaries to be checked as well.

    -

    The pool opens one connection per server for monitoring, and each client opens its own connection to each server it uses for application operations. The background thread re-scans the server topology roughly every 10 seconds. This interval is configurable with heartbeatFrequencyMS in the connection string. (See mongoc_uri_t.)

    -

    See Connection Pool Options to configure pool size and behavior, and see mongoc_client_pool_t for an extended example of a multi-threaded program that uses the driver in pooled mode.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/create-indexes.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/create-indexes.html deleted file mode 100644 index 11658c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/create-indexes.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - Creating Indexes — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Creating Indexes

    -

    To create indexes on a MongoDB collection, execute the createIndexes command -with a command function like mongoc_database_write_command_with_opts() or -mongoc_collection_write_command_with_opts(). See the MongoDB -Manual entry for the createIndexes command for details.

    -
    -

    Example

    -
    -
    example-create-indexes.c
    -
    /* gcc example-create-indexes.c -o example-create-indexes $(pkg-config --cflags
    - * --libs libmongoc-1.0) */
    -
    -/* ./example-create-indexes [CONNECTION_STRING [COLLECTION_NAME]] */
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   const char *uri_string =
    -      "mongodb://127.0.0.1/?appname=create-indexes-example";
    -   mongoc_uri_t *uri;
    -   mongoc_database_t *db;
    -   const char *collection_name = "test";
    -   bson_t keys;
    -   char *index_name;
    -   bson_t *create_indexes;
    -   bson_t reply;
    -   char *reply_str;
    -   bson_error_t error;
    -   bool r;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   if (argc > 2) {
    -      collection_name = argv[2];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   db = mongoc_client_get_database (client, "test");
    -
    -   /* ascending index on field "x" */
    -   bson_init (&keys);
    -   BSON_APPEND_INT32 (&keys, "x", 1);
    -   index_name = mongoc_collection_keys_to_index_string (&keys);
    -   create_indexes = BCON_NEW ("createIndexes",
    -                              BCON_UTF8 (collection_name),
    -                              "indexes",
    -                              "[",
    -                              "{",
    -                              "key",
    -                              BCON_DOCUMENT (&keys),
    -                              "name",
    -                              BCON_UTF8 (index_name),
    -                              "}",
    -                              "]");
    -
    -   r = mongoc_database_write_command_with_opts (
    -      db, create_indexes, NULL /* opts */, &reply, &error);
    -
    -   reply_str = bson_as_json (&reply, NULL);
    -   printf ("%s\n", reply_str);
    -
    -   if (!r) {
    -      fprintf (stderr, "Error in createIndexes: %s\n", error.message);
    -   }
    -
    -   bson_free (index_name);
    -   bson_free (reply_str);
    -   bson_destroy (&reply);
    -   bson_destroy (create_indexes);
    -   mongoc_database_destroy (db);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return r ? EXIT_SUCCESS : EXIT_FAILURE;
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/cursors.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/cursors.html deleted file mode 100644 index 30473b0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/cursors.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - Cursors — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Cursors

    -
    -

    Handling Cursor Failures

    -

    Cursors exist on a MongoDB server. However, the mongoc_cursor_t structure gives the local process a handle to the cursor. It is possible for errors to occur on the server while iterating a cursor on the client. Even a network partition may occur. This means that applications should be robust in handling cursor failures.

    -

    While iterating cursors, you should check to see if an error has occurred. See the following example for how to robustly check for errors.

    -
    static void
    -print_all_documents (mongoc_collection_t *collection)
    -{
    -   mongoc_cursor_t *cursor;
    -   const bson_t *doc;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   char *str;
    -
    -   cursor = mongoc_collection_find_with_opts (collection, query, NULL, NULL);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "Failed to iterate all documents: %s\n", error.message);
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -}
    -
    -
    -
    -
    -

    Destroying Server-Side Cursors

    -

    The MongoDB C driver will automatically destroy a server-side cursor when mongoc_cursor_destroy() is called. Failure to call this function when done with a cursor will leak memory client side as well as consume extra memory server side. If the cursor was configured to never timeout, it will become a memory leak on the server.

    -
    -
    -

    Tailable Cursors

    -

    Tailable cursors are cursors that remain open even after they’ve returned a final result. This way, if more documents are added to a collection (i.e., to the cursor’s result set), then you can continue to call mongoc_cursor_next() to retrieve those additional results.

    -

    Here’s a complete test case that demonstrates the use of tailable cursors.

    -
    -

    Note

    -

    Tailable cursors are for capped collections only.

    -
    -

    An example to tail the oplog from a replica set.

    -
    -
    mongoc-tail.c
    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -#ifdef _WIN32
    -#define sleep(_n) Sleep ((_n) *1000)
    -#endif
    -
    -
    -static void
    -print_bson (const bson_t *b)
    -{
    -   char *str;
    -
    -   str = bson_as_canonical_extended_json (b, NULL);
    -   fprintf (stdout, "%s\n", str);
    -   bson_free (str);
    -}
    -
    -
    -static mongoc_cursor_t *
    -query_collection (mongoc_collection_t *collection, uint32_t last_time)
    -{
    -   mongoc_cursor_t *cursor;
    -   bson_t query;
    -   bson_t gt;
    -   bson_t opts;
    -
    -   BSON_ASSERT (collection);
    -
    -   bson_init (&query);
    -   BSON_APPEND_DOCUMENT_BEGIN (&query, "ts", &gt);
    -   BSON_APPEND_TIMESTAMP (&gt, "$gt", last_time, 0);
    -   bson_append_document_end (&query, &gt);
    -
    -   bson_init (&opts);
    -   BSON_APPEND_BOOL (&opts, "tailable", true);
    -   BSON_APPEND_BOOL (&opts, "awaitData", true);
    -
    -   cursor = mongoc_collection_find_with_opts (collection, &query, &opts, NULL);
    -
    -   bson_destroy (&query);
    -   bson_destroy (&opts);
    -
    -   return cursor;
    -}
    -
    -
    -static void
    -tail_collection (mongoc_collection_t *collection)
    -{
    -   mongoc_cursor_t *cursor;
    -   uint32_t last_time;
    -   const bson_t *doc;
    -   bson_error_t error;
    -   bson_iter_t iter;
    -
    -   BSON_ASSERT (collection);
    -
    -   last_time = (uint32_t) time (NULL);
    -
    -   while (true) {
    -      cursor = query_collection (collection, last_time);
    -      while (!mongoc_cursor_error (cursor, &error) &&
    -             mongoc_cursor_more (cursor)) {
    -         if (mongoc_cursor_next (cursor, &doc)) {
    -            if (bson_iter_init_find (&iter, doc, "ts") &&
    -                BSON_ITER_HOLDS_TIMESTAMP (&iter)) {
    -               bson_iter_timestamp (&iter, &last_time, NULL);
    -            }
    -            print_bson (doc);
    -         }
    -      }
    -      if (mongoc_cursor_error (cursor, &error)) {
    -         if (error.domain == MONGOC_ERROR_SERVER) {
    -            fprintf (stderr, "%s\n", error.message);
    -            exit (1);
    -         }
    -      }
    -
    -      mongoc_cursor_destroy (cursor);
    -      sleep (1);
    -   }
    -}
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_collection_t *collection;
    -   mongoc_client_t *client;
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -
    -   if (argc != 2) {
    -      fprintf (stderr, "usage: %s MONGO_URI\n", argv[0]);
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (argv[1], &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               argv[1],
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -
    -   collection = mongoc_client_get_collection (client, "local", "oplog.rs");
    -
    -   tail_collection (collection);
    -
    -   mongoc_collection_destroy (collection);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Let’s compile and run this example against a replica set to see updates as they are made.

    -
    $ gcc -Wall -o mongoc-tail mongoc-tail.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./mongoc-tail mongodb://example.com/?replicaSet=myReplSet
    -{
    -    "h" : -8458503739429355503,
    -    "ns" : "test.test",
    -    "o" : {
    -        "_id" : {
    -            "$oid" : "5372ab0a25164be923d10d50"
    -        }
    -    },
    -    "op" : "i",
    -    "ts" : {
    -        "$timestamp" : {
    -            "i" : 1,
    -            "t" : 1400023818
    -        }
    -    },
    -    "v" : 2
    -}
    -
    -
    -

    The line of output is a sample from performing db.test.insert({}) from the mongo shell on the replica set.

    -

    See also mongoc_cursor_set_max_await_time_ms().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/debugging.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/debugging.html deleted file mode 100644 index 190e9f6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/debugging.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - Aids for Debugging — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Aids for Debugging

    -
    -

    GDB

    -

    This repository contains a .gdbinit file that contains helper functions to -aid debugging of data structures. GDB will load this file -automatically if you have added the directory which contains the .gdbinit file to GDB’s -auto-load safe-path, and you start GDB from the directory which holds the .gdbinit file.

    -

    You can see the safe-path with show auto-load safe-path on a GDB prompt. You -can configure it by setting it in ~/.gdbinit with:

    -
    add-auto-load-safe-path /path/to/mongo-c-driver
    -
    -
    -

    If you haven’t added the path to your auto-load safe-path, or start GDB in -another directory, load the file with:

    -
    source path/to/mongo-c-driver/.gdbinit
    -
    -
    -

    The .gdbinit file defines the printbson function, which shows the contents of a bson_t * variable. -If you have a local bson_t, then you must prefix the variable with a &.

    -

    An example GDB session looks like:

    -
    (gdb) printbson bson
    -ALLOC [0x555556cd7310 + 0] (len=475)
    -{
    -    'bool' : true,
    -    'int32' : NumberInt("42"),
    -    'int64' : NumberLong("3000000042"),
    -    'string' : "Stŕìñg",
    -    'objectId' : ObjectID("5A1442F3122D331C3C6757E1"),
    -    'utcDateTime' : UTCDateTime(1511277299031),
    -    'arrayOfInts' : [
    -        '0' : NumberInt("1"),
    -        '1' : NumberInt("2")
    -    ],
    -    'embeddedDocument' : {
    -        'arrayOfStrings' : [
    -            '0' : "one",
    -            '1' : "two"
    -        ],
    -        'double' : 2.718280,
    -        'notherDoc' : {
    -            'true' : NumberInt("1"),
    -            'false' : false
    -        }
    -    },
    -    'binary' : Binary("02", "3031343532333637"),
    -    'regex' : Regex("@[a-z]+@", "im"),
    -    'null' : null,
    -    'js' : JavaScript("print foo"),
    -    'jsws' : JavaScript("print foo") with scope: {
    -        'f' : NumberInt("42"),
    -        'a' : [
    -            '0' : 3.141593,
    -            '1' : 2.718282
    -        ]
    -    },
    -    'timestamp' : Timestamp(4294967295, 4294967295),
    -    'double' : 3.141593
    -}
    -
    -
    -
    -
    -

    LLDB

    -

    This repository also includes a script that customizes LLDB’s standard print command to print a bson_t or bson_t * as JSON:

    -
    (lldb) print b
    -(bson_t) $0 = {"x": 1, "y": 2}
    -
    -
    -

    The custom bson command provides more options:

    -
    (lldb) bson --verbose b
    -len=19
    -flags=INLINE|STATIC
    -{
    -  "x": 1,
    -  "y": 2
    -}
    -(lldb) bson --raw b
    -'\x13\x00\x00\x00\x10x\x00\x01\x00\x00\x00\x10y\x00\x02\x00\x00\x00\x00'
    -
    -
    -

    Type help bson for a list of options.

    -

    The script requires a build of libbson with debug symbols, and an installation of PyMongo. Install PyMongo with:

    -
    python -m pip install pymongo
    -
    -
    -

    If you see “No module named pip” then you must install pip, then run the previous command again.

    -

    Create a file ~/.lldbinit containing:

    -
    command script import /path/to/mongo-c-driver/lldb_bson.py
    -
    -
    -

    If you see “bson command installed by lldb_bson” at the beginning of your LLDB session, you’ve installed the script correctly.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/distinct-mapreduce.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/distinct-mapreduce.html deleted file mode 100644 index 0eb1b9c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/distinct-mapreduce.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - - - “distinct” and “mapReduce” — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    “distinct” and “mapReduce”

    -

    This document provides some practical, simple, examples to demonstrate the distinct and mapReduce commands.

    -
    -

    Setup

    -

    First we’ll write some code to insert sample data:

    -
    -
    doc-common-insert.c
    -
    /* Don't try to compile this file on its own. It's meant to be #included
    -   by example code */
    -
    -/* Insert some sample data */
    -bool
    -insert_data (mongoc_collection_t *collection)
    -{
    -   mongoc_bulk_operation_t *bulk;
    -   enum N { ndocs = 4 };
    -   bson_t *docs[ndocs];
    -   bson_error_t error;
    -   int i = 0;
    -   bool ret;
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL);
    -
    -   docs[0] = BCON_NEW ("x", BCON_DOUBLE (1.0), "tags", "[", "dog", "cat", "]");
    -   docs[1] = BCON_NEW ("x", BCON_DOUBLE (2.0), "tags", "[", "cat", "]");
    -   docs[2] = BCON_NEW (
    -      "x", BCON_DOUBLE (2.0), "tags", "[", "mouse", "cat", "dog", "]");
    -   docs[3] = BCON_NEW ("x", BCON_DOUBLE (3.0), "tags", "[", "]");
    -
    -   for (i = 0; i < ndocs; i++) {
    -      mongoc_bulk_operation_insert (bulk, docs[i]);
    -      bson_destroy (docs[i]);
    -      docs[i] = NULL;
    -   }
    -
    -   ret = mongoc_bulk_operation_execute (bulk, NULL, &error);
    -
    -   if (!ret) {
    -      fprintf (stderr, "Error inserting data: %s\n", error.message);
    -   }
    -
    -   mongoc_bulk_operation_destroy (bulk);
    -   return ret;
    -}
    -
    -/* A helper which we'll use a lot later on */
    -void
    -print_res (const bson_t *reply)
    -{
    -   char *str;
    -   BSON_ASSERT (reply);
    -   str = bson_as_canonical_extended_json (reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -}
    -
    -
    -
    -
    -
    -

    “distinct” command

    -

    This is how to use the distinct command to get the distinct values of x which are greater than 1:

    -
    -
    distinct.c
    -
    bool
    -distinct (mongoc_database_t *database)
    -{
    -   bson_t *command;
    -   bson_t reply;
    -   bson_error_t error;
    -   bool res;
    -   bson_iter_t iter;
    -   bson_iter_t array_iter;
    -   double val;
    -
    -   command = BCON_NEW ("distinct",
    -                       BCON_UTF8 (COLLECTION_NAME),
    -                       "key",
    -                       BCON_UTF8 ("x"),
    -                       "query",
    -                       "{",
    -                       "x",
    -                       "{",
    -                       "$gt",
    -                       BCON_DOUBLE (1.0),
    -                       "}",
    -                       "}");
    -   res =
    -      mongoc_database_command_simple (database, command, NULL, &reply, &error);
    -   if (!res) {
    -      fprintf (stderr, "Error with distinct: %s\n", error.message);
    -      goto cleanup;
    -   }
    -
    -   /* Do something with reply (in this case iterate through the values) */
    -   if (!(bson_iter_init_find (&iter, &reply, "values") &&
    -         BSON_ITER_HOLDS_ARRAY (&iter) &&
    -         bson_iter_recurse (&iter, &array_iter))) {
    -      fprintf (stderr, "Couldn't extract \"values\" field from response\n");
    -      goto cleanup;
    -   }
    -
    -   while (bson_iter_next (&array_iter)) {
    -      if (BSON_ITER_HOLDS_DOUBLE (&array_iter)) {
    -         val = bson_iter_double (&array_iter);
    -         printf ("Next double: %f\n", val);
    -      }
    -   }
    -
    -cleanup:
    -   /* cleanup */
    -   bson_destroy (command);
    -   bson_destroy (&reply);
    -   return res;
    -}
    -
    -
    -
    -
    -
    -

    “mapReduce” - basic example

    -

    A simple example using the map reduce framework. It simply adds up the number of occurrences of each “tag”.

    -

    First define the map and reduce functions:

    -
    -
    constants.c
    -
    const char *const COLLECTION_NAME = "things";
    -
    -/* Our map function just emits a single (key, 1) pair for each tag
    -   in the array: */
    -const char *const MAPPER = "function () {"
    -                           "this.tags.forEach(function(z) {"
    -                           "emit(z, 1);"
    -                           "});"
    -                           "}";
    -
    -/* The reduce function sums over all of the emitted values for a
    -   given key: */
    -const char *const REDUCER = "function (key, values) {"
    -                            "var total = 0;"
    -                            "for (var i = 0; i < values.length; i++) {"
    -                            "total += values[i];"
    -                            "}"
    -                            "return total;"
    -                            "}";
    -/* Note We can't just return values.length as the reduce function
    -   might be called iteratively on the results of other reduce
    -   steps. */
    -
    -
    -
    -

    Run the mapReduce command:

    -
    -
    map-reduce-basic.c
    -
    bool
    -map_reduce_basic (mongoc_database_t *database)
    -{
    -   bson_t reply;
    -   bson_t *command;
    -   bool res;
    -   bson_error_t error;
    -   mongoc_cursor_t *cursor;
    -   const bson_t *doc;
    -
    -   bool query_done = false;
    -
    -   const char *out_collection_name = "outCollection";
    -   mongoc_collection_t *out_collection;
    -
    -   /* Empty find query */
    -   bson_t find_query = BSON_INITIALIZER;
    -
    -   /* Construct the mapReduce command */
    -
    -   /* Other arguments can also be specified here, like "query" or
    -      "limit" and so on */
    -   command = BCON_NEW ("mapReduce",
    -                       BCON_UTF8 (COLLECTION_NAME),
    -                       "map",
    -                       BCON_CODE (MAPPER),
    -                       "reduce",
    -                       BCON_CODE (REDUCER),
    -                       "out",
    -                       BCON_UTF8 (out_collection_name));
    -   res =
    -      mongoc_database_command_simple (database, command, NULL, &reply, &error);
    -
    -   if (!res) {
    -      fprintf (stderr, "MapReduce failed: %s\n", error.message);
    -      goto cleanup;
    -   }
    -
    -   /* Do something with the reply (it doesn't contain the mapReduce results) */
    -   print_res (&reply);
    -
    -   /* Now we'll query outCollection to see what the results are */
    -   out_collection =
    -      mongoc_database_get_collection (database, out_collection_name);
    -   cursor = mongoc_collection_find_with_opts (
    -      out_collection, &find_query, NULL, NULL);
    -   query_done = true;
    -
    -   /* Do something with the results */
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      print_res (doc);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "ERROR: %s\n", error.message);
    -      res = false;
    -      goto cleanup;
    -   }
    -
    -cleanup:
    -   /* cleanup */
    -   if (query_done) {
    -      mongoc_cursor_destroy (cursor);
    -      mongoc_collection_destroy (out_collection);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (command);
    -
    -   return res;
    -}
    -
    -
    -
    -
    -
    -

    “mapReduce” - more complicated example

    -

    You must have replica set running for this.

    -

    In this example we contact a secondary in the replica set and do an “inline” map reduce, so the results are returned immediately:

    -
    -
    map-reduce-advanced.c
    -
    bool
    -map_reduce_advanced (mongoc_database_t *database)
    -{
    -   bson_t *command;
    -   bson_error_t error;
    -   bool res = true;
    -   mongoc_cursor_t *cursor;
    -   mongoc_read_prefs_t *read_pref;
    -   const bson_t *doc;
    -
    -   /* Construct the mapReduce command */
    -   /* Other arguments can also be specified here, like "query" or "limit"
    -      and so on */
    -
    -   /* Read the results inline from a secondary replica */
    -   command = BCON_NEW ("mapReduce",
    -                       BCON_UTF8 (COLLECTION_NAME),
    -                       "map",
    -                       BCON_CODE (MAPPER),
    -                       "reduce",
    -                       BCON_CODE (REDUCER),
    -                       "out",
    -                       "{",
    -                       "inline",
    -                       "1",
    -                       "}");
    -
    -   read_pref = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
    -   cursor = mongoc_database_command (
    -      database, MONGOC_QUERY_NONE, 0, 0, 0, command, NULL, read_pref);
    -
    -   /* Do something with the results */
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      print_res (doc);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "ERROR: %s\n", error.message);
    -      res = false;
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -   mongoc_read_prefs_destroy (read_pref);
    -   bson_destroy (command);
    -
    -   return res;
    -}
    -
    -
    -
    -
    -
    -

    Running the Examples

    -

    Here’s how to run the example code

    -
    -
    basic-aggregation.c
    -
    /*
    - * Copyright 2016 MongoDB, Inc.
    - *
    - * Licensed under the Apache License, Version 2.0 (the "License");
    - * you may not use this file except in compliance with the License.
    - * You may obtain a copy of the License at
    - *
    - *   http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - */
    -
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -
    -#include "constants.c"
    -
    -#include "../doc-common-insert.c"
    -#include "distinct.c"
    -#include "map-reduce-basic.c"
    -#include "map-reduce-advanced.c"
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_database_t *database = NULL;
    -   mongoc_client_t *client = NULL;
    -   mongoc_collection_t *collection = NULL;
    -   mongoc_uri_t *uri = NULL;
    -   bson_error_t error;
    -   char *host_and_port = NULL;
    -   int exit_code = EXIT_FAILURE;
    -
    -   if (argc != 2) {
    -      fprintf (stderr, "usage: %s CONNECTION-STRING\n", argv[0]);
    -      fprintf (stderr,
    -               "the connection string can be of the following forms:\n");
    -      fprintf (stderr, "localhost\t\t\t\tlocal machine\n");
    -      fprintf (stderr, "localhost:27018\t\t\t\tlocal machine on port 27018\n");
    -      fprintf (stderr,
    -               "mongodb://user:pass@localhost:27017\t"
    -               "local machine on port 27017, and authenticate with username "
    -               "user and password pass\n");
    -      return exit_code;
    -   }
    -
    -   mongoc_init ();
    -
    -   if (strncmp (argv[1], "mongodb://", 10) == 0) {
    -      host_and_port = bson_strdup (argv[1]);
    -   } else {
    -      host_and_port = bson_strdup_printf ("mongodb://%s", argv[1]);
    -   }
    -
    -   uri = mongoc_uri_new_with_error (host_and_port, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               host_and_port,
    -               error.message);
    -      goto cleanup;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      goto cleanup;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   database = mongoc_client_get_database (client, "test");
    -   collection = mongoc_database_get_collection (database, COLLECTION_NAME);
    -
    -   printf ("Inserting data\n");
    -   if (!insert_data (collection)) {
    -      goto cleanup;
    -   }
    -
    -   printf ("distinct\n");
    -   if (!distinct (database)) {
    -      goto cleanup;
    -   }
    -
    -   printf ("map reduce\n");
    -   if (!map_reduce_basic (database)) {
    -      goto cleanup;
    -   }
    -
    -   printf ("more complicated map reduce\n");
    -   if (!map_reduce_advanced (database)) {
    -      goto cleanup;
    -   }
    -   
    -   exit_code = EXIT_SUCCESS;
    -
    -cleanup:
    -   if (collection) {
    -      mongoc_collection_destroy (collection);
    -   }
    -
    -   if (database) {
    -      mongoc_database_destroy (database);
    -   }
    -
    -   if (client) {
    -      mongoc_client_destroy (client);
    -   }
    -
    -   if (uri) {
    -      mongoc_uri_destroy (uri);
    -   }
    -
    -   if (host_and_port) {
    -      bson_free (host_and_port);
    -   }
    -
    -   mongoc_cleanup ();
    -   return exit_code;
    -}
    -
    -
    -
    -

    If you want to try the advanced map reduce example with a secondary, start a replica set (instructions for how to do this can be found here).

    -

    Otherwise, just start an instance of MongoDB:

    -
    $ mongod
    -
    -
    -

    Now compile and run the example program:

    -
    $ cd examples/basic_aggregation/
    -$ gcc -Wall -o agg-example basic-aggregation.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./agg-example localhost
    -
    -Inserting data
    -distinct
    -Next double: 2.000000
    -Next double: 3.000000
    -map reduce
    -{ "result" : "outCollection", "timeMillis" : 155, "counts" : { "input" : 84, "emit" : 126, "reduce" : 3, "output" : 3 }, "ok" : 1 }
    -{ "_id" : "cat", "value" : 63 }
    -{ "_id" : "dog", "value" : 42 }
    -{ "_id" : "mouse", "value" : 21 }
    -more complicated map reduce
    -{ "results" : [ { "_id" : "cat", "value" : 63 }, { "_id" : "dog", "value" : 42 }, { "_id" : "mouse", "value" : 21 } ], "timeMillis" : 14, "counts" : { "input" : 84, "emit" : 126, "reduce" : 3, "output" : 3 }, "ok" : 1 }
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/errors.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/errors.html deleted file mode 100644 index c86bf35..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/errors.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - Error Reporting — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -

    « MongoDB C Driver

    -
    -

    Error Reporting

    -
    -

    Description

    -

    Many C Driver functions report errors by returning false or -1 and filling out a bson_error_t structure with an error domain, error code, and message. Use domain to determine which subsystem generated the error, and code for the specific error. message is a human-readable error description.

    -

    See also: Handling Errors in libbson.

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    DomainCodeDescription
    MONGOC_ERROR_CLIENTMONGOC_ERROR_CLIENT_TOO_BIGYou tried to send a message larger than the server’s max message size.
     MONGOC_ERROR_CLIENT_AUTHENTICATEWrong credentials, or failure sending or receiving authentication messages.
     MONGOC_ERROR_CLIENT_NO_ACCEPTABLE_PEERYou tried an SSL connection but the driver was not built with SSL.
     MONGOC_ERROR_CLIENT_IN_EXHAUSTYou began iterating an exhaust cursor, then tried to begin another operation with the same mongoc_client_t.
     MONGOC_ERROR_CLIENT_SESSION_FAILUREFailure related to creating or using a logical session.
    MONGOC_ERROR_STREAMMONGOC_ERROR_STREAM_NAME_RESOLUTIONDNS failure.
     MONGOC_ERROR_STREAM_SOCKETTimeout communicating with server, or connection closed.
     MONGOC_ERROR_STREAM_CONNECTFailed to connect to server.
    MONGOC_ERROR_PROTOCOLMONGOC_ERROR_PROTOCOL_INVALID_REPLYCorrupt response from server.
     MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSIONThe server version is too old or too new to communicate with the driver.
    MONGOC_ERROR_CURSORMONGOC_ERROR_CURSOR_INVALID_CURSORYou passed bad arguments to mongoc_collection_find_with_opts(), or you called mongoc_cursor_next() on a completed or failed cursor, or the cursor timed out on the server.
     MONGOC_ERROR_CHANGE_STREAM_NO_RESUME_TOKENA resume token was not returned in a document found with mongoc_change_stream_next()
    MONGOC_ERROR_QUERYMONGOC_ERROR_QUERY_FAILUREError API Version 1: Server error from command or query. The server error message is in message.
    MONGOC_ERROR_SERVERMONGOC_ERROR_QUERY_FAILUREError API Version 2: Server error from command or query. The server error message is in message.
    MONGOC_ERROR_SASLA SASL error code.man sasl_errors for a list of codes.
    MONGOC_ERROR_BSONMONGOC_ERROR_BSON_INVALIDYou passed an invalid or oversized BSON document as a parameter, or called mongoc_collection_create_index() with invalid keys, or the server reply was corrupt.
    MONGOC_ERROR_NAMESPACEMONGOC_ERROR_NAMESPACE_INVALIDYou tried to create a collection with an invalid name.
    MONGOC_ERROR_COMMANDMONGOC_ERROR_COMMAND_INVALID_ARGMany functions set this error code when passed bad parameters. Print the error message for details.
     MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSIONYou tried to use a command option the server does not support.
     MONGOC_ERROR_DUPLICATE_KEYAn insert or update failed because because of a duplicate _id or other unique-index violation.
    MONGOC_ERROR_COMMANDError code from server.Error API Version 1: Server error from a command. The server error message is in message.
    MONGOC_ERROR_SERVERError code from server.Error API Version 2: Server error from a command. The server error message is in message.
    MONGOC_ERROR_COLLECTIONMONGOC_ERROR_COLLECTION_INSERT_FAILED, MONGOC_ERROR_COLLECTION_UPDATE_FAILED, MONGOC_ERROR_COLLECTION_DELETE_FAILED.Invalid or empty input to mongoc_collection_insert_one(), mongoc_collection_insert_bulk(), mongoc_collection_update_one(), mongoc_collection_update_many(), mongoc_collection_replace_one(), mongoc_collection_delete_one(), or mongoc_collection_delete_many().
    MONGOC_ERROR_COLLECTIONError code from server.Error API Version 1: Server error from mongoc_collection_insert_one(), mongoc_collection_insert_bulk(), mongoc_collection_update_one(), mongoc_collection_update_many(), mongoc_collection_replace_one(), -mongoc_collection_delete_one(), or mongoc_collection_delete_many().
    MONGOC_ERROR_SERVERError code from server.Error API Version 2: Server error from mongoc_collection_insert_one(), mongoc_collection_insert_bulk(), mongoc_collection_update_one(), mongoc_collection_update_many(), mongoc_collection_replace_one(), -mongoc_collection_delete_one(), or mongoc_collection_delete_many().
    MONGOC_ERROR_GRIDFSMONGOC_ERROR_GRIDFS_CHUNK_MISSINGThe GridFS file is missing a document in its chunks collection.
     MONGOC_ERROR_GRIDFS_CORRUPTA data inconsistency was detected in GridFS.
     MONGOC_ERROR_GRIDFS_INVALID_FILENAMEYou passed a NULL filename to mongoc_gridfs_remove_by_filename().
     MONGOC_ERROR_GRIDFS_PROTOCOL_ERRORYou called mongoc_gridfs_file_set_id() after mongoc_gridfs_file_save().
    MONGOC_ERROR_SCRAMMONGOC_ERROR_SCRAM_PROTOCOL_ERRORFailure in SCRAM-SHA-1 authentication.
    MONGOC_ERROR_SERVER_SELECTIONMONGOC_ERROR_SERVER_SELECTION_FAILURENo replica set member or mongos is available, or none matches your read preference, or you supplied an invalid mongoc_read_prefs_t.
    MONGOC_ERROR_WRITE_CONCERNError code from server.There was a write concern error or timeout from the server.
    MONGOC_ERROR_TRANSACTIONMONGOC_ERROR_TRANSACTION_INVALIDYou attempted to start a transaction when one is already in progress, or commit or abort when there is no transaction.
    -
    -
    -

    Error Labels

    -

    In some cases your application must make decisions based on what category of error the driver has returned, but these categories do not correspond perfectly to an error domain or code. In such cases, error labels provide a reliable way to determine how your application should respond to an error.

    -

    Any C Driver function that has a bson_t out-parameter named reply may include error labels to the reply, in the form of a BSON field named “errorLabels” containing an array of strings:

    -
    { "errorLabels": [ "TransientTransactionError" ] }
    -
    -
    -

    Use mongoc_error_has_label() to test if a reply contains a specific label. See mongoc_client_session_start_transaction() for example code that demonstrates the use of error labels in application logic.

    -

    The following error labels are currently defined. Future versions of MongoDB may introduce new labels.

    -
    -

    TransientTransactionError

    -

    Within a multi-document transaction, certain errors can leave the transaction in an unknown or aborted state. These include write conflicts, primary stepdowns, and network errors. In response, the application should abort the transaction and try the same sequence of operations again in a new transaction.

    -
    -
    -

    UnknownTransactionCommitResult

    -

    When mongoc_client_session_commit_transaction() encounters a network error or certain server errors, it is not known whether the transaction was committed. Applications should attempt to commit the transaction again until: the commit succeeds, the commit fails with an error not labeled “UnknownTransactionCommitResult”, or the application chooses to give up.

    -
    -
    -
    -

    Setting the Error API Version

    -

    The driver’s error reporting began with a design flaw: when the error domain is MONGOC_ERROR_COLLECTION, MONGOC_ERROR_QUERY, or MONGOC_ERROR_COMMAND, the error code might originate from the server or the driver. An application cannot always know where an error originated, and therefore cannot tell what the code means.

    -

    For example, if mongoc_collection_update_one() sets the error’s domain to MONGOC_ERROR_COLLECTION and its code to 24, the application cannot know whether 24 is the generic driver error code MONGOC_ERROR_COLLECTION_UPDATE_FAILED or the specific server error code “LockTimeout”.

    -

    To fix this flaw while preserving backward compatibility, the C Driver 1.4 introduces “Error API Versions”. Version 1, the default Error API Version, maintains the flawed behavior. Version 2 adds a new error domain, MONGOC_ERROR_SERVER. In Version 2, error codes originating on the server always have error domain MONGOC_ERROR_SERVER or MONGOC_ERROR_WRITE_CONCERN. When the driver uses Version 2 the application can always determine the origin and meaning of error codes. New applications should use Version 2, and existing applications should be updated to use Version 2 as well.

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Error SourceAPI Version 1API Version 2
    mongoc_cursor_error()MONGOC_ERROR_QUERYMONGOC_ERROR_SERVER
    mongoc_client_command_with_opts(), -mongoc_database_command_with_opts(), and -other command functionsMONGOC_ERROR_QUERYMONGOC_ERROR_SERVER
    mongoc_collection_count_with_opts() -mongoc_client_get_database_names_with_opts(), -and other command helper functionsMONGOC_ERROR_QUERYMONGOC_ERROR_SERVER
    mongoc_collection_insert_one() -mongoc_collection_insert_bulk() -mongoc_collection_update_one() -mongoc_collection_update_many() -mongoc_collection_replace_one() -mongoc_collection_delete_one() -mongoc_collection_delete_many()MONGOC_ERROR_COMMANDMONGOC_ERROR_SERVER
    mongoc_bulk_operation_execute()MONGOC_ERROR_COMMANDMONGOC_ERROR_SERVER
    Write-concern timeoutMONGOC_ERROR_WRITE_CONCERNMONGOC_ERROR_WRITE_CONCERN
    -

    The Error API Versions are defined with MONGOC_ERROR_API_VERSION_LEGACY and MONGOC_ERROR_API_VERSION_2. Set the version with mongoc_client_set_error_api() or mongoc_client_pool_set_error_api().

    -
    - -
    -

    Functions

    - -
    -
    - - -
    - -
    -
    -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/full_index.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/full_index.html deleted file mode 100644 index c2989cc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/full_index.html +++ /dev/null @@ -1,745 +0,0 @@ - - - - - - - - Index — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Index

    -
    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/genindex.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/genindex.html deleted file mode 100644 index cc5da45..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/genindex.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - Index — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/guides.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/guides.html deleted file mode 100644 index 9344ff9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/guides.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Guides — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/index.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/index.html deleted file mode 100644 index c810635..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/index.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - MongoDB C Driver — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - -
    -
    -
    -
    - - -
    -

    MongoDB C Driver

    -

    A Cross Platform MongoDB Client Library for C

    -
    -

    Introduction

    -

    The MongoDB C Driver, also known as “libmongoc”, is a library for using MongoDB from C applications, and for writing MongoDB drivers in higher-level languages.

    -

    It depends on libbson to generate and parse BSON documents, the native data format of MongoDB.

    - - - - - - - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/init-cleanup.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/init-cleanup.html deleted file mode 100644 index 392e013..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/init-cleanup.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - Initialization and cleanup — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Initialization and cleanup

    -
    -

    Synopsis

    -

    Initialize the MongoDB C Driver by calling mongoc_init() exactly once at the beginning of your program. It is responsible for initializing global state such as process counters, SSL, and threading primitives.

    -

    Call mongoc_cleanup() exactly once at the end of your program to release all memory and other resources allocated by the driver. You must not call any other MongoDB C Driver functions after mongoc_cleanup(). Note that mongoc_init() does not reinitialize the driver after mongoc_cleanup().

    - -
    -
    -

    Deprecated feature: automatic initialization and cleanup

    -

    On some platforms the driver can automatically call mongoc_init() before main, and call mongoc_cleanup() as the process exits. This is problematic in situations where related libraries also execute cleanup code on shutdown, and it creates inconsistent rules across platforms. Therefore the automatic initialization and cleanup feature is deprecated, and will be dropped in version 2.0. Meanwhile, for backward compatibility, the feature is enabled by default on platforms where it is available.

    -

    For portable, future-proof code, always call mongoc_init() and mongoc_cleanup() yourself, and configure the driver like:

    -
    cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=NO
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/installing.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/installing.html deleted file mode 100644 index de9d03b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/installing.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - - - - Installing the MongoDB C Driver (libmongoc) and BSON library (libbson) — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Installing the MongoDB C Driver (libmongoc) and BSON library (libbson)

    -

    The following guide will step you through the process of downloading, building, and installing the current release of the MongoDB C Driver (libmongoc) and BSON library (libbson).

    -
    -

    Supported Platforms

    -

    The MongoDB C Driver is continuously tested on variety of platforms including:

    -
      -
    • Archlinux
    • -
    • Debian 8.1
    • -
    • macOS 10.10
    • -
    • Microsoft Windows Server 2008
    • -
    • RHEL 7.0, 7.1, 7.2
    • -
    • SUSE 12
    • -
    • Ubuntu 12.04, 14.04, 16.04
    • -
    • Clang 3.4, 3.5, 3.7, 3.8
    • -
    • GCC 4.6, 4.8, 4.9, 5.3
    • -
    • MinGW-W64
    • -
    • Visual Studio 2010, 2013, 2015
    • -
    • x86, x86_64, ARM (aarch64), Power8 (ppc64le), zSeries (s390x)
    • -
    -
    -
    -

    Install libmongoc with a Package Manager

    -

    Several Linux distributions provide packages for libmongoc and its dependencies. One advantage of installing libmongoc with a package manager is that its dependencies (including libbson) will be installed automatically.

    -

    The libmongoc package is available on recent versions of Debian and Ubuntu.

    -
    $ apt-get install libmongoc-1.0-0
    -
    -
    -

    On Fedora, a mongo-c-driver package is available in the default repositories and can be installed with:

    -
    $ dnf install mongo-c-driver
    -
    -
    -

    On recent Red Hat systems, such as CentOS and RHEL 7, a mongo-c-driver package is available in the EPEL repository. To check which version is available, see https://apps.fedoraproject.org/packages/mongo-c-driver. The package can be installed with:

    -
    $ yum install mongo-c-driver
    -
    -
    -
    -
    -

    Install libbson with a Package Manager

    -

    The libbson package is available on recent versions of Debian and Ubuntu. If you have installed libmongoc, then libbson will have already been installed as a dependency. It is also possible to install libbson without libmongoc.

    -
    $ apt-get install libbson-1.0
    -
    -
    -

    On Fedora, a libbson package is available in the default repositories and can be installed with:

    -
    $ dnf install libbson
    -
    -
    -

    On recent Red Hat systems, such as CentOS and RHEL 7, a libbson package -is available in the EPEL repository. To check -which version is available, see https://apps.fedoraproject.org/packages/libbson. -The package can be installed with:

    -
    $ yum install libbson
    -
    -
    -
    -
    -

    Building on Unix

    -
    -

    Prerequisites for libmongoc

    -

    OpenSSL is required for authentication or for SSL connections to MongoDB. Kerberos or LDAP support requires Cyrus SASL.

    -

    To install all optional dependencies on RedHat / Fedora:

    -
    $ sudo yum install cmake openssl-devel cyrus-sasl-devel
    -
    -
    -

    On Debian / Ubuntu:

    -
    $ sudo apt-get install cmake libssl-dev libsasl2-dev
    -
    -
    -

    On FreeBSD:

    -
    $ su -c 'pkg install cmake openssl cyrus-sasl'
    -
    -
    -
    -
    -

    Prerequisites for libbson

    -

    The only prerequisite for building libbson is cmake. The command lines above can be adjusted to install only cmake.

    -
    -
    -

    Building from a release tarball

    -

    Unless you intend to contribute to mongo-c-driver and/or libbson, you will want to build from a release tarball.

    -

    The most recent release of libmongoc and libbson, both of which are included in mongo-c-driver, is 1.13.1 and can be downloaded here. The instructions in this document utilize cmake’s out-of-source build feature to keep build artifacts separate from source files.

    -

    The following snippet will download and extract the driver, and configure it:

    -
    -$ wget https://github.com/mongodb/mongo-c-driver/releases/download/1.13.1/mongo-c-driver-1.13.1.tar.gz
    -$ tar xzf mongo-c-driver-1.13.1.tar.gz
    -$ cd mongo-c-driver-1.13.1
    -$ mkdir cmake-build
    -$ cd cmake-build
    -$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
    -
    -

    The -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF option is recommended, see Initialization and cleanup. Another useful cmake option is -DCMAKE_BUILD_TYPE=Release for a release optimized build and -DCMAKE_BUILD_TYPE=Debug for a debug build. For a list of all configure options, run cmake -L ...

    -

    If cmake completed successfully, you will see a considerable amount of output describing your build configuration. The final line of output should look something like this:

    -
    --- Build files have been written to: /home/user/mongo-c-driver-1.13.1/cmake-build
    -
    -

    If cmake concludes with anything different, then there is likely an error or some other problem with the build. Review the output to identify and correct the problem.

    -

    mongo-c-driver contains a copy of libbson, in case your system does not already have libbson installed. The build will detect if libbson is not installed and use the bundled libbson.

    -

    Additionally, it is possible to build only libbson by setting the -DENABLE_MONGOC=OFF option:

    -
    $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_MONGOC=OFF ..
    -
    -
    -

    A build configuration description similar to the one above will be displayed, though with fewer entries. Once the configuration is complete, the selected items can be built and installed with these commands:

    -
    $ make
    -$ sudo make install
    -
    -
    -

    There are two ways to uninstall the components that have been installed. The first is to invoke the uninstall program directly. On Linux/Unix:

    -
    $ sudo /usr/local/share/mongo-c-driver/uninstall.sh
    -
    -
    -

    On Windows:

    -
    C:\Users\user> C:\mongo-c-driver\share\mongo-c-driver\uninstall.bat
    -
    -
    -

    The second way to uninstall is from within the build directory, assuming that it is in the exact same state as when the install command was invoked:

    -
    $ sudo make uninstall
    -
    -
    -

    The second approach simply invokes the uninstall program referenced in the first approach.

    -
    -
    -

    Building from git

    -

    Clone the repository and build the current master or a particular release tag:

    -
    $ git clone https://github.com/mongodb/mongo-c-driver.git
    -$ cd mongo-c-driver
    -$ git checkout x.y.z  # To build a particular release
    -$ mkdir cmake-build
    -$ cd cmake-build
    -$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
    -$ make
    -$ sudo make install
    -
    -
    -
    -
    -

    Generating the documentation

    -

    Install Sphinx, then:

    -
    $ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON ..
    -$ make mongoc-doc
    -
    -
    -

    To build only the libbson documentation:

    -
    $ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON ..
    -$ make bson-doc
    -
    -
    -

    The -DENABLE_MAN_PAGES=ON and -DENABLE_HTML_DOCS=ON can also be added as options to a normal build from a release tarball or from git so that the documentation is built at the same time as other components.

    -
    -
    -
    -

    Building on macOS

    -

    Install the XCode Command Line Tools:

    -
    $ xcode-select --install
    -
    -
    -

    The cmake utility is also required. First install Homebrew according to its instructions, then:

    -
    $ brew install cmake
    -
    -
    -

    Download the latest release tarball:

    -
    -$ curl -LO https://github.com/mongodb/mongo-c-driver/releases/download/1.13.1/mongo-c-driver-1.13.1.tar.gz
    -$ tar xzf mongo-c-driver-1.13.1.tar.gz
    -$ cd mongo-c-driver-1.13.1
    -
    -

    Build and install the driver:

    -
    $ mkdir cmake-build
    -$ cd cmake-build
    -$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
    -
    -
    -

    All of the same variations described above (e.g., building only libbson, building documentation, etc.) are available when building on macOS.

    -
    -
    -

    Building on Windows with Visual Studio

    -

    Building on Windows requires Windows Vista or newer and Visual Studio 2010 or newer. Additionally, cmake is required to generate Visual Studio project files.

    -

    Let’s start by generating Visual Studio project files. The following assumes we are compiling for 64-bit Windows using Visual Studio 2015 Express, which can be freely downloaded from Microsoft. We will be utilizing cmake’s out-of-source build feature to keep build artifacts separate from source files.

    -
    -cd mongo-c-driver-1.13.1
    -mkdir cmake-build
    -cd cmake-build
    -cmake -G "Visual Studio 14 2015 Win64" \
    -  "-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver" \
    -  "-DCMAKE_PREFIX_PATH=C:\mongo-c-driver" \
    -  ..
    -
    -

    (Run cmake -LH .. for a list of other options.)

    -

    Now that we have project files generated, we can either open the project in Visual Studio or compile from the command line. Let’s build using the command line program msbuild.exe:

    -
    msbuild.exe /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj
    -
    -
    -

    Visual Studio’s default build type is Debug, but we recommend a release build with debug info for production use. Now that libmongoc and libbson are compiled, let’s install them using msbuild. It will be installed to the path specified by CMAKE_INSTALL_PREFIX.

    -
    msbuild.exe INSTALL.vcxproj
    -
    -
    -

    You should now see libmongoc and libbson installed in C:\mongo-c-driver

    -

    To use the driver libraries in your program, see Using libmongoc in a Microsoft Visual Studio project.

    -
    -
    -

    Building on Windows with MinGW-W64 and MSYS2

    -

    Install MSYS2 from msys2.github.io. Choose the x86_64 version, not i686.

    -

    Open c:\msys64\ming64_shell.bat (not the msys2_shell). Install dependencies:

    -
    pacman --noconfirm -Syu
    -pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake
    -pacman --noconfirm -S mingw-w64-x86_64-extra-cmake-modules make tar
    -pacman --noconfirm -S mingw64/mingw-w64-x86_64-cyrus-sasl
    -
    -
    -

    Download and untar the latest tarball, enter its directory, and build with CMake:

    -
    CC=/mingw64/bin/gcc.exe /mingw64/bin/cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="C:/mongo-c-driver" ..
    -make
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/lifecycle.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/lifecycle.html deleted file mode 100644 index aaeb4e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/lifecycle.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - Object Lifecycle — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Object Lifecycle

    -

    This page documents the order of creation and destruction for libmongoc’s main struct types.

    -
    -

    Clients and pools

    -

    Call mongoc_init() once, before calling any other libmongoc functions, and call mongoc_cleanup() once before your program exits.

    -

    A program that uses libmongoc from multiple threads should create a mongoc_client_pool_t with mongoc_client_pool_new(). Each thread acquires a mongoc_client_t from the pool with mongoc_client_pool_pop() and returns it with mongoc_client_pool_push() when the thread is finished using it. To destroy the pool, first return all clients, then call mongoc_client_pool_destroy().

    -

    If your program uses libmongoc from only one thread, create a mongoc_client_t directly with mongoc_client_new() or mongoc_client_new_from_uri(). Destroy it with mongoc_client_destroy().

    -
    - -
    -

    GridFS objects

    -

    You can create a mongoc_gridfs_t from a mongoc_client_t, create a mongoc_gridfs_file_t or mongoc_gridfs_file_list_t from a mongoc_gridfs_t, create a mongoc_gridfs_file_t from a mongoc_gridfs_file_list_t, and create a mongoc_stream_t from a mongoc_gridfs_file_t.

    -

    Each of these objects depends on the object it was created from. Always destroy GridFS objects in the reverse of the order they were created. The sole exception is that a mongoc_gridfs_file_t need not be destroyed before the mongoc_gridfs_file_list_t it was created from.

    -
    -
    -

    Sessions

    -

    Start a session with mongoc_client_start_session(), use the session for a sequence of operations and multi-document transactions, then free it with mongoc_client_session_destroy(). Any mongoc_cursor_t or mongoc_change_stream_t using a session must be destroyed before the session, and a session must be destroyed before the mongoc_client_t it came from.

    -

    By default, sessions are causally consistent. To disable causal consistency, before starting a session create a mongoc_session_opt_t with mongoc_session_opts_new() and call mongoc_session_opts_set_causal_consistency(), then free the struct with mongoc_session_opts_destroy().

    -

    Unacknowledged writes are prohibited with sessions.

    -

    A mongoc_client_session_t must be used by only one thread at a time. Due to session pooling, mongoc_client_start_session() may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/logging.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/logging.html deleted file mode 100644 index 8c381ad..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/logging.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - Logging — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Logging

    -

    MongoDB C driver Logging Abstraction

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_LOG_LEVEL_ERROR,
    -   MONGOC_LOG_LEVEL_CRITICAL,
    -   MONGOC_LOG_LEVEL_WARNING,
    -   MONGOC_LOG_LEVEL_MESSAGE,
    -   MONGOC_LOG_LEVEL_INFO,
    -   MONGOC_LOG_LEVEL_DEBUG,
    -   MONGOC_LOG_LEVEL_TRACE,
    -} mongoc_log_level_t;
    -
    -#define MONGOC_ERROR(...)
    -#define MONGOC_CRITICAL(...)
    -#define MONGOC_WARNING(...)
    -#define MONGOC_MESSAGE(...)
    -#define MONGOC_INFO(...)
    -#define MONGOC_DEBUG(...)
    -
    -typedef void (*mongoc_log_func_t) (mongoc_log_level_t log_level,
    -                                   const char *log_domain,
    -                                   const char *message,
    -                                   void *user_data);
    -
    -void
    -mongoc_log_set_handler (mongoc_log_func_t log_func, void *user_data);
    -void
    -mongoc_log (mongoc_log_level_t log_level,
    -            const char *log_domain,
    -            const char *format,
    -            ...) BSON_GNUC_PRINTF (3, 4);
    -const char *
    -mongoc_log_level_str (mongoc_log_level_t log_level);
    -void
    -mongoc_log_default_handler (mongoc_log_level_t log_level,
    -                            const char *log_domain,
    -                            const char *message,
    -                            void *user_data);
    -void
    -mongoc_log_trace_enable (void);
    -void
    -mongoc_log_trace_disable (void);
    -
    -
    -

    The MongoDB C driver comes with an abstraction for logging that you can use in your application, or integrate with an existing logging system.

    -
    -
    -

    Macros

    -

    To make logging a little less painful, various helper macros are provided. See the following example.

    -
    #undef MONGOC_LOG_DOMAIN
    -#define MONGOC_LOG_DOMAIN "my-custom-domain"
    -
    -MONGOC_WARNING ("An error occurred: %s", strerror (errno));
    -
    -
    -
    -
    -

    Custom Log Handlers

    -
    -
    The default log handler prints a timestamp and the log message to stdout, or to stderr for warnings, critical messages, and errors.
    -
    You can override the handler with mongoc_log_set_handler(). -Your handler function is called in a mutex for thread safety.
    -
    -

    For example, you could register a custom handler to suppress messages at INFO level and below:

    -
    void
    -my_logger (mongoc_log_level_t log_level,
    -           const char *log_domain,
    -           const char *message,
    -           void *user_data)
    -{
    -   /* smaller values are more important */
    -   if (log_level < MONGOC_LOG_LEVEL_INFO) {
    -      mongoc_log_default_handler (log_level, log_domain, message, user_data);
    -   }
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_init ();
    -   mongoc_log_set_handler (my_logger, NULL);
    -
    -   /* ... your code ...  */
    -
    -   mongoc_cleanup ();
    -   return 0;
    -}
    -
    -
    -

    To restore the default handler:

    -
    mongoc_log_set_handler (mongoc_log_default_handler, NULL);
    -
    -
    -
    -
    -

    Disable logging

    -

    To disable all logging, including warnings, critical messages and errors, provide an empty log handler:

    -
    mongoc_log_set_handler (NULL, NULL);
    -
    -
    -
    -
    -

    Tracing

    -

    If compiling your own copy of the MongoDB C driver, consider configuring with -DENABLE_TRACING=ON to enable function tracing and hex dumps of network packets to STDERR and STDOUT during development and debugging.

    -

    This is especially useful when debugging what may be going on internally in the driver.

    -

    Trace messages can be enabled and disabled by calling mongoc_log_trace_enable() and mongoc_log_trace_disable()

    -
    -

    Note

    -

    Compiling the driver with -DENABLE_TRACING=ON will affect its performance. Disabling tracing with mongoc_log_trace_disable() significantly reduces the overhead, but cannot remove it completely.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/matcher.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/matcher.html deleted file mode 100644 index b6257a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/matcher.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - Client Side Document Matching — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Client Side Document Matching

    -
    -

    Basic Document Matching (Deprecated)

    -
    -

    Warning

    -

    This feature will be removed in version 2.0.

    -
    -

    The MongoDB C driver supports matching a subset of the MongoDB query specification on the client.

    -

    Currently, basic numeric, string, subdocument, and array equality, $gt, $gte, $lt, $lte, $in, $nin, $ne, $exists, $type, $and, and $or are supported. As this is not the same implementation as the MongoDB server, some inconsistencies may occur. Please file a bug if you find such a case.

    -

    To test this, perform a mongodump of a single collection and pipe it to the program.

    -
    $ echo "db.test.insert({hello:'world'})" | mongo
    -connecting to: test
    -WriteResult({ "nInserted" : 1 })
    -bye
    -
    -$ mongodump -d test -c test -o - | filter-bsondump
    -{ "_id" : { "$oid" : "537afac9a70e5b4d556153bc" }, "hello" : "world" }
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc-common-task-examples.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc-common-task-examples.html deleted file mode 100644 index 9c33afb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc-common-task-examples.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - - - - - Common Tasks — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Common Tasks

    -

    Drivers for some other languages provide helper functions to perform certain common tasks. In the C Driver we must explicitly build commands to send to the server.

    -

    This snippet contains example code for the explain, copydb and cloneCollection commands.

    -
    -

    Setup

    -

    First we’ll write some code to insert sample data:

    -
    -
    doc-common-insert.c
    -
    /* Don't try to compile this file on its own. It's meant to be #included
    -   by example code */
    -
    -/* Insert some sample data */
    -bool
    -insert_data (mongoc_collection_t *collection)
    -{
    -   mongoc_bulk_operation_t *bulk;
    -   enum N { ndocs = 4 };
    -   bson_t *docs[ndocs];
    -   bson_error_t error;
    -   int i = 0;
    -   bool ret;
    -
    -   bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL);
    -
    -   docs[0] = BCON_NEW ("x", BCON_DOUBLE (1.0), "tags", "[", "dog", "cat", "]");
    -   docs[1] = BCON_NEW ("x", BCON_DOUBLE (2.0), "tags", "[", "cat", "]");
    -   docs[2] = BCON_NEW (
    -      "x", BCON_DOUBLE (2.0), "tags", "[", "mouse", "cat", "dog", "]");
    -   docs[3] = BCON_NEW ("x", BCON_DOUBLE (3.0), "tags", "[", "]");
    -
    -   for (i = 0; i < ndocs; i++) {
    -      mongoc_bulk_operation_insert (bulk, docs[i]);
    -      bson_destroy (docs[i]);
    -      docs[i] = NULL;
    -   }
    -
    -   ret = mongoc_bulk_operation_execute (bulk, NULL, &error);
    -
    -   if (!ret) {
    -      fprintf (stderr, "Error inserting data: %s\n", error.message);
    -   }
    -
    -   mongoc_bulk_operation_destroy (bulk);
    -   return ret;
    -}
    -
    -/* A helper which we'll use a lot later on */
    -void
    -print_res (const bson_t *reply)
    -{
    -   char *str;
    -   BSON_ASSERT (reply);
    -   str = bson_as_canonical_extended_json (reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -}
    -
    -
    -
    -
    -
    -

    “explain” Command

    -

    This is how to use the explain command in MongoDB 3.2+:

    -
    -
    explain.c
    -
    bool
    -explain (mongoc_collection_t *collection)
    -{
    -   bson_t *command;
    -   bson_t reply;
    -   bson_error_t error;
    -   bool res;
    -
    -   command = BCON_NEW ("explain",
    -                       "{",
    -                       "find",
    -                       BCON_UTF8 (COLLECTION_NAME),
    -                       "filter",
    -                       "{",
    -                       "x",
    -                       BCON_INT32 (1),
    -                       "}",
    -                       "}");
    -   res = mongoc_collection_command_simple (
    -      collection, command, NULL, &reply, &error);
    -   if (!res) {
    -      fprintf (stderr, "Error with explain: %s\n", error.message);
    -      goto cleanup;
    -   }
    -
    -   /* Do something with the reply */
    -   print_res (&reply);
    -
    -cleanup:
    -   bson_destroy (&reply);
    -   bson_destroy (command);
    -   return res;
    -}
    -
    -
    -
    -
    -
    -

    “copydb” Command

    -

    This example requires two instances of mongo to be running.

    -

    Here’s how to use the copydb command to copy a database from another instance of MongoDB:

    -
    -
    copydb.c
    -
    bool
    -copydb (mongoc_client_t *client, const char *other_host_and_port)
    -{
    -   mongoc_database_t *admindb;
    -   bson_t *command;
    -   bson_t reply;
    -   bson_error_t error;
    -   bool res;
    -
    -   BSON_ASSERT (other_host_and_port);
    -   /* Must do this from the admin db */
    -   admindb = mongoc_client_get_database (client, "admin");
    -
    -   command = BCON_NEW ("copydb",
    -                       BCON_INT32 (1),
    -                       "fromdb",
    -                       BCON_UTF8 ("test"),
    -                       "todb",
    -                       BCON_UTF8 ("test2"),
    -
    -                       /* If you want from a different host */
    -                       "fromhost",
    -                       BCON_UTF8 (other_host_and_port));
    -   res =
    -      mongoc_database_command_simple (admindb, command, NULL, &reply, &error);
    -   if (!res) {
    -      fprintf (stderr, "Error with copydb: %s\n", error.message);
    -      goto cleanup;
    -   }
    -
    -   /* Do something with the reply */
    -   print_res (&reply);
    -
    -cleanup:
    -   bson_destroy (&reply);
    -   bson_destroy (command);
    -   mongoc_database_destroy (admindb);
    -
    -   return res;
    -}
    -
    -
    -
    -
    -
    -

    “cloneCollection” Command

    -

    This example requires two instances of mongo to be running.

    -

    Here’s an example of the cloneCollection command to clone a collection from another instance of MongoDB:

    -
    -
    clone-collection.c
    -
    bool
    -clone_collection (mongoc_database_t *database, const char *other_host_and_port)
    -{
    -   bson_t *command;
    -   bson_t reply;
    -   bson_error_t error;
    -   bool res;
    -
    -   BSON_ASSERT (other_host_and_port);
    -   command = BCON_NEW ("cloneCollection",
    -                       BCON_UTF8 ("test.remoteThings"),
    -                       "from",
    -                       BCON_UTF8 (other_host_and_port),
    -                       "query",
    -                       "{",
    -                       "x",
    -                       BCON_INT32 (1),
    -                       "}");
    -   res =
    -      mongoc_database_command_simple (database, command, NULL, &reply, &error);
    -   if (!res) {
    -      fprintf (stderr, "Error with clone: %s\n", error.message);
    -      goto cleanup;
    -   }
    -
    -   /* Do something with the reply */
    -   print_res (&reply);
    -
    -cleanup:
    -   bson_destroy (&reply);
    -   bson_destroy (command);
    -
    -   return res;
    -}
    -
    -
    -
    -
    -
    -

    Running the Examples

    -
    -
    common-operations.c
    -
    /*
    - * Copyright 2016 MongoDB, Inc.
    - *
    - * Licensed under the Apache License, Version 2.0 (the "License");
    - * you may not use this file except in compliance with the License.
    - * You may obtain a copy of the License at
    - *
    - *   http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - */
    -
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -
    -const char *COLLECTION_NAME = "things";
    -
    -#include "../doc-common-insert.c"
    -#include "explain.c"
    -#include "copydb.c"
    -#include "clone-collection.c"
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_database_t *database = NULL;
    -   mongoc_client_t *client = NULL;
    -   mongoc_collection_t *collection = NULL;
    -   mongoc_uri_t *uri = NULL;
    -   bson_error_t error;
    -   char *host_and_port;
    -   int res = 0;
    -   char *other_host_and_port = NULL;
    -
    -   if (argc < 2 || argc > 3) {
    -      fprintf (stderr,
    -               "usage: %s MONGOD-1-CONNECTION-STRING "
    -               "[MONGOD-2-HOST-NAME:MONGOD-2-PORT]\n",
    -               argv[0]);
    -      fprintf (stderr,
    -               "MONGOD-1-CONNECTION-STRING can be "
    -               "of the following forms:\n");
    -      fprintf (stderr, "localhost\t\t\t\tlocal machine\n");
    -      fprintf (stderr, "localhost:27018\t\t\t\tlocal machine on port 27018\n");
    -      fprintf (stderr,
    -               "mongodb://user:pass@localhost:27017\t"
    -               "local machine on port 27017, and authenticate with username "
    -               "user and password pass\n");
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_init ();
    -
    -   if (strncmp (argv[1], "mongodb://", 10) == 0) {
    -      host_and_port = bson_strdup (argv[1]);
    -   } else {
    -      host_and_port = bson_strdup_printf ("mongodb://%s", argv[1]);
    -   }
    -   other_host_and_port = argc > 2 ? argv[2] : NULL;
    -
    -   uri = mongoc_uri_new_with_error (host_and_port, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               host_and_port,
    -               error.message);
    -      res = EXIT_FAILURE;
    -      goto cleanup;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      res = EXIT_FAILURE;
    -      goto cleanup;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   database = mongoc_client_get_database (client, "test");
    -   collection = mongoc_database_get_collection (database, COLLECTION_NAME);
    -
    -   printf ("Inserting data\n");
    -   if (!insert_data (collection)) {
    -      res = EXIT_FAILURE;
    -      goto cleanup;
    -   }
    -
    -   printf ("explain\n");
    -   if (!explain (collection)) {
    -      res = EXIT_FAILURE;
    -      goto cleanup;
    -   }
    -
    -   if (other_host_and_port) {
    -      printf ("copydb\n");
    -      if (!copydb (client, other_host_and_port)) {
    -         res = EXIT_FAILURE;
    -         goto cleanup;
    -      }
    -
    -      printf ("clone collection\n");
    -      if (!clone_collection (database, other_host_and_port)) {
    -         res = EXIT_FAILURE;
    -         goto cleanup;
    -      }
    -   }
    -
    -cleanup:
    -   if (collection) {
    -      mongoc_collection_destroy (collection);
    -   }
    -
    -   if (database) {
    -      mongoc_database_destroy (database);
    -   }
    -
    -   if (client) {
    -      mongoc_client_destroy (client);
    -   }
    -
    -   if (uri) {
    -      mongoc_uri_destroy (uri);
    -   }
    -
    -   bson_free (host_and_port);
    -   mongoc_cleanup ();
    -   return res;
    -}
    -
    -
    -
    -

    First launch two separate instances of mongod (must be done from separate shells):

    -
    $ mongod
    -
    -
    -
    $ mkdir /tmp/db2$ mongod --dbpath /tmp/db2 --port 27018 # second instance
    -
    -
    -

    Now compile and run the example program:

    -
    $ cd examples/common_operations/$ gcc -Wall -o example common-operations.c $(pkg-config --cflags --libs libmongoc-1.0)$ ./example localhost:27017 localhost:27018
    -Inserting data
    -explain
    -{
    -   "executionStats" : {
    -      "allPlansExecution" : [],
    -      "executionStages" : {
    -         "advanced" : 19,
    -         "direction" : "forward" ,
    -         "docsExamined" : 76,
    -         "executionTimeMillisEstimate" : 0,
    -         "filter" : {
    -            "x" : {
    -               "$eq" : 1
    -            }
    -         },
    -         "invalidates" : 0,
    -         "isEOF" : 1,
    -         "nReturned" : 19,
    -         "needTime" : 58,
    -         "needYield" : 0,
    -         "restoreState" : 0,
    -         "saveState" : 0,
    -         "stage" : "COLLSCAN" ,
    -         "works" : 78
    -      },
    -      "executionSuccess" : true,
    -      "executionTimeMillis" : 0,
    -      "nReturned" : 19,
    -      "totalDocsExamined" : 76,
    -      "totalKeysExamined" : 0
    -   },
    -   "ok" : 1,
    -   "queryPlanner" : {
    -      "indexFilterSet" : false,
    -      "namespace" : "test.things",
    -      "parsedQuery" : {
    -         "x" : {
    -            "$eq" : 1
    -         }
    -      },
    -      "plannerVersion" : 1,
    -      "rejectedPlans" : [],
    -      "winningPlan" : {
    -         "direction" : "forward" ,
    -         "filter" : {
    -            "x" : {
    -               "$eq" : 1
    -            }
    -         },
    -         "stage" : "COLLSCAN"
    -      }
    -   },
    -   "serverInfo" : {
    -      "gitVersion" : "05552b562c7a0b3143a729aaa0838e558dc49b25" ,
    -      "host" : "MacBook-Pro-57.local",
    -      "port" : 27017,
    -      "version" : "3.2.6"
    -   }
    -}
    -copydb
    -{ "ok" : 1 }
    -clone collection
    -{ "ok" : 1 }
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_destroy.html deleted file mode 100644 index 39129a0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_destroy.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - mongoc_apm_callbacks_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_new.html deleted file mode 100644 index d6a5a9e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_new.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - mongoc_apm_callbacks_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_t.html deleted file mode 100644 index 5d32ae0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_callbacks_t.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - mongoc_apm_callbacks_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    - - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_command_name.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_command_name.html deleted file mode 100644 index 0c7c264..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_command_name.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_command_name() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_failed_get_command_name()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_apm_command_failed_get_command_name (
    -   const mongoc_apm_command_failed_t *event);
    -
    -
    -

    Returns this event’s command name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A string that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_context.html deleted file mode 100644 index a076f65..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_duration.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_duration.html deleted file mode 100644 index b1b9d66..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_duration.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_duration() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_error.html deleted file mode 100644 index a97725c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_error.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_error() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_host.html deleted file mode 100644 index 6a650ba..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_host.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_failed_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_command_failed_get_host (const mongoc_apm_command_failed_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_operation_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_operation_id.html deleted file mode 100644 index 971113f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_operation_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_operation_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_failed_get_operation_id()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_apm_command_failed_get_operation_id (
    -   const mongoc_apm_command_failed_t *event);
    -
    -
    -

    Returns this event’s operation id. This number correlates all the commands in a bulk operation, or all the “find” and “getMore” commands required to stream a large query result.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    The event’s operation id.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_reply.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_reply.html deleted file mode 100644 index 2c7579a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_reply.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_reply() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_failed_get_reply()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_apm_command_failed_get_reply (
    -   const mongoc_apm_command_failed_t *event);
    -
    -
    -

    Returns the server’s reply to a command that failed. The reply contains details about why the command failed. If no server reply was received, such as in the event of a network error, then the reply is a valid empty BSON document. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A bson_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_request_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_request_id.html deleted file mode 100644 index 58e0601..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_request_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_request_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_server_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_server_id.html deleted file mode 100644 index 1cabc44..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_get_server_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_get_server_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_t.html deleted file mode 100644 index 6578ba6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_failed_t.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_failed_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    - - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command.html deleted file mode 100644 index 6ad4554..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_command() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_started_get_command()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_apm_command_started_get_command (
    -   const mongoc_apm_command_started_t *event);
    -
    -
    -

    Returns this event’s command. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A bson_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command_name.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command_name.html deleted file mode 100644 index 7da4930..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_command_name.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_command_name() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_started_get_command_name()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_apm_command_started_get_command_name (
    -   const mongoc_apm_command_started_t *event);
    -
    -
    -

    Returns this event’s command name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A string that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_context.html deleted file mode 100644 index 0415263..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_database_name.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_database_name.html deleted file mode 100644 index 20c5019..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_database_name.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_database_name() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_started_get_database_name()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_apm_command_started_get_database_name (
    -   const mongoc_apm_command_started_t *event);
    -
    -
    -

    Returns this event’s database name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A string that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_host.html deleted file mode 100644 index 489e687..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_host.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_started_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_command_started_get_host (const mongoc_apm_command_started_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_operation_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_operation_id.html deleted file mode 100644 index 3135c00..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_operation_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_operation_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_started_get_operation_id()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_apm_command_started_get_operation_id (
    -   const mongoc_apm_command_started_t *event);
    -
    -
    -

    Returns this event’s operation id. This number correlates all the commands in a bulk operation, or all the “find” and “getMore” commands required to stream a large query result.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    The event’s operation id.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_request_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_request_id.html deleted file mode 100644 index f486582..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_request_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_request_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_server_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_server_id.html deleted file mode 100644 index 6235586..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_get_server_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_started_get_server_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_t.html deleted file mode 100644 index fe8fb7f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_started_t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_command_started_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    - - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_command_name.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_command_name.html deleted file mode 100644 index 3ca7c9d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_command_name.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_command_name() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_succeeded_get_command_name()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_apm_command_succeeded_get_command_name (
    -   const mongoc_apm_command_succeeded_t *event);
    -
    -
    -

    Returns this event’s command name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A string that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_context.html deleted file mode 100644 index 2d1a7a5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_duration.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_duration.html deleted file mode 100644 index 4fc907d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_duration.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_duration() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_host.html deleted file mode 100644 index b201379..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_host.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_succeeded_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_command_succeeded_get_host (
    -   const mongoc_apm_command_succeeded_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_operation_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_operation_id.html deleted file mode 100644 index 00a032f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_operation_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_operation_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_succeeded_get_operation_id()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_apm_command_succeeded_get_operation_id (
    -   const mongoc_apm_command_succeeded_t *event);
    -
    -
    -

    Returns this event’s operation id. This number correlates all the commands in a bulk operation, or all the “find” and “getMore” commands required to stream a large query result.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    The event’s operation id.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_reply.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_reply.html deleted file mode 100644 index 2fcbe29..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_reply.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_reply() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_command_succeeded_get_reply()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_apm_command_succeeded_get_reply (
    -   const mongoc_apm_command_succeeded_t *event);
    -
    -
    -

    Returns this event’s reply. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A bson_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_request_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_request_id.html deleted file mode 100644 index 70ad64c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_request_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_request_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_server_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_server_id.html deleted file mode 100644 index 235a7aa..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_get_server_id.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_get_server_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_t.html deleted file mode 100644 index 5299729..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_command_succeeded_t.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_command_succeeded_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    - - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_context.html deleted file mode 100644 index 71f99f7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_changed_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_host.html deleted file mode 100644 index 31b98cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_host.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_server_changed_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_changed_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_server_changed_get_host (const mongoc_apm_server_changed_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_new_description.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_new_description.html deleted file mode 100644 index aeed1c3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_new_description.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_changed_get_new_description() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_changed_get_new_description()

    -
    -

    Synopsis

    -
    const mongoc_server_description_t *
    -mongoc_apm_server_changed_get_new_description (
    -   const mongoc_apm_server_changed_t *event);
    -
    -
    -

    Returns this event’s new description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_server_description_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_previous_description.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_previous_description.html deleted file mode 100644 index 065d216..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_previous_description.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_changed_get_previous_description() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_changed_get_previous_description()

    -
    -

    Synopsis

    -
    const mongoc_server_description_t *
    -mongoc_apm_server_changed_get_previous_description (
    -   const mongoc_apm_server_changed_t *event);
    -
    -
    -

    Returns this event’s previous description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_server_description_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_topology_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_topology_id.html deleted file mode 100644 index 5ce69d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_get_topology_id.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - mongoc_apm_server_changed_get_topology_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_t.html deleted file mode 100644 index 96562c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_changed_t.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - mongoc_apm_server_changed_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_context.html deleted file mode 100644 index 8f89adb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_context.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_server_closed_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_host.html deleted file mode 100644 index 46cb62a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_host.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_server_closed_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_closed_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_server_closed_get_host (const mongoc_apm_server_closed_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_topology_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_topology_id.html deleted file mode 100644 index bd8a198..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_get_topology_id.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - mongoc_apm_server_closed_get_topology_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_t.html deleted file mode 100644 index cce794f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_closed_t.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - mongoc_apm_server_closed_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_context.html deleted file mode 100644 index c6d772c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_failed_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_duration.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_duration.html deleted file mode 100644 index 883bd9c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_duration.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_failed_get_duration() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_error.html deleted file mode 100644 index 8d3ef81..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_error.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_failed_get_error() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_host.html deleted file mode 100644 index 4397f88..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_get_host.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_failed_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_heartbeat_failed_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_server_heartbeat_failed_get_host (
    -   const mongoc_apm_server_heartbeat_failed_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_t.html deleted file mode 100644 index 43c427d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_failed_t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_failed_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_context.html deleted file mode 100644 index 62b2f3f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_started_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_host.html deleted file mode 100644 index 6a452ca..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_get_host.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_started_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_heartbeat_started_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_server_heartbeat_started_get_host (
    -   const mongoc_apm_server_heartbeat_started_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_t.html deleted file mode 100644 index b1a3395..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_started_t.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_started_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_context.html deleted file mode 100644 index 72c828e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_succeeded_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_duration.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_duration.html deleted file mode 100644 index 89c8e11..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_duration.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_succeeded_get_duration() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_host.html deleted file mode 100644 index ff860e9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_host.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_succeeded_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_heartbeat_succeeded_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_server_heartbeat_succeeded_get_host (
    -   const mongoc_apm_server_heartbeat_succeeded_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_reply.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_reply.html deleted file mode 100644 index a47a8e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_get_reply.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_succeeded_get_reply() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_heartbeat_succeeded_get_reply()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_apm_server_heartbeat_succeeded_get_reply (
    -   const mongoc_apm_server_heartbeat_succeeded_t *event);
    -
    -
    -

    Returns this event’s reply. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A bson_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_t.html deleted file mode 100644 index 4238079..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_heartbeat_succeeded_t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - mongoc_apm_server_heartbeat_succeeded_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_context.html deleted file mode 100644 index 1697767..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_server_opening_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_host.html deleted file mode 100644 index 9941827..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_host.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_server_opening_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_server_opening_get_host()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_apm_server_opening_get_host (const mongoc_apm_server_opening_t *event);
    -
    -
    -

    Returns this event’s host. This mongoc_host_list_t is not part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_host_list_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_topology_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_topology_id.html deleted file mode 100644 index 6f393e8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_get_topology_id.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - mongoc_apm_server_opening_get_topology_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_t.html deleted file mode 100644 index 4af76c1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_server_opening_t.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - mongoc_apm_server_opening_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_failed_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_failed_cb.html deleted file mode 100644 index 37ea51d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_failed_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_command_failed_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_command_failed_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_command_failed_cb_t) (
    -   const mongoc_apm_command_failed_t *event);
    -
    -void
    -mongoc_apm_set_command_failed_cb (mongoc_apm_callbacks_t *callbacks,
    -                                  mongoc_apm_command_failed_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver fails to execute a MongoDB operation.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_started_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_started_cb.html deleted file mode 100644 index d4d4aad..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_started_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_command_started_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_command_started_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_command_started_cb_t) (
    -   const mongoc_apm_command_started_t *event);
    -
    -void
    -mongoc_apm_set_command_started_cb (mongoc_apm_callbacks_t *callbacks,
    -                                   mongoc_apm_command_started_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver starts a MongoDB operation.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_succeeded_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_succeeded_cb.html deleted file mode 100644 index d54676b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_command_succeeded_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_command_succeeded_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_command_succeeded_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_command_succeeded_cb_t) (
    -   const mongoc_apm_command_succeeded_t *event);
    -
    -void
    -mongoc_apm_set_command_succeeded_cb (mongoc_apm_callbacks_t *callbacks,
    -                                     mongoc_apm_command_succeeded_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver completes a MongoDB operation.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_changed_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_changed_cb.html deleted file mode 100644 index 4a4e653..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_changed_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_server_changed_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_server_changed_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_server_changed_cb_t) (
    -   const mongoc_apm_server_changed_t *event);
    -
    -void
    -mongoc_apm_set_server_changed_cb (mongoc_apm_callbacks_t *callbacks,
    -                                  mongoc_apm_server_changed_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver observes a change in status of a server it is connected to.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_closed_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_closed_cb.html deleted file mode 100644 index 9a80053..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_closed_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_server_closed_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_server_closed_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_server_closed_cb_t) (
    -   const mongoc_apm_server_closed_t *event);
    -
    -void
    -mongoc_apm_set_server_closed_cb (mongoc_apm_callbacks_t *callbacks,
    -                                 mongoc_apm_server_closed_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver stops monitoring a server and removes its mongoc_server_description_t.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_failed_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_failed_cb.html deleted file mode 100644 index 0447435..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_failed_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_server_heartbeat_failed_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_server_heartbeat_failed_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_server_heartbeat_failed_cb_t) (
    -   const mongoc_apm_server_heartbeat_failed_t *event);
    -
    -void
    -mongoc_apm_set_server_heartbeat_failed_cb (mongoc_apm_callbacks_t *callbacks,
    -                                           mongoc_apm_server_heartbeat_failed_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver fails to send an “isMaster” command to check the status of a server.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_started_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_started_cb.html deleted file mode 100644 index c19fe5f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_started_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_server_heartbeat_started_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_server_heartbeat_started_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_server_heartbeat_started_cb_t) (
    -   const mongoc_apm_server_heartbeat_started_t *event);
    -
    -void
    -mongoc_apm_set_server_heartbeat_started_cb (mongoc_apm_callbacks_t *callbacks,
    -                                            mongoc_apm_server_heartbeat_started_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver begins executing an “isMaster” command to check the status of a server.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_succeeded_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_succeeded_cb.html deleted file mode 100644 index cad67c1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_heartbeat_succeeded_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_server_heartbeat_succeeded_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_server_heartbeat_succeeded_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_server_heartbeat_succeeded_cb_t) (
    -   const mongoc_apm_server_heartbeat_succeeded_t *event);
    -
    -void
    -mongoc_apm_set_server_heartbeat_succeeded_cb (mongoc_apm_callbacks_t *callbacks,
    -                                              mongoc_apm_server_heartbeat_succeeded_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver completes an “isMaster” command to check the status of a server.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_opening_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_opening_cb.html deleted file mode 100644 index a81d315..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_server_opening_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_server_opening_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_server_opening_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_server_opening_cb_t) (
    -   const mongoc_apm_server_opening_t *event);
    -
    -void
    -mongoc_apm_set_server_opening_cb (mongoc_apm_callbacks_t *callbacks,
    -                                  mongoc_apm_server_opening_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver adds a mongoc_server_description_t for a new server it was not monitoring before.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_changed_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_changed_cb.html deleted file mode 100644 index e5f372d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_changed_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_topology_changed_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_topology_changed_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_topology_changed_cb_t) (
    -   const mongoc_apm_topology_changed_t *event);
    -
    -void
    -mongoc_apm_set_topology_changed_cb (mongoc_apm_callbacks_t *callbacks,
    -                                    mongoc_apm_topology_changed_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver observes a change in any of the servers it is connected to or a change in the overall server topology.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_closed_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_closed_cb.html deleted file mode 100644 index 2ba6aa4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_closed_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_topology_closed_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_topology_closed_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_topology_closed_cb_t) (
    -   const mongoc_apm_topology_closed_t *event);
    -
    -void
    -mongoc_apm_set_topology_closed_cb (mongoc_apm_callbacks_t *callbacks,
    -                                   mongoc_apm_topology_closed_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver stops monitoring a server topology and destroys its mongoc_topology_description_t.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_opening_cb.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_opening_cb.html deleted file mode 100644 index 3daa9ab..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_set_topology_opening_cb.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_set_topology_opening_cb() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_set_topology_opening_cb()

    -
    -

    Synopsis

    -
    typedef void (*mongoc_apm_topology_opening_cb_t) (
    -   const mongoc_apm_topology_opening_t *event);
    -
    -void
    -mongoc_apm_set_topology_opening_cb (mongoc_apm_callbacks_t *callbacks,
    -                                    mongoc_apm_topology_opening_cb_t cb);
    -
    -
    -

    Receive an event notification whenever the driver initializes a mongoc_topology_description_t.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_context.html deleted file mode 100644 index 4490adb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_topology_changed_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_new_description.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_new_description.html deleted file mode 100644 index 63ded90..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_new_description.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_topology_changed_get_new_description() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_topology_changed_get_new_description()

    -
    -

    Synopsis

    -
    const mongoc_topology_description_t *
    -mongoc_apm_topology_changed_get_new_description (
    -   const mongoc_apm_topology_changed_t *event);
    -
    -
    -

    Returns this event’s new description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_topology_description_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_previous_description.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_previous_description.html deleted file mode 100644 index 542e940..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_previous_description.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_topology_changed_get_previous_description() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_apm_topology_changed_get_previous_description()

    -
    -

    Synopsis

    -
    const mongoc_topology_description_t *
    -mongoc_apm_topology_changed_get_previous_description (
    -   const mongoc_apm_topology_changed_t *event);
    -
    -
    -

    Returns this event’s previous description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_topology_description_t that should not be modified or freed.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_topology_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_topology_id.html deleted file mode 100644 index 71df6b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_get_topology_id.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - mongoc_apm_topology_changed_get_topology_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_t.html deleted file mode 100644 index 6e9aca9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_changed_t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - mongoc_apm_topology_changed_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_context.html deleted file mode 100644 index 2cb5b6b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_topology_closed_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_topology_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_topology_id.html deleted file mode 100644 index 6dde275..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_get_topology_id.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - mongoc_apm_topology_closed_get_topology_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_t.html deleted file mode 100644 index 3930d7b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_closed_t.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - mongoc_apm_topology_closed_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_context.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_context.html deleted file mode 100644 index e9e4367..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_context.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - mongoc_apm_topology_opening_get_context() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_topology_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_topology_id.html deleted file mode 100644 index 1574f58..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_get_topology_id.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - mongoc_apm_topology_opening_get_topology_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_t.html deleted file mode 100644 index d85ffb6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_apm_topology_opening_t.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - mongoc_apm_topology_opening_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete.html deleted file mode 100644 index cbcaa0f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - mongoc_bulk_operation_delete() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_delete()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_delete (mongoc_bulk_operation_t *bulk,
    -                              const bson_t *selector);
    -
    -
    -

    Deletes documents as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    This function is deprecated and should not be used in new code.

    -
    -

    Please use mongoc_bulk_operation_remove() instead.

    -
    -
    -

    Parameters

    - -
    - -
    -

    Errors

    -

    Errors are propagated via mongoc_bulk_operation_execute().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete_one.html deleted file mode 100644 index 68189c1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_delete_one.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - mongoc_bulk_operation_delete_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_delete_one()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_delete_one (mongoc_bulk_operation_t *bulk,
    -                                  const bson_t *selector);
    -
    -
    -

    Delete a single document as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    This function is deprecated and should not be used in new code.

    -
    -

    Please use mongoc_bulk_operation_remove_one() instead.

    -
    -
    -

    Parameters

    - -
    - -
    -

    Errors

    -

    Errors are propagated via mongoc_bulk_operation_execute().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_destroy.html deleted file mode 100644 index a343bc9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_destroy.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - mongoc_bulk_operation_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_destroy (mongoc_bulk_operation_t *bulk);
    -
    -
    -

    Destroys a mongoc_bulk_operation_t and frees the structure. Does nothing if bulk is NULL.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_execute.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_execute.html deleted file mode 100644 index 604242e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_execute.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - mongoc_bulk_operation_execute() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_execute()

    -
    -

    Synopsis

    -
    uint32_t
    -mongoc_bulk_operation_execute (mongoc_bulk_operation_t *bulk,
    -                               bson_t *reply,
    -                               bson_error_t *error);
    -
    -
    -

    This function executes all operations queued into the bulk operation. Unless ordered: false was specified in the opts passed to mongoc_collection_create_bulk_operation_with_opts(), then forward progress will be stopped upon the first error.

    -

    It is only valid to call mongoc_bulk_operation_execute() once. The mongoc_bulk_operation_t must be destroyed afterwards.

    -
    -

    Warning

    -

    reply is always initialized, even upon failure. Callers must call bson_destroy() to release this potential allocation.

    -
    -
    -
    -

    Parameters

    - -
    - -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    On success, returns the server id used. On failure, returns 0 and sets error.

    -

    A write concern timeout or write concern error is considered a failure.

    -

    The reply document counts operations and collects error information. See Bulk Write Operations for examples.

    -

    See also mongoc_bulk_operation_get_hint(), which gets the id of the server used even if the operation failed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_hint.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_hint.html deleted file mode 100644 index 5805abe..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_hint.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_bulk_operation_get_hint() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_get_hint()

    -
    -

    Synopsis

    -
    uint32_t
    -mongoc_bulk_operation_get_hint (const mongoc_bulk_operation_t *bulk);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Retrieves the opaque id of the server used for the operation.

    -

    (The function name includes the old term “hint” for the sake of backward compatibility, but we now call this number a “server id”.)

    -

    This number is zero until the driver actually uses a server in mongoc_bulk_operation_execute(). The server id is the same number as the return value of a successful mongoc_bulk_operation_execute(), so mongoc_bulk_operation_get_hint is useful mainly in case mongoc_bulk_operation_execute() fails and returns zero.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_write_concern.html deleted file mode 100644 index f4f70ba..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_get_write_concern.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_bulk_operation_get_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_get_write_concern()

    -
    -

    Synopsis

    -
    const mongoc_write_concern_t *
    -mongoc_bulk_operation_get_write_concern (const mongoc_bulk_operation_t *bulk);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the write concern to be used for bulk.

    -
    -
    -

    Returns

    -

    A mongoc_write_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert.html deleted file mode 100644 index a99fda6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_bulk_operation_insert() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_insert()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_insert (mongoc_bulk_operation_t *bulk,
    -                              const bson_t *document);
    -
    -
    -

    Queue an insert of a single document into a bulk operation. The insert is not performed until mongoc_bulk_operation_execute() is called.

    -

    This function is superseded by mongoc_bulk_operation_insert_with_opts().

    -
    -
    -

    Parameters

    - -
    - -
    -

    Errors

    -

    Errors are propagated via mongoc_bulk_operation_execute().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert_with_opts.html deleted file mode 100644 index ec00fa1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_insert_with_opts.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_bulk_operation_insert_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_insert_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_bulk_operation_insert_with_opts (mongoc_bulk_operation_t *bulk,
    -                                        const bson_t *document,
    -                                        const bson_t *opts,
    -                                        bson_error_t *error); /* OUT */
    -
    -
    -

    Queue an insert of a single document into a bulk operation. The insert is not performed until mongoc_bulk_operation_execute() is called.

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    -
      -
    • validate: Construct a bitwise-or of all desired bson_validate_flags_t. Set to false to skip client-side validation of the provided BSON documents.
    • -
    -
    -
    -

    Errors

    -

    Operation errors are propagated via mongoc_bulk_operation_execute(), while argument validation errors are reported by the error argument.

    -
    -
    -

    Returns

    -

    Returns true on success, and false if passed invalid arguments.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove.html deleted file mode 100644 index 4eb02fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_bulk_operation_remove() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_remove()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_remove (mongoc_bulk_operation_t *bulk,
    -                              const bson_t *selector);
    -
    -
    -

    Remove documents as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -

    This function is superseded by mongoc_bulk_operation_remove_one_with_opts() and mongoc_bulk_operation_remove_many_with_opts().

    -
    -
    -

    Parameters

    - -
    - -
    -

    Errors

    -

    Errors are propagated via mongoc_bulk_operation_execute().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_many_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_many_with_opts.html deleted file mode 100644 index dc3f327..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_many_with_opts.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - mongoc_bulk_operation_remove_many_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_remove_many_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_bulk_operation_remove_many_with_opts (mongoc_bulk_operation_t *bulk,
    -                                             const bson_t *selector,
    -                                             const bson_t *opts,
    -                                             bson_error_t *error); /* OUT */
    -
    -
    -

    Delete documents as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    - -
    -

    Errors

    -

    Operation errors are propagated via mongoc_bulk_operation_execute(), while argument validation errors are reported by the error argument.

    -
    -
    -

    Returns

    -

    Returns true on success, and false if passed invalid arguments.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one.html deleted file mode 100644 index f6d36e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_bulk_operation_remove_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_remove_one()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_remove_one (mongoc_bulk_operation_t *bulk,
    -                                  const bson_t *selector);
    -
    -
    -

    Remove a single document as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -

    This function is superseded by mongoc_bulk_operation_remove_one_with_opts().

    -
    -
    -

    Parameters

    - -
    - -
    -

    Errors

    -

    Errors are propagated via mongoc_bulk_operation_execute().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one_with_opts.html deleted file mode 100644 index e5a474d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_remove_one_with_opts.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - mongoc_bulk_operation_remove_one_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_remove_one_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_bulk_operation_remove_one_with_opts (mongoc_bulk_operation_t *bulk,
    -                                            const bson_t *selector,
    -                                            const bson_t *opts,
    -                                            bson_error_t *error); /* OUT */
    -
    -
    -

    Remove a single document as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    - -
    -

    Errors

    -

    Operation errors are propagated via mongoc_bulk_operation_execute(), while argument validation errors are reported by the error argument.

    -
    -
    -

    Returns

    -

    Returns true on success, and false if passed invalid arguments.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one.html deleted file mode 100644 index 5a6f2ca..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - mongoc_bulk_operation_replace_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_replace_one()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_replace_one (mongoc_bulk_operation_t *bulk,
    -                                   const bson_t *selector,
    -                                   const bson_t *document,
    -                                   bool upsert);
    -
    -
    -

    Replace a single document as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -

    This function is superseded by mongoc_bulk_operation_replace_one_with_opts().

    -
    -
    -

    Parameters

    -
      -
    • bulk: A mongoc_bulk_operation_t.
    • -
    • selector: A bson_t that selects which document to remove.
    • -
    • document: A bson_t containing the replacement document.
    • -
    • upsert: true if this should be an upsert.
    • -
    -
    -

    Warning

    -

    document may not contain fields with keys containing . or $.

    -
    -
    - -
    -

    Errors

    -

    Errors are propagated via mongoc_bulk_operation_execute().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one_with_opts.html deleted file mode 100644 index 78d6aee..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_replace_one_with_opts.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - mongoc_bulk_operation_replace_one_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_replace_one_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_bulk_operation_replace_one_with_opts (mongoc_bulk_operation_t *bulk,
    -                                             const bson_t *selector,
    -                                             const bson_t *document,
    -                                             const bson_t *opts,
    -                                             bson_error_t *error); /* OUT */
    -
    -
    -

    Replace a single document as part of a bulk operation. This only queues the operation. To execute it, call mongoc_bulk_operation_execute().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -

    Warning

    -

    document may not contain fields with keys containing . or $.

    -
    -
    - -
    -

    Errors

    -

    Operation errors are propagated via mongoc_bulk_operation_execute(), while argument validation errors are reported by the error argument.

    -
    -
    -

    Returns

    -

    Returns true on success, and false if passed invalid arguments.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_bypass_document_validation.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_bypass_document_validation.html deleted file mode 100644 index 546caef..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_bypass_document_validation.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_bulk_operation_set_bypass_document_validation() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_set_bypass_document_validation()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_set_bypass_document_validation (
    -   mongoc_bulk_operation_t *bulk, bool bypass);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Will bypass document validation for all operations part of this bulk.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_hint.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_hint.html deleted file mode 100644 index 75b11e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_set_hint.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_bulk_operation_set_hint() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_set_hint()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_set_hint (const mongoc_bulk_operation_t *bulk,
    -                                uint32_t server_id);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Specifies which server to use for the operation. This function has an effect only if called before mongoc_bulk_operation_execute().

    -

    (The function name includes the old term “hint” for the sake of backward compatibility, but we now call this number a “server id”.)

    -

    Use mongoc_bulk_operation_set_hint only for building a language driver that wraps the C Driver. When writing applications in C, leave the server id unset and allow the driver to choose a suitable server for the bulk operation.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_t.html deleted file mode 100644 index 30b55b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_t.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - mongoc_bulk_operation_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update.html deleted file mode 100644 index e67809b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_bulk_operation_update() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_update()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_update (mongoc_bulk_operation_t *bulk,
    -                              const bson_t *selector,
    -                              const bson_t *document,
    -                              bool upsert);
    -
    -
    -

    This function queues an update as part of a bulk operation. This does not execute the operation. To execute the entirety of the bulk operation call mongoc_bulk_operation_execute().

    -

    document MUST only contain fields whose key starts with $. See the update document specification for more details.

    -

    This function is superseded by mongoc_bulk_operation_update_one_with_opts() and mongoc_bulk_operation_update_many_with_opts().

    -
    -
    -

    Parameters

    -
      -
    • bulk: A mongoc_bulk_operation_t.
    • -
    • selector: A bson_t that selects which documents to remove.
    • -
    • document: A bson_t containing the update document.
    • -
    • upsert: true if an upsert should be performed.
    • -
    -
    - -
    -

    Errors

    -

    Errors are propagated via mongoc_bulk_operation_execute().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_many_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_many_with_opts.html deleted file mode 100644 index 0fa3282..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_many_with_opts.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - mongoc_bulk_operation_update_many_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_update_many_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_bulk_operation_update_many_with_opts (mongoc_bulk_operation_t *bulk,
    -                                             const bson_t *selector,
    -                                             const bson_t *document,
    -                                             const bson_t *opts,
    -                                             bson_error_t *error); /* OUT */
    -
    -
    -

    This function queues an update as part of a bulk operation. This does not execute the operation. To execute the entirety of the bulk operation call mongoc_bulk_operation_execute().

    -
    -

    Warning

    -

    document MUST only contain fields whose key starts with $. See the update document specification for more details.

    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    -
      -
    • validate: Construct a bitwise-or of all desired bson_validate_flags_t. Set to false to skip client-side validation of the provided BSON documents.
    • -
    • collation: Configure textual comparisons. See Setting Collation Order, and the MongoDB Manual entry on Collation. Collation requires MongoDB 3.2 or later, otherwise an error is returned.
    • -
    • upsert: If true, insert a document if none match selector.
    • -
    • arrayFilters: An array of filters specifying to which array elements an update should apply.
    • -
    -
    - -
    -

    Errors

    -

    Operation errors are propagated via mongoc_bulk_operation_execute(), while argument validation errors are reported by the error argument.

    -
    -
    -

    Returns

    -

    Returns true on success, and false if there is a server or network error or if passed invalid arguments.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one.html deleted file mode 100644 index 3a9a620..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_bulk_operation_update_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_update_one()

    -
    -

    Synopsis

    -
    void
    -mongoc_bulk_operation_update_one (mongoc_bulk_operation_t *bulk,
    -                                  const bson_t *selector,
    -                                  const bson_t *document,
    -                                  bool upsert);
    -
    -
    -

    This function queues an update as part of a bulk operation. It will only modify a single document on the MongoDB server. This function does not execute the operation. To execute the entirety of the bulk operation call mongoc_bulk_operation_execute().

    -

    This function is superseded by mongoc_bulk_operation_update_one_with_opts().

    -
    -
    -

    Parameters

    -
      -
    • bulk: A mongoc_bulk_operation_t.
    • -
    • selector: A bson_t that selects which document to remove.
    • -
    • document: A bson_t containing the update document.
    • -
    • upsert: true if an upsert should be performed.
    • -
    -
    -

    Warning

    -

    document must only contain fields whose key starts with $. See the update document specification for more details.

    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one_with_opts.html deleted file mode 100644 index 603228c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_bulk_operation_update_one_with_opts.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - mongoc_bulk_operation_update_one_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_bulk_operation_update_one_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_bulk_operation_update_one_with_opts (mongoc_bulk_operation_t *bulk,
    -                                            const bson_t *selector,
    -                                            const bson_t *document,
    -                                            const bson_t *opts,
    -                                            bson_error_t *error); /* OUT */
    -
    -
    -

    This function queues an update as part of a bulk operation. It will only modify a single document on the MongoDB server. This function does not execute the operation. To execute the entirety of the bulk operation call mongoc_bulk_operation_execute().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    -
      -
    • validate: Construct a bitwise-or of all desired bson_validate_flags_t. Set to false to skip client-side validation of the provided BSON documents.
    • -
    • collation: Configure textual comparisons. See Setting Collation Order, and the MongoDB Manual entry on Collation. Collation requires MongoDB 3.2 or later, otherwise an error is returned.
    • -
    • upsert: If true, insert a document if none match selector.
    • -
    • arrayFilters: An array of filters specifying to which array elements an update should apply.
    • -
    -
    -

    Warning

    -

    document must only contain fields whose key starts with $. See the update document specification for more details.

    -
    -
    - -
    -

    Errors

    -

    Operation errors are propagated via mongoc_bulk_operation_execute(), while argument validation errors are reported by the error argument.

    -
    -
    -

    Returns

    -

    Returns true on success, and false if there is a server or network error or if passed invalid arguments.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_destroy.html deleted file mode 100644 index fbb2891..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_destroy.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - mongoc_change_stream_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_change_stream_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_change_stream_destroy (mongoc_change_stream_t *stream);
    -
    -
    -

    Destroys a change stream and associated data.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_error_document.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_error_document.html deleted file mode 100644 index 5403e9d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_error_document.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_change_stream_error_document() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_change_stream_error_document()

    -
    -

    Synopsis

    -
    bool
    -mongoc_change_stream_error_document (mongoc_change_stream_t *stream,
    -                                     bson_error_t *err,
    -                                     const bson_t **reply);
    -
    -
    -

    Checks if an error has occurred when creating or iterating over a change stream.

    -

    Similar to mongoc_cursor_error_document() if the error has occurred -client-side then the reply will be set to an empty BSON document. If the -error occurred server-side, reply is set to the server’s reply document.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A boolean indicating if there was an error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_next.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_next.html deleted file mode 100644 index 0884822..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_next.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_change_stream_next() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_change_stream_next()

    -
    -

    Synopsis

    -
    bool
    -mongoc_change_stream_next (mongoc_change_stream_t *stream,
    -                           const bson_t **bson);
    -
    -
    -

    This function iterates the underlying cursor, setting bson to the next -document. This will block for a maximum of maxAwaitTimeMS milliseconds as -specified in the options when created, or the default timeout if omitted. Data -may be returned before the timeout. If no data is returned this function returns -false.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A boolean indicating whether or not there was another document in the stream.

    -

    Similar to mongoc_cursor_next() the lifetime of bson is until the -next call to mongoc_change_stream_next(), so it needs to be copied to -extend the lifetime.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_t.html deleted file mode 100644 index 63a3f69..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_change_stream_t.html +++ /dev/null @@ -1,538 +0,0 @@ - - - - - - - - mongoc_change_stream_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_change_stream_t

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct _mongoc_change_stream_t mongoc_change_stream_t;
    -
    -
    -

    mongoc_change_stream_t is a handle to a change stream. A collection -change stream can be obtained using mongoc_collection_watch().

    -

    It is recommended to use a mongoc_change_stream_t and its functions instead of a raw aggregation with a $changeStream stage. For more information see the MongoDB Manual Entry on Change Streams.

    -
    -
    -

    Example

    -
    -
    example-collection-watch.c
    -
    #include <mongoc/mongoc.h>
    -
    -int
    -main ()
    -{
    -   bson_t empty = BSON_INITIALIZER;
    -   const bson_t *doc;
    -   bson_t *to_insert = BCON_NEW ("x", BCON_INT32 (1));
    -   const bson_t *err_doc;
    -   bson_error_t error;
    -   const char *uri_string;
    -   mongoc_uri_t *uri;
    -   mongoc_client_t *client;
    -   mongoc_collection_t *coll;
    -   mongoc_change_stream_t *stream;
    -   mongoc_write_concern_t *wc = mongoc_write_concern_new ();
    -   bson_t opts = BSON_INITIALIZER;
    -   bool r;
    -
    -   mongoc_init ();
    -
    -   uri_string = "mongodb://"
    -                "localhost:27017,localhost:27018,localhost:"
    -                "27019/db?replicaSet=rs0";
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   coll = mongoc_client_get_collection (client, "db", "coll");
    -   stream = mongoc_collection_watch (coll, &empty, NULL);
    -
    -   mongoc_write_concern_set_wmajority (wc, 10000);
    -   mongoc_write_concern_append (wc, &opts);
    -   r = mongoc_collection_insert_one (coll, to_insert, &opts, NULL, &error);
    -   if (!r) {
    -      fprintf (stderr, "Error: %s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   while (mongoc_change_stream_next (stream, &doc)) {
    -      char *as_json = bson_as_relaxed_extended_json (doc, NULL);
    -      fprintf (stderr, "Got document: %s\n", as_json);
    -      bson_free (as_json);
    -   }
    -
    -   if (mongoc_change_stream_error_document (stream, &error, &err_doc)) {
    -      if (!bson_empty (err_doc)) {
    -         fprintf (stderr,
    -                  "Server Error: %s\n",
    -                  bson_as_relaxed_extended_json (err_doc, NULL));
    -      } else {
    -         fprintf (stderr, "Client Error: %s\n", error.message);
    -      }
    -      return EXIT_FAILURE;
    -   }
    -
    -   bson_destroy (to_insert);
    -   mongoc_write_concern_destroy (wc);
    -   bson_destroy (&opts);
    -   mongoc_change_stream_destroy (stream);
    -   mongoc_collection_destroy (coll);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    -

    Starting and Resuming

    -

    All watch functions accept two options to indicate where a change stream should start returning changes from: startAtOperationTime and resumeAfter.

    -

    All changes returned by mongoc_change_stream_next() include a resume token in the _id field. This resume token is automatically cached in libmongoc. -In the event of an error, libmongoc attempts to recreate the change stream starting where it left off by passing the resume token. -libmongoc only attempts to resume once, but client applications can cache this resume token and use it for their own resume logic by passing it as the option resumeAfter.

    -

    Additionally, change streams can start returning changes at an operation time by using the startAtOperationTime field. This can be the timestamp returned in the operationTime field of a command reply.

    -

    startAtOperationTime and resumeAfter are mutually exclusive options. Setting them both will result in a server error.

    -

    The following example implements custom resuming logic, persisting the resume token in a file.

    -
    -
    example-resume.c
    -
    #include <mongoc/mongoc.h>
    -
    -/* An example implementation of custom resume logic in a change stream.
    -* example-resume starts a client-wide change stream and persists the resume
    -* token in a file "resume-token.json". On restart, if "resume-token.json"
    -* exists, the change stream starts watching after the persisted resume token.
    -*
    -* This behavior allows a user to exit example-resume, and restart it later
    -* without missing any change events.
    -*/
    -#include <unistd.h>
    -
    -static const char *RESUME_TOKEN_PATH = "resume-token.json";
    -
    -static bool
    -_save_resume_token (const bson_t *doc)
    -{
    -   FILE *file_stream;
    -   bson_iter_t iter;
    -   bson_t resume_token_doc;
    -   char *as_json = NULL;
    -   size_t as_json_len;
    -   ssize_t r, n_written;
    -   const bson_value_t *resume_token;
    -
    -   if (!bson_iter_init_find (&iter, doc, "_id")) {
    -      fprintf (stderr, "reply does not contain operationTime.");
    -      return false;
    -   }
    -   resume_token = bson_iter_value (&iter);
    -   /* store the resume token in a document, { resumeAfter: <resume token> }
    -    * which we can later append easily. */
    -   file_stream = fopen (RESUME_TOKEN_PATH, "w+");
    -   if (!file_stream) {
    -      fprintf (stderr, "failed to open %s for writing\n", RESUME_TOKEN_PATH);
    -      return false;
    -   }
    -   bson_init (&resume_token_doc);
    -   BSON_APPEND_VALUE (&resume_token_doc, "resumeAfter", resume_token);
    -   as_json = bson_as_canonical_extended_json (&resume_token_doc, &as_json_len);
    -   bson_destroy (&resume_token_doc);
    -   n_written = 0;
    -   while (n_written < as_json_len) {
    -      r = fwrite ((void *) (as_json + n_written),
    -                  sizeof (char),
    -                  as_json_len - n_written,
    -                  file_stream);
    -      if (r == -1) {
    -         fprintf (stderr, "failed to write to %s\n", RESUME_TOKEN_PATH);
    -         bson_free (as_json);
    -         fclose (file_stream);
    -         return false;
    -      }
    -      n_written += r;
    -   }
    -
    -   bson_free (as_json);
    -   fclose (file_stream);
    -   return true;
    -}
    -
    -bool
    -_load_resume_token (bson_t *opts)
    -{
    -   bson_error_t error;
    -   bson_json_reader_t *reader;
    -   bson_t doc;
    -
    -   /* if the file does not exist, skip. */
    -   if (-1 == access (RESUME_TOKEN_PATH, R_OK)) {
    -      return true;
    -   }
    -   reader = bson_json_reader_new_from_file (RESUME_TOKEN_PATH, &error);
    -   if (!reader) {
    -      fprintf (stderr,
    -               "failed to open %s for reading: %s\n",
    -               RESUME_TOKEN_PATH,
    -               error.message);
    -      return false;
    -   }
    -
    -   bson_init (&doc);
    -   if (-1 == bson_json_reader_read (reader, &doc, &error)) {
    -      fprintf (stderr, "failed to read doc from %s\n", RESUME_TOKEN_PATH);
    -      bson_destroy (&doc);
    -      bson_json_reader_destroy (reader);
    -      return false;
    -   }
    -
    -   printf ("found cached resume token in %s, resuming change stream.\n",
    -           RESUME_TOKEN_PATH);
    -
    -   bson_concat (opts, &doc);
    -   bson_destroy (&doc);
    -   bson_json_reader_destroy (reader);
    -   return true;
    -}
    -
    -int
    -main ()
    -{
    -   int exit_code = EXIT_FAILURE;
    -   const char *uri_string;
    -   mongoc_uri_t *uri = NULL;
    -   bson_error_t error;
    -   mongoc_client_t *client = NULL;
    -   bson_t pipeline = BSON_INITIALIZER;
    -   bson_t opts = BSON_INITIALIZER;
    -   mongoc_change_stream_t *stream = NULL;
    -   const bson_t *doc;
    -
    -   const int max_time = 30; /* max amount of time, in seconds, that
    -                               mongoc_change_stream_next can block. */
    -
    -   mongoc_init ();
    -   uri_string = "mongodb://localhost:27017/db?replicaSet=rs0";
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      goto cleanup;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      goto cleanup;
    -   }
    -
    -   if (!_load_resume_token (&opts)) {
    -      goto cleanup;
    -   }
    -   BSON_APPEND_INT64 (&opts, "maxAwaitTimeMS", max_time * 1000);
    -
    -   printf ("listening for changes on the client (max %d seconds).\n", max_time);
    -   stream = mongoc_client_watch (client, &pipeline, &opts);
    -
    -   while (mongoc_change_stream_next (stream, &doc)) {
    -      char *as_json;
    -
    -      as_json = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("change received: %s\n", as_json);
    -      bson_free (as_json);
    -      if (!_save_resume_token (doc)) {
    -         goto cleanup;
    -      }
    -   }
    -
    -   exit_code = EXIT_SUCCESS;
    -
    -cleanup:
    -   mongoc_uri_destroy (uri);
    -   bson_destroy (&pipeline);
    -   bson_destroy (&opts);
    -   mongoc_change_stream_destroy (stream);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -   return exit_code;
    -}
    -
    -
    -
    -

    The following example shows using startAtOperationTime to synchronize a change stream with another operation.

    -
    -
    example-start-at-optime.c
    -
    /* An example of starting a change stream with startAtOperationTime. */
    -#include <mongoc/mongoc.h>
    -
    -int
    -main ()
    -{
    -   int exit_code = EXIT_FAILURE;
    -   const char *uri_string;
    -   mongoc_uri_t *uri = NULL;
    -   bson_error_t error;
    -   mongoc_client_t *client = NULL;
    -   mongoc_collection_t *coll = NULL;
    -   bson_t pipeline = BSON_INITIALIZER;
    -   bson_t opts = BSON_INITIALIZER;
    -   mongoc_change_stream_t *stream = NULL;
    -   bson_iter_t iter;
    -   const bson_t *doc;
    -   bson_value_t cached_operation_time = {0};
    -   int i;
    -   bool r;
    -
    -   mongoc_init ();
    -   uri_string = "mongodb://localhost:27017/db?replicaSet=rs0";
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      goto cleanup;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      goto cleanup;
    -   }
    -
    -   /* insert five documents. */
    -   coll = mongoc_client_get_collection (client, "db", "coll");
    -   for (i = 0; i < 5; i++) {
    -      bson_t reply;
    -      bson_t *insert_cmd = BCON_NEW ("insert",
    -                                     "coll",
    -                                     "documents",
    -                                     "[",
    -                                     "{",
    -                                     "x",
    -                                     BCON_INT64 (i),
    -                                     "}",
    -                                     "]");
    -
    -      r = mongoc_collection_write_command_with_opts (
    -         coll, insert_cmd, NULL, &reply, &error);
    -      bson_destroy (insert_cmd);
    -      if (!r) {
    -         bson_destroy (&reply);
    -         fprintf (stderr, "failed to insert: %s\n", error.message);
    -         goto cleanup;
    -      }
    -      if (i == 0) {
    -         /* cache the operation time in the first reply. */
    -         if (bson_iter_init_find (&iter, &reply, "operationTime")) {
    -            bson_value_copy (bson_iter_value (&iter), &cached_operation_time);
    -         } else {
    -            fprintf (stderr, "reply does not contain operationTime.");
    -            bson_destroy (&reply);
    -            goto cleanup;
    -         }
    -      }
    -      bson_destroy (&reply);
    -   }
    -
    -   /* start a change stream at the first returned operationTime. */
    -   BSON_APPEND_VALUE (&opts, "startAtOperationTime", &cached_operation_time);
    -   stream = mongoc_collection_watch (coll, &pipeline, &opts);
    -
    -   /* since the change stream started at the operation time of the first
    -    * insert, the five inserts are returned. */
    -   printf ("listening for changes on db.coll:\n");
    -   while (mongoc_change_stream_next (stream, &doc)) {
    -      char *as_json;
    -
    -      as_json = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("change received: %s\n", as_json);
    -      bson_free (as_json);
    -   }
    -
    -   exit_code = EXIT_SUCCESS;
    -
    -cleanup:
    -   mongoc_uri_destroy (uri);
    -   bson_destroy (&pipeline);
    -   bson_destroy (&opts);
    -   if (cached_operation_time.value_type) {
    -      bson_value_destroy (&cached_operation_time);
    -   }
    -   mongoc_change_stream_destroy (stream);
    -   mongoc_collection_destroy (coll);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -   return exit_code;
    -}
    -
    -
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_check_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_check_version.html deleted file mode 100644 index 96daf67..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_check_version.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_check_version() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_check_version()

    -
    -

    Synopsis

    -
    bool
    -mongoc_check_version (int required_major,
    -                      int required_minor,
    -                      int required_micro);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • required_major: The minimum major version required.
    • -
    • required_minor: The minimum minor version required.
    • -
    • required_micro: The minimum micro version required.
    • -
    -
    -
    -

    Returns

    -

    True if libmongoc’s version is greater than or equal to the required version.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cleanup.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cleanup.html deleted file mode 100644 index f69dc31..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cleanup.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - mongoc_cleanup() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cleanup()

    -
    -

    Synopsis

    -
    void
    -mongoc_cleanup (void);
    -
    -
    -
    -
    -

    Description

    -

    Initialize the MongoDB C Driver by calling mongoc_init() exactly once at the beginning of your program. It is responsible for initializing global state such as process counters, SSL, and threading primitives.

    -

    Call mongoc_cleanup() exactly once at the end of your program to release all memory and other resources allocated by the driver. You must not call any other MongoDB C Driver functions after mongoc_cleanup(). Note that mongoc_init() does not reinitialize the driver after mongoc_cleanup().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command.html deleted file mode 100644 index 837ba77..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - mongoc_client_command() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_command()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_client_command (mongoc_client_t *client,
    -                       const char *db_name,
    -                       mongoc_query_flags_t flags,
    -                       uint32_t skip,
    -                       uint32_t limit,
    -                       uint32_t batch_size,
    -                       const bson_t *query,
    -                       const bson_t *fields,
    -                       const mongoc_read_prefs_t *read_prefs);
    -
    -
    -

    This function is superseded by mongoc_client_command_with_opts(), mongoc_client_read_command_with_opts(), mongoc_client_write_command_with_opts(), and mongoc_client_read_write_command_with_opts().

    -
    -
    -

    Description

    -

    This function creates a cursor which will execute the command when mongoc_cursor_next() is called on it. The client’s read preference, read concern, and write concern are not applied to the command, and mongoc_cursor_next() will not check the server response for a write concern error or write concern timeout.

    -

    If mongoc_cursor_next() returns false, then retrieve error details with mongoc_cursor_error() or mongoc_cursor_error_document().

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • flags: Unused.
    • -
    • skip: Unused.
    • -
    • limit: Unused.
    • -
    • batch_size: Unused.
    • -
    • query: A bson_t containing the command specification.
    • -
    • fields: Unused.
    • -
    • read_prefs: An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.
    • -
    -
    -
    -

    Returns

    -

    A mongoc_cursor_t.

    -

    The cursor should be freed with mongoc_cursor_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple.html deleted file mode 100644 index e3eb450..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - mongoc_client_command_simple() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_command_simple()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_command_simple (mongoc_client_t *client,
    -                              const char *db_name,
    -                              const bson_t *command,
    -                              const mongoc_read_prefs_t *read_prefs,
    -                              bson_t *reply,
    -                              bson_error_t *error);
    -
    -
    -

    This is a simplified interface to mongoc_client_command(). It returns the first document from the result cursor into reply. The client’s read preference, read concern, and write concern are not applied to the command.

    -
    -

    Warning

    -

    reply is always set, and should be released with bson_destroy().

    -
    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • command: A bson_t containing the command specification.
    • -
    • read_prefs: An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    This function does not check the server response for a write concern error or write concern timeout.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple_with_server_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple_with_server_id.html deleted file mode 100644 index d0ec20b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_simple_with_server_id.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_client_command_simple_with_server_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_command_simple_with_server_id()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_command_simple_with_server_id (
    -   mongoc_client_t *client,
    -   const char *db_name,
    -   const bson_t *command,
    -   const mongoc_read_prefs_t *read_prefs,
    -   uint32_t server_id bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -

    This function executes a command on a specific server, using the database and command specification provided.

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • read_prefs: An optional mongoc_read_prefs_t.
    • -
    • server_id: An opaque id specifying which server to use.
    • -
    • reply: An optional location for a bson_t which will store the server’s reply.
    • -
    • error: An optional location for a bson_error_t or a NULL.
    • -
    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    This function does not check the server response for a write concern error or write concern timeout.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_with_opts.html deleted file mode 100644 index 9b5c440..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_command_with_opts.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - mongoc_client_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_command_with_opts (
    -   mongoc_client_t *client,
    -   const char *db_name,
    -   const bson_t *command,
    -   const mongoc_read_prefs_t *read_prefs,
    -   const bson_t *opts,
    -   bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -

    Execute a command on the server, interpreting opts according to the MongoDB server version. To send a raw command to the server without any of this logic, use mongoc_client_command_simple().

    -

    Read preferences, read and write concern, and collation can be overridden by various sources. The highest-priority sources for these options are listed first:

    - ------ - - - - - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernWrite ConcernCollation
    read_prefsoptsoptsopts
    TransactionTransactionTransaction 
    client   
    -

    In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. -See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • command: A bson_t containing the command specification.
    • -
    • read_prefs: An optional mongoc_read_prefs_t.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    The reply is not parsed for a write concern timeout or write concern error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_destroy.html deleted file mode 100644 index f86f9a0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_destroy.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - mongoc_client_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_destroy (mongoc_client_t *client);
    -
    -
    -

    Release all resources associated with client and free the structure. Does nothing if client is NULL.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_find_databases_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_find_databases_with_opts.html deleted file mode 100644 index 54fdd9b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_find_databases_with_opts.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_client_find_databases_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_find_databases_with_opts()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_client_find_databases_with_opts (mongoc_client_t *client,
    -                                        const bson_t *opts);
    -
    -
    -

    Fetches a cursor containing documents, each corresponding to a database on this MongoDB server.

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Errors

    -

    Use mongoc_cursor_error() on the returned cursor to check for errors.

    -
    -
    -

    Returns

    -

    A cursor where each result corresponds to the server’s representation of a database.

    -

    The cursor functions mongoc_cursor_set_limit(), mongoc_cursor_set_batch_size(), and mongoc_cursor_set_max_await_time_ms() have no use on the returned cursor.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_collection.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_collection.html deleted file mode 100644 index 99c2bb4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_collection.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_client_get_collection() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_collection()

    -
    -

    Synopsis

    -
    mongoc_collection_t *
    -mongoc_client_get_collection (mongoc_client_t *client,
    -                              const char *db,
    -                              const char *collection);
    -
    -
    -

    Get a newly allocated mongoc_collection_t for the collection named collection in the database named db.

    -
    -

    Tip

    -

    Collections are automatically created on the MongoDB server upon insertion of the first document. There is no need to create a collection manually.

    -
    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db: The name of the database containing the collection.
    • -
    • collection: The name of the collection.
    • -
    -
    -
    -

    Returns

    -

    A newly allocated mongoc_collection_t that should be freed with mongoc_collection_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database.html deleted file mode 100644 index 533e90d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_client_get_database() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_database()

    -
    -

    Synopsis

    -
    mongoc_database_t *
    -mongoc_client_get_database (mongoc_client_t *client, const char *name);
    -
    -
    -

    Get a newly allocated mongoc_database_t for the database named name.

    -
    -

    Tip

    -

    Databases are automatically created on the MongoDB server upon insertion of the first document into a collection. There is no need to create a database manually.

    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A newly allocated mongoc_database_t that should be freed with mongoc_database_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names.html deleted file mode 100644 index d21fea8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - mongoc_client_get_database_names() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_database_names()

    -
    -

    Synopsis

    -
    char **
    -mongoc_client_get_database_names (mongoc_client_t *client, bson_error_t *error);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_client_get_database_names_with_opts() instead.

    -
    -
    -

    Description

    -

    This function queries the MongoDB server for a list of known databases.

    -
    -
    -

    Parameters

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A NULL terminated vector of NULL-byte terminated strings. The result should be freed with bson_strfreev().

    -

    NULL is returned upon failure and error is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names_with_opts.html deleted file mode 100644 index 60299c4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_database_names_with_opts.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - mongoc_client_get_database_names_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_database_names_with_opts()

    -
    -

    Synopsis

    -
    char **
    -mongoc_client_get_database_names_with_opts (mongoc_client_t *client,
    -                                            const bson_t *opts,
    -                                            bson_error_t *error);
    -
    -
    -

    This function queries the MongoDB server for a list of known databases.

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A NULL terminated vector of NULL-byte terminated strings. The result should be freed with bson_strfreev().

    -

    NULL is returned upon failure and error is set.

    -
    -
    -

    Examples

    -
    {
    -   bson_error_t error;
    -   char **strv;
    -   unsigned i;
    -
    -   if ((strv = mongoc_client_get_database_names_with_opts (client, NULL, &error))) {
    -      for (i = 0; strv[i]; i++)
    -         printf ("%s\n", strv[i]);
    -      bson_strfreev (strv);
    -   } else {
    -      fprintf (stderr, "Command failed: %s\n", error.message);
    -   }
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_default_database.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_default_database.html deleted file mode 100644 index 738eb14..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_default_database.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - mongoc_client_get_default_database() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_default_database()

    -
    -

    Synopsis

    -
    mongoc_database_t *
    -mongoc_client_get_default_database (mongoc_client_t *client);
    -
    -
    -

    Get the database named in the MongoDB connection URI, or NULL if the URI specifies none.

    -

    Useful when you want to choose which database to use based only on the URI in a configuration file.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A newly allocated mongoc_database_t that should be freed with mongoc_database_destroy().

    -
    -
    -

    Example

    -
    -
    Default Database Example
    -
    /* default database is "db_name" */
    -mongoc_client_t *client = mongoc_client_new ("mongodb://host/db_name");
    -mongoc_database_t *db = mongoc_client_get_default_database (client);
    -
    -assert (!strcmp ("db_name", mongoc_database_get_name (db)));
    -
    -mongoc_database_destroy (db);
    -mongoc_client_destroy (client);
    -
    -/* no default database */
    -client = mongoc_client_new ("mongodb://host/");
    -db = mongoc_client_get_default_database (client);
    -
    -assert (!db);
    -
    -mongoc_client_destroy (client);
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_gridfs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_gridfs.html deleted file mode 100644 index 86e3a9c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_gridfs.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - mongoc_client_get_gridfs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_gridfs()

    -
    -

    Synopsis

    -
    mongoc_gridfs_t *
    -mongoc_client_get_gridfs (mongoc_client_t *client,
    -                          const char *db,
    -                          const char *prefix,
    -                          bson_error_t *error);
    -
    -
    -

    The mongoc_client_get_gridfs() function shall create a new mongoc_gridfs_t. The db parameter is the name of the database which the gridfs instance should exist in. The prefix parameter corresponds to the gridfs collection namespacing; its default is “fs”, thus the default GridFS collection names are “fs.files” and “fs.chunks”.

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db: The database name.
    • -
    • prefix: Optional prefix for gridfs collection names or NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    On success, returns a mongoc_gridfs_t you must free with mongoc_gridfs_destroy(). Returns NULL upon failure and sets error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_bson_size.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_bson_size.html deleted file mode 100644 index cb59430..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_bson_size.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_client_get_max_bson_size() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_max_bson_size()

    -
    -

    Synopsis

    -
    int32_t
    -mongoc_client_get_max_bson_size (mongoc_client_t *client);
    -
    -
    -

    The mongoc_client_get_max_bson_size() returns the maximum bson document size allowed by the cluster. Until a connection has been made, this will be the default of 16Mb.

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    This function is deprecated and should not be used in new code.

    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    The server provided max bson size, or 16Mb if no connection has been established.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_message_size.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_message_size.html deleted file mode 100644 index 4ccd608..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_max_message_size.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_client_get_max_message_size() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_max_message_size()

    -
    -

    Synopsis

    -
    int32_t
    -mongoc_client_get_max_message_size (mongoc_client_t *client);
    -
    -
    -

    The mongoc_client_get_max_message_size() returns the maximum message size allowed by the cluster. Until a connection has been made, this will be the default of 40Mb.

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    This function is deprecated and should not be used in new code.

    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    The server provided max message size, or 40Mb if no connection has been established.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_concern.html deleted file mode 100644 index 4f991d6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_concern.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_get_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_read_concern()

    -
    -

    Synopsis

    -
    const mongoc_read_concern_t *
    -mongoc_client_get_read_concern (const mongoc_client_t *client);
    -
    -
    -

    Retrieve the default read concern configured for the client instance. The result should not be modified or freed.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_read_concern_t.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_prefs.html deleted file mode 100644 index 79836c5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_read_prefs.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_get_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_read_prefs()

    -
    -

    Synopsis

    -
    const mongoc_read_prefs_t *
    -mongoc_client_get_read_prefs (const mongoc_client_t *client);
    -
    -
    -

    Retrieves the default read preferences configured for the client instance. The result should not be modified or freed.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_read_prefs_t.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_description.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_description.html deleted file mode 100644 index 6fc4c42..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_description.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_client_get_server_description() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_server_description()

    -
    -

    Synopsis

    -
    mongoc_server_description_t *
    -mongoc_client_get_server_description (mongoc_client_t *client,
    -                                      uint32_t server_id);
    -
    -
    -

    Get information about the server specified by server_id.

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • server_id: An opaque id specifying the server.
    • -
    -
    -
    -

    Returns

    -

    A mongoc_server_description_t that must be freed with mongoc_server_description_destroy(). If the server is no longer in the topology, returns NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_descriptions.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_descriptions.html deleted file mode 100644 index 1bd6cba..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_descriptions.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - mongoc_client_get_server_descriptions() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_server_descriptions()

    -
    -

    Synopsis

    -
    mongoc_server_description_t **
    -mongoc_client_get_server_descriptions (const mongoc_client_t *client,
    -                                       size_t *n);
    -
    -
    -

    Fetches an array of mongoc_server_description_t structs for all known servers in the topology. Returns no servers until the client connects. Returns a single server if the client is directly connected, or all members of a replica set if the client’s MongoDB URI includes a “replicaSet” option, or all known mongos servers if the MongoDB URI includes a list of them.

    -
    void
    -show_servers (const mongoc_client_t *client)
    -{
    -   bson_t *b = BCON_NEW ("ping", BCON_INT32 (1));
    -   bson_error_t error;
    -   bool r;
    -   mongoc_server_description_t **sds;
    -   size_t i, n;
    -
    -   /* ensure client has connected */
    -   r = mongoc_client_command_simple (client, "db", b, NULL, NULL, &error);
    -   if (!r) {
    -      MONGOC_ERROR ("could not connect: %s\n", error.message);
    -      return;
    -   }
    -
    -   sds = mongoc_client_get_server_descriptions (client, &n);
    -
    -   for (i = 0; i < n; ++i) {
    -      printf ("%s\n", mongoc_server_description_host (sds[i])->host_and_port);
    -   }
    -
    -   mongoc_server_descriptions_destroy_all (sds, n);
    -   bson_destroy (&b);
    -}
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • n: Receives the length of the descriptions array.
    • -
    -
    -
    -

    Returns

    -

    A newly allocated array that must be freed with mongoc_server_descriptions_destroy_all().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_status.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_status.html deleted file mode 100644 index 27d37cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_server_status.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - mongoc_client_get_server_status() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_server_status()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_get_server_status (mongoc_client_t *client,
    -                                 mongoc_read_prefs_t *read_prefs,
    -                                 bson_t *reply,
    -                                 bson_error_t *error) BSON_GNUC_DEPRECATED;
    -
    -
    -

    Queries the server for the current server status. The result is stored in reply.

    -

    reply is always initialized, even in the case of failure. Always call bson_destroy() to release it.

    -
    -
    -

    Deprecated

    -

    This helper function is deprecated and should not be used in new code. Run the serverStatus command directly with mongoc_client_read_command_with_opts() instead.

    -
    -
    -

    Parameters

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_uri.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_uri.html deleted file mode 100644 index c8ad5cd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_uri.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_get_uri() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_uri()

    -
    -

    Synopsis

    -
    const mongoc_uri_t *
    -mongoc_client_get_uri (const mongoc_client_t *client);
    -
    -
    -

    Fetches the mongoc_uri_t used to create the client.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_uri_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_write_concern.html deleted file mode 100644 index 8ab2a01..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_get_write_concern.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_get_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_get_write_concern()

    -
    -

    Synopsis

    -
    const mongoc_write_concern_t *
    -mongoc_client_get_write_concern (const mongoc_client_t *client);
    -
    -
    -

    Retrieve the default write concern configured for the client instance. The result should not be modified or freed.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_write_concern_t.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new.html deleted file mode 100644 index a79193b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_client_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_new()

    -
    -

    Synopsis

    -
    mongoc_client_t *
    -mongoc_client_new (const char *uri_string);
    -
    -
    -

    Creates a new mongoc_client_t using the URI string provided.

    -
    -
    -

    Parameters

    -
      -
    • uri_string: A string containing the MongoDB connection URI.
    • -
    -
    -
    -

    Returns

    -

    A newly allocated mongoc_client_t if the URI parsed successfully, otherwise NULL.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new_from_uri.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new_from_uri.html deleted file mode 100644 index 90d346c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_new_from_uri.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_new_from_uri() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_new_from_uri()

    -
    -

    Synopsis

    -
    mongoc_client_t *
    -mongoc_client_new_from_uri (const mongoc_uri_t *uri);
    -
    -
    -

    Creates a new mongoc_client_t using the mongoc_uri_t provided.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A newly allocated mongoc_client_t that should be freed with mongoc_client_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_destroy.html deleted file mode 100644 index b1c0a0c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_destroy.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - mongoc_client_pool_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_pool_destroy (mongoc_client_pool_t *pool);
    -
    -
    -

    Release all resources associated with pool, including freeing the structure.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_max_size.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_max_size.html deleted file mode 100644 index 91183b6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_max_size.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_client_pool_max_size() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_max_size()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_pool_min_size (mongoc_client_pool_t *pool,
    -                             uint32_t max_pool_size);
    -
    -
    -

    This function sets the maximum number of pooled connections available from a mongoc_client_pool_t.

    -
    -
    -

    Parameters

    -
      -
    • pool: A mongoc_client_pool_t.
    • -
    • max_pool_size: The maximum number of connections which shall be available from the pool.
    • -
    -
    -
    -

    Thread Safety

    -

    This function is safe to call from multiple threads.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_min_size.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_min_size.html deleted file mode 100644 index 901d9d9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_min_size.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_client_pool_min_size() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_min_size()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_pool_min_size (mongoc_client_pool_t *pool,
    -                             uint32_t min_pool_size)
    -   BSON_GNUC_DEPRECATED;
    -
    -
    -

    This function sets the maximum number of idle clients to be kept in the pool. Any idle clients in excess of the maximum are destroyed. This function is deprecated because its behavior does not match what developers expect from a “minimum pool size”, and its actual behavior is likely to hurt performance.

    -

    Applications should not call this function, they should instead accept the default behavior, which is to keep all idle clients that are pushed into the pool.

    -
    -
    -

    Parameters

    - -
    -
    -

    Thread Safety

    -

    This function is safe to call from multiple threads.

    -

    Subsequent calls to mongoc_client_pool_push() respect the new minimum size, and close the least recently used mongoc_client_t if the minimum size is exceeded.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_new.html deleted file mode 100644 index bede727..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_new.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_pool_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_new()

    -
    -

    Synopsis

    -
    mongoc_client_pool_t *
    -mongoc_client_pool_new (const mongoc_uri_t *uri);
    -
    -
    -

    This function creates a new mongoc_client_pool_t using the mongoc_uri_t provided.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A newly allocated mongoc_client_pool_t that should be freed with mongoc_client_pool_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_pop.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_pop.html deleted file mode 100644 index 0e03ede..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_pop.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_client_pool_pop() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_pop()

    -
    -

    Synopsis

    -
    mongoc_client_t *
    -mongoc_client_pool_pop (mongoc_client_pool_t *pool);
    -
    -
    -

    Retrieve a mongoc_client_t from the client pool, or create one. The total number of clients that can be created from this pool is limited by the URI option “maxPoolSize”, default 100. If this number of clients has been created and all are in use, mongoc_client_pool_pop blocks until another thread returns a client with mongoc_client_pool_push().

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_client_t.

    -
    -
    -

    Thread Safety

    -

    This function is safe to call from multiple threads.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_push.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_push.html deleted file mode 100644 index c422057..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_push.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_client_pool_push() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_push()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_pool_push (mongoc_client_pool_t *pool, mongoc_client_t *client);
    -
    -
    -

    This function returns a mongoc_client_t back to the client pool.

    -
    -
    -

    Parameters

    - -
    -
    -

    Thread Safety

    -

    This function is safe to call from multiple threads.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_apm_callbacks.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_apm_callbacks.html deleted file mode 100644 index a5ea40e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_apm_callbacks.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_client_pool_set_apm_callbacks() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_set_apm_callbacks()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_pool_set_apm_callbacks (mongoc_client_pool_t *pool,
    -                                      mongoc_apm_callbacks_t *callbacks,
    -                                      void *context);
    -
    -
    -

    Register a set of callbacks to receive Application Performance Monitoring events.

    -

    The callbacks are copied by the pool and may be destroyed at any time after.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    -
    -

    Thread Safety

    -

    This function can only be called once on a pool, and must be called before the first call to mongoc_client_pool_pop().

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_appname.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_appname.html deleted file mode 100644 index 248450e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_appname.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_client_pool_set_appname() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_set_appname()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_pool_set_appname (mongoc_client_pool_t *pool, const char *appname)
    -
    -
    -

    This function is identical to mongoc_client_set_appname() except for client pools.

    -

    Also note that mongoc_client_set_appname() cannot be called on a client retrieved from a client pool.

    -
    -
    -

    Parameters

    -
      -
    • pool: A mongoc_client_pool_t.
    • -
    • appname: The application name, of length at most MONGOC_HANDSHAKE_APPNAME_MAX.
    • -
    -
    -
    -

    Returns

    -

    Returns true if appname was set. If appname is too long, returns false and logs an error.

    -
    -
    -

    Thread Safety

    -

    This function can only be called once on a pool, and must be called before the first call to mongoc_client_pool_pop().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_error_api.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_error_api.html deleted file mode 100644 index 6c72cf1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_error_api.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_client_pool_set_error_api() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_set_error_api()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_pool_set_error_api (mongoc_client_pool_t *client,
    -                                  int32_t version);
    -
    -
    -

    Configure how the C Driver reports errors. See Setting the Error API Version.

    -
    -
    -

    Parameters

    -
      -
    • pool: A mongoc_client_pool_t.
    • -
    • version: The version of the error API, either MONGOC_ERROR_API_VERSION_LEGACY or MONGOC_ERROR_API_VERSION_2.
    • -
    -
    -
    -

    Returns

    -

    Returns true if the error API version was set, or logs an error message and returns false if version is invalid.

    -
    -
    -

    Thread Safety

    -

    This function can only be called once on a pool, and must be called before the first call to mongoc_client_pool_pop().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_ssl_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_ssl_opts.html deleted file mode 100644 index 17f180e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_set_ssl_opts.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - mongoc_client_pool_set_ssl_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_set_ssl_opts()

    -
    -

    Synopsis

    -
    #ifdef MONGOC_ENABLE_SSL
    -void
    -mongoc_client_pool_set_ssl_opts (mongoc_client_pool_t *pool,
    -                                 const mongoc_ssl_opt_t *opts);
    -#endif
    -
    -
    -

    This function is identical to mongoc_client_set_ssl_opts() except for -client pools. It ensures that all clients retrieved from -mongoc_client_pool_pop() or mongoc_client_pool_try_pop() -are configured with the same SSL settings.

    -

    The mongoc_ssl_opt_t struct is copied by the pool along with the strings -it points to (pem_file, pem_pwd, ca_file, ca_dir, and -crl_file) so they don’t have to remain valid after the call to -mongoc_client_pool_set_ssl_opts.

    -

    A call to mongoc_client_pool_set_ssl_opts overrides all SSL options set -through the connection string with which the mongoc_client_pool_t was -constructed.

    -
    -
    -

    Parameters

    - -
    -
    -

    Thread Safety

    -

    This function can only be called once on a pool, and must be called before the first call to mongoc_client_pool_pop().

    -
    -
    -

    Availability

    -

    This feature requires that the MongoDB C driver was compiled with -DENABLE_SSL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_t.html deleted file mode 100644 index 4d33c86..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_t.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - - mongoc_client_pool_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_t

    -

    A connection pool for multi-threaded programs. See Connection Pooling.

    -
    -

    Synopsis

    -
    typedef struct _mongoc_client_pool_t mongoc_client_pool_t
    -
    -
    -

    mongoc_client_pool_t is the basis for multi-threading in the MongoDB C driver. Since mongoc_client_t structures are not thread-safe, this structure is used to retrieve a new mongoc_client_t for a given thread. This structure is thread-safe.

    -
    -
    -

    Example

    -
    -
    example-pool.c
    -
    /* gcc example-pool.c -o example-pool $(pkg-config --cflags --libs
    - * libmongoc-1.0) */
    -
    -/* ./example-pool [CONNECTION_STRING] */
    -
    -#include <mongoc/mongoc.h>
    -#include <pthread.h>
    -#include <stdio.h>
    -
    -static pthread_mutex_t mutex;
    -static bool in_shutdown = false;
    -
    -static void *
    -worker (void *data)
    -{
    -   mongoc_client_pool_t *pool = data;
    -   mongoc_client_t *client;
    -   bson_t ping = BSON_INITIALIZER;
    -   bson_error_t error;
    -   bool r;
    -
    -   BSON_APPEND_INT32 (&ping, "ping", 1);
    -
    -   while (true) {
    -      client = mongoc_client_pool_pop (pool);
    -      /* Do something with client. If you are writing an HTTP server, you
    -       * probably only want to hold onto the client for the portion of the
    -       * request performing database queries.
    -       */
    -      r = mongoc_client_command_simple (
    -         client, "admin", &ping, NULL, NULL, &error);
    -
    -      if (!r) {
    -         fprintf (stderr, "%s\n", error.message);
    -      }
    -
    -      mongoc_client_pool_push (pool, client);
    -
    -      pthread_mutex_lock (&mutex);
    -      if (in_shutdown || !r) {
    -         pthread_mutex_unlock (&mutex);
    -         break;
    -      }
    -
    -      pthread_mutex_unlock (&mutex);
    -   }
    -
    -   bson_destroy (&ping);
    -   return NULL;
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=pool-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -   mongoc_client_pool_t *pool;
    -   pthread_t threads[10];
    -   unsigned i;
    -   void *ret;
    -
    -   pthread_mutex_init (&mutex, NULL);
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   pool = mongoc_client_pool_new (uri);
    -   mongoc_client_pool_set_error_api (pool, 2);
    -
    -   for (i = 0; i < 10; i++) {
    -      pthread_create (&threads[i], NULL, worker, pool);
    -   }
    -
    -   sleep (10);
    -   pthread_mutex_lock (&mutex);
    -   in_shutdown = true;
    -   pthread_mutex_unlock (&mutex);
    -
    -   for (i = 0; i < 10; i++) {
    -      pthread_join (threads[i], &ret);
    -   }
    -
    -   mongoc_client_pool_destroy (pool);
    -   mongoc_uri_destroy (uri);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_try_pop.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_try_pop.html deleted file mode 100644 index d1a315c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_pool_try_pop.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_client_pool_try_pop() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_pool_try_pop()

    -
    -

    Synopsis

    -
    mongoc_client_t *
    -mongoc_client_pool_try_pop (mongoc_client_pool_t *pool);
    -
    -
    -

    This function is identical to mongoc_client_pool_pop() except it will return NULL instead of blocking for a client to become available.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_client_t if one is immediately available, otherwise NULL.

    -
    -
    -

    Thread Safety

    -

    This function is safe to call from multiple threads.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_command_with_opts.html deleted file mode 100644 index 8817481..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_command_with_opts.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - mongoc_client_read_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_read_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_read_command_with_opts (mongoc_client_t *client,
    -                                      const char *db_name,
    -                                      const bson_t *command,
    -                                      const mongoc_read_prefs_t *read_prefs,
    -                                      const bson_t *opts,
    -                                      bson_t *reply,
    -                                      bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic that is specific to commands that read, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_client_command_simple().

    -

    Use this function for commands that read such as “count” or “distinct”.

    -

    Read preferences, read concern, and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. The highest-priority sources for these options are listed first in the following table. No write concern is applied.

    - ----- - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernCollation
    read_prefsoptsopts
    TransactionTransaction 
    client  
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • command: A bson_t containing the command specification.
    • -
    • read_prefs: An optional mongoc_read_prefs_t.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    -

    Example

    -
    -
    example-command-with-opts.c
    -
    /*
    -
    -Demonstrates how to prepare options for mongoc_client_read_command_with_opts and
    -mongoc_client_write_command_with_opts. First it calls "cloneCollectionAsCapped"
    -command with "writeConcern" option, then "distinct" command with "collation" and
    -"readConcern" options,
    -
    -Start a MongoDB 3.4 replica set with --enableMajorityReadConcern and insert two
    -documents:
    -
    -$ mongo
    -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 1, y: "One"})
    -WriteResult({ "nInserted" : 1 })
    -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 2, y: "Two"})
    -WriteResult({ "nInserted" : 1 })
    -
    -Build and run the example:
    -
    -gcc example-command-with-opts.c -o example-command-with-opts $(pkg-config
    ---cflags --libs libmongoc-1.0)
    -./example-command-with-opts [CONNECTION_STRING]
    -cloneCollectionAsCapped: { "ok" : 1 }
    -distinct: { "values" : [ 1, 2 ], "ok" : 1 }
    -
    -*/
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=client-example";
    -   mongoc_uri_t *uri;
    -   bson_t *cmd;
    -   bson_t *opts;
    -   mongoc_write_concern_t *write_concern;
    -   mongoc_read_prefs_t *read_prefs;
    -   mongoc_read_concern_t *read_concern;
    -   bson_t reply;
    -   bson_error_t error;
    -   char *json;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -
    -   cmd = BCON_NEW ("cloneCollectionAsCapped",
    -                   BCON_UTF8 ("my_collection"),
    -                   "toCollection",
    -                   BCON_UTF8 ("my_capped_collection"),
    -                   "size",
    -                   BCON_INT64 (1024 * 1024));
    -
    -   /* include write concern "majority" in command options */
    -   write_concern = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_wmajority (write_concern, 10000 /* wtimeoutMS */);
    -   opts = bson_new ();
    -   mongoc_write_concern_append (write_concern, opts);
    -
    -   if (mongoc_client_write_command_with_opts (
    -          client, "test", cmd, opts, &reply, &error)) {
    -      json = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("cloneCollectionAsCapped: %s\n", json);
    -      bson_free (json);
    -   } else {
    -      fprintf (stderr, "cloneCollectionAsCapped: %s\n", error.message);
    -   }
    -
    -   bson_free (cmd);
    -   bson_free (opts);
    -
    -   /* distinct values of "x" in "my_collection" where "y" sorts after "one" */
    -   cmd = BCON_NEW ("distinct",
    -                   BCON_UTF8 ("my_collection"),
    -                   "key",
    -                   BCON_UTF8 ("x"),
    -                   "query",
    -                   "{",
    -                   "y",
    -                   "{",
    -                   "$gt",
    -                   BCON_UTF8 ("one"),
    -                   "}",
    -                   "}");
    -
    -   read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
    -
    -   /* "One" normally sorts before "one"; make "One" sort after "one" */
    -   opts = BCON_NEW ("collation",
    -                    "{",
    -                    "locale",
    -                    BCON_UTF8 ("en_US"),
    -                    "caseFirst",
    -                    BCON_UTF8 ("lower"),
    -                    "}");
    -
    -   /* add a read concern to "opts" */
    -   read_concern = mongoc_read_concern_new ();
    -   mongoc_read_concern_set_level (read_concern,
    -                                  MONGOC_READ_CONCERN_LEVEL_MAJORITY);
    -
    -   mongoc_read_concern_append (read_concern, opts);
    -
    -   if (mongoc_client_read_command_with_opts (
    -          client, "test", cmd, read_prefs, opts, &reply, &error)) {
    -      json = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("distinct: %s\n", json);
    -      bson_free (json);
    -   } else {
    -      fprintf (stderr, "distinct: %s\n", error.message);
    -   }
    -
    -   bson_destroy (cmd);
    -   bson_destroy (opts);
    -   bson_destroy (&reply);
    -   mongoc_read_prefs_destroy (read_prefs);
    -   mongoc_read_concern_destroy (read_concern);
    -   mongoc_write_concern_destroy (write_concern);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_write_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_write_command_with_opts.html deleted file mode 100644 index 855d376..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_read_write_command_with_opts.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - mongoc_client_read_write_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_read_write_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_read_write_command_with_opts (
    -   mongoc_client_t *client,
    -   const char *db_name,
    -   const bson_t *command,
    -   const mongoc_read_prefs_t *read_prefs /* UNUSED */,
    -   const bson_t *opts,
    -   bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic for commands that both read and write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_client_command_simple().

    -

    Use this function for commands that both read and write, such as “mapReduce” with an output collection.

    -

    Read and write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts. The highest-priority sources for these options are listed first in the following table. Read preferences are not applied. The write concern is omitted for MongoDB before 3.4.

    - ----- - - - - - - - - - - - - - - - - - - - - -
    Read ConcernWrite ConcernCollation
    optsoptsopts
    TransactionTransaction 
    clientclient 
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -

    (The mongoc_read_prefs_t parameter was included by mistake when this function was introduced in libmongoc 1.5. A command that writes must not obey a read preference.)

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • command: A bson_t containing the command specification.
    • -
    • read_prefs: Ignored.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_select_server.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_select_server.html deleted file mode 100644 index 64307f2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_select_server.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_client_select_server() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_select_server()

    -
    -

    Synopsis

    -
    mongoc_server_description_t *
    -mongoc_client_select_server (mongoc_client_t *client,
    -                             bool for_writes,
    -                             const mongoc_read_prefs_t *prefs,
    -                             bson_error_t *error);
    -
    -
    -

    Choose a server for an operation, according to the logic described in the Server Selection Spec.

    -

    Use this function only for building a language driver that wraps the C Driver. When writing applications in C, higher-level functions automatically select a suitable server.

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • for_writes: Whether to choose a server suitable for writes or reads.
    • -
    • prefs: An optional mongoc_read_prefs_t. If for_writes is true, prefs must be NULL. Otherwise, use prefs to customize server selection, or pass NULL to use the read preference configured on the client.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Returns

    -

    A mongoc_server_description_t that must be freed with mongoc_server_description_destroy(). If no suitable server is found, returns NULL and error is filled out.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_abort_transaction.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_abort_transaction.html deleted file mode 100644 index 54ce34d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_abort_transaction.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - mongoc_client_session_abort_transaction() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_abort_transaction()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_session_abort_transaction (mongoc_client_session_t *session,
    -                                         bson_error_t *error);
    -
    -
    -

    Abort a multi-document transaction.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_cluster_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_cluster_time.html deleted file mode 100644 index df312fc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_cluster_time.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - mongoc_client_session_advance_cluster_time() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_advance_cluster_time()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_session_advance_cluster_time (mongoc_client_session_t *session,
    -                                            const bson_t *cluster_time);
    -
    -
    -

    Advance the cluster time for a session. Has an effect only if the new cluster time is greater than the session’s current cluster time.

    -

    Use mongoc_client_session_advance_operation_time() and mongoc_client_session_advance_cluster_time() to copy the operationTime and clusterTime from another session, ensuring subsequent operations in this session are causally consistent with the last operation in the other session

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_operation_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_operation_time.html deleted file mode 100644 index 27e8a29..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_advance_operation_time.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - mongoc_client_session_advance_operation_time() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_advance_operation_time()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_session_advance_operation_time (mongoc_client_session_t *session,
    -                                              uint32_t timestamp,
    -                                              uint32_t increment);
    -
    -
    -

    Advance the session’s operation time, expressed as a BSON Timestamp with timestamp and increment components. Has an effect only if the new operation time is greater than the session’s current operation time.

    -

    Use mongoc_client_session_advance_operation_time() and mongoc_client_session_advance_cluster_time() to copy the operationTime and clusterTime from another session, ensuring subsequent operations in this session are causally consistent with the last operation in the other session

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_append.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_append.html deleted file mode 100644 index 762172c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_append.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_client_session_append() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_append()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_session_append (const mongoc_client_session_t *client_session,
    -                              bson_t *opts,
    -                              bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function appends a logical session id to command options. Use it to configure a session for any function that takes an options document, such as mongoc_client_write_command_with_opts().

    -

    It is an error to use a session for unacknowledged writes.

    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and fills out error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_session_t.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_commit_transaction.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_commit_transaction.html deleted file mode 100644 index 2a0a64a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_commit_transaction.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - mongoc_client_session_commit_transaction() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_commit_transaction()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_session_commit_transaction (mongoc_client_session_t *session,
    -                                          bson_t *reply,
    -                                          bson_error_t *error);
    -
    -
    -

    Commit a multi-document transaction.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_destroy.html deleted file mode 100644 index f06ce05..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_destroy.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - mongoc_client_session_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_session_destroy (mongoc_client_session_t *session);
    -
    -
    -

    End a session, returning its session id to the pool, and free all client resources associated with the session. If a multi-document transaction is in progress, abort it. Does nothing if session is NULL.

    -

    See the example code for mongoc_client_session_t.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_client.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_client.html deleted file mode 100644 index f7331dd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_client.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_client_session_get_client() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_cluster_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_cluster_time.html deleted file mode 100644 index 476cd54..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_cluster_time.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - mongoc_client_session_get_cluster_time() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_get_cluster_time()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_client_session_get_cluster_time (const mongoc_client_session_t *session);
    -
    -
    -

    Get the session’s clusterTime, as a BSON document.

    -
    -
    -

    Parameters

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_lsid.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_lsid.html deleted file mode 100644 index f01123f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_lsid.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - mongoc_client_session_get_lsid() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_operation_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_operation_time.html deleted file mode 100644 index 37e7fb5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_operation_time.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - mongoc_client_session_get_operation_time() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_get_operation_time()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_session_get_operation_time (const mongoc_client_session_t *session,
    -                                          uint32_t *timestamp,
    -                                          uint32_t *increment);
    -
    -
    -

    Get the session’s operationTime, expressed as a BSON Timestamp with timestamp and increment components. If the session has not been used for any operations, the timestamp and increment are 0.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_opts.html deleted file mode 100644 index a434966..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_get_opts.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - mongoc_client_session_get_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_in_transaction.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_in_transaction.html deleted file mode 100644 index 5d99335..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_in_transaction.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_session_in_transaction() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_in_transaction()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_session_in_transaction (const mongoc_client_session_t *session);
    -
    -
    -

    Check whether a multi-document transaction is in progress for this session.

    -
    -
    -

    Parameters

    - -
    -
    -

    Return

    -

    Returns true if a transaction was started and has not been committed or aborted, otherwise false.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_start_transaction.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_start_transaction.html deleted file mode 100644 index 6b7ee91..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_start_transaction.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - mongoc_client_session_start_transaction() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_start_transaction()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_session_start_transaction (mongoc_client_session_t *session,
    -                                         const mongoc_transaction_opt_t *opts,
    -                                         bson_error_t *error);
    -
    -
    -

    Start a multi-document transaction for all following operations in this session. Any options provided in opts override options passed to mongoc_session_opts_set_default_transaction_opts(), and options inherited from the mongoc_client_t. The opts argument is copied and can be freed after calling this function.

    -

    The transaction must be completed with mongoc_client_session_commit_transaction() or mongoc_client_session_abort_transaction(). An in-progress transaction is automatically aborted by mongoc_client_session_destroy().

    -
    -
    -

    Parameters

    - -
    -
    -

    Return

    -

    Returns true if the transaction was started. Returns false and sets error if there are invalid arguments, such as a session with a transaction already in progress.

    -
    -
    -

    Example

    -

    The following example demonstrates how to use error labels to reliably execute a multi-document transaction despite network errors and other transient failures.

    -
    -
    example-transaction.c
    -
    /* gcc example-transaction.c -o example-transaction \
    - *     $(pkg-config --cflags --libs libmongoc-1.0) */
    -
    -/* ./example-transaction [CONNECTION_STRING] */
    -
    -#include <stdio.h>
    -#include <mongoc/mongoc.h>
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   int exit_code = EXIT_FAILURE;
    -
    -   mongoc_client_t *client = NULL;
    -   mongoc_database_t *database = NULL;
    -   mongoc_collection_t *collection = NULL;
    -   mongoc_client_session_t *session = NULL;
    -   mongoc_session_opt_t *session_opts = NULL;
    -   mongoc_transaction_opt_t *default_txn_opts = NULL;
    -   mongoc_transaction_opt_t *txn_opts = NULL;
    -   mongoc_read_concern_t *read_concern = NULL;
    -   mongoc_write_concern_t *write_concern = NULL;
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=transaction-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -   bson_t *doc = NULL;
    -   bson_t *insert_opts = NULL;
    -   int32_t i;
    -   int64_t start;
    -   bson_t reply = BSON_INITIALIZER;
    -   char *reply_json;
    -   bool r;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      MONGOC_ERROR ("failed to parse URI: %s\n"
    -                    "error message:       %s\n",
    -                    uri_string,
    -                    error.message);
    -      goto done;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      goto done;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   database = mongoc_client_get_database (client, "example-transaction");
    -
    -   /* inserting into a nonexistent collection normally creates it, but a
    -    * collection can't be created in a transaction; create it now */
    -   collection =
    -      mongoc_database_create_collection (database, "collection", NULL, &error);
    -
    -   if (!collection) {
    -      /* code 48 is NamespaceExists, see error_codes.err in mongodb source */
    -      if (error.code == 48) {
    -         collection = mongoc_database_get_collection (database, "collection");
    -      } else {
    -         MONGOC_ERROR ("Failed to create collection: %s", error.message);
    -         goto done;
    -      }
    -   }
    -
    -   /* a transaction's read preferences, read concern, and write concern can be
    -    * set on the client, on the default transaction options, or when starting
    -    * the transaction. for the sake of this example, set read concern on the
    -    * default transaction options. */
    -   default_txn_opts = mongoc_transaction_opts_new ();
    -   read_concern = mongoc_read_concern_new ();
    -   mongoc_read_concern_set_level (read_concern, "snapshot");
    -   mongoc_transaction_opts_set_read_concern (default_txn_opts, read_concern);
    -   session_opts = mongoc_session_opts_new ();
    -   mongoc_session_opts_set_default_transaction_opts (session_opts,
    -                                                     default_txn_opts);
    -
    -   session = mongoc_client_start_session (client, session_opts, &error);
    -   if (!session) {
    -      MONGOC_ERROR ("Failed to start session: %s", error.message);
    -      goto done;
    -   }
    -
    -   /* in this example, set write concern when starting the transaction */
    -   txn_opts = mongoc_transaction_opts_new ();
    -   write_concern = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_wmajority (write_concern, 1000 /* wtimeout */);
    -   mongoc_transaction_opts_set_write_concern (txn_opts, write_concern);
    -
    -   insert_opts = bson_new ();
    -   if (!mongoc_client_session_append (session, insert_opts, &error)) {
    -      MONGOC_ERROR ("Could not add session to opts: %s", error.message);
    -      goto done;
    -   }
    -
    -retry_transaction:
    -   r = mongoc_client_session_start_transaction (session, txn_opts, &error);
    -   if (!r) {
    -      MONGOC_ERROR ("Failed to start transaction: %s", error.message);
    -      goto done;
    -   }
    -
    -   /* insert two documents - on error, retry the whole transaction */
    -   for (i = 0; i < 2; i++) {
    -      doc = BCON_NEW ("_id", BCON_INT32 (i));
    -      bson_destroy (&reply);
    -      r = mongoc_collection_insert_one (
    -         collection, doc, insert_opts, &reply, &error);
    -
    -      bson_destroy (doc);
    -
    -      if (!r) {
    -         MONGOC_ERROR ("Insert failed: %s", error.message);
    -         mongoc_client_session_abort_transaction (session, NULL);
    -
    -         /* a network error, primary failover, or other temporary error in a
    -          * transaction includes {"errorLabels": ["TransientTransactionError"]},
    -          * meaning that trying the entire transaction again may succeed
    -          */
    -         if (mongoc_error_has_label (&reply, "TransientTransactionError")) {
    -            goto retry_transaction;
    -         }
    -
    -         goto done;
    -      }
    -
    -      reply_json = bson_as_json (&reply, NULL);
    -      printf ("%s\n", reply_json);
    -      bson_free (reply_json);
    -   }
    -
    -   /* in case of transient errors, retry for 5 seconds to commit transaction */
    -   start = bson_get_monotonic_time ();
    -   while (bson_get_monotonic_time () - start < 5 * 1000 * 1000) {
    -      bson_destroy (&reply);
    -      r = mongoc_client_session_commit_transaction (session, &reply, &error);
    -      if (r) {
    -         /* success */
    -         break;
    -      } else {
    -         MONGOC_ERROR ("Warning: commit failed: %s", error.message);
    -         if (mongoc_error_has_label (&reply, "TransientTransactionError")) {
    -            goto retry_transaction;
    -         } else if (mongoc_error_has_label (&reply,
    -                                            "UnknownTransactionCommitResult")) {
    -            /* try again to commit */
    -            continue;
    -         }
    -
    -         /* unrecoverable error trying to commit */
    -         break;
    -      }
    -   }
    -
    -   exit_code = EXIT_SUCCESS;
    -
    -done:
    -   bson_destroy (&reply);
    -   bson_destroy (insert_opts);
    -   mongoc_write_concern_destroy (write_concern);
    -   mongoc_read_concern_destroy (read_concern);
    -   mongoc_transaction_opts_destroy (txn_opts);
    -   mongoc_transaction_opts_destroy (default_txn_opts);
    -   mongoc_client_session_destroy (session);
    -   mongoc_collection_destroy (collection);
    -   mongoc_database_destroy (database);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return exit_code;
    -}
    -
    -
    -
    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_t.html deleted file mode 100644 index 74db8f9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_session_t.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - - mongoc_client_session_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_session_t

    -

    Use a session for a sequence of operations, optionally with causal consistency. See the MongoDB Manual Entry for Causal Consistency.

    -
    -

    Synopsis

    -

    Start a session with mongoc_client_start_session(), use the session for a sequence of operations and multi-document transactions, then free it with mongoc_client_session_destroy(). Any mongoc_cursor_t or mongoc_change_stream_t using a session must be destroyed before the session, and a session must be destroyed before the mongoc_client_t it came from.

    -

    By default, sessions are causally consistent. To disable causal consistency, before starting a session create a mongoc_session_opt_t with mongoc_session_opts_new() and call mongoc_session_opts_set_causal_consistency(), then free the struct with mongoc_session_opts_destroy().

    -

    Unacknowledged writes are prohibited with sessions.

    -

    A mongoc_client_session_t must be used by only one thread at a time. Due to session pooling, mongoc_client_start_session() may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout.

    -
    -
    -

    Example

    -
    -
    example-session.c
    -
    /* gcc example-session.c -o example-session \
    - *     $(pkg-config --cflags --libs libmongoc-1.0) */
    -
    -/* ./example-session [CONNECTION_STRING] */
    -
    -#include <stdio.h>
    -#include <mongoc/mongoc.h>
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   int exit_code = EXIT_FAILURE;
    -
    -   mongoc_client_t *client = NULL;
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=session-example";
    -   mongoc_uri_t *uri = NULL;
    -   mongoc_client_session_t *client_session = NULL;
    -   mongoc_collection_t *collection = NULL;
    -   bson_error_t error;
    -   bson_t *selector = NULL;
    -   bson_t *update = NULL;
    -   bson_t *update_opts = NULL;
    -   bson_t *find_opts = NULL;
    -   mongoc_read_prefs_t *secondary = NULL;
    -   mongoc_cursor_t *cursor = NULL;
    -   const bson_t *doc;
    -   char *str;
    -   bool r;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      goto done;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      goto done;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -
    -   /* pass NULL for options - by default the session is causally consistent */
    -   client_session = mongoc_client_start_session (client, NULL, &error);
    -   if (!client_session) {
    -      fprintf (stderr, "Failed to start session: %s\n", error.message);
    -      goto done;
    -   }
    -
    -   collection = mongoc_client_get_collection (client, "test", "collection");
    -   selector = BCON_NEW ("_id", BCON_INT32 (1));
    -   update = BCON_NEW ("$inc", "{", "x", BCON_INT32 (1), "}");
    -   update_opts = bson_new ();
    -   if (!mongoc_client_session_append (client_session, update_opts, &error)) {
    -      fprintf (stderr, "Could not add session to opts: %s\n", error.message);
    -      goto done;
    -   }
    -
    -   r = mongoc_collection_update_one (
    -      collection, selector, update, update_opts, NULL /* reply */, &error);
    -
    -   if (!r) {
    -      fprintf (stderr, "Update failed: %s\n", error.message);
    -      goto done;
    -   }
    -
    -   bson_destroy (selector);
    -   selector = BCON_NEW ("_id", BCON_INT32 (1));
    -   secondary = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
    -
    -   find_opts = BCON_NEW ("maxTimeMS", BCON_INT32 (2000));
    -   if (!mongoc_client_session_append (client_session, find_opts, &error)) {
    -      fprintf (stderr, "Could not add session to opts: %s\n", error.message);
    -      goto done;
    -   };
    -
    -   /* read from secondary. since we're in a causally consistent session, the
    -    * data is guaranteed to reflect the update we did on the primary. the query
    -    * blocks waiting for the secondary to catch up, if necessary, or times out
    -    * and fails after 2000 ms.
    -    */
    -   cursor = mongoc_collection_find_with_opts (
    -      collection, selector, find_opts, secondary);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_json (doc, NULL);
    -      fprintf (stdout, "%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "Cursor Failure: %s\n", error.message);
    -      goto done;
    -   }
    -
    -   exit_code = EXIT_SUCCESS;
    -
    -done:
    -   if (find_opts) {
    -      bson_destroy (find_opts);
    -   }
    -   if (update) {
    -      bson_destroy (update);
    -   }
    -   if (selector) {
    -      bson_destroy (selector);
    -   }
    -   if (update_opts) {
    -      bson_destroy (update_opts);
    -   }
    -   if (secondary) {
    -      mongoc_read_prefs_destroy (secondary);
    -   }
    -   /* destroy cursor, collection, session before the client they came from */
    -   if (cursor) {
    -      mongoc_cursor_destroy (cursor);
    -   }
    -   if (collection) {
    -      mongoc_collection_destroy (collection);
    -   }
    -   if (client_session) {
    -      mongoc_client_session_destroy (client_session);
    -   }
    -   if (uri) {
    -      mongoc_uri_destroy (uri);
    -   }
    -   if (client) {
    -      mongoc_client_destroy (client);
    -   }
    -
    -   mongoc_cleanup ();
    -
    -   return exit_code;
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_apm_callbacks.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_apm_callbacks.html deleted file mode 100644 index f9b81eb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_apm_callbacks.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_client_set_apm_callbacks() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_apm_callbacks()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_set_apm_callbacks (mongoc_client_t *client,
    -                                 mongoc_apm_callbacks_t *callbacks,
    -                                 void *context);
    -
    -
    -

    Register a set of callbacks to receive Application Performance Monitoring events.

    -

    The callbacks are copied by the client and may be destroyed at any time after.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_appname.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_appname.html deleted file mode 100644 index c326428..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_appname.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_client_set_appname() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_appname()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_set_appname (mongoc_client_t *client, const char *appname)
    -
    -
    -

    Sets the application name for this client. This string, along with other internal driver details, is sent to the server as part of the initial connection handshake (“isMaster”).

    -

    appname is copied, and doesn’t have to remain valid after the call to mongoc_client_set_appname().

    -

    This function will log an error and return false in the following cases:

    -
      -
    • appname is longer than MONGOC_HANDSHAKE_APPNAME_MAX
    • -
    • client has already initiated a handshake
    • -
    • client is from a mongoc_client_pool_t
    • -
    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • appname: The application name, of length at most MONGOC_HANDSHAKE_APPNAME_MAX.
    • -
    -
    -
    -

    Returns

    -

    true if the appname is set successfully. Otherwise, false.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_error_api.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_error_api.html deleted file mode 100644 index 45464f7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_error_api.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_client_set_error_api() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_error_api()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_set_error_api (mongoc_client_t *client, int32_t version);
    -
    -
    -

    Configure how the C Driver reports errors. See Setting the Error API Version.

    -

    Do not use this function with pooled clients, see mongoc_client_pool_set_error_api().

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • version: The version of the error API, either MONGOC_ERROR_API_VERSION_LEGACY or MONGOC_ERROR_API_VERSION_2.
    • -
    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_concern.html deleted file mode 100644 index 99afc21..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_concern.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_set_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_read_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_set_read_concern (mongoc_client_t *client,
    -                                const mongoc_read_concern_t *read_concern);
    -
    -
    -

    Sets the read concern for the client. This only affects future operations, collections, and databases inheriting from client.

    -

    The default read concern is MONGOC_READ_CONCERN_LEVEL_LOCAL. This is the correct read concern for the great majority of applications.

    -

    It is a programming error to call this function on a client from a mongoc_client_pool_t. For pooled clients, set the read concern with the MongoDB URI instead.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_prefs.html deleted file mode 100644 index b96912a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_read_prefs.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_client_set_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_read_prefs()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_set_read_prefs (mongoc_client_t *client,
    -                              const mongoc_read_prefs_t *read_prefs);
    -
    -
    -

    Sets the default read preferences to use with future operations upon client.

    -

    The global default is to read from the replica set primary.

    -

    It is a programming error to call this function on a client from a mongoc_client_pool_t. For pooled clients, set the read preferences with the MongoDB URI instead.

    -

    Please see the MongoDB website for a description of Read Preferences.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_ssl_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_ssl_opts.html deleted file mode 100644 index a05531b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_ssl_opts.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - mongoc_client_set_ssl_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_ssl_opts()

    -
    -

    Synopsis

    -
    #ifdef MONGOC_ENABLE_SSL
    -void
    -mongoc_client_set_ssl_opts (mongoc_client_t *client,
    -                            const mongoc_ssl_opt_t *opts);
    -#endif
    -
    -
    -

    Sets the SSL options to use when connecting to SSL enabled MongoDB servers.

    -

    The mongoc_ssl_opt_t struct is copied by the client along with the strings -it points to (pem_file, pem_pwd, ca_file, ca_dir, and -crl_file) so they don’t have to remain valid after the call to -mongoc_client_set_ssl_opts.

    -

    A call to mongoc_client_set_ssl_opts overrides all SSL options set through -the connection string with which the mongoc_client_t was constructed.

    -

    It is a programming error to call this function on a client from a -mongoc_client_pool_t. Instead, call -mongoc_client_pool_set_ssl_opts() on the pool before popping any -clients.

    -
    -
    -

    Parameters

    - -
    -
    -

    Availability

    -

    This feature requires that the MongoDB C driver was compiled with -DENABLE_SSL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_stream_initiator.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_stream_initiator.html deleted file mode 100644 index cd2b5be..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_stream_initiator.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_set_stream_initiator() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_stream_initiator()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_set_stream_initiator (mongoc_client_t *client,
    -                                    mongoc_stream_initiator_t initiator,
    -                                    void *user_data);
    -
    -
    -

    The mongoc_client_set_stream_initiator() function shall associate a given mongoc_client_t with a new stream initiator. This will completely replace the default transport (buffered TCP, possibly with TLS). The initiator should fulfill the mongoc_stream_t contract. user_data is passed through to the initiator callback and may be used for whatever run time customization is necessary.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_write_concern.html deleted file mode 100644 index c187e43..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_set_write_concern.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_client_set_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_set_write_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_client_set_write_concern (mongoc_client_t *client,
    -                                 const mongoc_write_concern_t *write_concern);
    -
    -
    -

    Sets the write concern for the client. This only affects future operations, collections, and databases inheriting from client.

    -

    The default write concern is MONGOC_WRITE_CONCERN_W_DEFAULT: the driver blocks awaiting basic acknowledgement of write operations from MongoDB. This is the correct write concern for the great majority of applications.

    -

    It is a programming error to call this function on a client from a mongoc_client_pool_t. For pooled clients, set the write concern with the MongoDB URI instead.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_start_session.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_start_session.html deleted file mode 100644 index 3538f5e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_start_session.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - mongoc_client_start_session() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_start_session()

    -
    -

    Synopsis

    -
    mongoc_client_session_t *
    -mongoc_client_start_session (mongoc_client_t *client,
    -                             mongoc_session_opt_t *opts,
    -                             bson_error_t *error)
    -
    -
    -

    Create a session for a sequence of operations.

    -

    Start a session with mongoc_client_start_session(), use the session for a sequence of operations and multi-document transactions, then free it with mongoc_client_session_destroy(). Any mongoc_cursor_t or mongoc_change_stream_t using a session must be destroyed before the session, and a session must be destroyed before the mongoc_client_t it came from.

    -

    By default, sessions are causally consistent. To disable causal consistency, before starting a session create a mongoc_session_opt_t with mongoc_session_opts_new() and call mongoc_session_opts_set_causal_consistency(), then free the struct with mongoc_session_opts_destroy().

    -

    Unacknowledged writes are prohibited with sessions.

    -

    A mongoc_client_session_t must be used by only one thread at a time. Due to session pooling, mongoc_client_start_session() may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    If successful, this function returns a newly allocated mongoc_client_session_t that should be freed with mongoc_client_session_destroy() when no longer in use. On error, returns NULL and sets error.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_t.html deleted file mode 100644 index 0e56468..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_t.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - mongoc_client_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_t

    -

    A single-threaded MongoDB connection. See Connection Pooling.

    -
    -

    Synopsis

    -
    typedef struct _mongoc_client_t mongoc_client_t;
    -
    -typedef mongoc_stream_t *(*mongoc_stream_initiator_t) (
    -   const mongoc_uri_t *uri,
    -   const mongoc_host_list_t *host,
    -   void *user_data,
    -   bson_error_t *error);
    -
    -
    -

    mongoc_client_t is an opaque type that provides access to a MongoDB server, -replica set, or sharded cluster. It maintains management of underlying sockets -and routing to individual nodes based on mongoc_read_prefs_t or mongoc_write_concern_t.

    -
    -
    -

    Streams

    -

    The underlying transport for a given client can be customized, wrapped or replaced by any implementation that fulfills mongoc_stream_t. A custom transport can be set with mongoc_client_set_stream_initiator().

    -
    -
    -

    Thread Safety

    -

    mongoc_client_t is NOT thread-safe and should only be used from one thread at a time. When used in multi-threaded scenarios, it is recommended that you use the thread-safe mongoc_client_pool_t to retrieve a mongoc_client_t for your thread.

    -
    -
    -

    Example

    -
    -
    example-client.c
    -
    /* gcc example-client.c -o example-client $(pkg-config --cflags --libs
    - * libmongoc-1.0) */
    -
    -/* ./example-client [CONNECTION_STRING [COLLECTION_NAME]] */
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   mongoc_cursor_t *cursor;
    -   bson_error_t error;
    -   const bson_t *doc;
    -   const char *collection_name = "test";
    -   bson_t query;
    -   char *str;
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=client-example";
    -   mongoc_uri_t *uri;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   if (argc > 2) {
    -      collection_name = argv[2];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -
    -   bson_init (&query);
    -
    -#if 0
    -   bson_append_utf8 (&query, "hello", -1, "world", -1);
    -#endif
    -
    -   collection = mongoc_client_get_collection (client, "test", collection_name);
    -   cursor = mongoc_collection_find_with_opts (
    -      collection,
    -      &query,
    -      NULL,  /* additional options */
    -      NULL); /* read prefs, NULL for default */
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      fprintf (stdout, "%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "Cursor Failure: %s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   bson_destroy (&query);
    -   mongoc_cursor_destroy (cursor);
    -   mongoc_collection_destroy (collection);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_watch.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_watch.html deleted file mode 100644 index 9e81ebd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_watch.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - mongoc_client_watch() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_watch()

    -
    -

    Synopsis

    -
    mongoc_change_stream_t*
    -mongoc_client_watch (mongoc_client_t *client,
    -                     const bson_t *pipeline,
    -                     const bson_t *opts);
    -
    -
    -

    A helper function to create a change stream. It is preferred to call this -function over using a raw aggregation to create a change stream.

    -

    This function uses the read preference and read concern of the client. If -the change stream needs to re-establish connection, the same read preference -will be used. This may happen if the change stream encounters a resumable error.

    -
    -

    Warning

    -

    A change stream is only supported with majority read concern.

    -
    -
    -
    -

    Parameters

    -
      -
    • db: A mongoc_client_t specifying the client which the change stream listens to.
    • -
    • pipeline: A bson_t representing an aggregation pipeline appended to the change stream. This may be an empty document.
    • -
    • opts: A bson_t containing change stream options or NULL.
    • -
    -

    opts may be NULL or a document consisting of any subset of the following -parameters:

    -
      -
    • batchSize An int32 representing number of documents requested to be returned on each call to mongoc_change_stream_next()
    • -
    • resumeAfter A Document representing the logical starting point of the change stream. The _id field of any change received from a change stream can be used here.
    • -
    • startAtOperationTime A Timestamp. The change stream only provides changes that occurred at or after the specified timestamp. Any command run against the server will return an operation time that can be used here.
    • -
    • maxAwaitTimeMS An int64 representing the maximum amount of time a call to mongoc_change_stream_next() will block waiting for data
    • -
    • collation A Collation Document
    • -
    -
    -
    -

    Returns

    -

    A newly allocated mongoc_change_stream_t which must be freed with -mongoc_change_stream_destroy() when no longer in use. The returned -mongoc_change_stream_t is never NULL. If there is an error, it can -be retrieved with mongoc_change_stream_error_document(), and subsequent -calls to mongoc_change_stream_next() will return false.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_write_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_write_command_with_opts.html deleted file mode 100644 index 7e318b1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_client_write_command_with_opts.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - - - mongoc_client_write_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_client_write_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_client_write_command_with_opts (mongoc_client_t *client,
    -                                       const char *db_name,
    -                                       const bson_t *command,
    -                                       const bson_t *opts,
    -                                       bson_t *reply,
    -                                       bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic that is specific to commands that write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_client_command_simple().

    -

    Use this function for commands that write such as “drop” or “createRole” (but not for “insert”, “update”, or “delete”, see Basic Write Operations). Write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts. The highest-priority sources for these options are listed first in the following table. The write concern is omitted for MongoDB before 3.4.

    - ---- - - - - - - - - - - - - - - - - -
    Write ConcernCollation
    optsopts
    Transaction 
    client 
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • command: A bson_t containing the command specification.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Basic Write Operations

    -

    Do not use this function to call the basic write commands “insert”, “update”, and “delete”. Those commands require special logic not implemented in mongoc_client_write_command_with_opts. For basic write operations use CRUD functions such as mongoc_collection_insert_one() and the others described in the CRUD tutorial, or use the Bulk API.

    -
    -
    -

    Example

    -
    -
    example-command-with-opts.c
    -
    /*
    -
    -Demonstrates how to prepare options for mongoc_client_read_command_with_opts and
    -mongoc_client_write_command_with_opts. First it calls "cloneCollectionAsCapped"
    -command with "writeConcern" option, then "distinct" command with "collation" and
    -"readConcern" options,
    -
    -Start a MongoDB 3.4 replica set with --enableMajorityReadConcern and insert two
    -documents:
    -
    -$ mongo
    -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 1, y: "One"})
    -WriteResult({ "nInserted" : 1 })
    -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 2, y: "Two"})
    -WriteResult({ "nInserted" : 1 })
    -
    -Build and run the example:
    -
    -gcc example-command-with-opts.c -o example-command-with-opts $(pkg-config
    ---cflags --libs libmongoc-1.0)
    -./example-command-with-opts [CONNECTION_STRING]
    -cloneCollectionAsCapped: { "ok" : 1 }
    -distinct: { "values" : [ 1, 2 ], "ok" : 1 }
    -
    -*/
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=client-example";
    -   mongoc_uri_t *uri;
    -   bson_t *cmd;
    -   bson_t *opts;
    -   mongoc_write_concern_t *write_concern;
    -   mongoc_read_prefs_t *read_prefs;
    -   mongoc_read_concern_t *read_concern;
    -   bson_t reply;
    -   bson_error_t error;
    -   char *json;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -
    -   cmd = BCON_NEW ("cloneCollectionAsCapped",
    -                   BCON_UTF8 ("my_collection"),
    -                   "toCollection",
    -                   BCON_UTF8 ("my_capped_collection"),
    -                   "size",
    -                   BCON_INT64 (1024 * 1024));
    -
    -   /* include write concern "majority" in command options */
    -   write_concern = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_wmajority (write_concern, 10000 /* wtimeoutMS */);
    -   opts = bson_new ();
    -   mongoc_write_concern_append (write_concern, opts);
    -
    -   if (mongoc_client_write_command_with_opts (
    -          client, "test", cmd, opts, &reply, &error)) {
    -      json = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("cloneCollectionAsCapped: %s\n", json);
    -      bson_free (json);
    -   } else {
    -      fprintf (stderr, "cloneCollectionAsCapped: %s\n", error.message);
    -   }
    -
    -   bson_free (cmd);
    -   bson_free (opts);
    -
    -   /* distinct values of "x" in "my_collection" where "y" sorts after "one" */
    -   cmd = BCON_NEW ("distinct",
    -                   BCON_UTF8 ("my_collection"),
    -                   "key",
    -                   BCON_UTF8 ("x"),
    -                   "query",
    -                   "{",
    -                   "y",
    -                   "{",
    -                   "$gt",
    -                   BCON_UTF8 ("one"),
    -                   "}",
    -                   "}");
    -
    -   read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
    -
    -   /* "One" normally sorts before "one"; make "One" sort after "one" */
    -   opts = BCON_NEW ("collation",
    -                    "{",
    -                    "locale",
    -                    BCON_UTF8 ("en_US"),
    -                    "caseFirst",
    -                    BCON_UTF8 ("lower"),
    -                    "}");
    -
    -   /* add a read concern to "opts" */
    -   read_concern = mongoc_read_concern_new ();
    -   mongoc_read_concern_set_level (read_concern,
    -                                  MONGOC_READ_CONCERN_LEVEL_MAJORITY);
    -
    -   mongoc_read_concern_append (read_concern, opts);
    -
    -   if (mongoc_client_read_command_with_opts (
    -          client, "test", cmd, read_prefs, opts, &reply, &error)) {
    -      json = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("distinct: %s\n", json);
    -      bson_free (json);
    -   } else {
    -      fprintf (stderr, "distinct: %s\n", error.message);
    -   }
    -
    -   bson_destroy (cmd);
    -   bson_destroy (opts);
    -   bson_destroy (&reply);
    -   mongoc_read_prefs_destroy (read_prefs);
    -   mongoc_read_concern_destroy (read_concern);
    -   mongoc_write_concern_destroy (write_concern);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_aggregate.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_aggregate.html deleted file mode 100644 index fdf560c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_aggregate.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - mongoc_collection_aggregate() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_aggregate()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_collection_aggregate (mongoc_collection_t *collection,
    -                             mongoc_query_flags_t flags,
    -                             const bson_t *pipeline,
    -                             const bson_t *opts,
    -                             const mongoc_read_prefs_t *read_prefs)
    -   BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -

    For a list of all options, see the MongoDB Manual entry on the aggregate command.

    -
    -
    -

    Description

    -

    This function shall execute an aggregation query on the underlying collection. For more information on building aggregation pipelines, see the MongoDB Manual entry on the aggregate command.

    -

    Read preferences, read and write concern, and collation can be overridden by various sources. The highest-priority sources for these options are listed first in the following table. In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. Write concern is applied from opts, or if opts has no write concern and the aggregation pipeline includes “$out”, the write concern is applied from collection. The write concern is omitted for MongoDB before 3.4.

    - ------ - - - - - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernWrite ConcernCollation
    read_prefsoptsoptsopts
    TransactionTransactionTransaction 
    collectioncollectioncollection 
    -

    See the example for transactions and for the “distinct” command with opts.

    -
    -
    -

    Returns

    -

    This function returns a newly allocated mongoc_cursor_t that should be freed with mongoc_cursor_destroy() when no longer in use. The returned mongoc_cursor_t is never NULL; if the parameters are invalid, the bson_error_t in the mongoc_cursor_t is filled out, and the mongoc_cursor_t is returned before the server is selected.

    -
    -

    Warning

    -

    Failure to handle the result of this function is a programming error.

    -
    -
    -
    -

    Example

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -
    -static mongoc_cursor_t *
    -pipeline_query (mongoc_collection_t *collection)
    -{
    -   mongoc_cursor_t *cursor;
    -   bson_t *pipeline;
    -
    -   pipeline = BCON_NEW ("pipeline",
    -                        "[",
    -                        "{",
    -                        "$match",
    -                        "{",
    -                        "foo",
    -                        BCON_UTF8 ("A"),
    -                        "}",
    -                        "}",
    -                        "{",
    -                        "$match",
    -                        "{",
    -                        "bar",
    -                        BCON_BOOL (false),
    -                        "}",
    -                        "}",
    -                        "]");
    -
    -   cursor = mongoc_collection_aggregate (
    -      collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL);
    -
    -   bson_destroy (pipeline);
    -
    -   return cursor;
    -}
    -
    -
    -
    -
    -

    Other Parameters

    -

    When using $out, the pipeline stage that writes, the write_concern field of the mongoc_cursor_t will be set to the mongoc_write_concern_t parameter, if it is valid, and applied to the write command when mongoc_cursor_next() is called. Pass any other parameters to the aggregate command, besides pipeline, as fields in opts:

    -
    mongoc_write_concern_t *write_concern = mongoc_write_concern_new ();
    -mongoc_write_concern_set_w (write_concern, 3);
    -
    -pipeline =
    -   BCON_NEW ("pipeline", "[", "{", "$out", BCON_UTF8 ("collection2"), "}", "]");
    -
    -opts = BCON_NEW ("bypassDocumentValidation", BCON_BOOL (true));
    -mongoc_write_concern_append (write_concern, opts);
    -
    -cursor = mongoc_collection_aggregate (
    -   collection1, MONGOC_QUERY_NONE, pipeline, opts, NULL);
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command.html deleted file mode 100644 index 80cd76f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - mongoc_collection_command() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_command()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_collection_command (mongoc_collection_t *collection,
    -                           mongoc_query_flags_t flags,
    -                           uint32_t skip,
    -                           uint32_t limit,
    -                           uint32_t batch_size,
    -                           const bson_t *command,
    -                           const bson_t *fields,
    -                           const mongoc_read_prefs_t *read_prefs)
    -   BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -

    This function is superseded by mongoc_collection_command_with_opts(), mongoc_collection_read_command_with_opts(), mongoc_collection_write_command_with_opts(), and mongoc_collection_read_write_command_with_opts().

    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • flags: A mongoc_query_flags_t.
    • -
    • skip: A uint32_t with the number of documents to skip or zero.
    • -
    • limit: A uint32_t with the max number of documents to return or zero.
    • -
    • batch_size: A uint32_t with the number of documents in each batch or zero. Default is 100.
    • -
    • command: A bson_t containing the command to execute.
    • -
    • fields: A bson_t containing the fields to return or NULL. Not all commands support this option.
    • -
    • read_prefs: An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.
    • -
    -
    -
    -

    Returns

    -

    A mongoc_cursor_t.

    -

    The cursor should be freed with mongoc_cursor_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_simple.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_simple.html deleted file mode 100644 index 518d51e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_simple.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - mongoc_collection_command_simple() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_command_simple()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_command_simple (mongoc_collection_t *collection,
    -                                  const bson_t *command,
    -                                  const mongoc_read_prefs_t *read_prefs,
    -                                  bson_t *reply,
    -                                  bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • command: A bson_t containing the command to execute.
    • -
    • read_prefs: An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.
    • -
    • reply: A location to initialize a bson_t. This should be on the stack.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    This is a simplified version of mongoc_collection_command() that returns the first result document in reply. The collection’s read preference, read concern, and write concern are not applied to the command. The parameter reply is initialized even upon failure to simplify memory management.

    -

    This function tries to unwrap an embedded error in the command when possible. The unwrapped error will be propagated via the error parameter. Additionally, the result document is set in reply.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    This function does not check the server response for a write concern error or write concern timeout.

    -
    -
    -

    Example

    -

    The following is an example of executing the collection stats command.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_collection_stats (mongoc_collection_t *collection)
    -{
    -   bson_error_t error;
    -   const char *name;
    -   bson_t *cmd;
    -   bson_t reply;
    -
    -   name = mongoc_collection_get_name (collection);
    -   cmd = BCON_NEW ("collStats", BCON_UTF8 (name));
    -
    -   if (mongoc_collection_command_simple (
    -          collection, cmd, NULL, &reply, &error)) {
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (stderr, "%s\n", error.message);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (cmd);
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_with_opts.html deleted file mode 100644 index eaba5b8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_command_with_opts.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - mongoc_collection_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_command_with_opts (
    -   mongoc_collection_t *collection,
    -   const bson_t *command,
    -   const mongoc_read_prefs_t *read_prefs,
    -   const bson_t *opts,
    -   bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -

    Execute a command on the server, interpreting opts according to the MongoDB server version. To send a raw command to the server without any of this logic, use mongoc_client_command_simple().

    -

    Read preferences, read and write concern, and collation can be overridden by various sources. The highest-priority sources for these options are listed first:

    - ------ - - - - - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernWrite ConcernCollation
    read_prefsoptsoptsopts
    TransactionTransactionTransaction 
    collection   
    -

    In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. -See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    The reply is not parsed for a write concern timeout or write concern error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_copy.html deleted file mode 100644 index f043a8e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_copy.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_collection_copy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_copy()

    -
    -

    Synopsis

    -
    mongoc_collection_t *
    -mongoc_collection_copy (mongoc_collection_t *collection);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Performs a deep copy of the collection struct and its configuration. Useful if you intend to call mongoc_collection_set_write_concern(), mongoc_collection_set_read_prefs(), or mongoc_collection_set_read_concern(), and want to preserve an unaltered copy of the struct.

    -

    This function does not copy the contents of the collection on the MongoDB server; use the cloneCollection command for that purpose.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_collection_t that should be freed with mongoc_collection_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count.html deleted file mode 100644 index a4fb78c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - mongoc_collection_count() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_count()

    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code. -Use mongoc_collection_count_documents() or mongoc_collection_estimated_document_count() instead.

    -

    mongoc_collection_count_documents() has similar performance to calling mongoc_collection_count() with a non-NULL query, and is guaranteed to retrieve an accurate collection count. See migrating from deprecated count functions for details.

    -

    mongoc_collection_estimated_document_count() has the same performance as calling mongoc_collection_count() with a NULL query, but is not guaranteed to retrieve an accurate collection count.

    -
    -
    -

    Synopsis

    -
    int64_t
    -mongoc_collection_count (mongoc_collection_t *collection,
    -                         mongoc_query_flags_t flags,
    -                         const bson_t *query,
    -                         int64_t skip,
    -                         int64_t limit,
    -                         const mongoc_read_prefs_t *read_prefs,
    -                         bson_error_t *error)
    - BSON_GNUC_DEPRECATED_FOR (mongoc_collection_count_documents or
    -                           mongoc_collection_estimated_document_count);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall execute a count query on the underlying ‘collection’. The bson ‘query’ is not validated, simply passed along as appropriate to the server. As such, compatibility and errors should be validated in the appropriate server documentation.

    -

    For more information, see the query reference at the MongoDB website.

    -

    The mongoc_read_concern_t specified on the mongoc_collection_t will be used, if any. If read_prefs is NULL, the collection’s read preferences are used.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    -1 on failure, otherwise the number of documents counted.

    -
    -
    -

    Example

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_query_count (mongoc_collection_t *collection, bson_t *query)
    -{
    -   bson_error_t error;
    -   int64_t count;
    -
    -   count = mongoc_collection_count (
    -      collection, MONGOC_QUERY_NONE, query, 0, 0, NULL, &error);
    -
    -   if (count < 0) {
    -      fprintf (stderr, "Count failed: %s\n", error.message);
    -   } else {
    -      printf ("%" PRId64 " documents counted.\n", count);
    -   }
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_documents.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_documents.html deleted file mode 100644 index 25f5497..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_documents.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - mongoc_collection_count_documents() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_count_documents()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_collection_count_documents (mongoc_collection_t *collection,
    -                                   const bson_t *filter,
    -                                   const bson_t *opts,
    -                                   const mongoc_read_prefs_t *read_prefs,
    -                                   bson_t *reply,
    -                                   bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • filter: A bson_t containing the filter.
    • -
    • opts: A bson_t, NULL to ignore.
    • -
    • read_prefs: A mongoc_read_prefs_t or NULL.
    • -
    • reply: A location for an uninitialized bson_t to store the command reply, NULL to ignore. If not NULL, reply will be initialized.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This functions executes a count query on collection. In contrast with mongoc_collection_estimated_document_count(), the count returned is guaranteed to be accurate.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    -1 on failure, otherwise the number of documents counted.

    -
    -
    -

    Example

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_count (mongoc_collection_t *collection, bson_t *filter)
    -{
    -   bson_error_t error;
    -   int64_t count;
    -   bson_t* opts = BCON_NEW ("skip", BCON_INT64(5));
    -
    -   count = mongoc_collection_count_documents (
    -      collection, filter, opts, NULL, NULL, &error);
    -   bson_destroy (opts);
    -
    -   if (count < 0) {
    -      fprintf (stderr, "Count failed: %s\n", error.message);
    -   } else {
    -      printf ("%" PRId64 " documents counted.\n", count);
    -   }
    -}
    -
    -
    -
    -
    -

    Migrating from deprecated count functions

    -

    When migrating to mongoc_collection_count_documents() from the deprecated mongoc_collection_count() or mongoc_collection_count_with_opts(), the following query operators in the filter must be replaced:

    - ---- - - - - - - - - - - - - - - - - -
    OperatorReplacement
    $where$expr
    $near$geoWithin with $center
    $nearSphere$geoWithin with $centerSphere
    -

    $expr requires MongoDB 3.6+

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_with_opts.html deleted file mode 100644 index 76ab83f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_count_with_opts.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - mongoc_collection_count_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_count_with_opts()

    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code. -Use mongoc_collection_count_documents() or mongoc_collection_estimated_document_count() instead.

    -

    mongoc_collection_count_documents() has similar performance to calling mongoc_collection_count() with a non-NULL query, and is guaranteed to retrieve an accurate collection count. See migrating from deprecated count functions for details.

    -

    mongoc_collection_estimated_document_count() has the same performance as calling mongoc_collection_count() with a NULL query, but is not guaranteed to retrieve an accurate collection count.

    -
    -
    -

    Synopsis

    -
    int64_t
    -mongoc_collection_count_with_opts (mongoc_collection_t *collection,
    -                                   mongoc_query_flags_t flags,
    -                                   const bson_t *query,
    -                                   int64_t skip,
    -                                   int64_t limit,
    -                                   const bson_t *opts,
    -                                   const mongoc_read_prefs_t *read_prefs,
    -                                   bson_error_t *error)
    - BSON_GNUC_DEPRECATED_FOR (mongoc_collection_count_documents or
    -                           mongoc_collection_estimated_document_count);
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function shall execute a count query on the underlying ‘collection’. The bson ‘query’ is not validated, simply passed along as appropriate to the server. As such, compatibility and errors should be validated in the appropriate server documentation.

    -

    The mongoc_read_concern_t specified on the mongoc_collection_t will be used, if any. If read_prefs is NULL, the collection’s read preferences are used.

    -

    In addition to the standard functionality available from mongoc_collection_count, this function allows the user to add arbitrary extra keys to the count. This pass through enables features such as hinting for counts.

    -

    For more information, see the query reference at the MongoDB website.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    -1 on failure, otherwise the number of documents counted.

    -
    -
    -

    Examples

    -
    -
    Basic Counting
    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_query_count (mongoc_collection_t *collection, bson_t *query)
    -{
    -   bson_error_t error;
    -   int64_t count;
    -   bson_t opts;
    -
    -   bson_init (&opts);
    -   BSON_APPEND_UTF8 (&opts, "hint", "_id_");
    -
    -   count = mongoc_collection_count_with_opts (
    -      collection, MONGOC_QUERY_NONE, query, 0, 0, &opts, NULL, &error);
    -
    -   bson_destroy (&opts);
    -
    -   if (count < 0) {
    -      fprintf (stderr, "Count failed: %s\n", error.message);
    -   } else {
    -      printf ("%" PRId64 " documents counted.\n", count);
    -   }
    -}
    -
    -
    -
    -
    -
    Counting with Collation
    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_query_count (mongoc_collection_t *collection, bson_t *query)
    -{
    -   bson_t *selector;
    -   bson_t *opts;
    -   bson_error_t error;
    -   int64_t count;
    -
    -   selector = BCON_NEW ("_id", "{", "$gt", BCON_UTF8 ("one"), "}");
    -
    -   /* "One" normally sorts before "one"; make "one" come first */
    -   opts = BCON_NEW ("collation",
    -                    "{",
    -                    "locale",
    -                    BCON_UTF8 ("en_US"),
    -                    "caseFirst",
    -                    BCON_UTF8 ("lower"),
    -                    "}");
    -
    -   count = mongoc_collection_count_with_opts (
    -      collection, MONGOC_QUERY_NONE, query, 0, 0, opts, NULL, &error);
    -
    -   bson_destroy (selector);
    -   bson_destroy (opts);
    -
    -   if (count < 0) {
    -      fprintf (stderr, "Count failed: %s\n", error.message);
    -   } else {
    -      printf ("%" PRId64 " documents counted.\n", count);
    -   }
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation.html deleted file mode 100644 index 69dd9b2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - mongoc_collection_create_bulk_operation() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_create_bulk_operation()

    -
    -

    Synopsis

    -
    mongoc_bulk_operation_t *
    -mongoc_collection_create_bulk_operation (
    -   mongoc_collection_t *collection,
    -   bool ordered,
    -   const mongoc_write_concern_t *write_concern) BSON_GNUC_WARN_UNUSED_RESULT
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_collection_create_bulk_operation_with_opts);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_collection_create_bulk_operation_with_opts() instead.

    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall begin a new bulk operation. After creating this you may call various functions such as mongoc_bulk_operation_update(), mongoc_bulk_operation_insert() and others.

    -

    After calling mongoc_bulk_operation_execute() the commands will be executed in as large as batches as reasonable by the client.

    -

    If ordered is true, then processing will stop at the first error.

    -

    If ordered is not true, then the bulk operation will attempt to continue processing even after the first failure.

    -

    write_concern contains the write concern for all operations in the bulk operation. If NULL, the collection’s write concern is used. The global default is acknowledged writes: MONGOC_WRITE_CONCERN_W_DEFAULT.

    -
    - -
    -

    Errors

    -

    Errors are propagated when executing the bulk operation.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_bulk_operation_t that should be freed with mongoc_bulk_operation_destroy() when no longer in use.

    -
    -

    Warning

    -

    Failure to handle the result of this function is a programming error.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation_with_opts.html deleted file mode 100644 index 5b166bd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_bulk_operation_with_opts.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - mongoc_collection_create_bulk_operation_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_create_bulk_operation_with_opts()

    -
    -

    Synopsis

    -
    mongoc_bulk_operation_t *
    -mongoc_collection_create_bulk_operation_with_opts (
    -   mongoc_collection_t *collection,
    -   const bson_t *opts) BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function shall begin a new bulk operation. After creating this you may call various functions such as mongoc_bulk_operation_update(), mongoc_bulk_operation_insert() and others.

    -

    After calling mongoc_bulk_operation_execute() the commands will be executed in as large as batches as reasonable by the client.

    -
    - -
    -

    Errors

    -

    Errors are propagated when executing the bulk operation.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_bulk_operation_t that should be freed with mongoc_bulk_operation_destroy() when no longer in use.

    -
    -

    Warning

    -

    Failure to handle the result of this function is a programming error.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index.html deleted file mode 100644 index ea4e5a3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_collection_create_index() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_create_index()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_create_index (mongoc_collection_t *collection,
    -                                const bson_t *keys,
    -                                const mongoc_index_opt_t *opt,
    -                                bson_error_t *error);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code. See Creating Indexes.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index_with_opts.html deleted file mode 100644 index 73a3ae7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_create_index_with_opts.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - mongoc_collection_create_index_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_create_index_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_create_index_with_opts (mongoc_collection_t *collection,
    -                                          const bson_t *keys,
    -                                          const mongoc_index_opt_t *index_opts,
    -                                          const bson_t *command_opts,
    -                                          bson_t *reply,
    -                                          bson_error_t *error);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code. See Creating Indexes.

    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • keys: A bson_t.
    • -
    • index_opts: A mongoc_index_opt_t.
    • -
    • reply: An optional location for a bson_t which will store the server’s reply.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    command_opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function will request the creation of a new index.

    -

    This function will use the createIndexes command. -The server’s reply is stored in reply.

    -

    If no write concern is provided in command_opts, the collection’s write concern is used.

    -

    See mongoc_index_opt_t for options on creating indexes.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    reply is always initialized and must be destroyed with bson_destroy(). If the server is running an obsolete version of MongoDB then reply may be empty, though it will still be initialized.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete.html deleted file mode 100644 index 1441892..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - mongoc_collection_delete() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_delete()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_delete (mongoc_collection_t *collection,
    -                          mongoc_delete_flags_t flags,
    -                          const bson_t *selector,
    -                          const mongoc_write_concern_t *write_concern,
    -                          bson_error_t *error)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_collection_delete_one or
    -                             mongoc_collection_delete_many);
    -
    -
    -
    - -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall delete documents in the given collection that match selector. The bson selector is not validated, simply passed along as appropriate to the server. As such, compatibility and errors should be validated in the appropriate server documentation.

    -

    If you want to limit deletes to a single document, provide MONGOC_DELETE_SINGLE_REMOVE in flags.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_many.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_many.html deleted file mode 100644 index f6311f9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_many.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - mongoc_collection_delete_many() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_delete_many()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_delete_many (mongoc_collection_t *collection,
    -                               const bson_t *selector,
    -                               const bson_t *opts,
    -                               bson_t *reply,
    -                               bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • selector: A bson_t containing the query to match documents.
    • -
    • reply: Optional. An uninitialized bson_t populated with the delete result, or NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function removes all documents in the given collection that match selector.

    -

    To delete at most one matching document, use mongoc_collection_delete_one().

    -

    If you pass a non-NULL reply, it is filled out with the field “deletedCount”. If there is a server error then reply contains either a “writeErrors” array with one subdocument or a “writeConcernErrors” array. The reply must be freed with bson_destroy().

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_one.html deleted file mode 100644 index 9cf72b1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_delete_one.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - mongoc_collection_delete_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_delete_one()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_delete_one (mongoc_collection_t *collection,
    -                              const bson_t *selector,
    -                              const bson_t *opts,
    -                              bson_t *reply,
    -                              bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • selector: A bson_t containing the query to match documents.
    • -
    • reply: Optional. An uninitialized bson_t populated with the delete result, or NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function removes at most one document in the given collection that matches selector.

    -

    To delete all matching documents, use mongoc_collection_delete_many().

    -

    If you pass a non-NULL reply, it is filled out with the field “deletedCount”. If there is a server error then reply contains either a “writeErrors” array with one subdocument or a “writeConcernErrors” array. The reply must be freed with bson_destroy().

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_destroy.html deleted file mode 100644 index 09bfd59..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_destroy.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_collection_destroy (mongoc_collection_t *collection);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall destroy a mongoc_collection_t and its associated resources. Does nothing if collection is NULL.

    -
    -

    Warning

    -

    Always destroy a mongoc_cursor_t created from a collection before destroying the collection.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop.html deleted file mode 100644 index 77814e1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_collection_drop() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_drop()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_drop (mongoc_collection_t *collection, bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    For more information, see mongoc_collection_drop_with_opts(). This function is a thin wrapper, passing NULL in as bson_t parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index.html deleted file mode 100644 index 19a3b27..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_drop_index() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_drop_index()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_drop_index (mongoc_collection_t *collection,
    -                              const char *index_name,
    -                              bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    For more information, see mongoc_collection_drop_with_opts(). This function is a thin wrapper, passing NULL in as bson_t parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index_with_opts.html deleted file mode 100644 index 317a276..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_index_with_opts.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - mongoc_collection_drop_index_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_drop_index_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_drop_index_with_opts (mongoc_collection_t *collection,
    -                                        const char *index_name,
    -                                        const bson_t *opts,
    -                                        bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function requests than an index on collection be dropped.

    -

    If no write concern is provided in opts, the collection’s write concern is used.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_with_opts.html deleted file mode 100644 index b129ce4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_drop_with_opts.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - mongoc_collection_drop_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_drop_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_drop_with_opts (mongoc_collection_t *collection,
    -                                  bson_t *opts,
    -                                  bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function requests that a collection be dropped, including all indexes associated with the collection.

    -

    If no write concern is provided in opts, the collection’s write concern is used.

    -

    If the collection does not exist, the server responds with an “ns not found” error. It is safe to ignore this error; set the Error API Version to 2 and ignore server error code 26:

    -
    mongoc_client_t *client;
    -mongoc_collection_t *collection;
    -bson_error_t error;
    -bool r;
    -
    -client = mongoc_client_new (NULL);
    -mongoc_client_set_error_api (client, 2);
    -collection = mongoc_client_get_collection (client, "db", "collection");
    -r = mongoc_collection_drop_with_opts (collection, NULL /* opts */, &error);
    -if (r) {
    -   printf ("Dropped.\n");
    -} else {
    -   printf ("Error message: %s\n", error.message);
    -   if (error.domain == MONGOC_ERROR_SERVER && error.code == 26) {
    -      printf ("Ignoring 'ns not found' error\n");
    -   } else {
    -      fprintf (stderr, "Unrecognized error!\n");
    -   }
    -}
    -
    -mongoc_collection_destroy (collection);
    -mongoc_client_destroy (client);
    -
    -
    -

    In MongoDB 3.0 and older, the “ns not found” error code is the generic MONGOC_ERROR_QUERY_FAILURE; in this case check whether the error message is equal to the string “ns not found”.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if the collection was successfully dropped. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_ensure_index.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_ensure_index.html deleted file mode 100644 index 232a6c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_ensure_index.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - mongoc_collection_ensure_index() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_ensure_index()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_ensure_index (mongoc_collection_t *collection,
    -                                const bson_t *keys,
    -                                const mongoc_index_opt_t *opt,
    -                                bson_error_t *error)
    -   BSON_GNUC_DEPRECATED;
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code. See Creating Indexes.

    -
    -
    -

    Parameters

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_estimated_document_count.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_estimated_document_count.html deleted file mode 100644 index 0a31fb4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_estimated_document_count.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - mongoc_collection_estimated_document_count() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_estimated_document_count()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_collection_estimated_document_count (mongoc_collection_t *collection,
    -                                            const bson_t *opts,
    -                                            const mongoc_read_prefs_t *read_prefs,
    -                                            bson_t *reply,
    -                                            bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This functions executes a count query on collection. In contrast with mongoc_collection_count_documents(), the count returned is not guaranteed to be accurate.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    -1 on failure, otherwise the number of documents counted.

    -
    -
    -

    Example

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_count (mongoc_collection_t *collection, bson_t *query)
    -{
    -   bson_error_t error;
    -   int64_t count;
    -   bson_t* opts = BCON_NEW ("skip", BCON_INT64(5));
    -
    -   count = mongoc_collection_estimated_document_count (
    -      collection, opts, NULL, NULL, &error);
    -   bson_destroy (opts);
    -
    -   if (count < 0) {
    -      fprintf (stderr, "Count failed: %s\n", error.message);
    -   } else {
    -      printf ("%" PRId64 " documents counted.\n", count);
    -   }
    -}
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find.html deleted file mode 100644 index 00735a0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - mongoc_collection_find() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_find()

    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Use the more convenient mongoc_collection_find_with_opts() instead.

    -
    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_collection_find (mongoc_collection_t *collection,
    -                        mongoc_query_flags_t flags,
    -                        uint32_t skip,
    -                        uint32_t limit,
    -                        uint32_t batch_size,
    -                        const bson_t *query,
    -                        const bson_t *fields,
    -                        const mongoc_read_prefs_t *read_prefs)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_collection_find_with_opts)
    -      BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • flags: A mongoc_query_flags_t.
    • -
    • skip: A uint32_t of number of documents to skip or 0.
    • -
    • limit: A uint32_t of max number of documents to return or 0.
    • -
    • batch_size: A uint32_t containing batch size of document result sets or 0 for default. Default is 100.
    • -
    • query: A bson_t containing the query and options to execute.
    • -
    • fields: A bson_t containing fields to return or NULL.
    • -
    • read_prefs: A mongoc_read_prefs_t or NULL for default read preferences.
    • -
    -
    -
    -

    Description

    -

    This function shall execute a query on the underlying collection.

    -

    If no options are necessary, query can simply contain a query such as {a:1}. If you would like to specify options such as a sort order, the query must be placed inside of {"$query": {}}. See the example below for how to properly specify additional options to query.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_cursor_t that should be freed with mongoc_cursor_destroy() when no longer in use.

    -
    -
    -

    Example

    -
    -
    Print All Documents in a Collection
    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_all_documents (mongoc_collection_t *collection)
    -{
    -   mongoc_cursor_t *cursor;
    -   bson_error_t error;
    -   const bson_t *doc;
    -   char *str;
    -   bson_t *query;
    -
    -   query = BCON_NEW ("$query",
    -                     "{",
    -                     "foo",
    -                     BCON_INT32 (1),
    -                     "}",
    -                     "$orderby",
    -                     "{",
    -                     "bar",
    -                     BCON_INT32 (-1),
    -                     "}");
    -   cursor = mongoc_collection_find (
    -      collection, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "An error occurred: %s\n", error.message);
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -   bson_destroy (query);
    -}
    -
    -
    -
    -
    -
    -

    The “find” command

    -

    Queries have historically been sent as OP_QUERY wire protocol messages, but beginning in MongoDB 3.2 queries use the “find” command instead.

    -

    The driver automatically converts queries to the new “find” command syntax if needed, so this change is typically invisible to C Driver users. However, an application written exclusively for MongoDB 3.2 and later can choose to use the new syntax directly instead of relying on the driver to convert from the old syntax:

    -
    /* MongoDB 3.2+ "find" command syntax */
    -query = BCON_NEW ("filter",
    -                  "{",
    -                  "foo",
    -                  BCON_INT32 (1),
    -                  "}",
    -                  "sort",
    -                  "{",
    -                  "bar",
    -                  BCON_INT32 (-1),
    -                  "}");
    -cursor = mongoc_collection_find (
    -   collection, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL);
    -
    -
    -

    The “find” command takes different options from the traditional OP_QUERY message.

    - ----- - - - - - - - - - - - - - - - - - - -
    Query$queryfilter
    Sort$orderbysort
    Show record location$showDiskLocshowRecordId
    Other $-options$<option name><option name>
    -

    Most applications should use the OP_QUERY syntax, with “$query”, “$orderby”, and so on, and rely on the driver to convert to the new syntax if needed.

    -
    -
    -

    See Also

    -

    The “find” command in the MongoDB Manual.

    -
    -
    -

    The “explain” command

    -

    With MongoDB before 3.2, a query with option $explain: true returns information about the query plan, instead of the query results. Beginning in MongoDB 3.2, there is a separate “explain” command. The driver will not convert “$explain” queries to “explain” commands, you must call the “explain” command explicitly:

    -
    /* MongoDB 3.2+, "explain" command syntax */
    -command = BCON_NEW ("explain",
    -                    "{",
    -                    "find",
    -                    BCON_UTF8 ("collection_name"),
    -                    "filter",
    -                    "{",
    -                    "foo",
    -                    BCON_INT32 (1),
    -                    "}",
    -                    "}");
    -mongoc_collection_command_simple (collection, command, NULL, &reply, &error);
    -
    -
    -
    -
    -

    See Also

    -

    The “explain” command in the MongoDB Manual.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify.html deleted file mode 100644 index 30694fb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - mongoc_collection_find_and_modify() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_find_and_modify()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_find_and_modify (mongoc_collection_t *collection,
    -                                   const bson_t *query,
    -                                   const bson_t *sort,
    -                                   const bson_t *update,
    -                                   const bson_t *fields,
    -                                   bool _remove,
    -                                   bool upsert,
    -                                   bool _new,
    -                                   bson_t *reply,
    -                                   bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • query: A bson_t containing the query to locate target document(s).
    • -
    • sort: A bson_t containing the sort order for query.
    • -
    • update: A bson_t containing an update spec.
    • -
    • fields: An optional bson_t containing the fields to return or NULL.
    • -
    • _remove: If the matching documents should be removed.
    • -
    • upsert: If an upsert should be performed.
    • -
    • _new: If the new version of the document should be returned.
    • -
    • reply: Optional pointer to an uninitialized bson_t that will be initialized with the result.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    Update and return an object.

    -

    This is a thin wrapper around the findAndModify command. Either update or _remove arguments are required.

    -

    See also: mongoc_collection_find_and_modify_with_opts().

    -

    As of MongoDB 3.2, the mongoc_write_concern_t specified on the mongoc_collection_t will be used, if any.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns either the document before or after modification based on the _new parameter.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Example

    -
    -
    find-and-modify.c
    -
    #include <bson/bcon.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_collection_t *collection;
    -   mongoc_client_t *client;
    -   const char *uri_string =
    -      "mongodb://127.0.0.1:27017/?appname=find-and-modify-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -   bson_t *query;
    -   bson_t *update;
    -   bson_t reply;
    -   char *str;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "test", "test");
    -
    -   /*
    -    * Build our query, {"cmpxchg": 1}
    -    */
    -   query = BCON_NEW ("cmpxchg", BCON_INT32 (1));
    -
    -   /*
    -    * Build our update. {"$set": {"cmpxchg": 2}}
    -    */
    -   update = BCON_NEW ("$set", "{", "cmpxchg", BCON_INT32 (2), "}");
    -
    -   /*
    -    * Submit the findAndModify.
    -    */
    -   if (!mongoc_collection_find_and_modify (collection,
    -                                           query,
    -                                           NULL,
    -                                           update,
    -                                           NULL,
    -                                           false,
    -                                           false,
    -                                           true,
    -                                           &reply,
    -                                           &error)) {
    -      fprintf (stderr, "find_and_modify() failure: %s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   /*
    -    * Print the result as JSON.
    -    */
    -   str = bson_as_canonical_extended_json (&reply, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   /*
    -    * Cleanup.
    -    */
    -   bson_destroy (query);
    -   bson_destroy (update);
    -   bson_destroy (&reply);
    -   mongoc_collection_destroy (collection);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify_with_opts.html deleted file mode 100644 index 033dd02..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_and_modify_with_opts.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - mongoc_collection_find_and_modify_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_find_and_modify_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_find_and_modify_with_opts (
    -   mongoc_collection_t *collection,
    -   const bson_t *query,
    -   const mongoc_find_and_modify_opts_t *opts,
    -   bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Update and return an object.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Example

    -

    See the example code for mongoc_find_and_modify_opts_t.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes.html deleted file mode 100644 index c19ae97..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_collection_find_indexes() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_find_indexes()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_collection_find_indexes (mongoc_collection_t *collection,
    -                                bson_error_t *error);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_collection_find_indexes_with_opts() instead.

    -

    Fetches a cursor containing documents, each corresponding to an index on this collection.

    -
    -
    -

    Parameters

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A cursor where each result corresponds to the server’s representation of an index on this collection. If the collection does not exist on the server, the cursor will be empty.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes_with_opts.html deleted file mode 100644 index 5b1130a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_indexes_with_opts.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_collection_find_indexes_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_find_indexes_with_opts()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_collection_find_indexes_with_opts (mongoc_collection_t *collection,
    -                                          const bson_t *opts);
    -
    -
    -

    Fetches a cursor containing documents, each corresponding to an index on this collection.

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Errors

    -

    Use mongoc_cursor_error() on the returned cursor to check for errors.

    -
    -
    -

    Returns

    -

    A cursor where each result corresponds to the server’s representation of an index on this collection. If the collection does not exist on the server, the cursor will be empty.

    -

    The cursor functions mongoc_cursor_set_limit(), mongoc_cursor_set_batch_size(), and mongoc_cursor_set_max_await_time_ms() have no use on the returned cursor.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_with_opts.html deleted file mode 100644 index c194794..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_find_with_opts.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - - mongoc_collection_find_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_find_with_opts()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_collection_find_with_opts (mongoc_collection_t *collection,
    -                                  const bson_t *filter,
    -                                  const bson_t *opts,
    -                                  const mongoc_read_prefs_t *read_prefs)
    -   BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Query on collection, passing arbitrary query options to the server in opts.

    -

    To target a specific server, include an integer “serverId” field in opts with an id obtained first by calling mongoc_client_select_server(), then mongoc_server_description_id() on its return value.

    -

    Read preferences, read concern, and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. The highest-priority sources for these options are listed first in the following table. No write concern is applied.

    - ----- - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernCollation
    read_prefsoptsopts
    TransactionTransaction 
    collection  
    -

    See the example for transactions and for the “distinct” command with opts.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_cursor_t that must be freed with mongoc_cursor_destroy().

    -
    -
    -

    Examples

    -
    -
    Print First Ten Documents in a Collection
    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -static void
    -print_ten_documents (mongoc_collection_t *collection)
    -{
    -   bson_t *filter;
    -   bson_t *opts;
    -   mongoc_cursor_t *cursor;
    -   bson_error_t error;
    -   const bson_t *doc;
    -   char *str;
    -
    -   /* filter by "foo": 1, order by "bar" descending */
    -   filter = BCON_NEW ("foo", BCON_INT32 (1));
    -   opts = BCON_NEW (
    -      "limit", BCON_INT64 (10), "sort", "{", "bar", BCON_INT32 (-1), "}");
    -
    -   cursor = mongoc_collection_find_with_opts (collection, filter, opts, NULL);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "An error occurred: %s\n", error.message);
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -   bson_destroy (filter);
    -   bson_destroy (opts);
    -}
    -
    -
    -
    -
    -
    More examples of modifying the query with opts:
    -
    bson_t *filter;
    -bson_t *opts;
    -mongoc_read_prefs_t *read_prefs;
    -
    -filter = BCON_NEW ("foo", BCON_INT32 (1));
    -
    -/* Include "field_name_one" and "field_name_two" in "projection", omit
    - * others. "_id" must be specifically removed or it is included by default.
    - */
    -opts = BCON_NEW ("projection", "{",
    -                    "field_name_one", BCON_BOOL (true),
    -                    "field_name_two", BCON_BOOL (true),
    -                    "_id", BCON_BOOL (false),
    -                 "}",
    -                 "tailable", BCON_BOOL (true),
    -                 "awaitData", BCON_BOOL (true),
    -                 "sort", "{", "bar", BCON_INT32 (-1), "}",
    -                 "collation", "{",
    -                    "locale", BCON_UTF8("en_US"),
    -                    "caseFirst", BCON_UTF8 ("lower"),
    -                 "}");
    -
    -read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
    -
    -cursor =
    -   mongoc_collection_find_with_opts (collection, filter, opts, read_prefs);
    -
    -
    -
    -

    The following options are supported.

    - ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionBSON typeOptionBSON type
    projectiondocumentmaxdocument
    sortdocumentmaxTimeMSnon-negative int64
    skipnon-negative int64maxAwaitTimeMSnon-negative int64
    limitnon-negative int64mindocument
    batchSizenon-negative int64noCursorTimeoutbool
    exhaustbooloplogReplaybool
    hintstring or documentreadConcerndocument
    allowPartialResultsboolreturnKeybool
    awaitDataboolsessionId(none)
    collationdocumentshowRecordIdbool
    commentstringsingleBatchbool
    -

    All options are documented in the reference page for the “find” command in the MongoDB server manual, except for “maxAwaitTimeMS” and “sessionId”.

    -

    “maxAwaitTimeMS” is the maximum amount of time for the server to wait on new documents to satisfy a query, if “tailable” and “awaitData” are both true. -If no new documents are found, the tailable cursor receives an empty batch. The “maxAwaitTimeMS” option is ignored for MongoDB older than 3.4.

    -

    To add a “sessionId”, construct a mongoc_client_session_t with mongoc_client_start_session(). You can begin a transaction with mongoc_client_session_start_transaction(), optionally with a mongoc_transaction_opt_t that overrides the options inherited from collection. Then use mongoc_client_session_append() to add the session to opts. See the example code for mongoc_client_session_t.

    -

    To add a “readConcern”, construct a mongoc_read_concern_t with mongoc_read_concern_new() and configure it with mongoc_read_concern_set_level(). Then use mongoc_read_concern_append() to add the read concern to opts.

    -

    For some options like “collation”, the driver returns an error if the server version is too old to support the feature. -Any fields in opts that are not listed here are passed to the server unmodified.

    -
    -
    -

    Deprecated Options

    -

    The snapshot boolean option is removed in MongoDB 4.0. The maxScan option, a non-negative int64, is deprecated in MongoDB 4.0 and will be removed in a future MongoDB version. Both options are supported by the C Driver with older MongoDB versions.

    -
    -
    -

    See Also

    -

    The “find” command in the MongoDB Manual. All options listed there are supported by the C Driver. -For MongoDB servers before 3.2, or for exhaust queries, the driver transparently converts the query to a legacy OP_QUERY message.

    -
    -
    -

    The “explain” command

    -

    With MongoDB before 3.2, a query with option $explain: true returns information about the query plan, instead of the query results. Beginning in MongoDB 3.2, there is a separate “explain” command. The driver will not convert “$explain” queries to “explain” commands, you must call the “explain” command explicitly:

    -
    /* MongoDB 3.2+, "explain" command syntax */
    -command = BCON_NEW ("explain", "{",
    -                    "find", BCON_UTF8 ("collection_name"),
    -                    "filter", "{", "foo", BCON_INT32 (1), "}",
    -                    "}");
    -
    -mongoc_collection_command_simple (collection, command, NULL, &reply, &error);
    -
    -
    -
    -
    -

    See Also

    -

    The “explain” command in the MongoDB Manual.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_last_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_last_error.html deleted file mode 100644 index 9f9924d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_last_error.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_collection_get_last_error() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_get_last_error()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_collection_get_last_error (const mongoc_collection_t *collection);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    The mongoc_collection_get_last_error() function returns a bulk result. See Bulk Write Operations for examples of bulk results.

    -

    A write_concern must be at least MONGOC_WRITE_CONCERN_W_DEFAULT in last command execution for this to be available.

    -
    -
    -

    Returns

    -

    A bson_t that should not be modified or NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_name.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_name.html deleted file mode 100644 index 4548e6e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_name.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_get_name() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_get_name()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_collection_get_name (mongoc_collection_t *collection);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the name of collection.

    -
    -
    -

    Returns

    -

    A string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_concern.html deleted file mode 100644 index f79e0f3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_concern.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_get_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_get_read_concern()

    -
    -

    Synopsis

    -
    const mongoc_read_concern_t *
    -mongoc_collection_get_read_concern (const mongoc_collection_t *collection);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the default read concern to be used on read operations originating from collection.

    -
    -
    -

    Returns

    -

    A mongoc_read_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_prefs.html deleted file mode 100644 index 0824e93..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_read_prefs.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_get_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_get_read_prefs()

    -
    -

    Synopsis

    -
    const mongoc_read_prefs_t *
    -mongoc_collection_get_read_prefs (const mongoc_collection_t *collection);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the default read preferences to use for collection. Operations without specified read-preferences will default to this.

    -
    -
    -

    Returns

    -

    A mongoc_read_prefs_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_write_concern.html deleted file mode 100644 index 8b5524e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_get_write_concern.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_get_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_get_write_concern()

    -
    -

    Synopsis

    -
    const mongoc_write_concern_t *
    -mongoc_collection_get_write_concern (const mongoc_collection_t *collection);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the default write concern to be used on write operations originating from collection and not specifying a write concern.

    -
    -
    -

    Returns

    -

    A mongoc_write_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert.html deleted file mode 100644 index da91c85..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - mongoc_collection_insert() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_insert()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_insert (mongoc_collection_t *collection,
    -                          mongoc_insert_flags_t flags,
    -                          const bson_t *document,
    -                          const mongoc_write_concern_t *write_concern,
    -                          bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Superseded by mongoc_collection_insert_one() and mongoc_collection_insert_many().

    -

    This function shall insert document into collection.

    -

    If no _id element is found in document, then a bson_oid_t will be generated locally and added to the document. If you must know the inserted document’s _id, generate it in your code and include it in the document. The _id you generate can be a bson_oid_t or any other non-array BSON type.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_bulk.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_bulk.html deleted file mode 100644 index 6adabb8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_bulk.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - mongoc_collection_insert_bulk() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_insert_bulk()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_insert_bulk (mongoc_collection_t *collection,
    -                               mongoc_insert_flags_t flags,
    -                               const bson_t **documents,
    -                               uint32_t n_documents,
    -                               const mongoc_write_concern_t *write_concern,
    -                               bson_error_t *error)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_collection_insert_many);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_collection_insert_many() instead.

    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function performs a bulk insert of all of the documents in documents. This function is deprecated as it cannot accurately return which documents may have failed during the bulk insert.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_many.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_many.html deleted file mode 100644 index f2b7425..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_many.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_collection_insert_many() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_insert_many()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_insert_many (mongoc_collection_t *collection,
    -                               const bson_t **documents,
    -                               size_t n_documents,
    -                               const bson_t *opts,
    -                               bson_t *reply,
    -                               bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • documents: An array of pointers to bson_t.
    • -
    • n_documents: The length of documents.
    • -
    • reply: Optional. An uninitialized bson_t populated with the insert result, or NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    Insert documents into collection.

    -

    To insert a single document, see mongoc_collection_insert_one().

    -

    For any document that does not have an “_id” field, a bson_oid_t will be generated locally and added to the document. If you must know the inserted document’s _id, generate it in your code and include it in the document. The _id you generate can be a bson_oid_t or any other non-array BSON type.

    -

    If you pass a non-NULL reply, it is filled out with an “insertedCount” field. If there is a server error then reply may contain a “writeErrors” array and/or a “writeConcernErrors” array (see Bulk Write Operations for examples). The reply must be freed with bson_destroy().

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_one.html deleted file mode 100644 index 3f4645e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_insert_one.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - mongoc_collection_insert_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_insert_one()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_insert_one (mongoc_collection_t *collection,
    -                              const bson_t *document,
    -                              const bson_t *opts,
    -                              bson_t *reply,
    -                              bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function shall insert document into collection.

    -

    To insert an array of documents, see mongoc_collection_insert_many().

    -

    If no _id element is found in document, then a bson_oid_t will be generated locally and added to the document. If you must know the inserted document’s _id, generate it in your code and include it in the document. The _id you generate can be a bson_oid_t or any other non-array BSON type.

    -

    If you pass a non-NULL reply, it is filled out with an “insertedCount” field. If there is a server error then reply contains either a “writeErrors” array with one subdocument or a “writeConcernErrors” array. The reply must be freed with bson_destroy().

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_keys_to_index_string.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_keys_to_index_string.html deleted file mode 100644 index 191f957..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_keys_to_index_string.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_collection_keys_to_index_string() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_keys_to_index_string()

    -
    -

    Synopsis

    -
    char *
    -mongoc_collection_keys_to_index_string (const bson_t *keys);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function returns the canonical stringification of a given key specification. See Creating Indexes.

    -

    It is a programming error to call this function on a non-standard index, such one other than a straight index with ascending and descending.

    -
    -
    -

    Returns

    -

    A string that should be freed with bson_free().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_command_with_opts.html deleted file mode 100644 index f326434..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_command_with_opts.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - mongoc_collection_read_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_read_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_read_command_with_opts (mongoc_collection_t *collection,
    -                                          const bson_t *command,
    -                                          const mongoc_read_prefs_t *read_prefs,
    -                                          const bson_t *opts,
    -                                          bson_t *reply,
    -                                          bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic that is specific to commands that read, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_collection_command_simple().

    -

    Use this function for commands that read such as “count” or “distinct”.

    -

    Read preferences, read concern, and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. The highest-priority sources for these options are listed first in the following table. No write concern is applied.

    - ----- - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernCollation
    read_prefsoptsopts
    TransactionTransaction 
    collection  
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_write_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_write_command_with_opts.html deleted file mode 100644 index e35206a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_read_write_command_with_opts.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - mongoc_collection_read_write_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_read_write_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_read_write_command_with_opts (
    -   mongoc_collection_t *collection,
    -   const bson_t *command,
    -   const mongoc_read_prefs_t *read_prefs /* UNUSED */,
    -   const bson_t *opts,
    -   bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic for commands that both read and write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_collection_command_simple().

    -

    Use this function for commands that both read and write, such as “mapReduce” with an output collection.

    -

    Read and write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts. The highest-priority sources for these options are listed first in the following table. Read preferences are not applied. The write concern is omitted for MongoDB before 3.4.

    - ----- - - - - - - - - - - - - - - - - - - - - -
    Read ConcernWrite ConcernCollation
    optsoptsopts
    TransactionTransaction 
    collectioncollection 
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -

    (The mongoc_read_prefs_t parameter was included by mistake when this function was introduced in libmongoc 1.5. A command that writes must not obey a read preference.)

    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • command: A bson_t containing the command specification.
    • -
    • read_prefs: Ignored.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_remove.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_remove.html deleted file mode 100644 index e0bee48..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_remove.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - mongoc_collection_remove() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_remove()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_remove (mongoc_collection_t *collection,
    -                          mongoc_remove_flags_t flags,
    -                          const bson_t *selector,
    -                          const mongoc_write_concern_t *write_concern,
    -                          bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Superseded by mongoc_collection_delete_one() and mongoc_collection_delete_many().

    -

    This function shall remove documents in the given collection that match selector. The bson selector is not validated, simply passed along as appropriate to the server. As such, compatibility and errors should be validated in the appropriate server documentation.

    -

    If you want to limit deletes to a single document, provide MONGOC_REMOVE_SINGLE_REMOVE in flags.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename.html deleted file mode 100644 index b981963..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_collection_rename() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_rename()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_rename (mongoc_collection_t *collection,
    -                          const char *new_db,
    -                          const char *new_name,
    -                          bool drop_target_before_rename,
    -                          bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • new_db: The name of the new database.
    • -
    • new_name: The new name for the collection.
    • -
    • drop_target_before_rename: If an existing collection matches the new name, drop it before the rename.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    For more information, see mongoc_collection_rename_with_opts(). This function is a thin wrapper, passing NULL in as bson_t parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename_with_opts.html deleted file mode 100644 index 5eabbb1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_rename_with_opts.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - mongoc_collection_rename_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_rename_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_rename_with_opts (mongoc_collection_t *collection,
    -                                    const char *new_db,
    -                                    const char *new_name,
    -                                    bool drop_target_before_rename,
    -                                    const bson_t *opts,
    -                                    bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • new_db: The name of the new database.
    • -
    • new_name: The new name for the collection.
    • -
    • drop_target_before_rename: If an existing collection matches the new name, drop it before the rename.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function is a helper to rename an existing collection on a MongoDB server. The name of the collection will also be updated internally so it is safe to continue using this collection after the rename. Additional operations will occur on renamed collection.

    -

    If no write concern is provided in opts, the collection’s write concern is used.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_replace_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_replace_one.html deleted file mode 100644 index f6528e4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_replace_one.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - mongoc_collection_replace_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_replace_one()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_replace_one (mongoc_collection_t *collection,
    -                               const bson_t *selector,
    -                               const bson_t *replacement,
    -                               const bson_t *opts,
    -                               bson_t *reply,
    -                               bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • selector: A bson_t containing the query to match the document for updating.
    • -
    • replacement: A bson_t containing the replacement document.
    • -
    • reply: Optional. An uninitialized bson_t populated with the update result, or NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function shall replace documents in collection that match selector with replacement.

    -

    If provided, reply will be initialized and populated with the fields matchedCount, modifiedCount, upsertedCount, and optionally upsertedId if applicable. If there is a server error then reply contains either a writeErrors array with one subdocument or a writeConcernErrors array. The reply must be freed with bson_destroy().

    -
    - -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_save.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_save.html deleted file mode 100644 index 45a27aa..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_save.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - mongoc_collection_save() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_save()

    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_collection_insert_one() or -mongoc_collection_replace_one() with “upsert” instead.

    -
    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_save (mongoc_collection_t *collection,
    -                        const bson_t *document,
    -                        const mongoc_write_concern_t *write_concern,
    -                        bson_error_t *error)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_collection_insert_one or
    -                             mongoc_collection_replace_one);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall save a document into collection. If the document has an _id field it will be updated. Otherwise it will be inserted.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_concern.html deleted file mode 100644 index 0f1fd8e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_concern.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_collection_set_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_set_read_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_collection_set_read_concern (mongoc_collection_t *collection,
    -                                    const mongoc_read_concern_t *read_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the read concern to use for operations on collection.

    -

    The default read concern is empty: No readConcern is sent to the server unless explicitly configured.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_prefs.html deleted file mode 100644 index 1e4c46a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_read_prefs.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_set_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_set_read_prefs()

    -
    -

    Synopsis

    -
    void
    -mongoc_collection_set_read_prefs (mongoc_collection_t *collection,
    -                                  const mongoc_read_prefs_t *read_prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the default read preferences to use for operations on collection not specifying a read preference.

    -

    The global default is MONGOC_READ_PRIMARY: if the client is connected to a replica set it reads from the primary, otherwise it reads from the current MongoDB server.

    -

    Please see the MongoDB website for a description of Read Preferences.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_write_concern.html deleted file mode 100644 index 5fb99e6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_set_write_concern.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_collection_set_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_set_write_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_collection_set_write_concern (
    -   mongoc_collection_t *collection,
    -   const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the write concern to use for operations on collection.

    -

    The default write concern is MONGOC_WRITE_CONCERN_W_DEFAULT: the driver blocks awaiting basic acknowledgement of write operations from MongoDB. This is the correct write concern for the great majority of applications.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_stats.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_stats.html deleted file mode 100644 index 18afe0f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_stats.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - mongoc_collection_stats() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_stats()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_stats (mongoc_collection_t *collection,
    -                         const bson_t *options,
    -                         bson_t *reply,
    -                         bson_error_t *error) BSON_GNUC_DEPRECATED;
    -
    -
    -
    -
    -

    Deprecated

    -

    This helper function is deprecated and should not be used in new code. Run the collStats command directly with mongoc_client_read_command_with_opts() instead.

    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • options: An optional bson_t containing extra options to pass to the collStats command.
    • -
    • reply: An uninitialized bson_t to store the result.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    Run the collStats command to retrieve statistics about the collection.

    -

    The command uses the mongoc_read_prefs_t set on collection.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    reply is always initialized and must be freed with bson_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_t.html deleted file mode 100644 index f57caae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_t.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - mongoc_collection_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_t

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct _mongoc_collection_t mongoc_collection_t;
    -
    -
    -

    mongoc_collection_t provides access to a MongoDB collection. This handle is useful for actions for most CRUD operations, I.e. insert, update, delete, find, etc.

    -
    -
    -

    Read Preferences and Write Concerns

    -

    Read preferences and write concerns are inherited from the parent client. They can be overridden by set_* commands if so desired.

    -
    -
    -

    Functions

    -
    - -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update.html deleted file mode 100644 index 602d52f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - mongoc_collection_update() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_update()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_update (mongoc_collection_t *collection,
    -                          mongoc_update_flags_t flags,
    -                          const bson_t *selector,
    -                          const bson_t *update,
    -                          const mongoc_write_concern_t *write_concern,
    -                          bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Superseded by mongoc_collection_update_one(), mongoc_collection_update_many(), and mongoc_collection_replace_one().

    -

    This function shall update documents in collection that match selector.

    -

    By default, updates only a single document. Set flags to MONGOC_UPDATE_MULTI_UPDATE to update multiple documents.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_many.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_many.html deleted file mode 100644 index dbeef70..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_many.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - mongoc_collection_update_many() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_update_many()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_update_many (mongoc_collection_t *collection,
    -                               const bson_t *selector,
    -                               const bson_t *update,
    -                               const bson_t *opts,
    -                               bson_t *reply,
    -                               bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • selector: A bson_t containing the query to match documents for updating.
    • -
    • update: A bson_t containing the update to perform.
    • -
    • reply: Optional. An uninitialized bson_t populated with the update result, or NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function updates all documents in collection that match selector.

    -

    To update at most one document see mongoc_collection_update_one().

    -

    If you pass a non-NULL reply, it is filled out with fields matchedCount, modifiedCount, and optionally upsertedId if applicable. If there is a server error then reply contains either a “writeErrors” array with one subdocument or a “writeConcernErrors” array. The reply must be freed with bson_destroy().

    -
    -
    -

    See Also

    -

    MongoDB update command documentation for more information on the update options.

    -

    mongoc_collection_update_one()

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_one.html deleted file mode 100644 index d016cd5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_update_one.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - mongoc_collection_update_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_update_one()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_update_one (mongoc_collection_t *collection,
    -                              const bson_t *selector,
    -                              const bson_t *update,
    -                              const bson_t *opts,
    -                              bson_t *reply,
    -                              bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • selector: A bson_t containing the query to match the document for updating.
    • -
    • update: A bson_t containing the update to perform.
    • -
    • reply: Optional. An uninitialized bson_t populated with the update result, or NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function updates at most one document in collection that matches selector.

    -

    To update multiple documents see mongoc_collection_update_many().

    -

    If you pass a non-NULL reply, it is filled out with fields matchedCount, modifiedCount, and optionally upsertedId if applicable. If there is a server error then reply contains either a “writeErrors” array with one subdocument or a “writeConcernErrors” array. The reply must be freed with bson_destroy().

    -
    - -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Example

    -
    -
    example-update.c
    -
    #include "mongoc/mongoc.h"
    -
    -int
    -main (int argc, char **argv)
    -{
    -   bson_t *to_insert = BCON_NEW ("_id", BCON_INT32 (1));
    -   bson_t *selector = BCON_NEW ("_id", "{", "$gt", BCON_INT32 (0), "}");
    -   bson_t *update = BCON_NEW ("$set", "{", "x", BCON_INT32 (1), "}");
    -   const bson_t *next_doc;
    -   char *to_str;
    -   bson_error_t error = {0};
    -   mongoc_cursor_t *cursor;
    -   mongoc_client_t *client;
    -   mongoc_collection_t *coll;
    -   const char *uri_string = "mongodb://localhost:27017/?appname=example-update";
    -   mongoc_uri_t *uri = mongoc_uri_new_with_error (uri_string, &error);
    -
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   coll = mongoc_client_get_collection (client, "db", "example_coll");
    -
    -   mongoc_client_set_error_api (client, 2);
    -   /* insert a document */
    -   if (!mongoc_collection_insert_one (coll, to_insert, NULL, NULL, &error)) {
    -      fprintf (stderr, "insert failed: %s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   if (!mongoc_collection_update_one (
    -          coll, selector, update, NULL, NULL, &error)) {
    -      fprintf (stderr, "update failed: %s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   to_str = bson_as_relaxed_extended_json (to_insert, NULL);
    -   printf ("inserted: %s\n", to_str);
    -   bson_free (to_str);
    -
    -   cursor = mongoc_collection_find_with_opts (coll, selector, NULL, NULL);
    -   BSON_ASSERT (mongoc_cursor_next (cursor, &next_doc));
    -   printf ("after update, collection has the following document:\n");
    -
    -   to_str = bson_as_relaxed_extended_json (next_doc, NULL);
    -   printf ("%s\n", to_str);
    -   bson_free (to_str);
    -
    -   BSON_ASSERT (mongoc_collection_drop (coll, NULL));
    -
    -   bson_destroy (to_insert);
    -   bson_destroy (update);
    -   bson_destroy (selector);
    -   mongoc_collection_destroy (coll);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_validate.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_validate.html deleted file mode 100644 index d462d8d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_validate.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - mongoc_collection_validate() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_validate()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_validate (mongoc_collection_t *collection,
    -                            const bson_t *options,
    -                            bson_t *reply,
    -                            bson_error_t *error);
    -
    -
    -
    -
    -

    Deprecated

    -

    This helper function is deprecated and should not be used in new code. Run the validate command directly with mongoc_client_read_command_with_opts() instead.

    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function is a helper function to execute the validate MongoDB command.

    -

    Currently, the only supported options are full, which is a boolean and scandata, also a boolean.

    -

    See the MongoDB documentation for more information on this command.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    reply is always initialized if it’s not NULL and must be destroyed with bson_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_watch.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_watch.html deleted file mode 100644 index 4b1cc39..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_watch.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - mongoc_collection_watch() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_watch()

    -
    -

    Synopsis

    -
    mongoc_change_stream_t*
    -mongoc_collection_watch (const mongoc_collection_t *coll,
    -                         const bson_t *pipeline,
    -                         const bson_t *opts);
    -
    -
    -

    A helper function to create a change stream. It is preferred to call this -function over using a raw aggregation to create a change stream.

    -

    This function uses the read preference and read concern of the collection. If -the change stream needs to re-establish connection, the same read preference -will be used. This may happen if the change stream encounters a resumable error.

    -
    -

    Warning

    -

    A change stream is only supported with majority read concern.

    -
    -
    -
    -

    Parameters

    -
      -
    • coll: A mongoc_collection_t specifying the collection which the change stream listens to.
    • -
    • pipeline: A bson_t representing an aggregation pipeline appended to the change stream. This may be an empty document.
    • -
    • opts: A bson_t containing change stream options or NULL.
    • -
    -

    opts may be NULL or a document consisting of any subset of the following -parameters:

    -
      -
    • batchSize An int32 representing number of documents requested to be returned on each call to mongoc_change_stream_next()
    • -
    • resumeAfter A Document representing the logical starting point of the change stream. The _id field of any change received from a change stream can be used here.
    • -
    • startAtOperationTime A Timestamp. The change stream only provides changes that occurred at or after the specified timestamp. Any command run against the server will return an operation time that can be used here.
    • -
    • maxAwaitTimeMS An int64 representing the maximum amount of time a call to mongoc_change_stream_next() will block waiting for data
    • -
    • collation A Collation Document
    • -
    -
    -
    -

    Returns

    -

    A newly allocated mongoc_change_stream_t which must be freed with -mongoc_change_stream_destroy() when no longer in use. The returned -mongoc_change_stream_t is never NULL. If there is an error, it can -be retrieved with mongoc_change_stream_error_document(), and subsequent -calls to mongoc_change_stream_next() will return false.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_write_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_write_command_with_opts.html deleted file mode 100644 index ddeea7b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_collection_write_command_with_opts.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - mongoc_collection_write_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_collection_write_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_collection_write_command_with_opts (mongoc_collection_t *collection,
    -                                           const bson_t *command,
    -                                           const bson_t *opts,
    -                                           bson_t *reply,
    -                                           bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic that is specific to commands that write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_collection_command_simple().

    -

    Use this function for commands that write such as “drop” or “createRole” (but not for “insert”, “update”, or “delete”, see Basic Write Operations). Write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts. The highest-priority sources for these options are listed first in the following table. The write concern is omitted for MongoDB before 3.4.

    - ---- - - - - - - - - - - - - - - - - -
    Write ConcernCollation
    optsopts
    Transaction 
    collection 
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    -
      -
    • collection: A mongoc_collection_t.
    • -
    • command: A bson_t containing the command specification.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Basic Write Operations

    -

    Do not use this function to call the basic write commands “insert”, “update”, and “delete”. Those commands require special logic not implemented in mongoc_collection_write_command_with_opts. For basic write operations use CRUD functions such as mongoc_collection_insert_one() and the others described in the CRUD tutorial, or use the Bulk API.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_clone.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_clone.html deleted file mode 100644 index 51c841b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_clone.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_cursor_clone() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_clone()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_cursor_clone (const mongoc_cursor_t *cursor)
    -   BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall create a copy of a mongoc_cursor_t. The cloned cursor will be reset to the beginning of the query, and therefore the query will be re-executed on the MongoDB server when mongoc_cursor_next() is called.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_cursor_t that should be freed with mongoc_cursor_destroy() when no longer in use.

    -
    -

    Warning

    -

    Failure to handle the result of this function is a programming error.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_current.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_current.html deleted file mode 100644 index 1470e26..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_current.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_cursor_current() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_current()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_cursor_current (const mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the cursors current document or NULL if there has been an error.

    -
    -
    -

    Returns

    -

    A bson_t that should not be modified or freed or NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_destroy.html deleted file mode 100644 index 1beadfc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_cursor_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_cursor_destroy (mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Frees a mongoc_cursor_t and releases all associated resources. If a server-side cursor has been allocated, it will be released as well. Does nothing if cursor is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error.html deleted file mode 100644 index ec4d194..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_cursor_error() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_error()

    -
    -

    Synopsis

    -
    bool
    -mongoc_cursor_error (mongoc_cursor_t *cursor, bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function checks to see if an error has occurred while iterating the cursor.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    false if no error has occurred, otherwise true and error is set.

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error_document.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error_document.html deleted file mode 100644 index 85e0dd8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_error_document.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - mongoc_cursor_error_document() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_error_document()

    -
    -

    Synopsis

    -
    bool
    -mongoc_cursor_error_document (mongoc_cursor_t *cursor,
    -                              bson_error_t *error,
    -                              const bson_t **reply);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function checks to see if an error has occurred while iterating the cursor.

    -

    If an error occurred client-side, for example if there was a network error or timeout, or the cursor was created with invalid parameters, then reply is set to an empty BSON document. If an error occurred server-side, reply is set to the server’s reply document with information about the error.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error and reply parameters.

    -
    -
    -

    Returns

    -

    False if no error has occurred, otherwise true and error is set.

    -

    If the function returns true and reply is not NULL, then reply is set to a pointer to a BSON document, which is either empty or the server’s error response. The document is invalid after the cursor is freed with mongoc_cursor_destroy().

    -
    -
    -

    Example

    -

    This example shows the difference between a client-side and server-side error. If the client cannot connect to the server, for example, the error message includes “No suitable servers found” and reply is set to an empty BSON document.

    -

    On the other hand, if the client connects to the server successfully and attempts to execute an invalid query, the error message comes from the server and reply is set to the server’s reply document, with fields errmsg and code.

    -
    void
    -run_query (const char *uri_str, const bson_t *query)
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   mongoc_cursor_t *cursor;
    -   const bson_t *doc;
    -   bson_error_t error;
    -   const bson_t *reply;
    -   char *str;
    -
    -   client = mongoc_client_new (uri_str);
    -
    -   mongoc_client_set_error_api (client, 2);
    -
    -   collection = mongoc_client_get_collection (client, "db", "collection");
    -   cursor = mongoc_collection_find_with_opts (
    -      collection,
    -      query,
    -      NULL,  /* additional options */
    -      NULL); /* read prefs, NULL for default */
    -
    -   /* this loop is never run: mongoc_cursor_next immediately returns false */
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -   }
    -
    -   if (mongoc_cursor_error_document (cursor, &error, &reply)) {
    -      str = bson_as_json (reply, NULL);
    -      fprintf (stderr, "Cursor Failure: %s\nReply: %s\n", error.message, str);
    -      bson_free (str);
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   bson_t *good_query;
    -   bson_t *bad_query;
    -
    -   mongoc_init ();
    -
    -   /* find documents matching the query {"x": 1} */
    -   good_query = BCON_NEW ("x", BCON_INT64 (1));
    -
    -   /* Cause a network error. This will print an error and empty reply document:
    -    *
    -    * Cursor Failure: No suitable servers found (`serverSelectionTryOnce` set):
    -    *     [Failed to resolve 'fake-domain']
    -    *
    -    * Reply: { }
    -    *
    -    */
    -   run_query ("mongodb://fake-domain/?appname=cursor-example", good_query);
    -
    -   /* invalid: {"x": {"$badOperator": 1}} */
    -   bad_query = BCON_NEW ("x", "{", "$badOperator", BCON_INT64 (1), "}");
    -
    -   /* Cause a server error. This will print an error and server reply document:
    -    *
    -    * Cursor Failure: unknown operator: $badOperator
    -    *
    -    * Reply:
    -    * {"ok": 0.0,
    -    *  "errmsg":"unknown operator: $badOperator",
    -    *  "code": 2,
    -    *  "codeName":"BadValue"
    -    * }
    -    *
    -    */
    -   run_query ("mongodb://localhost/?appname=cursor-example", bad_query);
    -
    -   bson_destroy (good_query);
    -   bson_destroy (bad_query);
    -
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -
    -

    See Also:

    -

    -

    mongoc_cursor_error

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_batch_size.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_batch_size.html deleted file mode 100644 index a9e92f6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_batch_size.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_cursor_get_batch_size() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_get_batch_size()

    -
    -

    Synopsis

    -
    uint32_t
    -mongoc_cursor_get_batch_size (const mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Retrieve the cursor’s batch size, the maximum number of documents returned per round trip to the server. A batch size of zero means the cursor accepts the server’s maximum batch size.

    -

    See Cursor Batches in the MongoDB Manual.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_hint.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_hint.html deleted file mode 100644 index 2369896..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_hint.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_cursor_get_hint() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_get_hint()

    -
    -

    Synopsis

    -
    uint32_t
    -mongoc_cursor_get_hint (const mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Retrieves the opaque id of the server used for the operation.

    -

    (The function name includes the old term “hint” for the sake of backward compatibility, but we now call this number a “server id”.)

    -

    This number is zero until the driver actually uses a server when executing the find operation or mongoc_cursor_set_hint() is called.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_host.html deleted file mode 100644 index c062612..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_host.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_cursor_get_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_get_host()

    -
    -

    Synopsis

    -
    void
    -mongoc_cursor_get_host (mongoc_cursor_t *cursor, mongoc_host_list_t *host);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the MongoDB host that the cursor is communicating with in the host out parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_id.html deleted file mode 100644 index 7e5b801..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_id.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_cursor_get_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_get_id()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_cursor_get_id (const mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Retrieves the cursor id used by the server to track the cursor.

    -

    This number is zero until the driver actually uses a server when executing the query, and after it has fetched all results from the server.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_limit.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_limit.html deleted file mode 100644 index 2b74e6f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_limit.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_cursor_get_limit() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_get_limit()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_cursor_get_limit (mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Return the value set with mongoc_cursor_set_limit() or mongoc_collection_find().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_max_await_time_ms.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_max_await_time_ms.html deleted file mode 100644 index c5cd071..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_get_max_await_time_ms.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_cursor_get_max_await_time_ms() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_get_max_await_time_ms()

    -
    -

    Synopsis

    -
    uint32_t
    -mongoc_cursor_get_max_await_time_ms (mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Retrieve the value set with mongoc_cursor_set_max_await_time_ms().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_is_alive.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_is_alive.html deleted file mode 100644 index 2550cb4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_is_alive.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_cursor_is_alive() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_is_alive()

    -
    -

    Synopsis

    -
    bool
    -mongoc_cursor_is_alive (const mongoc_cursor_t *cursor)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_cursor_more);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Deprecated

    -

    This function is superseded by mongoc_cursor_more(), which has equivalent behavior.

    -
    -
    -

    Returns

    -

    See mongoc_cursor_more().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_more.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_more.html deleted file mode 100644 index 621cf73..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_more.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_cursor_more() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_more()

    -
    -

    Synopsis

    -
    bool
    -mongoc_cursor_more (mongoc_cursor_t *cursor);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall indicate if there is potentially more data to be read from the cursor. This is only useful with tailable cursors. Use mongoc_cursor_next() for regular cursors.

    -

    Details: mongoc_cursor_more is unreliable because it does not contact the server to see if there are actually more documents in the result set. It simply returns true if the cursor has not begun, or if it has begun and there are buffered documents in the client-side cursor, or if it has begun and the server has not yet told the cursor it is completely iterated.

    -

    This is unreliable with regular queries because it returns true for a new cursor before iteration, even if the cursor will match no documents. It is also true if the collection has been dropped on the server since the previous fetch, or if the cursor has finished its final batch and the next batch will be empty.

    -
    -
    -

    Returns

    -

    true if the cursor has locally-buffered documents, or if a round-trip to the server might fetch additional documents.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply.html deleted file mode 100644 index 3914f95..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - mongoc_cursor_new_from_command_reply() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_new_from_command_reply()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_cursor_new_from_command_reply (mongoc_client_t *client,
    -                                      bson_t *reply,
    -                                      uint32_t server_id);
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_cursor_new_from_command_reply_with_opts);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_cursor_new_from_command_reply_with_opts() instead.

    -

    When migrating from the deprecated mongoc_cursor_new_from_command_reply() to mongoc_cursor_new_from_command_reply_with_opts(), -note that options previously passed to the reply argument (e.g. “batchSize”) must instead be provided in the opts argument.

    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • reply: The reply to a command, such as “aggregate”, “find”, or “listCollections”, that returns a cursor document. The reply is destroyed by mongoc_cursor_new_from_command_reply and must not be accessed afterward.
    • -
    • server_id: The opaque id of the server used to execute the command.
    • -
    -
    -
    -

    Description

    -

    Some MongoDB commands return a “cursor” document. For example, given an “aggregate” command:

    -
    { "aggregate" : "collection", "pipeline" : [], "cursor" : {}}
    -
    -
    -

    The server replies:

    -
    {
    -   "cursor" : {
    -      "id" : 1234,
    -      "ns" : "db.collection",
    -      "firstBatch" : [ ]
    -   },
    -   "ok" : 1
    -}
    -
    -
    -

    mongoc_cursor_new_from_command_reply is a low-level function that initializes a mongoc_cursor_t from such a reply. Additional options such as “tailable” or “awaitData” can be included in the reply.

    -

    When synthesizing a completed cursor response that has no more batches (i.e. with cursor id 0), set server_id to 0 as well.

    -

    Use this function only for building a language driver that wraps the C Driver. When writing applications in C, higher-level functions such as mongoc_collection_aggregate() are more appropriate, and ensure compatibility with a range of MongoDB versions.

    -
    -
    -

    Returns

    -

    A mongoc_cursor_t. On failure, the cursor’s error is set. Check for failure with mongoc_cursor_error().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply_with_opts.html deleted file mode 100644 index 37b92f7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_new_from_command_reply_with_opts.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - mongoc_cursor_new_from_command_reply_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_new_from_command_reply_with_opts()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_cursor_new_from_command_reply_with_opts (mongoc_client_t *client,
    -                                                bson_t *reply,
    -                                                const bson_t *opts);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • client: A mongoc_client_t.
    • -
    • reply: The reply to a command, such as “aggregate”, “find”, or “listCollections”, that returns a cursor document. The reply is destroyed by mongoc_cursor_new_from_command_reply_with_opts and must not be accessed afterward.
    • -
    • opts: A bson_t.
    • -
    -

    opts may be NULL or a BSON document with additional options, which have the same meaning for this function as for mongoc_collection_find_with_opts():

    -
      -
    • awaitData
    • -
    • batchSize
    • -
    • limit
    • -
    • maxAwaitTimeMS
    • -
    • serverId
    • -
    • sessionId
    • -
    • skip
    • -
    • tailable
    • -
    -
    -
    -

    Description

    -

    Some MongoDB commands return a “cursor” document. For example, given an “aggregate” command:

    -
    { "aggregate" : "collection", "pipeline" : [], "cursor" : {}}
    -
    -
    -

    The server replies:

    -
    {
    -   "cursor" : {
    -      "id" : 1234,
    -      "ns" : "db.collection",
    -      "firstBatch" : [ ]
    -   },
    -   "ok" : 1
    -}
    -
    -
    -

    mongoc_cursor_new_from_command_reply_with_opts is a low-level function that initializes a mongoc_cursor_t from such a reply.

    -

    Use this function only for building a language driver that wraps the C Driver. When writing applications in C, higher-level functions such as mongoc_collection_aggregate() are more appropriate, and ensure compatibility with a range of MongoDB versions.

    -
    -
    -

    Returns

    -

    A mongoc_cursor_t. On failure, the cursor’s error is set. Check for failure with mongoc_cursor_error().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_next.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_next.html deleted file mode 100644 index 8be96f4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_next.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - mongoc_cursor_next() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_next()

    -
    -

    Synopsis

    -
    bool
    -mongoc_cursor_next (mongoc_cursor_t *cursor, const bson_t **bson);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall iterate the underlying cursor, setting bson to the next document.

    -

    This function is a blocking function.

    -
    -
    -

    Returns

    -

    This function returns true if a valid bson document was read from the cursor. Otherwise, false if there was an error or the cursor was exhausted.

    -

    Errors can be determined with the mongoc_cursor_error() function.

    -
    -
    -

    Lifecycle

    -

    The bson objects set in this function are ephemeral and good until the next call. This means that you must copy the returned bson if you wish to retain it beyond the lifetime of a single call to mongoc_cursor_next().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_batch_size.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_batch_size.html deleted file mode 100644 index e931bdc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_batch_size.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_cursor_set_batch_size() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_set_batch_size()

    -
    -

    Synopsis

    -
    void
    -mongoc_cursor_set_batch_size (mongoc_cursor_t *cursor, uint32_t batch_size);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • cursor: A mongoc_cursor_t.
    • -
    • batch_size: The requested number of documents per batch.
    • -
    -
    -
    -

    Description

    -

    Limits the number of documents returned in one batch. Each batch requires a round trip to the server. If the batch size is zero, the cursor uses the server-defined maximum batch size.

    -

    See Cursor Batches in the MongoDB Manual.

    -

    This is not applicable to all cursors. Calling mongoc_cursor_set_batch_size() on a cursor returned by mongoc_client_find_databases_with_opts(), mongoc_database_find_collections_with_opts(), or mongoc_collection_find_indexes_with_opts() will not change the results.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_hint.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_hint.html deleted file mode 100644 index 845cecb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_hint.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_cursor_set_hint() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_set_hint()

    -
    -

    Synopsis

    -
    bool
    -mongoc_cursor_set_hint (mongoc_cursor_t *cursor, uint32_t server_id);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • cursor: A mongoc_cursor_t.
    • -
    • server_id: An opaque id identifying the server to use.
    • -
    -
    -
    -

    Description

    -

    Specifies which server to use for the operation. This function has an effect only if called before the find operation is executed.

    -

    (The function name includes the old term “hint” for the sake of backward compatibility, but we now call this number a “server id”.)

    -

    Use mongoc_cursor_set_hint only for building a language driver that wraps the C Driver. When writing applications in C, leave the server id unset and allow the driver to choose a suitable server from the find operation’s read preference.

    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_limit.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_limit.html deleted file mode 100644 index 41718af..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_limit.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_cursor_set_limit() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_set_limit()

    -
    -

    Synopsis

    -
    bool
    -mongoc_cursor_set_limit (mongoc_cursor_t *cursor, int64_t limit);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • cursor: A mongoc_cursor_t.
    • -
    • limit: The maximum number of documents to retrieve for this query.
    • -
    -
    -
    -

    Description

    -

    Limits the number of documents in the result set.

    -

    This function is useful for setting the limit on a cursor after the cursor is created, but before any calls to mongoc_cursor_next(). It can also be used to pass a negative limit: The limit parameter to mongoc_cursor_set_limit is signed, although for backward-compatibility reasons the limit parameter to mongoc_collection_find() is not.

    -

    Calling this function after mongoc_cursor_next() has no effect.

    -

    This is not applicable to all cursors. Calling mongoc_cursor_set_limit() on a cursor returned by mongoc_client_find_databases_with_opts(), mongoc_database_find_collections_with_opts(), or mongoc_collection_find_indexes_with_opts() will not change the results.

    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and leaves the limit unchanged.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_max_await_time_ms.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_max_await_time_ms.html deleted file mode 100644 index be5c3ea..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_set_max_await_time_ms.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_cursor_set_max_await_time_ms() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_set_max_await_time_ms()

    -
    -

    Synopsis

    -
    void
    -mongoc_cursor_set_max_await_time_ms (mongoc_cursor_t *cursor,
    -                                     uint32_t max_await_time_ms);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • cursor: A mongoc_cursor_t.
    • -
    • max_await_time_ms: A timeout in milliseconds.
    • -
    -
    -
    -

    Description

    -

    The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. Only applies if the cursor is created from mongoc_collection_find_with_opts() with “tailable” and “awaitData” options, and the server is MongoDB 3.2 or later. See the documentation for maxTimeMS and the “getMore” command.

    -

    The max_await_time_ms cannot be changed after the first call to mongoc_cursor_next().

    -

    This is not applicable to all cursors. Calling mongoc_cursor_set_batch_size() on a cursor returned by mongoc_client_find_databases_with_opts(), mongoc_database_find_collections_with_opts(), or mongoc_collection_find_indexes_with_opts() will not change the results.

    -

    Note: although max_await_time_ms is a uint32_t, it is possible to set it as a uint64_t through the options arguments in some cursor returning functions like mongoc_collection_find_with_opts().

    -
    -
    -

    See Also

    -

    Tailable Cursors.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_t.html deleted file mode 100644 index 01a2dac..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_cursor_t.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - - mongoc_cursor_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_cursor_t

    -

    Client-side cursor abstraction

    -
    -

    Synopsis

    -
    typedef struct _mongoc_cursor_t mongoc_cursor_t;
    -
    -
    -

    mongoc_cursor_t provides access to a MongoDB query cursor. -It wraps up the wire protocol negotiation required to initiate a query and retrieve an unknown number of documents.

    -

    Common cursor operations include:

    - -

    Cursors are lazy, meaning that no connection is established and no network traffic occurs until the first call to mongoc_cursor_next().

    -
    -
    -

    Thread Safety

    -

    mongoc_cursor_t is NOT thread safe. It may only be used from within the thread in which it was created.

    -
    -
    -

    Example

    -
    -
    Query MongoDB and iterate results
    -
    /* gcc example-client.c -o example-client $(pkg-config --cflags --libs
    - * libmongoc-1.0) */
    -
    -/* ./example-client [CONNECTION_STRING [COLLECTION_NAME]] */
    -
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   mongoc_cursor_t *cursor;
    -   bson_error_t error;
    -   const bson_t *doc;
    -   const char *collection_name = "test";
    -   bson_t query;
    -   char *str;
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=client-example";
    -   mongoc_uri_t *uri;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   if (argc > 2) {
    -      collection_name = argv[2];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -
    -   bson_init (&query);
    -
    -#if 0
    -   bson_append_utf8 (&query, "hello", -1, "world", -1);
    -#endif
    -
    -   collection = mongoc_client_get_collection (client, "test", collection_name);
    -   cursor = mongoc_collection_find_with_opts (
    -      collection,
    -      &query,
    -      NULL,  /* additional options */
    -      NULL); /* read prefs, NULL for default */
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      fprintf (stdout, "%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "Cursor Failure: %s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   bson_destroy (&query);
    -   mongoc_cursor_destroy (cursor);
    -   mongoc_collection_destroy (collection);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_add_user.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_add_user.html deleted file mode 100644 index eed9ad0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_add_user.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - mongoc_database_add_user() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_add_user()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_add_user (mongoc_database_t *database,
    -                          const char *username,
    -                          const char *password,
    -                          const bson_t *roles,
    -                          const bson_t *custom_data,
    -                          bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • username: The name of the user.
    • -
    • password: The cleartext password for the user.
    • -
    • roles: An optional bson_t for roles.
    • -
    • custom_data: A optional bson_t for extra data.
    • -
    • error: A location for a bson_error_t or NULL.
    • -
    -

    This function shall create a new user with access to database.

    -
    -

    Warning

    -

    Do not call this function without TLS.

    -
    -
    -
    -

    Errors

    -

    Errors are returned through the error parameter and can include socket or other server side failures.

    -
    -
    -

    Returns

    -

    Returns true if the user was successfully added. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command.html deleted file mode 100644 index 7c352d5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - mongoc_database_command() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_command()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_database_command (mongoc_database_t *database,
    -                         mongoc_query_flags_t flags,
    -                         uint32_t skip,
    -                         uint32_t limit,
    -                         uint32_t batch_size,
    -                         const bson_t *command,
    -                         const bson_t *fields,
    -                         const mongoc_read_prefs_t *read_prefs);
    -
    -
    -

    This function is superseded by mongoc_database_command_with_opts(), mongoc_database_read_command_with_opts(), mongoc_database_write_command_with_opts(), and mongoc_database_read_write_command_with_opts().

    -
    -
    -

    Description

    -

    This function creates a cursor which will execute the command when mongoc_cursor_next() is called on it. The database’s read preference, read concern, and write concern are not applied to the command, and mongoc_cursor_next() will not check the server response for a write concern error or write concern timeout.

    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • flags: A mongoc_query_flags_t.
    • -
    • skip: The number of documents to skip on the server.
    • -
    • limit: The maximum number of documents to return from the cursor.
    • -
    • batch_size: Attempt to batch results from the server in groups of batch_size documents.
    • -
    • command: A bson_t containing the command.
    • -
    • fields: An optional bson_t containing the fields to return. NULL for all fields.
    • -
    • read_prefs: An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.
    • -
    -
    -
    -

    Returns

    -

    A mongoc_cursor_t.

    -

    The cursor should be freed with mongoc_cursor_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_simple.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_simple.html deleted file mode 100644 index e8890dd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_simple.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_database_command_simple() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_command_simple()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_command_simple (mongoc_database_t *database,
    -                                const bson_t *command,
    -                                const mongoc_read_prefs_t *read_prefs,
    -                                bson_t *reply,
    -                                bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • command: A bson_t containing the command.
    • -
    • read_prefs: An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.
    • -
    • reply: A location to store the commands first result document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    This is a simplified interface to mongoc_database_command() that returns the first result document. The database’s read preference, read concern, and write concern are not applied to the command. The parameter reply is initialized even upon failure to simplify memory management.

    -
    -
    -

    Errors

    -

    Errors are propagated through the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    This function does not check the server response for a write concern error or write concern timeout.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_with_opts.html deleted file mode 100644 index 17184d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_command_with_opts.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - mongoc_database_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_command_with_opts (
    -   mongoc_database_t *database,
    -   const bson_t *command,
    -   const mongoc_read_prefs_t *read_prefs,
    -   const bson_t *opts,
    -   bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -

    Execute a command on the server, interpreting opts according to the MongoDB server version. To send a raw command to the server without any of this logic, use mongoc_client_command_simple().

    -

    Read preferences, read and write concern, and collation can be overridden by various sources. The highest-priority sources for these options are listed first:

    - ------ - - - - - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernWrite ConcernCollation
    read_prefsoptsoptsopts
    TransactionTransactionTransaction 
    database   
    -

    In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. -See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    The reply is not parsed for a write concern timeout or write concern error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_copy.html deleted file mode 100644 index 6998850..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_copy.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_database_copy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_copy()

    -
    -

    Synopsis

    -
    mongoc_database_t *
    -mongoc_database_copy (mongoc_database_t *database);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Performs a deep copy of the database struct and its configuration. Useful if you intend to call mongoc_database_set_write_concern(), mongoc_database_set_read_prefs(), or mongoc_database_set_read_concern(), and want to preserve an unaltered copy of the struct.

    -

    This function does not copy the contents of the database on the MongoDB server; use the copydb command for that purpose.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_database_t that should be freed with mongoc_database_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_create_collection.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_create_collection.html deleted file mode 100644 index 242a364..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_create_collection.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - mongoc_database_create_collection() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_create_collection()

    -
    -

    Synopsis

    -
    mongoc_collection_t *
    -mongoc_database_create_collection (mongoc_database_t *database,
    -                                   const char *name,
    -                                   const bson_t *opts,
    -                                   bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • name: The name of the new collection.
    • -
    • opts: An optional bson_t for opts to the create command.
    • -
    • error: A location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    This function creates a mongoc_collection_t from the given mongoc_database_t.

    -

    If no write concern is provided in opts, the database’s write concern is used.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    This function returns a newly allocated mongoc_collection_t upon success, NULL upon failure and error is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_destroy.html deleted file mode 100644 index afbc49e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_destroy.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - mongoc_database_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_database_destroy (mongoc_database_t *database);
    -
    -
    -

    Releases all resources associated with database, including freeing the structure. Does nothing if database is NULL.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop.html deleted file mode 100644 index 5f4d0a6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_database_drop() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_drop()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_drop (mongoc_database_t *database, bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    For more information, see mongoc_database_drop_with_opts(). This function is a thin wrapper, passing NULL in as bson_t parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop_with_opts.html deleted file mode 100644 index c44cb3e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_drop_with_opts.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - mongoc_database_drop_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_drop_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_drop_with_opts (mongoc_database_t *database,
    -                                const bson_t *opts,
    -                                bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -
    -
    -

    Description

    -

    This function attempts to drop a database on the MongoDB server.

    -

    If no write concern is provided in opts, the database’s write concern is used.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections.html deleted file mode 100644 index 09014d2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - mongoc_database_find_collections() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_find_collections()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_database_find_collections (mongoc_database_t *database,
    -                                  const bson_t *filter,
    -                                  bson_error_t *error)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_database_find_collections_with_opts);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_database_find_collections_with_opts() instead.

    -
    -
    -

    Description

    -

    Fetches a cursor containing documents, each corresponding to a collection on this database.

    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • filter: A matcher used by the server to filter the returned collections. May be NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A cursor where each result corresponds to the server’s representation of a collection in this database.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections_with_opts.html deleted file mode 100644 index 4bbc377..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_find_collections_with_opts.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - mongoc_database_find_collections_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_find_collections_with_opts()

    -
    -

    Synopsis

    -
    mongoc_cursor_t *
    -mongoc_database_find_collections_with_opts (mongoc_database_t *database,
    -                                            const bson_t *opts);
    -
    -
    -

    Fetches a cursor containing documents, each corresponding to a collection on this database.

    -

    To get collection names only, use mongoc_database_get_collection_names_with_opts().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -

    For a list of all options, see the MongoDB Manual entry on the listCollections command.

    -
    -
    -

    Errors

    -

    Use mongoc_cursor_error() on the returned cursor to check for errors.

    -
    -
    -

    Returns

    -

    A cursor where each result corresponds to the server’s representation of a collection in this database.

    -

    The cursor functions mongoc_cursor_set_limit(), mongoc_cursor_set_batch_size(), and mongoc_cursor_set_max_await_time_ms() have no use on the returned cursor.

    -
    -
    -

    Examples

    -
    {
    -   bson_t opts = BSON_INITIALIZER;
    -   bson_t name_filter;
    -   const bson_t *doc;
    -   bson_iter_t iter;
    -   bson_error_t error;
    -
    -   BSON_APPEND_DOCUMENT_BEGIN (&opts, "filter", &name_filter);
    -   /* find collections with names like "abbbbc" */
    -   BSON_APPEND_REGEX (&name_filter, "name", "ab+c", NULL);
    -   bson_append_document_end (&opts, &name_filter);
    -
    -   cursor = mongoc_database_find_collections_with_opts (database, &opts);
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      bson_iter_init_find (&iter, doc, "name");
    -      printf ("found collection: %s\n", bson_iter_utf8 (&iter, NULL));
    -   }
    -
    -   if (mongoc_cursor_error (cursor, &error))
    -      fprintf (stderr, "%s\n", error.msg);
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -   bson_destroy (&opts);
    -}
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection.html deleted file mode 100644 index 704aa1b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - mongoc_database_get_collection() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_get_collection()

    -
    -

    Synopsis

    -
    mongoc_collection_t *
    -mongoc_database_get_collection (mongoc_database_t *database, const char *name);
    -
    -
    -

    Allocates a new mongoc_collection_t structure for the collection named name in database.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_collection_t that should be freed with mongoc_collection_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names.html deleted file mode 100644 index 174e3f5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - mongoc_database_get_collection_names() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_get_collection_names()

    -
    -

    Synopsis

    -
    char **
    -mongoc_database_get_collection_names (mongoc_database_t *database,
    -                                      bson_error_t *error);
    -
    -
    -
    -
    -

    Deprecated

    -

    This function is deprecated and should not be used in new code.

    -

    Please use mongoc_database_get_collection_names_with_opts() instead.

    -
    -
    -

    Description

    -

    Fetches a NULL terminated array of NULL-byte terminated char* strings containing the names of all of the collections in database.

    -
    -
    -

    Parameters

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A NULL terminated array of NULL terminated char* strings that should be freed with bson_strfreev(). Upon failure, NULL is returned and error is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names_with_opts.html deleted file mode 100644 index 0f9f475..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_collection_names_with_opts.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - mongoc_database_get_collection_names_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_get_collection_names_with_opts()

    -
    -

    Synopsis

    -
    char **
    -mongoc_database_get_collection_names_with_opts (mongoc_database_t *database,
    -                                                const bson_t *opts,
    -                                                bson_error_t *error);
    -
    -
    -

    Fetches a NULL terminated array of NULL-byte terminated char* strings containing the names of all of the collections in database.

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -

    For a list of all options, see the MongoDB Manual entry on the listCollections command.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A NULL terminated array of NULL terminated char* strings that should be freed with bson_strfreev(). Upon failure, NULL is returned and error is set.

    -
    -
    -

    Examples

    -
    {
    -   bson_t opts = BSON_INITIALIZER;
    -   mongoc_read_concern_t *rc;
    -   bson_error_t error;
    -   char **strv;
    -   unsigned i;
    -
    -   rc = mongoc_read_concern_new ();
    -   mongoc_read_concern_set_level (rc, MONGOC_READ_CONCERN_LEVEL_MAJORITY);
    -   mongoc_read_concern_append (rc, &opts);
    -   if ((strv = mongoc_database_get_collection_names_with_opts (
    -          database, &opts, &error))) {
    -
    -      for (i = 0; strv[i]; i++)
    -         printf ("%s\n", strv[i]);
    -
    -      bson_strfreev (strv);
    -   } else {
    -      fprintf (stderr, "Command failed: %s\n", error.message);
    -   }
    -
    -   mongoc_read_concern_destroy (rc);
    -   bson_destroy (&opts);
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_name.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_name.html deleted file mode 100644 index 7cc5ae3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_name.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_database_get_name() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_get_name()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_database_get_name (mongoc_database_t *database);
    -
    -
    -

    Fetches the name of the database.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_concern.html deleted file mode 100644 index c1b2c21..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_concern.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_database_get_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_get_read_concern()

    -
    -

    Synopsis

    -
    const mongoc_read_concern_t *
    -mongoc_database_get_read_concern (const mongoc_database_t *database);
    -
    -
    -

    This function retrieves the default mongoc_read_concern_t to use with database as configured by the client.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_read_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_prefs.html deleted file mode 100644 index 545b34b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_read_prefs.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_database_get_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_get_read_prefs()

    -
    -

    Synopsis

    -
    const mongoc_read_prefs_t *
    -mongoc_database_get_read_prefs (const mongoc_database_t *database);
    -
    -
    -

    Fetches the default read preferences to use with database.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_write_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_write_concern.html deleted file mode 100644 index 8e4d089..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_get_write_concern.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_database_get_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_get_write_concern()

    -
    -

    Synopsis

    -
    const mongoc_write_concern_t *
    -mongoc_database_get_write_concern (const mongoc_database_t *database);
    -
    -
    -

    This function retrieves the default mongoc_write_concern_t to use with database as configured by the client.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A mongoc_write_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_has_collection.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_has_collection.html deleted file mode 100644 index a81f1ae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_has_collection.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_database_has_collection() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_has_collection()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_has_collection (mongoc_database_t *database,
    -                                const char *name,
    -                                bson_error_t *error);
    -
    -
    -

    This function checks to see if a collection exists on the MongoDB server within database.

    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • name: A string containing the name of the collection.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    If the function succeeds, it returns true if the collection exists and false if not, and in either case the fields of error are cleared, if error is not NULL.

    -

    Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_command_with_opts.html deleted file mode 100644 index 38d7118..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_command_with_opts.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - mongoc_database_read_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_read_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_read_command_with_opts (mongoc_database_t *database,
    -                                        const bson_t *command,
    -                                        const mongoc_read_prefs_t *read_prefs,
    -                                        const bson_t *opts,
    -                                        bson_t *reply,
    -                                        bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic that is specific to commands that read, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_database_command_simple().

    -

    Use this function for commands that read such as “count” or “distinct”.

    -

    Read preferences, read concern, and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts and the read preference must be primary or NULL. The highest-priority sources for these options are listed first in the following table. No write concern is applied.

    - ----- - - - - - - - - - - - - - - - - - - - - -
    Read PreferencesRead ConcernCollation
    read_prefsoptsopts
    TransactionTransaction 
    database  
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    - -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_write_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_write_command_with_opts.html deleted file mode 100644 index 36c645e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_read_write_command_with_opts.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - mongoc_database_read_write_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_read_write_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_read_write_command_with_opts (
    -   mongoc_database_t *database,
    -   const bson_t *command,
    -   const mongoc_read_prefs_t *read_prefs /* UNUSED */,
    -   const bson_t *opts,
    -   bson_t *reply,
    -   bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic for commands that both read and write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_database_command_simple().

    -

    Use this function for commands that both read and write, such as “mapReduce” with an output collection.

    -

    Read and write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts. The highest-priority sources for these options are listed first in the following table. Read preferences are not applied. The write concern is omitted for MongoDB before 3.4.

    - ----- - - - - - - - - - - - - - - - - - - - - -
    Read ConcernWrite ConcernCollation
    optsoptsopts
    TransactionTransaction 
    databasedatabase 
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -

    (The mongoc_read_prefs_t parameter was included by mistake when this function was introduced in libmongoc 1.5. A command that writes must not obey a read preference.)

    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • command: A bson_t containing the command specification.
    • -
    • read_prefs: Ignored.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_all_users.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_all_users.html deleted file mode 100644 index b7d8b60..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_all_users.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_database_remove_all_users() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_remove_all_users()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_remove_all_users (mongoc_database_t *database,
    -                                  bson_error_t *error);
    -
    -
    -

    This function will remove all users configured to access database.

    -
    -
    -

    Parameters

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter. This may fail if there are socket errors or the current user is not authorized to perform the given command.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_user.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_user.html deleted file mode 100644 index b12a01e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_remove_user.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_database_remove_user() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_remove_user()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_remove_user (mongoc_database_t *database,
    -                             const char *username,
    -                             bson_error_t *error);
    -
    -
    -

    This function removes the user named username from database.

    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • username: A string containing the username of the user to remove.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter. This could include socket errors or others if the current user is not authorized to perform the command.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_concern.html deleted file mode 100644 index e176581..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_concern.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_database_set_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_set_read_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_database_set_read_concern (mongoc_database_t *database,
    -                                  const mongoc_read_concern_t *read_concern);
    -
    -
    -

    This function sets the read concern to use on operations performed with database. Collections created with mongoc_database_get_collection() after this call will inherit this read concern.

    -

    The default read concern is empty: No readConcern is sent to the server unless explicitly configured.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_prefs.html deleted file mode 100644 index e55f366..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_read_prefs.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_database_set_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_set_read_prefs()

    -
    -

    Synopsis

    -
    void
    -mongoc_database_set_read_prefs (mongoc_database_t *database,
    -                                const mongoc_read_prefs_t *read_prefs);
    -
    -
    -

    This function sets the default read preferences to use on operations performed with database. Collections created with mongoc_database_get_collection() after this call will inherit these read preferences.

    -

    The global default is MONGOC_READ_PRIMARY: if the client is connected to a replica set it reads from the primary, otherwise it reads from the current MongoDB server.

    -

    Please see the MongoDB website for a description of Read Preferences.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_write_concern.html deleted file mode 100644 index ecded9c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_set_write_concern.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_database_set_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_set_write_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_database_set_write_concern (mongoc_database_t *database,
    -                                   const mongoc_write_concern_t *write_concern);
    -
    -
    -

    This function sets the write concern to use on operations performed with database. Collections created with mongoc_database_get_collection() after this call will inherit this write concern.

    -

    The default write concern is MONGOC_WRITE_CONCERN_W_DEFAULT: the driver blocks awaiting basic acknowledgement of write operations from MongoDB. This is the correct write concern for the great majority of applications.

    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_t.html deleted file mode 100644 index b572a40..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_t.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - mongoc_database_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_t

    -

    MongoDB Database Abstraction

    -
    -

    Synopsis

    -
    typedef struct _mongoc_database_t mongoc_database_t;
    -
    -
    -

    mongoc_database_t provides access to a MongoDB database. This handle is useful for actions a particular database object. It is not a container for mongoc_collection_t structures.

    -

    Read preferences and write concerns are inherited from the parent client. They can be overridden with mongoc_database_set_read_prefs() and mongoc_database_set_write_concern().

    -
    - -
    -

    Examples

    -
    #include <mongoc/mongoc.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_database_t *database;
    -   mongoc_client_t *client;
    -
    -   mongoc_init ();
    -
    -   client = mongoc_client_new ("mongodb://localhost/");
    -   database = mongoc_client_get_database (client, "test");
    -
    -   mongoc_database_destroy (database);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_watch.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_watch.html deleted file mode 100644 index 426e3cc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_watch.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - mongoc_database_watch() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_watch()

    -
    -

    Synopsis

    -
    mongoc_change_stream_t*
    -mongoc_database_watch (const mongoc_database_t *db,
    -                       const bson_t *pipeline,
    -                       const bson_t *opts);
    -
    -
    -

    A helper function to create a change stream. It is preferred to call this -function over using a raw aggregation to create a change stream.

    -

    This function uses the read preference and read concern of the database. If -the change stream needs to re-establish connection, the same read preference -will be used. This may happen if the change stream encounters a resumable error.

    -
    -

    Warning

    -

    A change stream is only supported with majority read concern.

    -
    -
    -
    -

    Parameters

    -
      -
    • db: A mongoc_database_t specifying the database which the change stream listens to.
    • -
    • pipeline: A bson_t representing an aggregation pipeline appended to the change stream. This may be an empty document.
    • -
    • opts: A bson_t containing change stream options or NULL.
    • -
    -

    opts may be NULL or a document consisting of any subset of the following -parameters:

    -
      -
    • batchSize An int32 representing number of documents requested to be returned on each call to mongoc_change_stream_next()
    • -
    • resumeAfter A Document representing the logical starting point of the change stream. The _id field of any change received from a change stream can be used here.
    • -
    • startAtOperationTime A Timestamp. The change stream only provides changes that occurred at or after the specified timestamp. Any command run against the server will return an operation time that can be used here.
    • -
    • maxAwaitTimeMS An int64 representing the maximum amount of time a call to mongoc_change_stream_next() will block waiting for data
    • -
    • collation A Collation Document
    • -
    -
    -
    -

    Returns

    -

    A newly allocated mongoc_change_stream_t which must be freed with -mongoc_change_stream_destroy() when no longer in use. The returned -mongoc_change_stream_t is never NULL. If there is an error, it can -be retrieved with mongoc_change_stream_error_document(), and subsequent -calls to mongoc_change_stream_next() will return false.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_write_command_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_write_command_with_opts.html deleted file mode 100644 index d78d628..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_database_write_command_with_opts.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - mongoc_database_write_command_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_database_write_command_with_opts()

    -
    -

    Synopsis

    -
    bool
    -mongoc_database_write_command_with_opts (mongoc_database_t *database,
    -                                         const bson_t *command,
    -                                         const bson_t *opts,
    -                                         bson_t *reply,
    -                                         bson_error_t *error);
    -
    -
    -

    Execute a command on the server, applying logic that is specific to commands that write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use mongoc_database_command_simple().

    -

    Use this function for commands that write such as “drop” or “createRole” (but not for “insert”, “update”, or “delete”, see Basic Write Operations). Write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in opts. The highest-priority sources for these options are listed first in the following table. The write concern is omitted for MongoDB before 3.4.

    - ---- - - - - - - - - - - - - - - - - -
    Write ConcernCollation
    optsopts
    Transaction 
    database 
    -

    See the example for transactions and for the “distinct” command with opts.

    -

    reply is always initialized, and must be freed with bson_destroy().

    -
    -
    -

    Parameters

    -
      -
    • database: A mongoc_database_t.
    • -
    • db_name: The name of the database to run the command on.
    • -
    • command: A bson_t containing the command specification.
    • -
    • opts: A bson_t containing additional options.
    • -
    • reply: A location for the resulting document.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -

    opts may be NULL or a BSON document with additional command options:

    - -

    Consult the MongoDB Manual entry on Database Commands for each command’s arguments.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -

    A write concern timeout or write concern error is considered a failure.

    -
    -
    -

    Basic Write Operations

    -

    Do not use this function to call the basic write commands “insert”, “update”, and “delete”. Those commands require special logic not implemented in mongoc_database_write_command_with_opts. For basic write operations use CRUD functions such as mongoc_collection_insert_one() and the others described in the CRUD tutorial, or use the Bulk API.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_delete_flags_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_delete_flags_t.html deleted file mode 100644 index 08d3e85..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_delete_flags_t.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - mongoc_delete_flags_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_delete_flags_t

    -

    Flags for deletion operations

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_DELETE_NONE = 0,
    -   MONGOC_DELETE_SINGLE_REMOVE = 1 << 0,
    -} mongoc_delete_flags_t;
    -
    -
    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    These flags are deprecated and should not be used in new code.

    -
    -

    Please use mongoc_collection_delete_one() or mongoc_collection_delete_many() instead.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_error_has_label.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_error_has_label.html deleted file mode 100644 index edc04b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_error_has_label.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_error_has_label() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_error_has_label()

    -
    -

    Synopsis

    -
    bool
    -mongoc_error_has_label (const bson_t *reply, const char *label);
    -
    -
    -

    Test whether a reply from a failed operation includes a specific error label. See Error Labels for details, and see mongoc_client_session_start_transaction() for example code that demonstrates their use.

    -
    -
    -

    Parameters

    -
      -
    • reply: A bson_t, the reply to a failed operation.
    • -
    • label: The label to test for, such as “TransientTransactionError” or “UnknownTransactionCommitResult”.
    • -
    -
    -
    -

    Returns

    -

    Returns true if reply contains the error label.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_append.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_append.html deleted file mode 100644 index e3ea068..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_append.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_append() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_append()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_append (mongoc_find_and_modify_opts_t *opts,
    -                                    const bson_t *extra);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Adds arbitrary options to a findAndModify command.

    -

    extra does not have to remain valid after calling this function.

    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    -
    -

    Appending options to findAndModify

    -
    -
    opts.c
    -
    void
    -fam_opts (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t reply;
    -   bson_t *update;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   mongoc_write_concern_t *wc;
    -   bson_t extra = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic, the striker */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "profession", "Football player");
    -
    -   /* Bump his age */
    -   update = BCON_NEW ("$inc", "{", "age", BCON_INT32 (1), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -
    -   /* Abort if the operation takes too long. */
    -   mongoc_find_and_modify_opts_set_max_time_ms (opts, 100);
    -
    -   /* Set write concern w: 2 */
    -   wc = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_w (wc, 2);
    -   mongoc_write_concern_append (wc, &extra);
    -
    -   /* Some future findAndModify option the driver doesn't support conveniently
    -    */
    -   BSON_APPEND_INT32 (&extra, "futureOption", 42);
    -   mongoc_find_and_modify_opts_append (opts, &extra);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (&extra);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_write_concern_destroy (wc);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_destroy.html deleted file mode 100644 index 3dd10b5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_destroy.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_find_and_modify_opts_destroy (
    -   mongoc_find_and_modify_opts_t *find_and_modify_opts);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Frees all resources associated with the find and modify builder structure. Does nothing if find_and_modify_opts is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_bypass_document_validation.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_bypass_document_validation.html deleted file mode 100644 index b95c3be..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_bypass_document_validation.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_get_bypass_document_validation() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_get_bypass_document_validation()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_get_bypass_document_validation (
    -   const mongoc_find_and_modify_opts_t *opts);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    Returns true if mongoc_find_and_modify_opts_set_bypass_document_validation() was called previously on opts.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_fields.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_fields.html deleted file mode 100644 index ec63445..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_fields.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_get_fields() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_get_fields()

    -
    -

    Synopsis

    -
    void
    -mongoc_find_and_modify_opts_get_fields (
    -   const mongoc_find_and_modify_opts_t *opts, bson_t *fields);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Copy to fields the BSON document that was set with mongoc_find_and_modify_opts_set_fields(), or initializes fields with an empty BSON document.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_flags.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_flags.html deleted file mode 100644 index e3f288d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_flags.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_get_flags() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_get_flags()

    -
    -

    Synopsis

    -
    mongoc_find_and_modify_flags_t
    -mongoc_find_and_modify_opts_get_flags (
    -   const mongoc_find_and_modify_opts_t *opts);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    Returns the flags set with mongoc_find_and_modify_opts_set_flags().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_max_time_ms.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_max_time_ms.html deleted file mode 100644 index 3c5e246..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_max_time_ms.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_get_max_time_ms() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_get_max_time_ms()

    -
    -

    Synopsis

    -
    uint32_t
    -mongoc_find_and_modify_opts_get_max_time_ms (
    -   const mongoc_find_and_modify_opts_t *opts);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    Returns the “maxTimeMS” value set with mongoc_find_and_modify_opts_set_max_time_ms().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_sort.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_sort.html deleted file mode 100644 index 3fa7c4a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_sort.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_get_sort() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_get_sort()

    -
    -

    Synopsis

    -
    void
    -mongoc_find_and_modify_opts_get_sort (const mongoc_find_and_modify_opts_t *opts,
    -                                      bson_t *sort);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Copies the sort document set with mongoc_find_and_modify_opts_set_sort(), or initializes sort with an empty BSON document.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_update.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_update.html deleted file mode 100644 index 495dba3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_get_update.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_get_update() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_get_update()

    -
    -

    Synopsis

    -
    void
    -mongoc_find_and_modify_opts_get_update (
    -   const mongoc_find_and_modify_opts_t *opts, bson_t *update);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Copies the update document set with mongoc_find_and_modify_opts_set_update(), or initializes update with an empty BSON document.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_new.html deleted file mode 100644 index ee1640c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_new.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_new()

    -
    -

    Synopsis

    -
    mongoc_find_and_modify_opts_t *
    -mongoc_find_and_modify_opts_new (void);
    -
    -
    -
    -
    -

    Returns

    -

    Creates a newly allocated find and modify builder structure that is used to create a findAndModify command. This should be freed with mongoc_find_and_modify_opts_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_bypass_document_validation.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_bypass_document_validation.html deleted file mode 100644 index 55f718a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_bypass_document_validation.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_set_bypass_document_validation() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_set_bypass_document_validation()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_set_bypass_document_validation (
    -   mongoc_find_and_modify_opts_t *opts, bool bypass);
    -
    -
    -

    This option is only available when talking to MongoDB 3.2 and later.

    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Adds bypassDocumentValidation argument to the builder.

    -

    When authentication is enabled, the authenticated user must have either the “dbadmin” or “restore” roles to bypass document validation.

    -
    -
    -

    Returns

    -

    Returns true if it successfully added the option to the builder, otherwise false and logs an error.

    -
    -
    -

    Setting bypassDocumentValidation

    -
    -
    bypass.c
    -
    void
    -fam_bypass (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t reply;
    -   bson_t *update;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic, the striker */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "profession", "Football player");
    -
    -   /* Bump his age */
    -   update = BCON_NEW ("$inc", "{", "age", BCON_INT32 (1), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -   /* He can still play, even though he is pretty old. */
    -   mongoc_find_and_modify_opts_set_bypass_document_validation (opts, true);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -

    Outputs:

    -
    {
    -   "lastErrorObject" : {"updatedExisting" : true, "n" : 1},
    -                       "value" : {
    -                          "_id" : {"$oid" : "56562a99d13e6d86239c7b00"},
    -                          "age" : 34,
    -                          "firstname" : "Zlatan",
    -                          "goals" : 342,
    -                          "lastname" : "Ibrahimovic",
    -                          "profession" : "Football player",
    -                          "position" : "striker"
    -                       },
    -                                 "ok" : 1
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_fields.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_fields.html deleted file mode 100644 index 1f9ab6d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_fields.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_set_fields() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_set_fields()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_set_fields (mongoc_find_and_modify_opts_t *opts,
    -                                        const bson_t *fields);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • opts: A mongoc_find_and_modify_opts_t.
    • -
    • fields: A subset of fields to return. Choose which fields to include by appending {fieldname: 1} for each fieldname, or excluding it with {fieldname: 0}.
    • -
    -
    -
    -

    Description

    -

    Adds fields argument to the builder.

    -

    fields does not have to remain valid after calling this function.

    -
    -
    -

    Returns

    -

    Returns true if it successfully added the option to the builder, otherwise false.

    -
    -
    -

    Setting fields

    -
    -
    fields.c
    -
    void
    -fam_fields (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t fields = BSON_INITIALIZER;
    -   bson_t *update;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic */
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -
    -   /* Return his goal tally */
    -   BSON_APPEND_INT32 (&fields, "goals", 1);
    -
    -   /* Bump his goal tally */
    -   update = BCON_NEW ("$inc", "{", "goals", BCON_INT32 (1), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -   mongoc_find_and_modify_opts_set_fields (opts, &fields);
    -   /* Return the new tally */
    -   mongoc_find_and_modify_opts_set_flags (opts,
    -                                          MONGOC_FIND_AND_MODIFY_RETURN_NEW);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&fields);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -

    Outputs:

    -
    {
    -   "lastErrorObject"
    -      : {"updatedExisting" : true, "n" : 1},
    -        "value"
    -        : {"_id" : {"$oid" : "56562a99d13e6d86239c7b00"}, "goals" : 343},
    -          "ok" : 1
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_flags.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_flags.html deleted file mode 100644 index 1e724ae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_flags.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_set_flags() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_set_flags()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_set_flags (
    -   mongoc_find_and_modify_opts_t *opts,
    -   const mongoc_find_and_modify_flags_t flags);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Adds one or more flags to the builder.

    - ---- - - - - - - - - - - - - - - -
    MONGOC_FIND_AND_MODIFY_NONEDefault. Doesn’t add anything to the builder.
    MONGOC_FIND_AND_MODIFY_REMOVEWill instruct find_and_modify to remove the matching document.
    MONGOC_FIND_AND_MODIFY_UPSERTUpdate the matching document or, if no document matches, insert the document.
    MONGOC_FIND_AND_MODIFY_RETURN_NEWReturn the resulting document.
    -
    -
    -

    Returns

    -

    Returns Returns true if it successfully added the option to the builder, otherwise false and logs an error.

    -
    -
    -

    Setting flags

    -
    -
    flags.c
    -
    void
    -fam_flags (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bson_t *update;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic, the striker */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "profession", "Football player");
    -   BSON_APPEND_INT32 (&query, "age", 34);
    -   BSON_APPEND_INT32 (
    -      &query, "goals", (16 + 35 + 23 + 57 + 16 + 14 + 28 + 84) + (1 + 6 + 62));
    -
    -   /* Add his football position */
    -   update = BCON_NEW ("$set", "{", "position", BCON_UTF8 ("striker"), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -
    -   /* Create the document if it didn't exist, and return the updated document */
    -   mongoc_find_and_modify_opts_set_flags (
    -      opts, MONGOC_FIND_AND_MODIFY_UPSERT | MONGOC_FIND_AND_MODIFY_RETURN_NEW);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -

    Outputs:

    -
    {
    -   "lastErrorObject" : {
    -      "updatedExisting" : false,
    -      "n" : 1,
    -      "upserted" : {"$oid" : "56562a99d13e6d86239c7b00"}
    -   },
    -                       "value" : {
    -                          "_id" : {"$oid" : "56562a99d13e6d86239c7b00"},
    -                          "age" : 34,
    -                          "firstname" : "Zlatan",
    -                          "goals" : 342,
    -                          "lastname" : "Ibrahimovic",
    -                          "profession" : "Football player",
    -                          "position" : "striker"
    -                       },
    -                                 "ok" : 1
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_max_time_ms.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_max_time_ms.html deleted file mode 100644 index 2ed7816..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_max_time_ms.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_set_max_time_ms() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_set_max_time_ms()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_set_max_time_ms (
    -   mongoc_find_and_modify_opts_t *opts, uint32_t max_time_ms);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • opts: A mongoc_find_and_modify_opts_t.
    • -
    • max_time_ms: The maximum server-side execution time permitted, in milliseconds, or 0 to specify no maximum time (the default setting).
    • -
    -
    -
    -

    Description

    -

    Adds a maxTimeMS argument to the builder.

    -
    -
    -

    Returns

    -

    Returns true if it successfully added the option to the builder, otherwise false and logs an error.

    -

    Note: although max_time_ms is a uint32_t, it is possible to set it as a uint64_t through the options arguments in some cursor returning functions like mongoc_collection_find_with_opts().

    -
    -
    -

    Setting maxTimeMS

    -
    -
    opts.c
    -
    void
    -fam_opts (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t reply;
    -   bson_t *update;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   mongoc_write_concern_t *wc;
    -   bson_t extra = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic, the striker */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "profession", "Football player");
    -
    -   /* Bump his age */
    -   update = BCON_NEW ("$inc", "{", "age", BCON_INT32 (1), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -
    -   /* Abort if the operation takes too long. */
    -   mongoc_find_and_modify_opts_set_max_time_ms (opts, 100);
    -
    -   /* Set write concern w: 2 */
    -   wc = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_w (wc, 2);
    -   mongoc_write_concern_append (wc, &extra);
    -
    -   /* Some future findAndModify option the driver doesn't support conveniently
    -    */
    -   BSON_APPEND_INT32 (&extra, "futureOption", 42);
    -   mongoc_find_and_modify_opts_append (opts, &extra);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (&extra);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_write_concern_destroy (wc);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_sort.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_sort.html deleted file mode 100644 index 5bc1c8d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_sort.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_set_sort() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_set_sort()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_set_sort (mongoc_find_and_modify_opts_t *opts,
    -                                      const bson_t *sort);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • opts: A mongoc_find_and_modify_opts_t.
    • -
    • sort: Determines which document the operation modifies if the query selects multiple documents. findAndModify modifies the first document in the sort order specified by this argument.
    • -
    -
    -
    -

    Description

    -

    Adds sort argument to the builder.

    -

    sort does not have to remain valid after calling this function.

    -
    -
    -

    Returns

    -

    Returns true if it successfully added the option to the builder, otherwise false.

    -
    -
    -

    Setting sort

    -
    -
    sort.c
    -
    void
    -fam_sort (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t *update;
    -   bson_t sort = BSON_INITIALIZER;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find all users with the lastname Ibrahimovic */
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -
    -   /* Sort by age (descending) */
    -   BSON_APPEND_INT32 (&sort, "age", -1);
    -
    -   /* Bump his goal tally */
    -   update = BCON_NEW ("$set", "{", "oldest", BCON_BOOL (true), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -   mongoc_find_and_modify_opts_set_sort (opts, &sort);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&sort);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -

    Outputs:

    -
    {
    -   "lastErrorObject" : {"updatedExisting" : true, "n" : 1},
    -                       "value" : {
    -                          "_id" : {"$oid" : "56562a99d13e6d86239c7b00"},
    -                          "age" : 35,
    -                          "firstname" : "Zlatan",
    -                          "goals" : 343,
    -                          "lastname" : "Ibrahimovic",
    -                          "profession" : "Football player",
    -                          "position" : "striker",
    -                          "author" : true
    -                       },
    -                                 "ok" : 1
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_update.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_update.html deleted file mode 100644 index 54a86ea..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_set_update.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_set_update() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_set_update()

    -
    -

    Synopsis

    -
    bool
    -mongoc_find_and_modify_opts_set_update (mongoc_find_and_modify_opts_t *opts,
    -                                        const bson_t *update);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Adds update argument to the builder.

    -

    update does not have to remain valid after calling this function.

    -
    -
    -

    Returns

    -

    Returns true if it successfully added the option to the builder, otherwise false.

    -
    -
    -

    Setting update

    -
    -
    update.c
    -
    void
    -fam_update (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t *update;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -
    -   /* Make him a book author */
    -   update = BCON_NEW ("$set", "{", "author", BCON_BOOL (true), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   /* Note that the document returned is the _previous_ version of the document
    -    * To fetch the modified new version, use
    -    * mongoc_find_and_modify_opts_set_flags (opts,
    -    * MONGOC_FIND_AND_MODIFY_RETURN_NEW);
    -    */
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -

    Outputs:

    -
    {
    -   "lastErrorObject" : {"updatedExisting" : true, "n" : 1},
    -                       "value" : {
    -                          "_id" : {"$oid" : "56562a99d13e6d86239c7b00"},
    -                          "age" : 35,
    -                          "firstname" : "Zlatan",
    -                          "goals" : 342,
    -                          "lastname" : "Ibrahimovic",
    -                          "profession" : "Football player",
    -                          "position" : "striker"
    -                       },
    -                                 "ok" : 1
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_t.html deleted file mode 100644 index 5cff4b0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_find_and_modify_opts_t.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - - - - - mongoc_find_and_modify_opts_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_find_and_modify_opts_t

    -

    find_and_modify abstraction

    -
    -

    Synopsis

    -

    mongoc_find_and_modify_opts_t is a builder interface to construct a find_and_modify command.

    -

    It was created to be able to accommodate new arguments to the MongoDB find_and_modify command.

    -

    As of MongoDB 3.2, the mongoc_write_concern_t specified on the mongoc_collection_t will be used, if any.

    -
    -
    -

    Example

    -
    -
    flags.c
    -
    void
    -fam_flags (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bson_t *update;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic, the striker */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "profession", "Football player");
    -   BSON_APPEND_INT32 (&query, "age", 34);
    -   BSON_APPEND_INT32 (
    -      &query, "goals", (16 + 35 + 23 + 57 + 16 + 14 + 28 + 84) + (1 + 6 + 62));
    -
    -   /* Add his football position */
    -   update = BCON_NEW ("$set", "{", "position", BCON_UTF8 ("striker"), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -
    -   /* Create the document if it didn't exist, and return the updated document */
    -   mongoc_find_and_modify_opts_set_flags (
    -      opts, MONGOC_FIND_AND_MODIFY_UPSERT | MONGOC_FIND_AND_MODIFY_RETURN_NEW);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    bypass.c
    -
    void
    -fam_bypass (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t reply;
    -   bson_t *update;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic, the striker */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "profession", "Football player");
    -
    -   /* Bump his age */
    -   update = BCON_NEW ("$inc", "{", "age", BCON_INT32 (1), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -   /* He can still play, even though he is pretty old. */
    -   mongoc_find_and_modify_opts_set_bypass_document_validation (opts, true);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    update.c
    -
    void
    -fam_update (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t *update;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -
    -   /* Make him a book author */
    -   update = BCON_NEW ("$set", "{", "author", BCON_BOOL (true), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   /* Note that the document returned is the _previous_ version of the document
    -    * To fetch the modified new version, use
    -    * mongoc_find_and_modify_opts_set_flags (opts,
    -    * MONGOC_FIND_AND_MODIFY_RETURN_NEW);
    -    */
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    fields.c
    -
    void
    -fam_fields (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t fields = BSON_INITIALIZER;
    -   bson_t *update;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic */
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -
    -   /* Return his goal tally */
    -   BSON_APPEND_INT32 (&fields, "goals", 1);
    -
    -   /* Bump his goal tally */
    -   update = BCON_NEW ("$inc", "{", "goals", BCON_INT32 (1), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -   mongoc_find_and_modify_opts_set_fields (opts, &fields);
    -   /* Return the new tally */
    -   mongoc_find_and_modify_opts_set_flags (opts,
    -                                          MONGOC_FIND_AND_MODIFY_RETURN_NEW);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&fields);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    sort.c
    -
    void
    -fam_sort (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t *update;
    -   bson_t sort = BSON_INITIALIZER;
    -   bson_t reply;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find all users with the lastname Ibrahimovic */
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -
    -   /* Sort by age (descending) */
    -   BSON_APPEND_INT32 (&sort, "age", -1);
    -
    -   /* Bump his goal tally */
    -   update = BCON_NEW ("$set", "{", "oldest", BCON_BOOL (true), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -   mongoc_find_and_modify_opts_set_sort (opts, &sort);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (update);
    -   bson_destroy (&sort);
    -   bson_destroy (&query);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    opts.c
    -
    void
    -fam_opts (mongoc_collection_t *collection)
    -{
    -   mongoc_find_and_modify_opts_t *opts;
    -   bson_t reply;
    -   bson_t *update;
    -   bson_error_t error;
    -   bson_t query = BSON_INITIALIZER;
    -   mongoc_write_concern_t *wc;
    -   bson_t extra = BSON_INITIALIZER;
    -   bool success;
    -
    -
    -   /* Find Zlatan Ibrahimovic, the striker */
    -   BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
    -   BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
    -   BSON_APPEND_UTF8 (&query, "profession", "Football player");
    -
    -   /* Bump his age */
    -   update = BCON_NEW ("$inc", "{", "age", BCON_INT32 (1), "}");
    -
    -   opts = mongoc_find_and_modify_opts_new ();
    -   mongoc_find_and_modify_opts_set_update (opts, update);
    -
    -   /* Abort if the operation takes too long. */
    -   mongoc_find_and_modify_opts_set_max_time_ms (opts, 100);
    -
    -   /* Set write concern w: 2 */
    -   wc = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_w (wc, 2);
    -   mongoc_write_concern_append (wc, &extra);
    -
    -   /* Some future findAndModify option the driver doesn't support conveniently
    -    */
    -   BSON_APPEND_INT32 (&extra, "futureOption", 42);
    -   mongoc_find_and_modify_opts_append (opts, &extra);
    -
    -   success = mongoc_collection_find_and_modify_with_opts (
    -      collection, &query, opts, &reply, &error);
    -
    -   if (success) {
    -      char *str;
    -
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -   }
    -
    -   bson_destroy (&reply);
    -   bson_destroy (&extra);
    -   bson_destroy (update);
    -   bson_destroy (&query);
    -   mongoc_write_concern_destroy (wc);
    -   mongoc_find_and_modify_opts_destroy (opts);
    -}
    -
    -
    -
    -
    -
    fam.c
    -
    int
    -main (void)
    -{
    -   mongoc_collection_t *collection;
    -   mongoc_database_t *database;
    -   mongoc_client_t *client;
    -   const char *uri_string =
    -      "mongodb://localhost:27017/admin?appname=find-and-modify-opts-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -   bson_t *options;
    -
    -   mongoc_init ();
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   database = mongoc_client_get_database (client, "databaseName");
    -
    -   options = BCON_NEW ("validator",
    -                       "{",
    -                       "age",
    -                       "{",
    -                       "$lte",
    -                       BCON_INT32 (34),
    -                       "}",
    -                       "}",
    -                       "validationAction",
    -                       BCON_UTF8 ("error"),
    -                       "validationLevel",
    -                       BCON_UTF8 ("moderate"));
    -
    -   collection = mongoc_database_create_collection (
    -      database, "collectionName", options, &error);
    -   if (!collection) {
    -      fprintf (
    -         stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
    -      return EXIT_FAILURE;
    -   }
    -
    -   fam_flags (collection);
    -   fam_bypass (collection);
    -   fam_update (collection);
    -   fam_fields (collection);
    -   fam_opts (collection);
    -   fam_sort (collection);
    -
    -   mongoc_collection_drop (collection, NULL);
    -   bson_destroy (options);
    -   mongoc_uri_destroy (uri);
    -   mongoc_database_destroy (database);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -

    Outputs:

    -
    {
    -    "lastErrorObject": {
    -        "updatedExisting": false,
    -        "n": 1,
    -        "upserted": {
    -            "$oid": "56562a99d13e6d86239c7b00"
    -        }
    -    },
    -    "value": {
    -        "_id": {
    -            "$oid": "56562a99d13e6d86239c7b00"
    -        },
    -        "age": 34,
    -        "firstname": "Zlatan",
    -        "goals": 342,
    -        "lastname": "Ibrahimovic",
    -        "profession": "Football player",
    -        "position": "striker"
    -    },
    -    "ok": 1
    -}
    -{
    -    "lastErrorObject": {
    -        "updatedExisting": true,
    -        "n": 1
    -    },
    -    "value": {
    -        "_id": {
    -            "$oid": "56562a99d13e6d86239c7b00"
    -        },
    -        "age": 34,
    -        "firstname": "Zlatan",
    -        "goals": 342,
    -        "lastname": "Ibrahimovic",
    -        "profession": "Football player",
    -        "position": "striker"
    -    },
    -    "ok": 1
    -}
    -{
    -    "lastErrorObject": {
    -        "updatedExisting": true,
    -        "n": 1
    -    },
    -    "value": {
    -        "_id": {
    -            "$oid": "56562a99d13e6d86239c7b00"
    -        },
    -        "age": 35,
    -        "firstname": "Zlatan",
    -        "goals": 342,
    -        "lastname": "Ibrahimovic",
    -        "profession": "Football player",
    -        "position": "striker"
    -    },
    -    "ok": 1
    -}
    -{
    -    "lastErrorObject": {
    -        "updatedExisting": true,
    -        "n": 1
    -    },
    -    "value": {
    -        "_id": {
    -            "$oid": "56562a99d13e6d86239c7b00"
    -        },
    -        "goals": 343
    -    },
    -    "ok": 1
    -}
    -{
    -    "lastErrorObject": {
    -        "updatedExisting": true,
    -        "n": 1
    -    },
    -    "value": {
    -        "_id": {
    -            "$oid": "56562a99d13e6d86239c7b00"
    -        },
    -        "age": 35,
    -        "firstname": "Zlatan",
    -        "goals": 343,
    -        "lastname": "Ibrahimovic",
    -        "profession": "Football player",
    -        "position": "striker",
    -        "author": true
    -    },
    -    "ok": 1
    -}
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_major_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_major_version.html deleted file mode 100644 index c444286..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_major_version.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_get_major_version() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_get_major_version()

    -
    -

    Synopsis

    -
    int
    -mongoc_get_major_version (void);
    -
    -
    -
    -
    -

    Returns

    -

    The value of MONGOC_MAJOR_VERSION when libmongoc was compiled.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_micro_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_micro_version.html deleted file mode 100644 index 96e7de9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_micro_version.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_get_micro_version() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_get_micro_version()

    -
    -

    Synopsis

    -
    int
    -mongoc_get_micro_version (void);
    -
    -
    -
    -
    -

    Returns

    -

    The value of MONGOC_MICRO_VERSION when libmongoc was compiled.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_minor_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_minor_version.html deleted file mode 100644 index 4115669..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_minor_version.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_get_minor_version() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_get_minor_version()

    -
    -

    Synopsis

    -
    int
    -mongoc_get_minor_version (void);
    -
    -
    -
    -
    -

    Returns

    -

    The value of MONGOC_MINOR_VERSION when libmongoc was compiled.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_version.html deleted file mode 100644 index 5a3752e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_get_version.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_get_version() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_get_version()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_get_version (void);
    -
    -
    -
    -
    -

    Returns

    -

    A string representation of libmongoc’s version, formatted something like “1.2.3” or “1.2.3-dev”.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file.html deleted file mode 100644 index 4cdfd56..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_gridfs_create_file() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_create_file()

    -
    -

    Synopsis

    -
    mongoc_gridfs_file_t *
    -mongoc_gridfs_create_file (mongoc_gridfs_t *gridfs,
    -                           mongoc_gridfs_file_opt_t *opt);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall create a new mongoc_gridfs_file_t.

    -

    Use mongoc_gridfs_file_writev() to write to the file.

    -
    -
    -

    Returns

    -

    Returns a newly allocated mongoc_gridfs_file_t that should be freed with mongoc_gridfs_file_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file_from_stream.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file_from_stream.html deleted file mode 100644 index c300281..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_create_file_from_stream.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_gridfs_create_file_from_stream() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_create_file_from_stream()

    -
    -

    Synopsis

    -
    mongoc_gridfs_file_t *
    -mongoc_gridfs_create_file_from_stream (mongoc_gridfs_t *gridfs,
    -                                       mongoc_stream_t *stream,
    -                                       mongoc_gridfs_file_opt_t *opt);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall create a new mongoc_gridfs_file_t and fill it with the contents of stream. Note that this function will read from stream until End of File, making it best suited for file-backed streams.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_gridfs_file_t that should be freed with mongoc_gridfs_file_destroy() when no longer in use. -Returns NULL and logs an error message if there is a network or server error writing data to the MongoDB server.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_destroy.html deleted file mode 100644 index e458782..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_gridfs_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_destroy (mongoc_gridfs_t *gridfs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall destroy the gridfs structure referenced by gridfs and any resources associated with the gridfs. Does nothing if gridfs is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_drop.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_drop.html deleted file mode 100644 index b3594f1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_drop.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_gridfs_drop() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_drop()

    -
    -

    Synopsis

    -
    bool
    -mongoc_gridfs_drop (mongoc_gridfs_t *gridfs, bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Requests that an entire GridFS be dropped, including all files associated with it.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_destroy.html deleted file mode 100644 index c190d27..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_gridfs_file_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_file_destroy (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Destroys the mongoc_gridfs_file_t instance and any resources associated with it. Does nothing if file is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_error.html deleted file mode 100644 index f12a302..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_error.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_gridfs_file_error() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_error()

    -
    -

    Synopsis

    -
    bool
    -mongoc_gridfs_file_error (mongoc_gridfs_file_t *file, bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function checks to see if there has been an error associated with the last operation upon file.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns false if there has been no registered error, otherwise true and error is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_aliases.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_aliases.html deleted file mode 100644 index d67db67..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_aliases.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_aliases() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_aliases()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_gridfs_file_get_aliases (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the aliases associated with a gridfs file.

    -
    -
    -

    Returns

    -

    Returns a bson_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_chunk_size.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_chunk_size.html deleted file mode 100644 index ef050a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_chunk_size.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_chunk_size() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_chunk_size()

    -
    -

    Synopsis

    -
    int32_t
    -mongoc_gridfs_file_get_chunk_size (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the chunk size used with the underlying gridfs file.

    -
    -
    -

    Returns

    -

    A signed 32-bit integer.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_content_type.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_content_type.html deleted file mode 100644 index e911679..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_content_type.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_content_type() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_content_type()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_gridfs_file_get_content_type (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the content type specified for the underlying file.

    -
    -
    -

    Returns

    -

    Returns a string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_filename.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_filename.html deleted file mode 100644 index e3ec0a5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_filename.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_filename() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_filename()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_gridfs_file_get_filename (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the filename for the given gridfs file.

    -
    -
    -

    Returns

    -

    A string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_id.html deleted file mode 100644 index b30fd1f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_id.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_id()

    -
    -

    Synopsis

    -
    const bson_value_t *
    -mongoc_gridfs_file_get_id (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the id of a gridfs file.

    -

    The C Driver always uses an ObjectId for _id, but files created by other drivers may have any type of _id.

    -
    -
    -

    Returns

    -

    Returns a bson_value_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_length.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_length.html deleted file mode 100644 index 174b57b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_length.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_length() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_length()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_gridfs_file_get_length (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the length of the gridfs file in bytes.

    -
    -
    -

    Returns

    -

    A 64-bit signed integer.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_md5.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_md5.html deleted file mode 100644 index 149661a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_md5.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_md5() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_md5()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_gridfs_file_get_md5 (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the pre-computed MD5 for the underlying gridfs file.

    -
    -
    -

    Returns

    -

    Returns a string that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_metadata.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_metadata.html deleted file mode 100644 index ce68554..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_metadata.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_metadata() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_metadata()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_gridfs_file_get_metadata (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a bson document containing the metadata for the gridfs file.

    -
    -
    -

    Returns

    -

    Returns a bson_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_upload_date.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_upload_date.html deleted file mode 100644 index 6721640..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_get_upload_date.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_get_upload_date() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_get_upload_date()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_gridfs_file_get_upload_date (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the specified upload date of the gridfs file in milliseconds since the UNIX epoch.

    -
    -
    -

    Returns

    -

    A signed int64 with the upload date in milliseconds since the UNIX epoch.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_destroy.html deleted file mode 100644 index 96a4934..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_gridfs_file_list_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_list_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_file_list_destroy (mongoc_gridfs_file_list_t *list);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Frees a mongoc_gridfs_file_list_t and releases any associated resources. Does nothing if list is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_error.html deleted file mode 100644 index a869b20..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_error.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_gridfs_file_list_error() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_list_error()

    -
    -

    Synopsis

    -
    bool
    -mongoc_gridfs_file_list_error (mongoc_gridfs_file_list_t *list,
    -                               bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches any error that has occurred while trying to retrieve the file list.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    false if no error has been registered, otherwise true and error is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_next.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_next.html deleted file mode 100644 index dcc864f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_next.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_list_next() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_list_next()

    -
    -

    Synopsis

    -
    mongoc_gridfs_file_t *
    -mongoc_gridfs_file_list_next (mongoc_gridfs_file_list_t *list);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall iterate the underlying gridfs file list, returning the next file each iteration. This is a blocking function.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_gridfs_file_t that should be freed with mongoc_gridfs_file_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_t.html deleted file mode 100644 index f4014ef..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_list_t.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - mongoc_gridfs_file_list_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_list_t

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct _mongoc_gridfs_file_list_t mongoc_gridfs_file_list_t;
    -
    -
    -
    -
    -

    Description

    -

    mongoc_gridfs_file_list_t provides a gridfs file list abstraction. It provides iteration and basic marshalling on top of a regular mongoc_collection_find_with_opts() style query. In interface, it’s styled after mongoc_cursor_t.

    -
    -
    -

    Example

    -
    mongoc_gridfs_file_list_t *list;
    -mongoc_gridfs_file_t *file;
    -
    -list = mongoc_gridfs_find (gridfs, query);
    -
    -while ((file = mongoc_gridfs_file_list_next (list))) {
    -   do_something (file);
    -
    -   mongoc_gridfs_file_destroy (file);
    -}
    -
    -mongoc_gridfs_file_list_destroy (list);
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_opt_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_opt_t.html deleted file mode 100644 index 414d7b0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_opt_t.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_gridfs_file_opt_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_opt_t

    -
    -

    Synopsis

    -
    typedef struct {
    -   const char *md5;
    -   const char *filename;
    -   const char *content_type;
    -   const bson_t *aliases;
    -   const bson_t *metadata;
    -   uint32_t chunk_size;
    -} mongoc_gridfs_file_opt_t;
    -
    -
    -
    -
    -

    Description

    -

    This structure contains options that can be set on a mongoc_gridfs_file_t. It can be used by various functions when creating a new gridfs file.

    -
    -
    -

    Functions

    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_readv.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_readv.html deleted file mode 100644 index 1750926..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_readv.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_gridfs_file_readv() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_readv()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_gridfs_file_readv (mongoc_gridfs_file_t *file,
    -                          mongoc_iovec_t *iov,
    -                          size_t iovcnt,
    -                          size_t min_bytes,
    -                          uint32_t timeout_msec);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • file: A mongoc_gridfs_file_t.
    • -
    • iov: An array of mongoc_iovec_t.
    • -
    • iovcnt: The number of elements in iov.
    • -
    • min_bytes: The minimum number of bytes that must be read or an error will be synthesized.
    • -
    • timeout_msec: Unused.
    • -
    -
    -
    -

    Description

    -

    This function performs a scattered read from file, potentially blocking to read from the MongoDB server.

    -

    The timeout_msec parameter is unused.

    -
    -
    -

    Returns

    -

    Returns the number of bytes read, or -1 on failure. Use mongoc_gridfs_file_error() to retrieve error details.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_remove.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_remove.html deleted file mode 100644 index b9bdfd1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_remove.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_gridfs_file_remove() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_remove()

    -
    -

    Synopsis

    -
    bool
    -mongoc_gridfs_file_remove (mongoc_gridfs_file_t *file, bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Removes file and its data chunks from the MongoDB server.

    -
    -
    -

    Returns

    -

    Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_save.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_save.html deleted file mode 100644 index 7de6635..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_save.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_gridfs_file_save() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_save()

    -
    -

    Synopsis

    -
    bool
    -mongoc_gridfs_file_save (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Saves modifications to file to the MongoDB server.

    -

    If an error occurred, false is returned and the error can be retrieved with mongoc_gridfs_file_error().

    -

    Modifying GridFS files is NOT thread-safe. Only one thread or process can access a GridFS file while it is being modified.

    -
    -
    -

    Returns

    -

    Returns true if successful, otherwise false.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_seek.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_seek.html deleted file mode 100644 index eecb457..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_seek.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - mongoc_gridfs_file_seek() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_seek()

    -
    -

    Synopsis

    -
    int
    -mongoc_gridfs_file_seek (mongoc_gridfs_file_t *file, int64_t delta, int whence);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • file: A mongoc_gridfs_file_t.
    • -
    • delta: The amount to move the file position. May be positive or negative.
    • -
    • whence: One of SEEK_SET, SEEK_CUR or SEEK_END.
    • -
    -
    -
    -

    Description

    -

    Adjust the file position pointer in the given file by delta, starting from the position whence. The whence argument is interpreted as in fseek(2):

    - ---- - - - - - - - - - - - -
    SEEK_SETSet the position relative to the start of the file.
    SEEK_CURMove delta relative to the current file position.
    SEEK_ENDMove delta relative to the end of the file.
    -

    On success, the file’s underlying position pointer is set appropriately. On failure, the file position is NOT changed and errno is set to indicate the error.

    -
    -
    -

    Errors

    - ---- - - - - - - - - -
    EINVALwhence is not one of SEEK_SET, SEEK_CUR or SEEK_END.
    EINVALThe resulting file position would be negative.
    -
    -
    -

    Returns

    -

    Returns 0 if successful; otherwise -1 and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_aliases.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_aliases.html deleted file mode 100644 index 84c03f1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_aliases.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_gridfs_file_set_aliases() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_set_aliases()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_file_set_aliases (mongoc_gridfs_file_t *file, const bson_t *bson);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the aliases for a gridfs file.

    -

    You need to call mongoc_gridfs_file_save() to persist this change.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_content_type.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_content_type.html deleted file mode 100644 index 500ca9e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_content_type.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_gridfs_file_set_content_type() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_set_content_type()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_file_set_content_type (mongoc_gridfs_file_t *file,
    -                                     const char *content_type);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the content type for the gridfs file. This should be something like "text/plain".

    -

    You need to call mongoc_gridfs_file_save() to persist this change.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_filename.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_filename.html deleted file mode 100644 index b2ce3dc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_filename.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_gridfs_file_set_filename() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_set_filename()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_file_set_filename (mongoc_gridfs_file_t *file,
    -                                 const char *filename);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the filename for file.

    -

    You need to call mongoc_gridfs_file_save() to persist this change.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_id.html deleted file mode 100644 index 4e23292..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_id.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_gridfs_file_set_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_set_id()

    -
    -

    Synopsis

    -
    bool
    -mongoc_gridfs_file_set_id (mongoc_gridfs_file_t *file,
    -                           const bson_value_t *id,
    -                           bson_error_t error);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the id of file to any BSON type.

    -

    If an error occurred, false is returned.

    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_md5.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_md5.html deleted file mode 100644 index d0e4d39..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_md5.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_gridfs_file_set_md5() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_set_md5()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_file_set_md5 (mongoc_gridfs_file_t *file, const char *md5);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the MD5 checksum for file.

    -

    You need to call mongoc_gridfs_file_save() to persist this change.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_metadata.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_metadata.html deleted file mode 100644 index d1252c7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_set_metadata.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_gridfs_file_set_metadata() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_set_metadata()

    -
    -

    Synopsis

    -
    void
    -mongoc_gridfs_file_set_metadata (mongoc_gridfs_file_t *file,
    -                                 const bson_t *metadata);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the metadata associated with file.

    -

    You need to call mongoc_gridfs_file_save() to persist this change.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_t.html deleted file mode 100644 index f89b5a7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_t.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - mongoc_gridfs_file_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_t

    -
    -

    Synopsis

    -
    typedef struct _mongoc_gridfs_file_t mongoc_gridfs_file_t;
    -
    -
    -
    -
    -

    Description

    -

    This structure provides a MongoDB GridFS file abstraction. It provides several APIs.

    -
      -
    • readv, writev, seek, and tell.
    • -
    • General file metadata such as filename and length.
    • -
    • GridFS metadata such as md5, filename, content_type, aliases, metadata, chunk_size, and upload_date.
    • -
    -
    -
    -

    Thread Safety

    -

    This structure is NOT thread-safe and should only be used from one thread at a time.

    -
    - - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_tell.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_tell.html deleted file mode 100644 index 408ade7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_tell.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_file_tell() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_tell()

    -
    -

    Synopsis

    -
    uint64_t
    -mongoc_gridfs_file_tell (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function returns the current position indicator within file.

    -
    -
    -

    Returns

    -

    Returns a file position as an unsigned 64-bit integer.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_writev.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_writev.html deleted file mode 100644 index 573e598..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_file_writev.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_gridfs_file_writev() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_file_writev()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_gridfs_file_writev (mongoc_gridfs_file_t *file,
    -                           const mongoc_iovec_t *iov,
    -                           size_t iovcnt,
    -                           uint32_t timeout_msec);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Performs a gathered write to the underlying gridfs file.

    -

    The timeout_msec parameter is unused.

    -

    Modifying GridFS files is NOT thread-safe. Only one thread or process can access a GridFS file while it is being modified.

    -
    -
    -

    Returns

    -

    Returns the number of bytes written, or -1 on failure. Use mongoc_gridfs_file_error() to retrieve error details.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find.html deleted file mode 100644 index 4e1522d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_gridfs_find() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_find()

    -
    -

    Deprecated

    -

    This function is deprecated, use mongoc_gridfs_find_with_opts() instead.

    -
    -
    -

    Synopsis

    -
    mongoc_gridfs_file_list_t *
    -mongoc_gridfs_find (mongoc_gridfs_t *gridfs, const bson_t *query)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_gridfs_find_with_opts);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Finds all gridfs files matching query. You can iterate the matched gridfs files with the resulting file list.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_gridfs_file_list_t that should be freed with mongoc_gridfs_file_list_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one.html deleted file mode 100644 index b670b8c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - mongoc_gridfs_find_one() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_find_one()

    -
    -

    Deprecated

    -

    This function is deprecated, use mongoc_gridfs_find_one_with_opts() instead.

    -
    -
    -

    Synopsis

    -
    mongoc_gridfs_file_t *
    -mongoc_gridfs_find_one (mongoc_gridfs_t *gridfs,
    -                        const bson_t *query,
    -                        bson_error_t *error)
    -   BSON_GNUC_DEPRECATED_FOR (mongoc_gridfs_find_one_with_opts);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall execute a query on the underlying gridfs implementation. The first file matching query will be returned. If there is an error, NULL is returned and error is filled out; if there is no error but no matching file is found, NULL is returned and the error code and domain are 0.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_gridfs_file_t or NULL if no file could be found. You must free the resulting file with mongoc_gridfs_file_destroy() if non-NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_by_filename.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_by_filename.html deleted file mode 100644 index 4ffd5d1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_by_filename.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_gridfs_find_one_by_filename() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_find_one_by_filename()

    -
    -

    Synopsis

    -
    mongoc_gridfs_file_t *
    -mongoc_gridfs_find_one_by_filename (mongoc_gridfs_t *gridfs,
    -                                    const char *filename,
    -                                    bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • gridfs: A mongoc_gridfs_t.
    • -
    • filename: A UTF-8 encoded string containing the filename.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    Finds the first file matching the filename specified. If there is an error, NULL is returned and error is filled out; if there is no error but no matching file is found, NULL is returned and the error code and domain are 0.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns a newly allocated mongoc_gridfs_file_t if successful. You must free the resulting file with mongoc_gridfs_file_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_with_opts.html deleted file mode 100644 index f3ae82c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_one_with_opts.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - mongoc_gridfs_find_one_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_find_one_with_opts()

    -
    -

    Synopsis

    -
    mongoc_gridfs_file_t *
    -mongoc_gridfs_find_one_with_opts (mongoc_gridfs_t *gridfs,
    -                                  const bson_t *filter,
    -                                  const bson_t *opts,
    -                                  bson_error_t *error)
    -   BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • gridfs: A mongoc_gridfs_t.
    • -
    • filter: A bson_t containing the query to execute.
    • -
    • opts: A bson_t query options, including sort order and which fields to return. Can be NULL.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    Find the first GridFS file matching filter. If there is an error, NULL is returned and error is filled out; if there is no error but no matching file is found, NULL is returned and the error code and domain are 0.

    -

    See mongoc_collection_find_with_opts() for a description of the filter and opts parameters.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    Returns a newly allocated mongoc_gridfs_file_t if successful. You must free the resulting file with mongoc_gridfs_file_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_with_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_with_opts.html deleted file mode 100644 index 766e681..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_find_with_opts.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_gridfs_find_with_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_find_with_opts()

    -
    -

    Synopsis

    -
    mongoc_gridfs_file_list_t *
    -mongoc_gridfs_find_with_opts (mongoc_gridfs_t *gridfs,
    -                              const bson_t *filter,
    -                              const bson_t *opts) BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • gridfs: A mongoc_gridfs_t.
    • -
    • filter: A bson_t containing the query to execute.
    • -
    • opts: A bson_t query options, including sort order and which fields to return. Can be NULL.
    • -
    -
    -
    -

    Description

    -

    Finds all gridfs files matching filter. You can iterate the matched gridfs files with the resulting file list.

    -

    See mongoc_collection_find_with_opts() for a description of the filter and opts parameters.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_gridfs_file_list_t that should be freed with mongoc_gridfs_file_list_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_chunks.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_chunks.html deleted file mode 100644 index 019ff1a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_chunks.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_get_chunks() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_get_chunks()

    -
    -

    Synopsis

    -
    mongoc_collection_t *
    -mongoc_gridfs_get_chunks (mongoc_gridfs_t *gridfs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Returns a mongoc_collection_t that contains the chunks for files. This instance is owned by the mongoc_gridfs_t instance and should not be modified or freed.

    -
    -
    -

    Returns

    -

    Returns a mongoc_collection_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_files.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_files.html deleted file mode 100644 index cf21ef1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_get_files.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_gridfs_get_files() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_get_files()

    -
    -

    Synopsis

    -
    mongoc_collection_t *
    -mongoc_gridfs_get_files (mongoc_gridfs_t *gridfs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Retrieves the mongoc_collection_t containing the file metadata for GridFS. This instance is owned by the mongoc_gridfs_t and should not be modified or freed.

    -
    -
    -

    Returns

    -

    Returns a mongoc_collection_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_remove_by_filename.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_remove_by_filename.html deleted file mode 100644 index aa7f91d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_remove_by_filename.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_gridfs_remove_by_filename() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_remove_by_filename()

    -
    -

    Synopsis

    -
    bool
    -mongoc_gridfs_remove_by_filename (mongoc_gridfs_t *gridfs,
    -                                  const char *filename,
    -                                  bson_error_t *error);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • gridfs: A mongoc_gridfs_t.
    • -
    • filename: A UTF-8 encoded string containing the filename.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    Removes all files matching filename and their data chunks from the MongoDB server.

    -
    -
    -

    Returns

    -

    Returns true if successful, including when no files match. Returns false and sets error if there are invalid arguments or a server or network error.

    -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_t.html deleted file mode 100644 index 242daf7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_gridfs_t.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - mongoc_gridfs_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_gridfs_t

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct _mongoc_gridfs_t mongoc_gridfs_t;
    -
    -
    -
    -
    -

    Description

    -

    mongoc_gridfs_t provides a MongoDB gridfs implementation. The system as a whole is made up of gridfs objects, which contain gridfs_files and gridfs_file_lists. Essentially, a basic file system API.

    -

    There are extensive caveats about the kind of use cases gridfs is practical for. In particular, any writing after initial file creation is likely to both break any concurrent readers and be quite expensive. That said, this implementation does allow for arbitrary writes to existing gridfs object, just use them with caution.

    -

    mongoc_gridfs also integrates tightly with the mongoc_stream_t abstraction, which provides some convenient wrapping for file creation and reading/writing. It can be used without, but its worth looking to see if your problem can fit that model.

    -
    -

    Warning

    -

    mongoc_gridfs_t does not support read preferences. In a replica set, GridFS queries are always routed to the primary.

    -
    -
    -
    -

    Thread Safety

    -

    mongoc_gridfs_t is NOT thread-safe and should only be used in the same thread as the owning mongoc_client_t.

    -
    -
    -

    Lifecycle

    -

    It is an error to free a mongoc_gridfs_t before freeing all related instances of mongoc_gridfs_file_t and mongoc_gridfs_file_list_t.

    -
    -
    -

    Example

    -
    -
    example-gridfs.c
    -
    #include <assert.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -#include <fcntl.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_gridfs_t *gridfs;
    -   mongoc_gridfs_file_t *file;
    -   mongoc_gridfs_file_list_t *list;
    -   mongoc_gridfs_file_opt_t opt = {0};
    -   mongoc_client_t *client;
    -   const char *uri_string = "mongodb://127.0.0.1:27017/?appname=gridfs-example";
    -   mongoc_uri_t *uri;
    -   mongoc_stream_t *stream;
    -   bson_t filter;
    -   bson_t opts;
    -   bson_t child;
    -   bson_error_t error;
    -   ssize_t r;
    -   char buf[4096];
    -   mongoc_iovec_t iov;
    -   const char *filename;
    -   const char *command;
    -   bson_value_t id;
    -
    -   if (argc < 2) {
    -      fprintf (stderr, "usage - %s command ...\n", argv[0]);
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_init ();
    -
    -   iov.iov_base = (void *) buf;
    -   iov.iov_len = sizeof buf;
    -
    -   /* connect to localhost client */
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   assert (client);
    -   mongoc_client_set_error_api (client, 2);
    -
    -   /* grab a gridfs handle in test prefixed by fs */
    -   gridfs = mongoc_client_get_gridfs (client, "test", "fs", &error);
    -   assert (gridfs);
    -
    -   command = argv[1];
    -   filename = argv[2];
    -
    -   if (strcmp (command, "read") == 0) {
    -      if (argc != 3) {
    -         fprintf (stderr, "usage - %s read filename\n", argv[0]);
    -         return EXIT_FAILURE;
    -      }
    -      file = mongoc_gridfs_find_one_by_filename (gridfs, filename, &error);
    -      assert (file);
    -
    -      stream = mongoc_stream_gridfs_new (file);
    -      assert (stream);
    -
    -      for (;;) {
    -         r = mongoc_stream_readv (stream, &iov, 1, -1, 0);
    -
    -         assert (r >= 0);
    -
    -         if (r == 0) {
    -            break;
    -         }
    -
    -         if (fwrite (iov.iov_base, 1, r, stdout) != r) {
    -            MONGOC_ERROR ("Failed to write to stdout. Exiting.\n");
    -            exit (1);
    -         }
    -      }
    -
    -      mongoc_stream_destroy (stream);
    -      mongoc_gridfs_file_destroy (file);
    -   } else if (strcmp (command, "list") == 0) {
    -      bson_init (&filter);
    -
    -      bson_init (&opts);
    -      bson_append_document_begin (&opts, "sort", -1, &child);
    -      BSON_APPEND_INT32 (&child, "filename", 1);
    -      bson_append_document_end (&opts, &child);
    -
    -      list = mongoc_gridfs_find_with_opts (gridfs, &filter, &opts);
    -
    -      bson_destroy (&filter);
    -      bson_destroy (&opts);
    -
    -      while ((file = mongoc_gridfs_file_list_next (list))) {
    -         const char *name = mongoc_gridfs_file_get_filename (file);
    -         printf ("%s\n", name ? name : "?");
    -
    -         mongoc_gridfs_file_destroy (file);
    -      }
    -
    -      mongoc_gridfs_file_list_destroy (list);
    -   } else if (strcmp (command, "write") == 0) {
    -      if (argc != 4) {
    -         fprintf (stderr, "usage - %s write filename input_file\n", argv[0]);
    -         return EXIT_FAILURE;
    -      }
    -
    -      stream = mongoc_stream_file_new_for_path (argv[3], O_RDONLY, 0);
    -      assert (stream);
    -
    -      opt.filename = filename;
    -
    -      /* the driver generates a file_id for you */
    -      file = mongoc_gridfs_create_file_from_stream (gridfs, stream, &opt);
    -      assert (file);
    -
    -      id.value_type = BSON_TYPE_INT32;
    -      id.value.v_int32 = 1;
    -
    -      /* optional: the following method specifies a file_id of any
    -         BSON type */
    -      if (!mongoc_gridfs_file_set_id (file, &id, &error)) {
    -         fprintf (stderr, "%s\n", error.message);
    -         return EXIT_FAILURE;
    -      }
    -
    -      if (!mongoc_gridfs_file_save (file)) {
    -         mongoc_gridfs_file_error (file, &error);
    -         fprintf (stderr, "Could not save: %s\n", error.message);
    -         return EXIT_FAILURE;
    -      }
    -
    -      mongoc_gridfs_file_destroy (file);
    -   } else {
    -      fprintf (stderr, "Unknown command");
    -      return EXIT_FAILURE;
    -   }
    -
    -   mongoc_gridfs_destroy (gridfs);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_host_list_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_host_list_t.html deleted file mode 100644 index 48a5b77..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_host_list_t.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_host_list_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_host_list_t

    -
    -

    Synopsis

    -
    typedef struct {
    -   mongoc_host_list_t *next;
    -   char host[BSON_HOST_NAME_MAX + 1];
    -   char host_and_port[BSON_HOST_NAME_MAX + 7];
    -   uint16_t port;
    -   int family;
    -   void *padding[4];
    -} mongoc_host_list_t;
    -
    -
    -
    -
    -

    Description

    -

    The host and port of a MongoDB server. Can be part of a linked list: for example the return value of mongoc_uri_get_hosts() when multiple hosts are provided in the MongoDB URI.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_get_default.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_get_default.html deleted file mode 100644 index 4d9d471..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_get_default.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_index_opt_geo_get_default() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_geo_get_default()

    -
    -

    Synopsis

    -
    const mongoc_index_opt_geo_t *
    -mongoc_index_opt_geo_get_default (void) BSON_GNUC_PURE;
    -
    -
    -
    -
    -

    Returns

    -

    Returns a pointer to the default GEO index creation options.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_init.html deleted file mode 100644 index 7c205e0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_init.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_index_opt_geo_init() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_geo_init()

    -
    -

    Synopsis

    -
    void
    -mongoc_index_opt_geo_init (mongoc_index_opt_geo_t *opt);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function will initialize opt to the default values. It should be called before modifying any fields within the structure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_t.html deleted file mode 100644 index 6fca362..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_geo_t.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_index_opt_geo_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_geo_t

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct {
    -   uint8_t twod_sphere_version;
    -   uint8_t twod_bits_precision;
    -   double twod_location_min;
    -   double twod_location_max;
    -   double haystack_bucket_size;
    -   uint8_t *padding[32];
    -} mongoc_index_opt_geo_t;
    -
    -
    -
    -
    -

    Description

    -

    This structure contains the options that may be used for tuning a GEO index.

    -
    - - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_get_default.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_get_default.html deleted file mode 100644 index 7230c7f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_get_default.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_index_opt_get_default() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_get_default()

    -
    -

    Synopsis

    -
    const mongoc_index_opt_t *
    -mongoc_index_opt_get_default (void) BSON_GNUC_PURE;
    -
    -
    -
    -
    -

    Returns

    -

    Returns a pointer to the default index creation options.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_init.html deleted file mode 100644 index dab4e13..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_init.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_index_opt_init() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_init()

    -
    -

    Synopsis

    -
    void
    -mongoc_index_opt_init (mongoc_index_opt_t *opt);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function will initialize opt to the default values. It should be called before modifying any fields within the structure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_t.html deleted file mode 100644 index 31dcb0c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_t.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - mongoc_index_opt_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_t

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct {
    -   bool is_initialized;
    -   bool background;
    -   bool unique;
    -   const char *name;
    -   bool drop_dups;
    -   bool sparse;
    -   int32_t expire_after_seconds;
    -   int32_t v;
    -   const bson_t *weights;
    -   const char *default_language;
    -   const char *language_override;
    -   mongoc_index_opt_geo_t *geo_options;
    -   mongoc_index_opt_storage_t *storage_options;
    -   const bson_t *partial_filter_expression;
    -   const bson_t *collation;
    -   void *padding[4];
    -} mongoc_index_opt_t;
    -
    -
    -
    -
    -

    Deprecated

    -

    This structure is deprecated and should not be used in new code. See Creating Indexes.

    -
    -
    -

    Description

    -

    This structure contains the options that may be used for tuning a specific index.

    -

    See the createIndexes documentations in the MongoDB manual for descriptions of individual options.

    -
    -

    Note

    -

    dropDups is deprecated as of MongoDB version 3.0.0. This option is silently ignored by the server and unique index builds using this option will fail if a duplicate value is detected.

    -
    -
    -
    -

    Example

    -
    {
    -   bson_t keys;
    -   bson_error_t error;
    -   mongoc_index_opt_t opt;
    -   mongoc_index_opt_geo_t geo_opt;
    -
    -   mongoc_index_opt_init (&opt);
    -   mongoc_index_opt_geo_init (&geo_opt);
    -
    -   bson_init (&keys);
    -   BSON_APPEND_UTF8 (&keys, "location", "2d");
    -
    -   geo_opt.twod_location_min = -123;
    -   geo_opt.twod_location_max = +123;
    -   geo_opt.twod_bits_precision = 30;
    -   opt.geo_options = &geo_opt;
    -
    -   collection = mongoc_client_get_collection (client, "test", "geo_test");
    -   if (mongoc_collection_create_index (collection, &keys, &opt, &error)) {
    -      /* Successfully created the geo index */
    -   }
    -   bson_destroy (&keys);
    -   mongoc_collection_destroy (&collection);
    -}
    -
    -
    -
    - - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_get_default.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_get_default.html deleted file mode 100644 index 324194b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_get_default.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_index_opt_wt_get_default() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_wt_get_default()

    -
    -

    Synopsis

    -
    const mongoc_index_opt_wt_t *
    -mongoc_index_opt_wt_get_default (void) BSON_GNUC_PURE;
    -
    -
    -
    -
    -

    Returns

    -

    Returns a pointer to the default WiredTiger index creation options.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_init.html deleted file mode 100644 index 35a7000..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_init.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_index_opt_wt_init() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_wt_init()

    -
    -

    Synopsis

    -
    void
    -mongoc_index_opt_wt_init (mongoc_index_opt_wt_t *opt);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function will initialize opt to the default values. It should be called before modifying any fields within the structure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_t.html deleted file mode 100644 index c465562..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_index_opt_wt_t.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - mongoc_index_opt_wt_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_index_opt_wt_t

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct {
    -   mongoc_index_opt_storage_t base;
    -   const char *config_str;
    -   void *padding[8];
    -} mongoc_index_opt_wt_t;
    -
    -
    -
    -
    -

    Description

    -

    This structure contains the options that may be used for tuning a WiredTiger specific index.

    -
    - - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_init.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_init.html deleted file mode 100644 index 85db5eb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_init.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - mongoc_init() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_init()

    -
    -

    Synopsis

    -
    void
    -mongoc_init (void);
    -
    -
    -
    -
    -

    Description

    -

    Initialize the MongoDB C Driver by calling mongoc_init() exactly once at the beginning of your program. It is responsible for initializing global state such as process counters, SSL, and threading primitives.

    -

    Call mongoc_cleanup() exactly once at the end of your program to release all memory and other resources allocated by the driver. You must not call any other MongoDB C Driver functions after mongoc_cleanup(). Note that mongoc_init() does not reinitialize the driver after mongoc_cleanup().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_insert_flags_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_insert_flags_t.html deleted file mode 100644 index 7eef49b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_insert_flags_t.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - mongoc_insert_flags_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_insert_flags_t

    -

    Flags for insert operations

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_INSERT_NONE = 0,
    -   MONGOC_INSERT_CONTINUE_ON_ERROR = 1 << 0,
    -} mongoc_insert_flags_t;
    -
    -#define MONGOC_INSERT_NO_VALIDATE (1U << 31)
    -
    -
    -
    -
    -

    Description

    -

    These flags correspond to the MongoDB wire protocol. They may be bitwise or’d together. They may modify how an insert happens on the MongoDB server.

    -
    -
    -

    Flag Values

    - ---- - - - - - - - - - - - -
    MONGOC_INSERT_NONESpecify no insert flags.
    MONGOC_INSERT_CONTINUE_ON_ERRORContinue inserting documents from the insertion set even if one insert fails.
    MONGOC_INSERT_NO_VALIDATEDo not validate insertion documents before performing an insert. Validation can be expensive, so this can save some time if you know your documents are already valid.
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_iovec_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_iovec_t.html deleted file mode 100644 index 292a61d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_iovec_t.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_iovec_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_iovec_t

    -
    -

    Synopsis

    -
    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -#ifdef _WIN32
    -typedef struct {
    -   u_long iov_len;
    -   char *iov_base;
    -} mongoc_iovec_t;
    -#else
    -typedef struct iovec mongoc_iovec_t;
    -#endif
    -
    -
    -

    The mongoc_iovec_t structure is a portability abstraction for consumers of the mongoc_stream_t interfaces. It allows for scatter/gather I/O through the socket subsystem.

    -
    -

    Warning

    -

    When writing portable code, beware of the ordering of iov_len and iov_base as they are different on various platforms. Therefore, you should not use C initializers for initialization.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_destroy.html deleted file mode 100644 index 60af6d0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_destroy.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_matcher_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_matcher_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_matcher_destroy (mongoc_matcher_t *matcher);
    -
    -
    -

    Release all resources associated with matcher including freeing the structure.

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    mongoc_matcher_t is deprecated and will be removed in version 2.0.

    -
    -
    -
    -

    Parameters

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_match.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_match.html deleted file mode 100644 index 1975f43..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_match.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_matcher_match() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_matcher_match()

    -
    -

    Synopsis

    -
    bool
    -mongoc_matcher_match (const mongoc_matcher_t *matcher, const bson_t *document);
    -
    -
    -

    This function will check to see if the query compiled in matcher matches document.

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    mongoc_matcher_t is deprecated and will be removed in version 2.0.

    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    true if document matches the query specification provided to mongoc_matcher_new(). Otherwise, false.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_new.html deleted file mode 100644 index 7a0e554..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_new.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_matcher_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_matcher_new()

    -
    -

    Synopsis

    -
    mongoc_matcher_t *
    -mongoc_matcher_new (const bson_t *query, bson_error_t *error);
    -
    -
    -

    Create a new mongoc_matcher_t using the query specification provided.

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    mongoc_matcher_t is deprecated and will be removed in version 2.0.

    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Errors

    -

    Errors are propagated via the error parameter.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_matcher_t that should be freed with mongoc_matcher_destroy() when no longer in use. Upon failure, NULL is returned and error is set. This could happen if query contains an invalid query specification.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_t.html deleted file mode 100644 index da9501c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_matcher_t.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - mongoc_matcher_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_matcher_t

    -

    Client-side document matching abstraction

    -
    -

    Synopsis

    -
    typedef struct _mongoc_matcher_t mongoc_matcher_t;
    -
    -
    -

    mongoc_matcher_t provides a reduced-interface for client-side matching of BSON documents.

    -

    It can perform the basics such as $in, $nin, $eq, $neq, $gt, $gte, $lt, and $lte.

    -
    -

    Warning

    -

    mongoc_matcher_t does not currently support the full spectrum of query operations that the MongoDB server supports.

    -
    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    mongoc_matcher_t is deprecated and will be removed in version 2.0.

    -
    -
    - -
    -

    Example

    -
    -
    Filter a sequence of BSON documents from STDIN based on a query
    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_matcher_t *matcher;
    -   bson_reader_t *reader;
    -   const bson_t *bson;
    -   bson_t *spec;
    -   char *str;
    -   int fd;
    -
    -   mongoc_init ();
    -
    -#ifdef _WIN32
    -   fd = fileno (stdin);
    -#else
    -   fd = STDIN_FILENO;
    -#endif
    -
    -   reader = bson_reader_new_from_fd (fd, false);
    -
    -   spec = BCON_NEW ("hello", "world");
    -   matcher = mongoc_matcher_new (spec, NULL);
    -
    -   while ((bson = bson_reader_read (reader, NULL))) {
    -      if (mongoc_matcher_match (matcher, bson)) {
    -         str = bson_as_canonical_extended_json (bson, NULL);
    -         printf ("%s\n", str);
    -         bson_free (str);
    -      }
    -   }
    -
    -   bson_reader_destroy (reader);
    -   bson_destroy (spec);
    -
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_query_flags_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_query_flags_t.html deleted file mode 100644 index 489aa24..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_query_flags_t.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - mongoc_query_flags_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_query_flags_t

    -

    Flags for query operations

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_QUERY_NONE = 0,
    -   MONGOC_QUERY_TAILABLE_CURSOR = 1 << 1,
    -   MONGOC_QUERY_SLAVE_OK = 1 << 2,
    -   MONGOC_QUERY_OPLOG_REPLAY = 1 << 3,
    -   MONGOC_QUERY_NO_CURSOR_TIMEOUT = 1 << 4,
    -   MONGOC_QUERY_AWAIT_DATA = 1 << 5,
    -   MONGOC_QUERY_EXHAUST = 1 << 6,
    -   MONGOC_QUERY_PARTIAL = 1 << 7,
    -} mongoc_query_flags_t;
    -
    -
    -
    -
    -

    Description

    -

    These flags correspond to the MongoDB wire protocol. They may be bitwise or’d together. They may modify how a query is performed in the MongoDB server.

    -
    -
    -

    Flag Values

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MONGOC_QUERY_NONESpecify no query flags.
    MONGOC_QUERY_TAILABLE_CURSORCursor will not be closed when the last data is retrieved. You can resume this cursor later.
    MONGOC_QUERY_SLAVE_OKAllow query of replica set secondaries.
    MONGOC_QUERY_OPLOG_REPLAYUsed internally by MongoDB.
    MONGOC_QUERY_NO_CURSOR_TIMEOUTThe server normally times out an idle cursor after an inactivity period (10 minutes). This prevents that.
    MONGOC_QUERY_AWAIT_DATAUse with MONGOC_QUERY_TAILABLE_CURSOR. Block rather than returning no data. After a period, time out.
    MONGOC_QUERY_EXHAUSTStream the data down full blast in multiple “reply” packets. Faster when you are pulling down a lot of data and you know you want to retrieve it all.
    MONGOC_QUERY_PARTIALGet partial results from mongos if some shards are down (instead of throwing an error).
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand.html deleted file mode 100644 index 5f8c8a5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - mongoc_rand — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_rand

    -

    MongoDB Random Number Generator

    -
    -

    Synopsis

    -
    void
    -mongoc_rand_add (const void *buf, int num, doubel entropy);
    -
    -void
    -mongoc_rand_seed (const void *buf, int num);
    -
    -int
    -mongoc_rand_status (void);
    -
    -
    -
    -
    -

    Description

    -

    The mongoc_rand family of functions provide access to the low level randomness primitives used by the MongoDB C Driver. In particular, they control the creation of cryptographically strong pseudo-random bytes required by some security mechanisms.

    -

    While we can usually pull enough entropy from the environment, you may be required to seed the PRNG manually depending on your OS, hardware and other entropy consumers running on the same system.

    -
    -
    -

    Entropy

    -

    mongoc_rand_add and mongoc_rand_seed allow the user to directly provide entropy. They differ insofar as mongoc_rand_seed requires that each bit provided is fully random. mongoc_rand_add allows the user to specify the degree of randomness in the provided bytes as well.

    -
    -
    -

    Status

    -

    The mongoc_rand_status function allows the user to check the status of the mongoc PRNG. This can be used to guarantee sufficient entropy at program startup, rather than waiting for runtime errors to occur.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_add.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_add.html deleted file mode 100644 index ffe71c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_add.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_rand_add() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_rand_add()

    -
    -

    Synopsis

    -
    void
    -mongoc_rand_add (const void *buf, int num, double entropy);
    -
    -
    -
    -
    -

    Description

    -

    Mixes num bytes of data into the mongoc random number generator. Entropy specifies a lower bound estimate of the randomness contained in buf.

    -
    -
    -

    Parameters

    -
      -
    • buf: A buffer.
    • -
    • num: An int of number of bytes in buf.
    • -
    • entropy: A double of randomness estimate in buf.
    • -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_seed.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_seed.html deleted file mode 100644 index 8ccc307..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_seed.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_rand_seed() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_rand_seed()

    -
    -

    Synopsis

    -
    void
    -mongoc_rand_seed (const void *buf, int num);
    -
    -
    -
    -
    -

    Description

    -

    Seeds the mongoc random number generator with num bytes of entropy.

    -
    -
    -

    Parameters

    -
      -
    • buf: A buffer.
    • -
    • num: An int of number of bytes in buf.
    • -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_status.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_status.html deleted file mode 100644 index cfbdacb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_rand_status.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - mongoc_rand_status() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_rand_status()

    -
    -

    Synopsis

    -
    int
    -mongoc_rand_status (void);
    -
    -
    -
    -
    -

    Description

    -

    The status of the mongoc random number generator.

    -
    -
    -

    Returns

    -

    Returns 1 if the PRNG has been seeded with enough data, 0 otherwise.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_append.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_append.html deleted file mode 100644 index 9c4b8c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_append.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_read_concern_append() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_append()

    -
    -

    Synopsis

    -
    bool
    -mongoc_read_concern_append (mongoc_read_concern_t *read_concern, bson_t *opts);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function appends a read concern to command options. It is useful for appending a read concern to command options before passing them to mongoc_client_read_command_with_opts() or a related function that takes an options document.

    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_read_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_copy.html deleted file mode 100644 index 3a42803..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_copy.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_read_concern_copy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_copy()

    -
    -

    Synopsis

    -
    mongoc_read_concern_t *
    -mongoc_read_concern_copy (const mongoc_read_concern_t *read_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Performs a deep copy of read_concern.

    -
    -
    -

    Returns

    -

    Returns a newly allocated copy of read_concern that should be freed with mongoc_read_concern_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_destroy.html deleted file mode 100644 index 87e0710..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_read_concern_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_read_concern_destroy (mongoc_read_concern_t *read_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Frees all resources associated with the read concern structure. Does nothing if read_concern is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_get_level.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_get_level.html deleted file mode 100644 index e773078..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_get_level.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_read_concern_get_level() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_get_level()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_read_concern_get_level (const mongoc_read_concern_t *read_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Returns the currently set read concern.

    -
    -
    -

    Returns

    -

    Returns the current readConcern. If none is set, returns NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_is_default.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_is_default.html deleted file mode 100644 index 90ce283..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_is_default.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_read_concern_is_default() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_is_default()

    -
    -

    Synopsis

    -
    bool
    -mongoc_read_concern_is_default (mongoc_read_concern_t *read_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Returns true if read_concern has not been modified from the default. For example, if no “readConcern” option is set in the MongoDB URI and you have not called mongoc_client_set_read_concern(), then mongoc_read_concern_is_default() is true for the read concern returned by mongoc_client_get_read_concern().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_new.html deleted file mode 100644 index 405955b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_new.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_read_concern_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_new()

    -
    -

    Synopsis

    -
    mongoc_read_concern_t *
    -mongoc_read_concern_new (void);
    -
    -
    -
    -
    -

    Returns

    -

    Creates a newly allocated read concern that can be configured based on user preference. This should be freed with mongoc_read_concern_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_set_level.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_set_level.html deleted file mode 100644 index 68cb6b7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_set_level.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_read_concern_set_level() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_set_level()

    -
    -

    Synopsis

    -
    bool
    -mongoc_read_concern_set_level (mongoc_read_concern_t *read_concern,
    -                               const char *level);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the read concern level. See mongoc_read_concern_t for details.

    -

    Beginning in version 1.9.0, this function can now alter the read concern after -it has been used in an operation. Previously, using the struct with an operation -would mark it as “frozen” and calling this function would return false -instead of altering the read concern.

    -
    -
    -

    Returns

    -

    Returns true if the read concern level was set, or false otherwise.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_t.html deleted file mode 100644 index cc1d563..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_concern_t.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - mongoc_read_concern_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_concern_t

    -

    Read Concern abstraction

    -
    -

    Synopsis

    -

    New in MongoDB 3.2.

    -

    The mongoc_read_concern_t allows clients to choose a level of isolation for their reads. The default, MONGOC_READ_CONCERN_LEVEL_LOCAL, is right for the great majority of applications.

    -

    You can specify a read concern on connection objects, database objects, or collection objects.

    -

    See readConcern on the MongoDB website for more information.

    -

    Read Concern is only sent to MongoDB when it has explicitly been set by mongoc_read_concern_set_level() to anything other than NULL.

    -
    -
    -

    Read Concern Levels

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MacroDescriptionFirst MongoDB version
    MONGOC_READ_CONCERN_LEVEL_LOCALLevel “local”, the default.3.2
    MONGOC_READ_CONCERN_LEVEL_MAJORITYLevel “majority”.3.2
    MONGOC_READ_CONCERN_LEVEL_LINEARIZABLELevel “linearizable”.3.4
    MONGOC_READ_CONCERN_LEVEL_AVAILABLELevel “available”.3.6
    MONGOC_READ_CONCERN_LEVEL_SNAPSHOTLevel “snapshot”.4.0
    -

    For the sake of compatibility with future versions of MongoDB, mongoc_read_concern_set_level() allows any string, not just this list of known read concern levels.

    -

    See Read Concern Levels in the MongoDB manual for more information about the individual read concern levels.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_mode_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_mode_t.html deleted file mode 100644 index 6039691..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_mode_t.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - mongoc_read_mode_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_mode_t

    -

    Read Preference Modes

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_READ_PRIMARY = (1 << 0),
    -   MONGOC_READ_SECONDARY = (1 << 1),
    -   MONGOC_READ_PRIMARY_PREFERRED = (1 << 2) | MONGOC_READ_PRIMARY,
    -   MONGOC_READ_SECONDARY_PREFERRED = (1 << 2) | MONGOC_READ_SECONDARY,
    -   MONGOC_READ_NEAREST = (1 << 3) | MONGOC_READ_SECONDARY,
    -} mongoc_read_mode_t;
    -
    -
    -
    -
    -

    Description

    -

    This enum describes how reads should be dispatched. The default is MONGOC_READ_PRIMARY.

    -

    Please see the MongoDB website for a description of Read Preferences.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_add_tag.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_add_tag.html deleted file mode 100644 index 08ed1bc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_add_tag.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_read_prefs_add_tag() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_add_tag()

    -
    -

    Synopsis

    -
    void
    -mongoc_read_prefs_add_tag (mongoc_read_prefs_t *read_prefs, const bson_t *tag);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall add a tag to a read preference.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_copy.html deleted file mode 100644 index e9a3d90..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_copy.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_read_prefs_copy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_copy()

    -
    -

    Synopsis

    -
    mongoc_read_prefs_t *
    -mongoc_read_prefs_copy (const mongoc_read_prefs_t *read_prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function shall deep copy a read preference.

    -
    -
    -

    Returns

    -

    Returns a newly allocated read preference that should be freed with mongoc_read_prefs_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_destroy.html deleted file mode 100644 index e62354a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_read_prefs_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_read_prefs_destroy (mongoc_read_prefs_t *read_prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Frees a read preference and all associated resources. Does nothing if read_prefs is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_max_staleness_seconds.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_max_staleness_seconds.html deleted file mode 100644 index c2aa34e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_max_staleness_seconds.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_read_prefs_get_max_staleness_seconds() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_get_max_staleness_seconds()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_read_prefs_get_max_staleness_seconds (
    -   const mongoc_read_prefs_t *read_prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Clients estimate the staleness of each secondary, and select for reads only those secondaries whose estimated staleness is less than or equal to maxStalenessSeconds. The default is MONGOC_NO_MAX_STALENESS.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_mode.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_mode.html deleted file mode 100644 index 4c3e1bb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_mode.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_read_prefs_get_mode() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_get_mode()

    -
    -

    Synopsis

    -
    mongoc_read_mode_t
    -mongoc_read_prefs_get_mode (const mongoc_read_prefs_t *read_prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the mongoc_read_mode_t for the read preference.

    -
    -
    -

    Returns

    -

    Returns the read preference mode.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_tags.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_tags.html deleted file mode 100644 index 8d3e502..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_get_tags.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_read_prefs_get_tags() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_get_tags()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_read_prefs_get_tags (const mongoc_read_prefs_t *read_prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches any read preference tags that have been registered.

    -
    -
    -

    Returns

    -

    Returns a bson_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_is_valid.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_is_valid.html deleted file mode 100644 index 81d8467..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_is_valid.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_read_prefs_is_valid() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_is_valid()

    -
    -

    Synopsis

    -
    bool
    -mongoc_read_prefs_is_valid (const mongoc_read_prefs_t *read_prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Performs a consistency check of read_prefs to ensure it makes sense and can be satisfied.

    -

    This only performs local consistency checks.

    -
    -
    -

    Returns

    -

    Returns true if the read pref is valid.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_new.html deleted file mode 100644 index b2deed9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_new.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_read_prefs_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_new()

    -
    -

    Synopsis

    -
    mongoc_read_prefs_t *
    -mongoc_read_prefs_new (mongoc_read_mode_t read_mode);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Creates a new mongoc_read_prefs_t using the mode specified.

    -
    -
    -

    Returns

    -

    Returns a newly allocated mongoc_read_prefs_t that should be freed with mongoc_read_prefs_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_max_staleness_seconds.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_max_staleness_seconds.html deleted file mode 100644 index ee9f024..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_max_staleness_seconds.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_read_prefs_set_max_staleness_seconds() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_set_max_staleness_seconds()

    -
    -

    Synopsis

    -
    void
    -mongoc_read_prefs_set_max_staleness_seconds (mongoc_read_prefs_t *read_prefs,
    -                                             int64_t max_staleness_seconds);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • read_prefs: A mongoc_read_prefs_t.
    • -
    • max_staleness_seconds: A positive integer or MONGOC_NO_MAX_STALENESS.
    • -
    -
    -
    -

    Description

    -

    Sets the maxStalenessSeconds to be used for the read preference. Clients estimate the staleness of each secondary, and select for reads only those secondaries whose estimated staleness is less than or equal to maxStalenessSeconds.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_mode.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_mode.html deleted file mode 100644 index c6b4f28..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_mode.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_read_prefs_set_mode() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_set_mode()

    -
    -

    Synopsis

    -
    void
    -mongoc_read_prefs_set_mode (mongoc_read_prefs_t *read_prefs,
    -                            mongoc_read_mode_t mode);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the read preference mode. See the MongoDB website for more information on Read Preferences.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_tags.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_tags.html deleted file mode 100644 index 2c518a0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_set_tags.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - mongoc_read_prefs_set_tags() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_set_tags()

    -
    -

    Synopsis

    -
    void
    -mongoc_read_prefs_set_tags (mongoc_read_prefs_t *read_prefs,
    -                            const bson_t *tags);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the tags to be used for the read preference. Only mongod instances matching these tags will be suitable for handling the request.

    -
    -
    -

    Examples

    -
    #include <mongoc/mongoc.h>
    -
    -static void
    -run_query_with_read_prefs_tags (mongoc_collection_t *collection)
    -{
    -   char *str;
    -   const bson_t *doc;
    -   bson_t filter = BSON_INITIALIZER;
    -   bson_error_t error;
    -   mongoc_cursor_t *cursor;
    -   mongoc_read_prefs_t *read_prefs;
    -   /*  Create a tagset representing
    -    *  [
    -    *    {"dc": "ny", "rack": "1" }, // Any node in rack1 in the ny datacenter
    -    *    {"dc": "ny", "rack": "2" }, // Any node in rack2 in the ny datacenter
    -    *    {"dc": "ny" },              // Any node in the ny datacenter
    -    *    {}                          // If all else fails, just any available node
    -    * ]
    -    */
    -   bson_t *tags = BCON_NEW (
    -      "0", "{", "dc", BCON_UTF8("ny"), "rack", BCON_UTF8("1"), "}",
    -      "1", "{", "dc", BCON_UTF8("ny"), "rack", BCON_UTF8("2"), "}",
    -      "2", "{", "dc", BCON_UTF8("ny"), "}",
    -      "3", "{", "}"
    -   );
    -
    -   read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
    -   mongoc_read_prefs_set_tags (read_prefs, tags);
    -   bson_destroy (tags);
    -
    -   cursor =
    -      mongoc_collection_find_with_opts (collection, &filter, NULL, read_prefs);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   }
    -   if (mongoc_cursor_error (cursor, &error)) {
    -      fprintf (stderr, "Cursor error: %s\n", error.message);
    -   }
    -
    -   mongoc_cursor_destroy (cursor);
    -   mongoc_read_prefs_destroy (read_prefs);
    -   bson_destroy (doc);
    -}
    -
    -int main (void)
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -
    -   mongoc_init ();
    -
    -   client =
    -      mongoc_client_new ("mongodb://localhost/?appname=rp_tags&replicaSet=foo");
    -   mongoc_client_set_error_api (client, 2);
    -   collection = mongoc_client_get_collection (client, "dbname", "collname");
    -   run_query_with_read_prefs_tags (collection);
    -
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup();
    -}
    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_t.html deleted file mode 100644 index 3d438db..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_read_prefs_t.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - mongoc_read_prefs_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_read_prefs_t

    -

    A read preference abstraction

    -
    -

    Synopsis

    -

    mongoc_read_prefs_t provides an abstraction on top of the MongoDB connection read prefences. It allows for hinting to the driver which nodes in a replica set should be accessed first.

    -

    You can specify a read preference mode on connection objects, database objects, collection objects, or per-operation. Generally, it makes the most sense to stick with the global default, MONGOC_READ_PRIMARY. All of the other modes come with caveats that won’t be covered in great detail here.

    -
    -
    -

    Read Modes

    - ---- - - - - - - - - - - - - - - - - - -
    MONGOC_READ_PRIMARYDefault mode. All operations read from the current replica set primary.
    MONGOC_READ_SECONDARYAll operations read from among the nearest secondary members of the replica set.
    MONGOC_READ_PRIMARY_PREFERREDIn most situations, operations read from the primary but if it is unavailable, operations read from secondary members.
    MONGOC_READ_SECONDARY_PREFERREDIn most situations, operations read from among the nearest secondary members, but if no secondaries are available, operations read from the primary.
    MONGOC_READ_NEARESTOperations read from among the nearest members of the replica set, irrespective of the member’s type.
    -
    -
    -

    Tag Sets

    -

    Tag sets allow you to specify custom read preferences and write concerns so that your application can target operations to specific members.

    -

    Custom read preferences and write concerns evaluate tags sets in different ways: read preferences consider the value of a tag when selecting a member to read from. while write concerns ignore the value of a tag to when selecting a member except to consider whether or not the value is unique.

    -

    You can specify tag sets with the following read preference modes:

    -
      -
    • primaryPreferred
    • -
    • secondary
    • -
    • secondaryPreferred
    • -
    • nearest
    • -
    -

    Tags are not compatible with MONGOC_READ_PRIMARY and, in general, only apply when selecting a secondary member of a set for a read operation. However, the nearest read mode, when combined with a tag set will select the nearest member that matches the specified tag set, which may be a primary or secondary.

    -

    Tag sets are represented as a comma-separated list of colon-separated key-value -pairs when provided as a connection string, e.g. dc:ny,rack:1.

    -

    To specify a list of tag sets, using multiple readPreferenceTags, e.g.

    -
    readPreferenceTags=dc:ny,rack:1;readPreferenceTags=dc:ny;readPreferenceTags=
    -
    -
    -

    Note the empty value for the last one, which means match any secondary as a -last resort.

    -

    Order matters when using multiple readPreferenceTags.

    -

    Tag Sets can also be configured using mongoc_read_prefs_set_tags().

    -

    All interfaces use the same member selection logic to choose the member to which to direct read operations, basing the choice on read preference mode and tag sets.

    -
    -
    -

    Max Staleness

    -

    When connected to replica set running MongoDB 3.4 or later, the driver estimates the staleness of each secondary based on lastWriteDate values provided in server isMaster responses.

    -

    Max Staleness is the maximum replication lag in seconds (wall clock time) that a secondary can suffer and still be eligible for reads. The default is MONGOC_NO_MAX_STALENESS, which disables staleness checks. Otherwise, it must be a positive integer at least MONGOC_SMALLEST_MAX_STALENESS_SECONDS (90 seconds).

    -

    Max Staleness is also supported by sharded clusters of replica sets if all servers run MongoDB 3.4 or later.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_remove_flags_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_remove_flags_t.html deleted file mode 100644 index 98aa4a2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_remove_flags_t.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_remove_flags_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_remove_flags_t

    -

    Flags for deletion operations

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_REMOVE_NONE = 0,
    -   MONGOC_REMOVE_SINGLE_REMOVE = 1 << 0,
    -} mongoc_remove_flags_t;
    -
    -
    -
    -
    -

    Description

    -

    These flags correspond to the MongoDB wire protocol. They may be bitwise or’d together. They may change the number of documents that are removed during a remove command.

    -
    -
    -

    Flag Values

    - ---- - - - - - - - - -
    MONGOC_REMOVE_NONESpecify no removal flags. All matching documents will be removed.
    MONGOC_REMOVE_SINGLE_REMOVEOnly remove the first matching document from the selector.
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_reply_flags_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_reply_flags_t.html deleted file mode 100644 index 26bb571..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_reply_flags_t.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - mongoc_reply_flags_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_reply_flags_t

    -

    Flags from server replies

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_REPLY_NONE = 0,
    -   MONGOC_REPLY_CURSOR_NOT_FOUND = 1 << 0,
    -   MONGOC_REPLY_QUERY_FAILURE = 1 << 1,
    -   MONGOC_REPLY_SHARD_CONFIG_STALE = 1 << 2,
    -   MONGOC_REPLY_AWAIT_CAPABLE = 1 << 3,
    -} mongoc_reply_flags_t;
    -
    -
    -
    -
    -

    Description

    -

    These flags correspond to the wire protocol. They may be bitwise or’d together.

    -
    -
    -

    Flag Values

    - ---- - - - - - - - - - - - - - - - - - -
    MONGOC_REPLY_NONENo flags set.
    MONGOC_REPLY_CURSOR_NOT_FOUNDNo matching cursor was found on the server.
    MONGOC_REPLY_QUERY_FAILUREThe query failed or was invalid. Error document has been provided.
    MONGOC_REPLY_SHARD_CONFIG_STALEShard config is stale.
    MONGOC_REPLY_AWAIT_CAPABLEIf the returned cursor is capable of MONGOC_QUERY_AWAIT_DATA.
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_destroy.html deleted file mode 100644 index 130f3bb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_server_description_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_server_description_destroy (mongoc_server_description_t *description);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Clean up all memory associated with the server description. Does nothing if description is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_host.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_host.html deleted file mode 100644 index 5d74421..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_host.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_server_description_host() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_host()

    -
    -

    Synopsis

    -
    mongoc_host_list_t *
    -mongoc_server_description_host (const mongoc_server_description_t *description);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Return the server’s host and port. This object is owned by the server description.

    -
    -
    -

    Returns

    -

    A reference to the server description’s mongoc_host_list_t, which you must not modify or free.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_id.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_id.html deleted file mode 100644 index 4486e7b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_id.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_server_description_id() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_id()

    -
    -

    Synopsis

    -
    uint32_t
    -mongoc_server_description_id (const mongoc_server_description_t *description);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Get the server’s id, an opaque identifier generated by the client or client pool.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_ismaster.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_ismaster.html deleted file mode 100644 index aa1ca2a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_ismaster.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_server_description_ismaster() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_ismaster()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_server_description_ismaster (
    -   const mongoc_server_description_t *description);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    The client or client pool periodically runs an “isMaster” command on each server, to update its view of the MongoDB deployment. Use mongoc_client_get_server_descriptions() and mongoc_server_description_ismaster() to get the most recent “isMaster” response.

    -
    -
    -

    Returns

    -

    A reference to a BSON document, owned by the server description. The document is empty if the driver is not connected to the server.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_new_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_new_copy.html deleted file mode 100644 index 5aaf3e1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_new_copy.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_server_description_new_copy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_new_copy()

    -
    -

    Synopsis

    -
    mongoc_server_description_t *
    -mongoc_server_description_new_copy (
    -   const mongoc_server_description_t *description);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function copies the given server description and returns a new server description object. The caller is responsible for destroying the new copy.

    -
    -
    -

    Returns

    -

    A copy of the original server description.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_round_trip_time.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_round_trip_time.html deleted file mode 100644 index 7f366e2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_round_trip_time.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_server_description_round_trip_time() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_round_trip_time()

    -
    -

    Synopsis

    -
    int64_t
    -mongoc_server_description_round_trip_time (
    -   const mongoc_server_description_t *description);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Get the server’s round trip time in milliseconds. This is the client’s measurement of the duration of an “ismaster” command.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_t.html deleted file mode 100644 index 9038a35..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_t.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_server_description_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_t

    -

    Server description

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -typedef struct _mongoc_server_description_t mongoc_server_description_t
    -
    -
    -

    mongoc_server_description_t holds information about a mongod or mongos the driver is connected to.

    -

    See also mongoc_client_get_server_descriptions().

    -
    -
    -

    Lifecycle

    -

    Clean up with mongoc_server_description_destroy().

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_type.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_type.html deleted file mode 100644 index 0caddcb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_description_type.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - mongoc_server_description_type() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_description_type()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_server_description_type (const mongoc_server_description_t *description);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function returns a string, one of the server types defined in the Server Discovery And Monitoring Spec:

    -
      -
    • Standalone
    • -
    • Mongos
    • -
    • PossiblePrimary
    • -
    • RSPrimary
    • -
    • RSSecondary
    • -
    • RSArbiter
    • -
    • RSOther
    • -
    • RSGhost
    • -
    • Unknown
    • -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_descriptions_destroy_all.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_descriptions_destroy_all.html deleted file mode 100644 index e433b7d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_server_descriptions_destroy_all.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - mongoc_server_descriptions_destroy_all() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_server_descriptions_destroy_all()

    -
    -

    Synopsis

    -
    void
    -mongoc_server_descriptions_destroy_all (mongoc_server_description_t **sds,
    -                                        size_t n);
    -
    -
    -

    Frees the array of mongoc_server_description_t structs returned by mongoc_client_get_server_descriptions().

    -
    -
    -

    Parameters

    -
      -
    • sds: The array of server descriptions.
    • -
    • n: The number of elements in sds.
    • -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opt_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opt_t.html deleted file mode 100644 index 754708c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opt_t.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_session_opt_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_session_opt_t

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct _mongoc_session_opt_t mongoc_session_opt_t;
    -
    -
    -
    -

    Synopsis

    -

    Start a session with mongoc_client_start_session(), use the session for a sequence of operations and multi-document transactions, then free it with mongoc_client_session_destroy(). Any mongoc_cursor_t or mongoc_change_stream_t using a session must be destroyed before the session, and a session must be destroyed before the mongoc_client_t it came from.

    -

    By default, sessions are causally consistent. To disable causal consistency, before starting a session create a mongoc_session_opt_t with mongoc_session_opts_new() and call mongoc_session_opts_set_causal_consistency(), then free the struct with mongoc_session_opts_destroy().

    -

    Unacknowledged writes are prohibited with sessions.

    -

    A mongoc_client_session_t must be used by only one thread at a time. Due to session pooling, mongoc_client_start_session() may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout.

    -

    See the example code for mongoc_session_opts_set_causal_consistency().

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_clone.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_clone.html deleted file mode 100644 index 3c74af9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_clone.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_session_opts_clone() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_destroy.html deleted file mode 100644 index aa8b317..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_destroy.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - mongoc_session_opts_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_causal_consistency.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_causal_consistency.html deleted file mode 100644 index b8abd11..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_causal_consistency.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_session_opts_get_causal_consistency() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_default_transaction_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_default_transaction_opts.html deleted file mode 100644 index e20d0d2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_get_default_transaction_opts.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_session_opts_get_default_transaction_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_new.html deleted file mode 100644 index 9181127..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_new.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - mongoc_session_opts_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_session_opts_new()

    -
    -

    Synopsis

    -
    mongoc_session_opt_t *
    -mongoc_session_opts_new (void);
    -
    -
    -

    Start a session with mongoc_client_start_session(), use the session for a sequence of operations and multi-document transactions, then free it with mongoc_client_session_destroy(). Any mongoc_cursor_t or mongoc_change_stream_t using a session must be destroyed before the session, and a session must be destroyed before the mongoc_client_t it came from.

    -

    By default, sessions are causally consistent. To disable causal consistency, before starting a session create a mongoc_session_opt_t with mongoc_session_opts_new() and call mongoc_session_opts_set_causal_consistency(), then free the struct with mongoc_session_opts_destroy().

    -

    Unacknowledged writes are prohibited with sessions.

    -

    A mongoc_client_session_t must be used by only one thread at a time. Due to session pooling, mongoc_client_start_session() may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout.

    -

    See the example code for mongoc_session_opts_set_causal_consistency().

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_causal_consistency.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_causal_consistency.html deleted file mode 100644 index b8b73b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_causal_consistency.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - - mongoc_session_opts_set_causal_consistency() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_session_opts_set_causal_consistency()

    -
    -

    Synopsis

    -
    void
    -mongoc_session_opts_set_causal_consistency (mongoc_session_opt_t *opts,
    -                                            bool causal_consistency);
    -
    -
    -

    Configure causal consistency in a session. If true (the default), each operation in the session will be causally ordered after the previous read or write operation. Set to false to disable causal consistency. See the MongoDB Manual Entry for Causal Consistency.

    -

    Unacknowledged writes are not causally consistent. If you execute a write operation with a mongoc_write_concern_t on which you have called mongoc_write_concern_set_w() with a value of 0, the write does not participate in causal consistency.

    -
    -
    -

    Parameters

    - -
    -
    -

    Example

    -
    mongoc_client_t *client;
    -mongoc_session_opt_t *session_opts;
    -mongoc_client_session_t *client_session;
    -mongoc_collection_t *collection;
    -bson_t insert_opts = BSON_INITIALIZER;
    -bson_t *doc;
    -bson_error_t error;
    -bool r;
    -
    -client = mongoc_client_new ("mongodb://example/?appname=session-opts-example");
    -mongoc_client_set_error_api (client, 2);
    -
    -session_opts = mongoc_session_opts_new ();
    -mongoc_session_opts_set_causal_consistency (session_opts, false);
    -client_session = mongoc_client_start_session (client, session_opts, &error);
    -mongoc_session_opts_destroy (session_opts);
    -
    -if (!client_session) {
    -   fprintf (stderr, "Failed to start session: %s\n", error.message);
    -   abort ();
    -}
    -
    -collection = mongoc_client_get_collection (client, "test", "collection");
    -doc = BCON_NEW ("_id", BCON_INT32 (1));
    -r = mongoc_client_session_append (client_session, &insert_opts, NULL);
    -if (!r) {
    -   fprintf (stderr, "mongoc_client_session_append failed: %s\n", error.message);
    -   abort ();
    -}
    -
    -r = mongoc_collection_insert_one (
    -   collection, doc, &insert_opts, NULL /* reply */, &error);
    -
    -if (!r) {
    -   fprintf (stderr, "Insert failed: %s\n", error.message);
    -   abort ();
    -}
    -
    -
    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_default_transaction_opts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_default_transaction_opts.html deleted file mode 100644 index 5925b11..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_session_opts_set_default_transaction_opts.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - mongoc_session_opts_set_default_transaction_opts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_session_opts_set_default_transaction_opts()

    -
    -

    Synopsis

    -
    void
    -mongoc_session_opts_set_default_transaction_opts (
    -   mongoc_session_opt_t *opts, const mongoc_transaction_opt_t *txn_opts);
    -
    -
    -

    Set the default options for transactions started with this session. The txn_opts argument is copied and can be freed after calling this function.

    -

    When a session is first created with mongoc_client_start_session(), it inherits from the client the read concern, write concern, and read preference with which to start transactions. Each of these fields can be overridden independently. Create a mongoc_transaction_opt_t with mongoc_transaction_opts_new(), and pass a non-NULL option to any of the mongoc_transaction_opt_t setter functions:

    - -

    Pass the resulting transaction options to mongoc_session_opts_set_default_transaction_opts(). Each field set in the transaction options overrides the inherited client configuration. There is an opportunity to override each one of these fields again by passing a mongoc_transaction_opt_t to mongoc_client_session_start_transaction().

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_accept.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_accept.html deleted file mode 100644 index f0748d8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_accept.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_socket_accept() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_accept()

    -
    -

    Synopsis

    -
    mongoc_socket_t *
    -mongoc_socket_accept (mongoc_socket_t *sock, int64_t expire_at);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • expire_at: An int64_t containing a timeout in milliseconds.
    • -
    -
    -
    -

    Description

    -

    This function is a wrapper around the BSD socket accept() interface. It allows for more portability between UNIX-like and Microsoft Windows platforms.

    -
    -
    -

    Returns

    -

    NULL upon failure to accept or timeout. A newly allocated mongoc_socket_t that should be released with mongoc_socket_destroy() on success.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_bind.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_bind.html deleted file mode 100644 index 5f9b063..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_bind.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_socket_bind() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_bind()

    -
    -

    Synopsis

    -
    int
    -mongoc_socket_bind (mongoc_socket_t *sock,
    -                    const struct sockaddr *addr,
    -                    mongoc_socklen_t addrlen);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • addr: A struct sockaddr.
    • -
    • addrlen: A mongoc_socklen_t.
    • -
    -
    -
    -

    Description

    -

    This function is a wrapper around the BSD socket bind() interface. It provides better portability between UNIX-like and Microsoft Windows platforms.

    -
    -
    -

    Returns

    -

    0 on success, -1 on failure and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_close.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_close.html deleted file mode 100644 index 211b898..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_close.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_socket_close() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_close()

    -
    -

    Synopsis

    -
    int
    -mongoc_socket_close (mongoc_socket_t *socket);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function is a wrapper around the BSD socket shutdown() and close() functions, and their Windows equivalents. The socket is shut down only if the current process is the same as the process that opened the socket. Regardless, the socket is then closed.

    -
    -
    -

    Returns

    -

    0 on success, -1 on failure to close the socket. On failure, the socket’s errno is set; retrieve it with mongoc_socket_errno().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_connect.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_connect.html deleted file mode 100644 index db56b02..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_connect.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - mongoc_socket_connect() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_connect()

    -
    -

    Synopsis

    -
    int
    -mongoc_socket_connect (mongoc_socket_t *sock,
    -                       const struct sockaddr *addr,
    -                       mongoc_socklen_t addrlen,
    -                       int64_t expire_at);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • addr: A struct sockaddr.
    • -
    • addrlen: A mongoc_socklen_t.
    • -
    • expire_at: A int64_t containing the absolute timeout using the monotonic clock.
    • -
    -
    -
    -

    Description

    -

    This function is a wrapper around the BSD socket connect() interface. It provides better portability between UNIX-like and Microsoft Windows platforms.

    -

    This function performs a socket connection but will fail if expire_at has been reached by the monotonic clock. Keep in mind that this is an absolute timeout in milliseconds. You should add your desired timeout to System Clock.

    -
    -
    -

    Returns

    -

    0 if successful, -1 on failure and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_destroy.html deleted file mode 100644 index eecdf4b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_socket_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_socket_destroy (mongoc_socket_t *sock);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function releases all resources associated with a mongoc_socket_t. This should be called when you are no longer using the socket. Does nothing if sock is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_errno.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_errno.html deleted file mode 100644 index 92c69d2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_errno.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_socket_errno() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_errno()

    -
    -

    Synopsis

    -
    int
    -mongoc_socket_errno (mongoc_socket_t *sock);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function returns the currently captured errno for a socket. This may be useful to check was the last errno was after another function call has been made that clears the threads errno variable.

    -
    -
    -

    Returns

    -

    0 if there is no error, otherwise a specific errno.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getnameinfo.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getnameinfo.html deleted file mode 100644 index a727b35..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getnameinfo.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_socket_getnameinfo() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_getnameinfo()

    -
    -

    Synopsis

    -
    char *
    -mongoc_socket_getnameinfo (mongoc_socket_t *sock);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This is a helper around getting the local name of a socket. It is a wrapper around getpeername() and getnameinfo().

    -
    -
    -

    Returns

    -

    A newly allocated string that should be freed with bson_free().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getsockname.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getsockname.html deleted file mode 100644 index daf7512..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_getsockname.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - mongoc_socket_getsockname() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_getsockname()

    -
    -

    Synopsis

    -
    int
    -mongoc_socket_getsockname (mongoc_socket_t *sock,
    -                           struct sockaddr *addr,
    -                           mongoc_socklen_t *addrlen);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • addr: A struct sockaddr.
    • -
    • addrlen: A mongoc_socklen_t.
    • -
    -
    -
    -

    Description

    -

    Retrieves the socket name for sock. The result is stored in addr. addrlen should be the size of the addr when calling this.

    -
    -
    -

    Returns

    -

    0 if successful, otherwise -1 and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_listen.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_listen.html deleted file mode 100644 index cfaee2e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_listen.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_socket_listen() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_listen()

    -
    -

    Synopsis

    -
    int
    -mongoc_socket_listen (mongoc_socket_t *sock, unsigned int backlog);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function is similar to the BSD sockets listen() function. It is meant for socket servers.

    -
    -
    -

    Returns

    -

    0 on success, -1 on failure and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_new.html deleted file mode 100644 index ba17ebb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_new.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_socket_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_new()

    -
    -

    Synopsis

    -
    mongoc_socket_t *
    -mongoc_socket_new (int domain, int type, int protocol);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • domain: An int containing the address family such as AF_INET.
    • -
    • type: An int containing the socket type such as SOCK_STREAM.
    • -
    • protocol: A protocol subset, typically 0.
    • -
    -
    -
    -

    Description

    -

    Creates a new mongoc_socket_t structure. This calls socket() underneath to create a network socket.

    -
    -
    -

    Returns

    -

    A new socket if successful, otherwise NULL and errno is set. The result should be freed with mongoc_socket_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_recv.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_recv.html deleted file mode 100644 index 8c9ad67..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_recv.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_socket_recv() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_recv()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_socket_recv (mongoc_socket_t *sock,
    -                    void *buf,
    -                    size_t buflen,
    -                    int flags,
    -                    int64_t expire_at);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • buf: A buffer to read into.
    • -
    • buflen: A size_t with the number of bytes to receive.
    • -
    • flags: flags for recv().
    • -
    • expire_at: A int64_t with the time to expire in monotonic time using System Clock, which is in microseconds.
    • -
    -
    -
    -

    Description

    -

    This function performs a recv() on the underlying socket.

    -
    -
    -

    Returns

    -

    The number of bytes received on success, 0 on stream closed, and -1 if there was a failure and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_send.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_send.html deleted file mode 100644 index 0685424..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_send.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_socket_send() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_send()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_socket_send (mongoc_socket_t *sock,
    -                    const void *buf,
    -                    size_t buflen,
    -                    int64_t expire_at);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • buf: A buffer to send.
    • -
    • buflen: A size_t with the number of bytes in buf.
    • -
    • expire_at: A int64_t with an absolute timeout for the operation or 0. The timeout is in monotonic time using microseconds. You can retrieve the current monotonic time with System Clock.
    • -
    -
    -
    -

    Description

    -

    Sends buflen bytes in buf to the destination. If a timeout expired, the number of bytes sent will be returned or -1 if no bytes were sent.

    -
    -
    -

    Returns

    -

    -1 on failure and errno is set, or the number of bytes sent.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_sendv.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_sendv.html deleted file mode 100644 index 428f808..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_sendv.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_socket_sendv() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_sendv()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_socket_sendv (mongoc_socket_t *sock,
    -                     mongoc_iovec_t *iov,
    -                     size_t iovcnt,
    -                     int64_t expire_at);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • iov: A mongoc_iovec_t.
    • -
    • iovcnt: A size_t containing the number of elements in iov.
    • -
    • expire_at: A int64_t with absolute timeout in monotonic time. The monotonic clock is in microseconds and can be fetched using System Clock.
    • -
    -
    -
    -

    Description

    -

    Sends a vector of buffers to the destination. This uses sendmsg() when available to perform a gathered write. If IOV_MAX is reached, a fallback will be used.

    -
    -
    -

    Returns

    -

    the number of bytes sent on success, or -1 on failure and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_setsockopt.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_setsockopt.html deleted file mode 100644 index 03e4abb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_setsockopt.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_socket_setsockopt() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_setsockopt()

    -
    -

    Synopsis

    -
    int
    -mongoc_socket_setsockopt (mongoc_socket_t *sock,
    -                          int level,
    -                          int optname,
    -                          const void *optval,
    -                          mongoc_socklen_t optlen);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • sock: A mongoc_socket_t.
    • -
    • level: A sockopt level.
    • -
    • optname: A sockopt name.
    • -
    • optval: A the value for the sockopt.
    • -
    • optlen: A mongoc_socklen_t that contains the length of optval.
    • -
    -
    -
    -

    Description

    -

    This is a helper function for setsockopt().

    -
    -
    -

    Returns

    -

    0 on success, -1 on failure and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_t.html deleted file mode 100644 index 4456ced..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_socket_t.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - mongoc_socket_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_socket_t

    -

    Portable socket abstraction

    -
    -

    Synopsis

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct _mongoc_socket_t mongoc_socket_t
    -
    -
    -
    -
    -

    Synopsis

    -

    This structure provides a socket abstraction that is friendlier for portability than BSD sockets directly. Inconsistencies between Linux, various BSDs, Solaris, and Windows are handled here.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_get_default.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_get_default.html deleted file mode 100644 index b517d74..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_get_default.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_ssl_opt_get_default() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_ssl_opt_get_default()

    -
    -

    Synopsis

    -
    const mongoc_ssl_opt_t *
    -mongoc_ssl_opt_get_default (void) BSON_GNUC_PURE;
    -
    -
    -
    -
    -

    Returns

    -

    Returns the default SSL options for the process. This should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_t.html deleted file mode 100644 index dababea..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_ssl_opt_t.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - mongoc_ssl_opt_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_ssl_opt_t

    -
    -

    Synopsis

    -
    typedef struct {
    -   const char *pem_file;
    -   const char *pem_pwd;
    -   const char *ca_file;
    -   const char *ca_dir;
    -   const char *crl_file;
    -   bool weak_cert_validation;
    -   bool allow_invalid_hostname;
    -   void *padding[7];
    -} mongoc_ssl_opt_t;
    -
    -
    -
    -
    -

    Description

    -

    This structure is used to set the SSL options for a mongoc_client_t or mongoc_client_pool_t.

    -

    Beginning in version 1.2.0, once a pool or client has any SSL options set, all connections use SSL, even if ssl=true is omitted from the MongoDB URI. Before, SSL options were ignored unless ssl=true was included in the URI.

    -

    As of 1.4.0, the mongoc_client_pool_set_ssl_opts() and mongoc_client_set_ssl_opts() will not only shallow copy the struct, but will also copy the const char*. It is therefore no longer needed to make sure the values remain valid after setting them.

    -
    -
    -

    Configuration through URI Options

    -

    Most of the configurable options can be using the Connection URI.

    - ---- - - - - - - - - - - - - - - - - - - - - - - -
    mongoc_ssl_opt_t keyURI key
    pem_filesslClientCertificateKeyFile
    pem_pwdsslClientCertificateKeyPassword
    ca_filesslCertificateAuthorityFile
    weak_cert_validationsslAllowInvalidCertificates
    allow_invalid_hostnamesslAllowInvalidHostnames
    -
    -
    -

    Client Authentication

    -

    When MongoDB is started with SSL enabled, it will by default require the client to provide a client certificate issued by a certificate authority specified by --sslCAFile, or an authority trusted by the native certificate store in use on the server.

    -

    To provide the client certificate, the user must configure the pem_file to point at a PEM armored certificate.

    -
    mongoc_ssl_opt_t ssl_opts = {0};
    -
    -ssl_opts.pem_file = "/path/to/client-certificate.pem"
    -
    -/* Then set the client ssl_opts, when using a single client mongoc_client_t */
    -mongoc_client_pool_set_ssl_opts (pool, &ssl_opts);
    -
    -/* or, set the pool ssl_opts, when using a the thread safe mongoc_client_pool_t */
    -mongoc_client_set_ssl_opts (client, &ssl_opts);
    -
    -
    -
    -
    -

    Server Certificate Verification

    -

    The MongoDB C Driver will automatically verify the validity of the server certificate, such as issued by configured Certificate Authority, hostname validation, and expiration.

    -

    To overwrite this behaviour, it is possible to disable hostname validation, and/or allow otherwise invalid certificates. This behaviour is controlled using the allow_invalid_hostname and weak_cert_validation fields. By default, both are set to false. It is not recommended to change these defaults as it exposes the client to Man In The Middle attacks (when allow_invalid_hostname is set) and otherwise invalid certificates when weak_cert_validation is set to true.

    -
    -
    -

    OpenSSL

    -

    The MongoDB C Driver uses OpenSSL, if available, on Linux and Unix platforms (besides macOS). Industry best practices and some regulations require the use of TLS 1.1 or newer, which requires at least OpenSSL 1.0.1. Check your OpenSSL version like so:

    -
    $ openssl version
    -
    -
    -

    Ensure your system’s OpenSSL is a recent version (at least 1.0.1), or install a recent version in a non-system path and build against it with:

    -
    cmake -DOPENSSL_ROOT_DIR=/absolute/path/to/openssl
    -
    -
    -

    When compiled against OpenSSL, the driver will attempt to load the system default certificate store, as configured by the distribution, if the ca_file and ca_dir are not set.

    -
    -
    -

    LibreSSL / libtls

    -

    The MongoDB C Driver supports LibreSSL through the use of OpenSSL compatibility checks when configured to compile against openssl. It also supports the new libtls library when configured to build against libressl.

    -
    -
    -

    Native TLS Support on Windows (Secure Channel)

    -

    The MongoDB C Driver supports the Windows native TLS library (Secure Channel, or SChannel), and its native crypto library (Cryptography API: Next Generation, or CNG).

    -

    When compiled against the Windows native libraries, the ca_dir option is not supported, and will issue an error if used.

    -

    Encrypted PEM files (e.g., requiring pem_pwd) are also not supported, and will result in error when attempting to load them.

    -

    When ca_file is provided, the driver will only allow server certificates issued by the authority (or authorities) provided. When no ca_file is provided, the driver will look up the Certificate Authority using the System Local Machine Root certificate store to confirm the provided certificate.

    -

    When crl_file is provided, the driver will import the revocation list to the System Local Machine Root certificate store.

    -
    -
    -

    Native TLS Support on macOS / Darwin (Secure Transport)

    -

    The MongoDB C Driver supports the Darwin (OS X, macOS, iOS, etc.) native TLS library (Secure Transport), and its native crypto library (Common Crypto, or CC).

    -

    When compiled against Secure Transport, the ca_dir option is not supported, and will issue an error if used.

    -

    When ca_file is provided, the driver will only allow server certificates issued by the authority (or authorities) provided. When no ca_file is provided, the driver will use the Certificate Authorities in the currently unlocked keychains.

    -
    -
    -

    Functions

    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_new.html deleted file mode 100644 index 7f0ee23..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_new.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_stream_buffered_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_buffered_new()

    -
    -

    Synopsis

    -
    mongoc_stream_t *
    -mongoc_stream_buffered_new (mongoc_stream_t *base_stream, size_t buffer_size);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • base_stream: A mongoc_stream_t to buffer.
    • -
    • buffer_size: A size_t containing the desired buffer size.
    • -
    -

    This function shall create a new mongoc_stream_t that buffers bytes to and from the underlying base_stream.

    -

    buffer_size will be used as the initial buffer size. It may grow past this size.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_stream_buffered_t on success, otherwise NULL. This should be freed with mongoc_stream_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_t.html deleted file mode 100644 index 1b9fde5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_buffered_t.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - mongoc_stream_buffered_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_buffered_t

    -
    -

    Synopsis

    -
    typedef struct _mongoc_stream_buffered_t mongoc_stream_buffered_t;
    -
    -
    -
    -
    -

    Description

    -

    mongoc_stream_buffered_t should be considered a subclass of mongoc_stream_t. It performs buffering on an underlying stream.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_close.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_close.html deleted file mode 100644 index b9798d7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_close.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_stream_close() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_close()

    -
    -

    Synopsis

    -
    int
    -mongoc_stream_close (mongoc_stream_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall close underlying file-descriptors of stream.

    -
    -
    -

    Returns

    -

    0 on success, otherwise -1 and errno is set.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_cork.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_cork.html deleted file mode 100644 index f7c9d34..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_cork.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_stream_cork() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_cork()

    -
    -

    Synopsis

    -
    int
    -mongoc_stream_cork (mongoc_stream_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall prevent the writing of bytes to the underlying socket.

    -
    -

    Note

    -

    Not all streams implement this function. Buffering generally works better.

    -
    -
    -
    -

    Returns

    -

    0 on success, -1 on failure and errno is set.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_destroy.html deleted file mode 100644 index bf2f61c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_destroy.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - mongoc_stream_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_stream_destroy (mongoc_stream_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall release all resources associated with a mongoc_stream_t, including freeing the structure. It is invalid to use stream after calling this function. Does nothing if stream is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_get_fd.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_get_fd.html deleted file mode 100644 index 3e73827..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_get_fd.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_stream_file_get_fd() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_file_get_fd()

    -
    -

    Synopsis

    -
    int
    -mongoc_stream_file_get_fd (mongoc_stream_file_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall return the underlying file-descriptor of a mongoc_stream_file_t.

    -
    -

    Warning

    -

    Performing operations on the underlying file-descriptor may not be safe if used in conjunction with buffering. Avoid reading or writing from this file-descriptor.

    -
    -
    -
    -

    Returns

    -

    A file-descriptor that should not be modified by the caller.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new.html deleted file mode 100644 index dffbaf8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_stream_file_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_file_new()

    -
    -

    Synopsis

    -
    mongoc_stream_t *
    -mongoc_stream_file_new (int fd);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • fd: A UNIX style file-descriptor.
    • -
    -

    Creates a new mongoc_stream_file_t using the file-descriptor provided.

    -
    -
    -

    Returns

    -

    NULL upon failure, otherwise a newly allocated mongoc_stream_file_t that should be freed with mongoc_stream_destroy() when no longer in use.

    -

    errno is set upon failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new_for_path.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new_for_path.html deleted file mode 100644 index c26b2ed..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_new_for_path.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_stream_file_new_for_path() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_file_new_for_path()

    -
    -

    Synopsis

    -
    mongoc_stream_t *
    -mongoc_stream_file_new_for_path (const char *path, int flags, int mode);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • path: The path of the target file.
    • -
    • flags: Flags to be passed to open().
    • -
    • mode: An optional mode to be passed to open() when creating a file.
    • -
    -

    This function shall create a new mongoc_stream_file_t after opening the underlying file with open() or the platform equivalent.

    -
    -
    -

    Returns

    -

    NULL on failure, otherwise a newly allocated mongoc_stream_file_t that should be freed with mongoc_stream_destroy() when no longer in use.

    -

    errno is set upon failure.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_t.html deleted file mode 100644 index c709805..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_file_t.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - mongoc_stream_file_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_file_t

    -
    -

    Synopsis

    -
    typedef struct _mongoc_stream_file_t mongoc_stream_file_t
    -
    -
    -

    mongoc_stream_file_t is a mongoc_stream_t subclass for working with standard UNIX style file-descriptors.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_flush.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_flush.html deleted file mode 100644 index d368b01..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_flush.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_stream_flush() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_flush()

    -
    -

    Synopsis

    -
    int
    -mongoc_stream_flush (mongoc_stream_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall flush any buffered bytes in the underlying stream to the physical transport. It mimics the API and semantics of fflush(), forcing a write of user space buffered data.

    -

    Not all stream implementations may implement this feature.

    -
    -
    -

    Returns

    -

    0 is returned on success, otherwise -1 and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_get_base_stream.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_get_base_stream.html deleted file mode 100644 index 0f174b2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_get_base_stream.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_stream_get_base_stream() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_get_base_stream()

    -
    -

    Synopsis

    -
    mongoc_stream_t *
    -mongoc_stream_get_base_stream (mongoc_stream_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall fetch the underlying stream for streams that wrap a base stream. Such implementations include mongoc_stream_buffered_t and mongoc_stream_tls_t.

    -
    -
    -

    Returns

    -

    A mongoc_stream_t or NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_gridfs_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_gridfs_new.html deleted file mode 100644 index 2c35270..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_gridfs_new.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_stream_gridfs_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_gridfs_new()

    -
    -

    Synopsis

    -
    mongoc_stream_t *
    -mongoc_stream_gridfs_new (mongoc_gridfs_file_t *file);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall create a new mongoc_stream_t to read from and write to a GridFS file. GridFS files are created with mongoc_gridfs_create_file() or mongoc_gridfs_create_file_from_stream().

    -

    This function does not transfer ownership of file. Therefore, file must remain valid for the lifetime of this stream.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_stream_t if successful, otherwise NULL.

    -

    Note, the returned stream ignores read and write timeouts passed to mongoc_stream_readv(), mongoc_stream_writev(), and so on. It uses the “socketTimeoutMS” and “connectTimeoutMS” values from the MongoDB URI.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_read.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_read.html deleted file mode 100644 index 519151d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_read.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - mongoc_stream_read() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_read()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_stream_read (mongoc_stream_t *stream,
    -                    void *buf,
    -                    size_t count,
    -                    size_t min_bytes,
    -                    int32_t timeout_msec);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • stream: A mongoc_stream_t.
    • -
    • buf: The buffer to read into.
    • -
    • count: The number of bytes to read.
    • -
    • min_bytes: The minimum number of bytes to read, or else indicate failure.
    • -
    • timeout_msec: The number of milliseconds to wait before failure, a timeout of 0 will not block. If negative, use the default timeout.
    • -
    -

    The mongoc_stream_read() function shall perform a read from a mongoc_stream_t. It’s modeled on the API and semantics of read(), though the parameters map only loosely.

    -
    -
    -

    Returns

    -

    The mongoc_stream_read() function returns the number of bytes read on success. It returns >= 0 and < min_bytes when end-of-file is encountered and -1 on failure. errno is set upon failure.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_readv.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_readv.html deleted file mode 100644 index 2410f83..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_readv.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - mongoc_stream_readv() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_readv()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_stream_readv (mongoc_stream_t *stream,
    -                     mongoc_iovec_t *iov,
    -                     size_t iovcnt,
    -                     size_t min_bytes,
    -                     int32_t timeout_msec);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • stream: A mongoc_stream_t.
    • -
    • iov: A vector of mongoc_iovec_t.
    • -
    • iovcnt: The number of items in iov.
    • -
    • min_bytes: The minimum number of bytes to read or failure will be indicated.
    • -
    • timeout_msec: A timeout in milliseconds, or 0 to indicate non-blocking. A negative value with use the default timeout.
    • -
    -

    This function is identical to mongoc_stream_read() except that it takes a mongoc_iovec_t to perform gathered I/O.

    -
    -
    -

    Returns

    -

    >= 0 on success, -1 on failure and errno is set.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_setsockopt.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_setsockopt.html deleted file mode 100644 index 617ee9b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_setsockopt.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_stream_setsockopt() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_setsockopt()

    -
    -

    Synopsis

    -
    int
    -mongoc_stream_setsockopt (mongoc_stream_t *stream,
    -                          int level,
    -                          int optname,
    -                          void *optval,
    -                          mongoc_socklen_t optlen);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • stream: A mongoc_stream_t.
    • -
    • level: The level to pass to setsockopt().
    • -
    • optname: The optname to pass to setsockopt().
    • -
    • optval: The optval to pass to setsockopt().
    • -
    • optlen: The optlen to pass to setsockopt().
    • -
    -

    This function is a wrapper around setsockopt() for streams that wrap sockets.

    -
    -
    -

    Returns

    -

    0 on success, otherwise -1 and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_get_socket.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_get_socket.html deleted file mode 100644 index efa4126..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_get_socket.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_stream_socket_get_socket() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_socket_get_socket()

    -
    -

    Synopsis

    -
    mongoc_socket_t *
    -mongoc_stream_socket_get_socket (mongoc_stream_socket_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    Retrieves the underlying mongoc_socket_t for a mongoc_stream_socket_t.

    -
    -
    -

    Returns

    -

    A mongoc_stream_socket_t.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_new.html deleted file mode 100644 index 986becf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_new.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_stream_socket_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_socket_new()

    -
    -

    Synopsis

    -
    mongoc_stream_t *
    -mongoc_stream_socket_new (mongoc_socket_t *socket);
    -
    -
    -
    -
    -

    Parameters

    - -

    Creates a new mongoc_stream_socket_t using the mongoc_socket_t provided.

    -
    -

    Warning

    -

    This function transfers ownership of socket to the newly allocated stream.

    -
    -
    -
    -

    Returns

    -

    A newly allocated mongoc_stream_socket_t that should be freed with mongoc_stream_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_t.html deleted file mode 100644 index 2cf839d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_socket_t.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - mongoc_stream_socket_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_socket_t

    -
    -

    Synopsis

    -
    typedef struct _mongoc_stream_socket_t mongoc_stream_socket_t
    -
    -
    -

    mongoc_stream_socket_t should be considered a subclass of mongoc_stream_t that works upon socket streams.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_t.html deleted file mode 100644 index c4edfb5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_t.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - mongoc_stream_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_t

    -
    -

    Synopsis

    -
    typedef struct _mongoc_stream_t mongoc_stream_t
    -
    -
    -

    mongoc_stream_t provides a generic streaming IO abstraction based on a struct of pointers interface. The idea is to allow wrappers, perhaps other language drivers, to easily shim their IO system on top of mongoc_stream_t.

    -

    The API for the stream abstraction is currently private and non-extensible.

    -
    -
    -

    Stream Types

    -

    There are a number of built in stream types that come with mongoc. The default configuration is a buffered unix stream. If SSL is in use, that in turn is wrapped in a tls stream.

    -
    - - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_timed_out.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_timed_out.html deleted file mode 100644 index 7bbee7c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_timed_out.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_stream_timed_out() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_timed_out()

    -
    -

    Synopsis

    -
    bool
    -mongoc_stream_timed_out (mongoc_stream_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    True if there has been a network timeout error on this stream.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_tls_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_tls_t.html deleted file mode 100644 index 59707db..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_tls_t.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - mongoc_stream_tls_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_tls_t

    -
    -

    Synopsis

    -
    typedef struct _mongoc_stream_tls_t mongoc_stream_tls_t
    -
    -
    -

    mongoc_stream_tls_t is a mongoc_stream_t subclass for working with OpenSSL TLS streams.

    -
    -
    -

    Functions

    -
    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_uncork.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_uncork.html deleted file mode 100644 index 1a73404..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_uncork.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_stream_uncork() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_uncork()

    -
    -

    Synopsis

    -
    int
    -mongoc_stream_uncork (mongoc_stream_t *stream);
    -
    -
    -
    -
    -

    Parameters

    - -

    This function shall allow a previously corked socket to pass bytes to the underlying socket.

    -
    -

    Note

    -

    Not all streams implement this function. Buffering generally works better.

    -
    -
    -
    -

    Returns

    -

    0 on success, -1 on failure and errno is set.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_write.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_write.html deleted file mode 100644 index 26af2e9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_write.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - mongoc_stream_write() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_write()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_stream_write (mongoc_stream_t *stream,
    -                     void *buf,
    -                     size_t count,
    -                     int32_t timeout_msec);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • stream: A mongoc_stream_t.
    • -
    • buf: The buffer to write.
    • -
    • count: The number of bytes to write.
    • -
    • timeout_msec: The number of milliseconds to wait before failure, a timeout of 0 will not block. If negative, use the default timeout.
    • -
    -

    The mongoc_stream_write() function shall perform a write to a mongoc_stream_t. It’s modeled on the API and semantics of write(), though the parameters map only loosely.

    -
    -
    -

    Returns

    -

    The mongoc_stream_write() function returns the number of bytes written on success. It returns >= 0 and < min_bytes when end-of-file is encountered and -1 on failure. errno is set upon failure.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_writev.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_writev.html deleted file mode 100644 index 98e5908..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_stream_writev.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_stream_writev() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_stream_writev()

    -
    -

    Synopsis

    -
    ssize_t
    -mongoc_stream_writev (mongoc_stream_t *stream,
    -                      mongoc_iovec_t *iov,
    -                      size_t iovcnt,
    -                      int32_t timeout_msec);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • stream: A mongoc_stream_t.
    • -
    • iov: A vector of mongoc_iovec_t.
    • -
    • iovcnt: The number of items in iov.
    • -
    • timeout_msec: The number of milliseconds to block before indicating failure, or 0 for non-blocking. Negative values indicate the default timeout.
    • -
    -

    The mongoc_stream_writev() function shall perform a write -to a mongoc_stream_t. It’s modeled on the -API and semantics of writev(), though the parameters map only -loosely.

    -
    -
    -

    Returns

    -

    The number of bytes written on success, or -1 upon failure and errno is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_get_servers.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_get_servers.html deleted file mode 100644 index 71fe83c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_get_servers.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - mongoc_topology_description_get_servers() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_topology_description_get_servers()

    -
    -

    Synopsis

    -
    mongoc_server_description_t **
    -mongoc_topology_description_get_servers (
    -   const mongoc_topology_description_t *td, size_t *n);
    -
    -
    -

    Fetches an array of mongoc_server_description_t structs for all known servers in the topology.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    A newly allocated array that must be freed with mongoc_server_descriptions_destroy_all().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_readable_server.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_readable_server.html deleted file mode 100644 index 532cef8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_readable_server.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_topology_description_has_readable_server() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_topology_description_has_readable_server()

    -
    -

    Synopsis

    -
    bool
    -mongoc_topology_description_has_readable_server (
    -   mongoc_topology_description_t *td, const mongoc_read_prefs_t *prefs);
    -
    -
    -

    Determines if the topology has a readable server available. -Servers are filtered by the given read preferences only if the driver is connected to a replica set, otherwise the read preferences are ignored. -This function uses the driver’s current knowledge of the state of the MongoDB server or servers it is connected to; it does no I/O and it does not block.

    -

    Use this function in a topology-changed callback registered with mongoc_apm_set_topology_changed_cb(). For historical reasons, the mongoc_topology_description_t passed to the callback is a const pointer, you must cast away const to pass the pointer to mongoc_topology_description_has_readable_server.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    True if there is a known server matching prefs.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_writable_server.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_writable_server.html deleted file mode 100644 index 3564459..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_has_writable_server.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_topology_description_has_writable_server() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_topology_description_has_writable_server()

    -
    -

    Synopsis

    -
    bool
    -mongoc_topology_description_has_writable_server (
    -   mongoc_topology_description_t *td);
    -
    -
    -

    Determines if the topology has a writable server available, such as a primary, mongos, or standalone. This function uses the driver’s current knowledge of the state of the MongoDB server or servers it is connected to; it does no I/O and it does not block.

    -

    Use this function in a topology-changed callback registered with mongoc_apm_set_topology_changed_cb(). For historical reasons, the mongoc_topology_description_t passed to the callback is a const pointer, you must cast away const to pass the pointer to mongoc_topology_description_has_writable_server.

    -
    -
    -

    Parameters

    - -
    -
    -

    Returns

    -

    True if there is a known writable server.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_t.html deleted file mode 100644 index 5659f7d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_t.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_topology_description_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_topology_description_t

    -

    Status of MongoDB Servers

    -
    -

    Synopsis

    -
    typedef struct _mongoc_topology_description_t mongoc_topology_description_t;
    -
    -
    -

    mongoc_topology_description_t is an opaque type representing the driver’s knowledge of the MongoDB server or servers it is connected to. -Its API conforms to the SDAM Monitoring Specification.

    -

    Applications receive a temporary reference to a mongoc_topology_description_t as a parameter to an SDAM Monitoring callback. See Introduction to Application Performance Monitoring.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_type.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_type.html deleted file mode 100644 index 7ca2e18..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_topology_description_type.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_topology_description_type() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_topology_description_type()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_topology_description_type (const mongoc_topology_description_t *td);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function returns a string, one of the topology types defined in the Server Discovery And Monitoring Spec:

    -
      -
    • Unknown
    • -
    • Single
    • -
    • Sharded
    • -
    • ReplicaSetNoPrimary
    • -
    • ReplicaSetWithPrimary
    • -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opt_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opt_t.html deleted file mode 100644 index 45b00cb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opt_t.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - mongoc_transaction_opt_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_transaction_opt_t

    -
    #include <mongoc/mongoc.h>
    -
    -typedef struct _mongoc_transaction_opt_t mongoc_transaction_opt_t;
    -
    -
    -
    -

    Synopsis

    -

    Options for starting a multi-document transaction.

    -

    When a session is first created with mongoc_client_start_session(), it inherits from the client the read concern, write concern, and read preference with which to start transactions. Each of these fields can be overridden independently. Create a mongoc_transaction_opt_t with mongoc_transaction_opts_new(), and pass a non-NULL option to any of the mongoc_transaction_opt_t setter functions:

    - -

    Pass the resulting transaction options to mongoc_client_session_start_transaction(). Each field set in the transaction options overrides the inherited client configuration.

    -
    -
    -

    Example

    -
    -
    example-transaction.c
    -
    /* gcc example-transaction.c -o example-transaction \
    - *     $(pkg-config --cflags --libs libmongoc-1.0) */
    -
    -/* ./example-transaction [CONNECTION_STRING] */
    -
    -#include <stdio.h>
    -#include <mongoc/mongoc.h>
    -
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   int exit_code = EXIT_FAILURE;
    -
    -   mongoc_client_t *client = NULL;
    -   mongoc_database_t *database = NULL;
    -   mongoc_collection_t *collection = NULL;
    -   mongoc_client_session_t *session = NULL;
    -   mongoc_session_opt_t *session_opts = NULL;
    -   mongoc_transaction_opt_t *default_txn_opts = NULL;
    -   mongoc_transaction_opt_t *txn_opts = NULL;
    -   mongoc_read_concern_t *read_concern = NULL;
    -   mongoc_write_concern_t *write_concern = NULL;
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=transaction-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -   bson_t *doc = NULL;
    -   bson_t *insert_opts = NULL;
    -   int32_t i;
    -   int64_t start;
    -   bson_t reply = BSON_INITIALIZER;
    -   char *reply_json;
    -   bool r;
    -
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      MONGOC_ERROR ("failed to parse URI: %s\n"
    -                    "error message:       %s\n",
    -                    uri_string,
    -                    error.message);
    -      goto done;
    -   }
    -
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      goto done;
    -   }
    -
    -   mongoc_client_set_error_api (client, 2);
    -   database = mongoc_client_get_database (client, "example-transaction");
    -
    -   /* inserting into a nonexistent collection normally creates it, but a
    -    * collection can't be created in a transaction; create it now */
    -   collection =
    -      mongoc_database_create_collection (database, "collection", NULL, &error);
    -
    -   if (!collection) {
    -      /* code 48 is NamespaceExists, see error_codes.err in mongodb source */
    -      if (error.code == 48) {
    -         collection = mongoc_database_get_collection (database, "collection");
    -      } else {
    -         MONGOC_ERROR ("Failed to create collection: %s", error.message);
    -         goto done;
    -      }
    -   }
    -
    -   /* a transaction's read preferences, read concern, and write concern can be
    -    * set on the client, on the default transaction options, or when starting
    -    * the transaction. for the sake of this example, set read concern on the
    -    * default transaction options. */
    -   default_txn_opts = mongoc_transaction_opts_new ();
    -   read_concern = mongoc_read_concern_new ();
    -   mongoc_read_concern_set_level (read_concern, "snapshot");
    -   mongoc_transaction_opts_set_read_concern (default_txn_opts, read_concern);
    -   session_opts = mongoc_session_opts_new ();
    -   mongoc_session_opts_set_default_transaction_opts (session_opts,
    -                                                     default_txn_opts);
    -
    -   session = mongoc_client_start_session (client, session_opts, &error);
    -   if (!session) {
    -      MONGOC_ERROR ("Failed to start session: %s", error.message);
    -      goto done;
    -   }
    -
    -   /* in this example, set write concern when starting the transaction */
    -   txn_opts = mongoc_transaction_opts_new ();
    -   write_concern = mongoc_write_concern_new ();
    -   mongoc_write_concern_set_wmajority (write_concern, 1000 /* wtimeout */);
    -   mongoc_transaction_opts_set_write_concern (txn_opts, write_concern);
    -
    -   insert_opts = bson_new ();
    -   if (!mongoc_client_session_append (session, insert_opts, &error)) {
    -      MONGOC_ERROR ("Could not add session to opts: %s", error.message);
    -      goto done;
    -   }
    -
    -retry_transaction:
    -   r = mongoc_client_session_start_transaction (session, txn_opts, &error);
    -   if (!r) {
    -      MONGOC_ERROR ("Failed to start transaction: %s", error.message);
    -      goto done;
    -   }
    -
    -   /* insert two documents - on error, retry the whole transaction */
    -   for (i = 0; i < 2; i++) {
    -      doc = BCON_NEW ("_id", BCON_INT32 (i));
    -      bson_destroy (&reply);
    -      r = mongoc_collection_insert_one (
    -         collection, doc, insert_opts, &reply, &error);
    -
    -      bson_destroy (doc);
    -
    -      if (!r) {
    -         MONGOC_ERROR ("Insert failed: %s", error.message);
    -         mongoc_client_session_abort_transaction (session, NULL);
    -
    -         /* a network error, primary failover, or other temporary error in a
    -          * transaction includes {"errorLabels": ["TransientTransactionError"]},
    -          * meaning that trying the entire transaction again may succeed
    -          */
    -         if (mongoc_error_has_label (&reply, "TransientTransactionError")) {
    -            goto retry_transaction;
    -         }
    -
    -         goto done;
    -      }
    -
    -      reply_json = bson_as_json (&reply, NULL);
    -      printf ("%s\n", reply_json);
    -      bson_free (reply_json);
    -   }
    -
    -   /* in case of transient errors, retry for 5 seconds to commit transaction */
    -   start = bson_get_monotonic_time ();
    -   while (bson_get_monotonic_time () - start < 5 * 1000 * 1000) {
    -      bson_destroy (&reply);
    -      r = mongoc_client_session_commit_transaction (session, &reply, &error);
    -      if (r) {
    -         /* success */
    -         break;
    -      } else {
    -         MONGOC_ERROR ("Warning: commit failed: %s", error.message);
    -         if (mongoc_error_has_label (&reply, "TransientTransactionError")) {
    -            goto retry_transaction;
    -         } else if (mongoc_error_has_label (&reply,
    -                                            "UnknownTransactionCommitResult")) {
    -            /* try again to commit */
    -            continue;
    -         }
    -
    -         /* unrecoverable error trying to commit */
    -         break;
    -      }
    -   }
    -
    -   exit_code = EXIT_SUCCESS;
    -
    -done:
    -   bson_destroy (&reply);
    -   bson_destroy (insert_opts);
    -   mongoc_write_concern_destroy (write_concern);
    -   mongoc_read_concern_destroy (read_concern);
    -   mongoc_transaction_opts_destroy (txn_opts);
    -   mongoc_transaction_opts_destroy (default_txn_opts);
    -   mongoc_client_session_destroy (session);
    -   mongoc_collection_destroy (collection);
    -   mongoc_database_destroy (database);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -
    -   mongoc_cleanup ();
    -
    -   return exit_code;
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_clone.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_clone.html deleted file mode 100644 index 7ef203e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_clone.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_transaction_opts_clone() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_destroy.html deleted file mode 100644 index d2b17a5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_destroy.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_transaction_opts_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_concern.html deleted file mode 100644 index bef9fb3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_concern.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_transaction_opts_get_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_prefs.html deleted file mode 100644 index 1016bcf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_read_prefs.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_transaction_opts_get_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_write_concern.html deleted file mode 100644 index bba2980..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_get_write_concern.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - mongoc_transaction_opts_get_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_new.html deleted file mode 100644 index e3e3b47..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_new.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - mongoc_transaction_opts_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_concern.html deleted file mode 100644 index 8817da6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_concern.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - mongoc_transaction_opts_set_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_prefs.html deleted file mode 100644 index f3aa897..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_read_prefs.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - mongoc_transaction_opts_set_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_write_concern.html deleted file mode 100644 index 280c1ba..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_transaction_opts_set_write_concern.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - mongoc_transaction_opts_set_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_update_flags_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_update_flags_t.html deleted file mode 100644 index 3c41255..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_update_flags_t.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - mongoc_update_flags_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_update_flags_t

    -

    Flags for update operations

    -
    -

    Synopsis

    -
    typedef enum {
    -   MONGOC_UPDATE_NONE = 0,
    -   MONGOC_UPDATE_UPSERT = 1 << 0,
    -   MONGOC_UPDATE_MULTI_UPDATE = 1 << 1,
    -} mongoc_update_flags_t;
    -
    -#define MONGOC_UPDATE_NO_VALIDATE (1U << 31)
    -
    -
    -
    -
    -

    Description

    -

    These flags correspond to the MongoDB wire protocol. They may be bitwise or’d together. The allow for modifying the way an update is performed in the MongoDB server.

    -
    -
    -

    Flag Values

    - ---- - - - - - - - - - - - - - - -
    MONGOC_UPDATE_NONENo update flags set.
    MONGOC_UPDATE_UPSERTIf an upsert should be performed.
    MONGOC_UPDATE_MULTI_UPDATEIf more than a single matching document should be updated. By default only the first document is updated.
    MONGOC_UPDATE_NO_VALIDATEDo not perform client side BSON validations when performing an update. This is useful if you already know your BSON documents are valid.
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_copy.html deleted file mode 100644 index 2f8c711..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_copy.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_copy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_copy()

    -
    -

    Synopsis

    -
    mongoc_uri_t *
    -mongoc_uri_copy (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Copies the entire contents of a URI.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_uri_t that should be freed with mongoc_uri_destroy().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_destroy.html deleted file mode 100644 index 028d1a7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_uri_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_uri_destroy (mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Frees all resources associated with a uri. Does nothing if uri is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_mechanism.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_mechanism.html deleted file mode 100644 index f3b818e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_mechanism.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_uri_get_auth_mechanism() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_auth_mechanism()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_auth_mechanism (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the authMechanism parameter to an URI if provided.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_source.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_source.html deleted file mode 100644 index fd2e83e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_auth_source.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_uri_get_auth_source() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_auth_source()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_auth_source (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the authSource parameter of an URI if provided.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_compressors.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_compressors.html deleted file mode 100644 index 9c4e8fe..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_compressors.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - mongoc_uri_get_compressors() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_compressors()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_uri_get_compressors (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Returns a bson document with the enabled compressors as the keys.

    -
    -
    -

    Example

    -
    mongoc_client_t *client;
    -mongoc_uri_t *uri;
    -
    -uri = mongoc_uri_new ("mongodb://localhost/?compressors=zlib,snappy");
    -
    -if (bson_has_field (mongoc_uri_get_compressors (uri), "snappy")) {
    -   /* snappy enabled */
    -}
    -
    -
    -
    -
    -

    Returns

    -

    A bson_t * which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_database.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_database.html deleted file mode 100644 index d34b8d0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_database.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_database() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_database()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_database (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the database portion of an URI if provided. This is the portion after the / but before the ?.

    -
    -
    -

    Returns

    -

    A string which should not be modified or freed or NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_hosts.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_hosts.html deleted file mode 100644 index 432a38c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_hosts.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_hosts() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_hosts()

    -
    -

    Synopsis

    -
    const mongoc_host_list_t *
    -mongoc_uri_get_hosts (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a linked list of hosts that were defined in the URI (the comma-separated host section).

    -
    -
    -

    Returns

    -

    A linked list of mongoc_host_list_t structures that should not be modified or freed. Returns NULL if this URI’s scheme is “mongodb+srv://”.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_mechanism_properties.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_mechanism_properties.html deleted file mode 100644 index 6280721..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_mechanism_properties.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - mongoc_uri_get_mechanism_properties() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_mechanism_properties()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_get_mechanism_properties (const mongoc_uri_t *uri,
    -                                     bson_t *properties /* OUT */);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the “authMechanismProperties” options set on this mongoc_uri_t. The out-parameter properties should be an uninitialized, stack-allocated bson_t. It is statically initialized with bson_init_static() to point to the internal data of uri, so its contents must not be modified and it becomes invalid after uri is destroyed.

    -
    -
    -

    Returns

    -

    If no “authMechanismProperties” have been set on uri, this functions returns false and properties remains uninitialized.

    -
    -
    -

    Example

    -
    mongoc_uri_t *uri;
    -bson_t props;
    -
    -uri = mongoc_uri_new (
    -   "mongodb://user%40DOMAIN.COM:password@localhost/?authMechanism=GSSAPI"
    -   "&authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true");
    -
    -if (mongoc_uri_get_mechanism_properties (uri, &props)) {
    -   char *json = bson_as_canonical_extended_json (&props, NULL);
    -   printf ("%s\n", json);
    -   bson_free (json);
    -} else {
    -   printf ("No authMechanismProperties.\n");
    -}
    -
    -
    -

    This code produces the output:

    -
    { "SERVICE_NAME" : "other", "CANONICALIZE_HOST_NAME" : "true" }
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_bool.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_bool.html deleted file mode 100644 index bc4c108..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_bool.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_option_as_bool() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_option_as_bool()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_get_option_as_bool (const mongoc_uri_t *uri,
    -                               const char *option,
    -                               bool fallback);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • option: The name of an option, case insensitive.
    • -
    • fallback: A default value to return.
    • -
    -
    -
    -

    Description

    -

    Returns the value of the URI option if it is set and of the correct type (bool). If not set, or set to an invalid type, returns fallback.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_int32.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_int32.html deleted file mode 100644 index af5c431..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_int32.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_uri_get_option_as_int32() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_option_as_int32()

    -
    -

    Synopsis

    -
    int32
    -mongoc_uri_get_option_as_int32 (const mongoc_uri_t *uri,
    -                                const char *option,
    -                                int32 fallback);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • option: The name of an option, case insensitive.
    • -
    • fallback: A default value to return.
    • -
    -
    -
    -

    Description

    -

    Returns the value of the URI option if it is set and of the correct type (int32). Returns fallback if the option is not set, set to an invalid type, or zero.

    -

    Zero is considered “unset”, so URIs can be constructed like so, and still accept default values:

    -
    bson_strdup_printf ("mongodb://localhost/?connectTimeoutMS=%d", myvalue)
    -
    -
    -

    If myvalue is non-zero it is the connection timeout; if it is zero the driver uses the default timeout.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_utf8.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_utf8.html deleted file mode 100644 index f3ce3ac..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_option_as_utf8.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_option_as_utf8() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_option_as_utf8()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_option_as_utf8 (const mongoc_uri_t *uri,
    -                               const char *option,
    -                               const char *fallback);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • option: The name of an option, case insensitive.
    • -
    • fallback: A default value to return.
    • -
    -
    -
    -

    Description

    -

    Returns the value of the URI option if it is set and of the correct type (string). This value is a pointer into the URI’s internal buffer, and is only valid until the URI is modified or freed. If the option is not set, or set to an invalid type, returns fallback.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_options.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_options.html deleted file mode 100644 index 212695b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_options.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_options() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_options()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_uri_get_options (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a bson document containing all of the options provided after the ? of a URI.

    -
    -
    -

    Returns

    -

    A bson_t which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_password.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_password.html deleted file mode 100644 index 87f5c99..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_password.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_password() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_password()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_password (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the password portion of an URI.

    -
    -
    -

    Returns

    -

    A string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_concern.html deleted file mode 100644 index 475b33c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_concern.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_read_concern()

    -
    -

    Synopsis

    -
    const mongoc_read_concern_t *
    -mongoc_uri_get_read_concern (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a read concern that is owned by the URI instance. This read concern is configured based on URI parameters.

    -
    -
    -

    Returns

    -

    Returns a mongoc_read_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs.html deleted file mode 100644 index 4a9d51c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - mongoc_uri_get_read_prefs() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_read_prefs()

    -
    -

    Synopsis

    -
    const bson_t *
    -mongoc_uri_get_read_prefs (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    This function is deprecated and should not be used in new code.

    -
    -

    Please use mongoc_uri_get_read_prefs_t() instead.

    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a bson document containing read preference tag information from a URI. Note that this does not include the read preference mode.

    -
    -
    -

    Returns

    -

    Returns a bson document that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs_t.html deleted file mode 100644 index 3392230..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_read_prefs_t.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_read_prefs_t() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_read_prefs_t()

    -
    -

    Synopsis

    -
    const mongoc_read_prefs_t *
    -mongoc_uri_get_read_prefs_t (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a read preference that is owned by the URI instance. This read preference concern is configured based on URI parameters.

    -
    -
    -

    Returns

    -

    Returns a mongoc_read_prefs_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_replica_set.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_replica_set.html deleted file mode 100644 index 31121e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_replica_set.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_replica_set() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_replica_set()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_replica_set (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the replicaSet parameter of an URI.

    -
    -
    -

    Returns

    -

    Returns a string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_service.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_service.html deleted file mode 100644 index 8073f99..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_service.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_service() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_service()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_service (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Returns the SRV service name of a MongoDB URI.

    -
    -
    -

    Returns

    -

    A string if this URI’s scheme is “mongodb+srv://”, or NULL if the scheme is “mongodb://”.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_ssl.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_ssl.html deleted file mode 100644 index 63f2c55..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_ssl.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_ssl() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_ssl()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_get_ssl (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a boolean indicating if SSL was specified for use in the URI.

    -
    -
    -

    Returns

    -

    Returns a boolean, true indicating that SSL should be used.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_string.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_string.html deleted file mode 100644 index 6d9a3ae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_string.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_string() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_string()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_string (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the URI as a string.

    -
    -
    -

    Returns

    -

    Returns a string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_username.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_username.html deleted file mode 100644 index 841d415..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_username.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_username() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_username()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_uri_get_username (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the username portion of a URI.

    -
    -
    -

    Returns

    -

    Returns a string which should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_write_concern.html deleted file mode 100644 index 945d578..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_get_write_concern.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_get_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_get_write_concern()

    -
    -

    Synopsis

    -
    const mongoc_write_concern_t *
    -mongoc_uri_get_write_concern (const mongoc_uri_t *uri);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches a write concern that is owned by the URI instance. This write concern is configured based on URI parameters.

    -
    -
    -

    Returns

    -

    Returns a mongoc_write_concern_t that should not be modified or freed.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new.html deleted file mode 100644 index 2f9ca8e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mongoc_uri_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_new()

    -
    -

    Synopsis

    -
    mongoc_uri_t *
    -mongoc_uri_new (const char *uri_string) BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri_string: A string containing a URI.
    • -
    -
    -
    -

    Description

    -

    Calls mongoc_uri_new_with_error().

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_uri_t if successful. Otherwise NULL, using -MONGOC_WARNING on error.

    -
    -

    Warning

    -

    Failure to handle the result of this function is a programming error.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_for_host_port.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_for_host_port.html deleted file mode 100644 index 52115c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_for_host_port.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_uri_new_for_host_port() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_new_for_host_port()

    -
    -

    Synopsis

    -
    mongoc_uri_t *
    -mongoc_uri_new_for_host_port (const char *hostname, uint16_t port);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • hostname: A string containing the hostname.
    • -
    • port: A uint16_t.
    • -
    -
    -
    -

    Description

    -

    Creates a new mongoc_uri_t based on the hostname and port provided.

    -
    -
    -

    Returns

    -

    Returns a newly allocated mongoc_uri_t that should be freed with mongoc_uri_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_with_error.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_with_error.html deleted file mode 100644 index 953ebcf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_new_with_error.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - mongoc_uri_new_with_error() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_new_with_error()

    -
    -

    Synopsis

    -
    mongoc_uri_t *
    -mongoc_uri_new_with_error (const char *uri_string,
    -                           bson_error_t *error) BSON_GNUC_WARN_UNUSED_RESULT;
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri_string: A string containing a URI.
    • -
    • error: An optional location for a bson_error_t or NULL.
    • -
    -
    -
    -

    Description

    -

    Parses a string containing a MongoDB style URI connection string.

    -
    -
    -

    Returns

    -

    A newly allocated mongoc_uri_t if successful. Otherwise NULL -populating error with the error description.

    -
    -

    Warning

    -

    Failure to handle the result of this function is a programming error.

    -
    -
    -
    -

    Examples

    -

    Examples of some valid MongoDB connection strings can be seen below.

    -

    "mongodb://localhost/"

    -

    "mongodb://localhost/?replicaSet=myreplset"

    -

    "mongodb://myuser:mypass@localhost/"

    -

    "mongodb://kerberosuser%40EXAMPLE.COM@example.com/?authMechanism=GSSAPI"

    -

    "mongodb://[::1]:27017/"

    -

    "mongodb://10.0.0.1:27017,10.0.0.1:27018,[::1]:27019/?ssl=true"

    -

    "mongodb://%2Ftmp%2Fmongodb-27017.sock"

    -

    "mongodb://user:pass@%2Ftmp%2Fmongodb-27017.sock"

    -

    "mongodb://localhost,[::1]/mydb?authSource=mydb"

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_bool.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_bool.html deleted file mode 100644 index 31eaa2f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_bool.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_uri_option_is_bool() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_option_is_bool()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_option_is_bool (const char *option);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • option: The name of an option, case insensitive.
    • -
    -
    -
    -

    Description

    -

    Returns true if the option is a known MongoDB URI option of boolean type. For example, “ssl=false” is a valid MongoDB URI option, so mongoc_uri_option_is_bool ("ssl") is true.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_int32.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_int32.html deleted file mode 100644 index c30100f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_int32.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_uri_option_is_int32() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_option_is_int32()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_option_is_int32 (const char *option);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • option: The name of an option, case insensitive.
    • -
    -
    -
    -

    Description

    -

    Returns true if the option is a known MongoDB URI option of integer type. For example, “socketTimeoutMS=100” is a valid MongoDB URI option, so mongoc_uri_option_is_int32 ("connectTimeoutMS") is true.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_utf8.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_utf8.html deleted file mode 100644 index 6b054cd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_option_is_utf8.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_uri_option_is_utf8() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_option_is_utf8()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_option_is_utf8 (const char *option);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • option: The name of an option, case insensitive.
    • -
    -
    -
    -

    Description

    -

    Returns true if the option is a known MongoDB URI option of string type. For example, “replicaSet=my_rs” is a valid MongoDB URI option, so mongoc_uri_option_is_utf8 ("replicaSet") is true.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_mechanism.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_mechanism.html deleted file mode 100644 index b0496c7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_mechanism.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - mongoc_uri_set_auth_mechanism() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_auth_mechanism()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_auth_mechanism (mongoc_uri_t *uri, const char *value);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • value: The new “authMechanism” value.
    • -
    -
    -
    -

    Description

    -

    Sets the “authMechanism” URI option, such as “SCRAM-SHA-1” or “GSSAPI”, after the URI has been parsed from a string.

    -

    Updates the option in-place if already set, otherwise appends it to the URI’s bson_t of options.

    -
    -
    -

    Returns

    -

    Returns false if the option cannot be set, for example if value is not valid UTF-8.

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_source.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_source.html deleted file mode 100644 index c6f081c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_auth_source.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - mongoc_uri_set_auth_source() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_auth_source()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_auth_source (mongoc_uri_t *uri, const char *value);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • value: The new “authSource” value.
    • -
    -
    -
    -

    Description

    -

    Sets the “authSource” URI option, after the URI has been parsed from a string.

    -

    Updates the option in-place if already set, otherwise appends it to the URI’s bson_t of options.

    -
    -
    -

    Returns

    -

    Returns false if the option cannot be set, for example if value is not valid UTF-8.

    - -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_compressors.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_compressors.html deleted file mode 100644 index d040891..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_compressors.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - mongoc_uri_set_compressors() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_compressors()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_compressors (mongoc_uri_t *uri, const char *compressors);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • compressors: One or more comma (,) separated compressors.
    • -
    -
    -
    -

    Description

    -

    Sets the URI’s compressors, after the URI has been parsed from a string. -Will overwrite any previously set value.

    -
    -
    -

    Example

    -
    mongoc_client_t *client;
    -mongoc_uri_t *uri;
    -
    -uri = mongoc_uri_new ("mongodb://localhost/");
    -mongoc_uri_set_compressors (uri, "snappy,zlib");
    -mongoc_client_new_from_uri (uri);
    -/* Snappy & zlib compressors are enabled */
    -
    -
    -
    -
    -

    Returns

    -

    Returns false if the option cannot be set, for example if compressors is not valid UTF-8. -Logs a warning to stderr with the MONGOC_WARNING macro -if compressor is not available.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_database.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_database.html deleted file mode 100644 index 2f712e1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_database.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_uri_set_database() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_database()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_database (mongoc_uri_t *uri, const char *database);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the URI’s database, after the URI has been parsed from a string.

    -

    The driver authenticates to this database if the connection string includes authentication credentials. This database is also the return value of mongoc_client_get_default_database().

    -
    -
    -

    Returns

    -

    Returns false if the option cannot be set, for example if database is not valid UTF-8.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_mechanism_properties.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_mechanism_properties.html deleted file mode 100644 index ca7e625..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_mechanism_properties.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - mongoc_uri_set_mechanism_properties() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_mechanism_properties()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_mechanism_properties (mongoc_uri_t *uri,
    -                                     const bson_t *properties);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Replaces all the options in URI’s “authMechanismProperties” after the URI has been parsed from a string.

    -
    -
    -

    Returns

    -

    Returns false if the option cannot be set, for example if properties is not valid BSON data.

    -
    -
    -

    Example

    -
    mongoc_uri_t *uri;
    -bson_t props = BSON_INITIALIZER;
    -
    -uri = mongoc_uri_new (
    -   "mongodb://user%40DOMAIN.COM:password@localhost/?authMechanism=GSSAPI"
    -   "&authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true");
    -
    -/* replace all options: replace service name "other" with "my_service", unset
    - * "CANONICALIZE_HOST_NAME" and accept its default.
    - */
    -BSON_APPEND_UTF8 (&props, "SERVICE_NAME", "my_service");
    -mongoc_uri_set_mechanism_properties (uri, &props);
    -
    -bson_destroy (&props);
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_bool.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_bool.html deleted file mode 100644 index 59c3a10..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_bool.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_uri_set_option_as_bool() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_option_as_bool()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_option_as_bool (const mongoc_uri_t *uri,
    -                               const char *option,
    -                               bool value);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • option: The name of an option, case insensitive.
    • -
    • value: The new value.
    • -
    -
    -
    -

    Description

    -

    Sets an individual URI option, after the URI has been parsed from a string.

    -

    Only known options of type bool can be set.

    -

    Updates the option in-place if already set, otherwise appends it to the URI’s bson_t of options.

    -
    -
    -

    Returns

    -

    True if successfully set (the named option is a known option of type bool).

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_int32.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_int32.html deleted file mode 100644 index c242aca..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_int32.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_uri_set_option_as_int32() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_option_as_int32()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_option_as_int32 (const mongoc_uri_t *uri,
    -                                const char *option,
    -                                int32 value);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • option: The name of an option, case insensitive.
    • -
    • value: The new value.
    • -
    -
    -
    -

    Description

    -

    Sets an individual URI option, after the URI has been parsed from a string.

    -

    Only known options of type int32 can be set. Some int32 options, such as minHeartbeatFrequencyMS, have additional constraints.

    -

    Updates the option in-place if already set, otherwise appends it to the URI’s bson_t of options.

    -
    -
    -

    Returns

    -

    True if successfully set (the named option is a known option of type int32).

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_utf8.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_utf8.html deleted file mode 100644 index 4de0246..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_option_as_utf8.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_uri_set_option_as_utf8() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_option_as_utf8()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_option_as_utf8 (const mongoc_uri_t *uri,
    -                               const char *option,
    -                               utf8 value);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • uri: A mongoc_uri_t.
    • -
    • option: The name of an option, case insensitive.
    • -
    • value: The new value.
    • -
    -
    -
    -

    Description

    -

    Sets an individual URI option, after the URI has been parsed from a string.

    -

    Only known string-type options can be set.

    -

    Updates the option in-place if already set, otherwise appends it to the URI’s bson_t of options.

    -
    -
    -

    Returns

    -

    True if successfully set (the named option is a known option of string type).

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_password.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_password.html deleted file mode 100644 index f08e94e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_password.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_uri_set_password() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_password()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_password (mongoc_uri_t *uri, const char *password);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the URI’s password, after the URI has been parsed from a string. The driver authenticates with this password if the username is also set.

    -
    -
    -

    Returns

    -

    Returns false if the option cannot be set, for example if password is not valid UTF-8.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_concern.html deleted file mode 100644 index 90af716..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_concern.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_uri_set_read_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_read_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_uri_set_read_concern (mongoc_uri_t *uri,
    -                             const mongoc_read_concern_t *rc);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets a MongoDB URI’s read concern option, after the URI has been parsed from a string.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_prefs_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_prefs_t.html deleted file mode 100644 index a7466ed..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_read_prefs_t.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_uri_set_read_prefs_t() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_read_prefs_t()

    -
    -

    Synopsis

    -
    void
    -mongoc_uri_set_read_prefs_t (mongoc_uri_t *uri,
    -                             const mongoc_read_prefs_t *prefs);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets a MongoDB URI’s read preferences, after the URI has been parsed from a string.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_username.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_username.html deleted file mode 100644 index 9e2bea4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_username.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_uri_set_username() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_username()

    -
    -

    Synopsis

    -
    bool
    -mongoc_uri_set_username (mongoc_uri_t *uri, const char *username);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the URI’s username, after the URI has been parsed from a string. The driver authenticates with this username if the password is also set.

    -
    -
    -

    Returns

    -

    Returns false if the option cannot be set, for example if username is not valid UTF-8.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_write_concern.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_write_concern.html deleted file mode 100644 index b387b97..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_set_write_concern.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_uri_set_write_concern() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_set_write_concern()

    -
    -

    Synopsis

    -
    void
    -mongoc_uri_set_write_concern (mongoc_uri_t *uri,
    -                              const mongoc_write_concern_t *wc);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets a MongoDB URI’s write concern option, after the URI has been parsed from a string.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_t.html deleted file mode 100644 index 08fcc97..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_t.html +++ /dev/null @@ -1,551 +0,0 @@ - - - - - - - - mongoc_uri_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_t

    -
    -

    Synopsis

    -
    typedef struct _mongoc_uri_t mongoc_uri_t;
    -
    -
    -
    -
    -

    Description

    -

    mongoc_uri_t provides an abstraction on top of the MongoDB connection URI format. It provides standardized parsing as well as convenience methods for extracting useful information such as replica hosts or authorization information.

    -

    See Connection String URI Reference on the MongoDB website for more information.

    -
    -
    -

    Format

    -
    mongodb[+srv]://                             <1>
    -   [username:password@]                      <2>
    -   host1                                     <3>
    -   [:port1]                                  <4>
    -   [,host2[:port2],...[,hostN[:portN]]]      <5>
    -   [/[database]                              <6>
    -   [?options]]                               <7>
    -
    -
    -
      -
    1. “mongodb” is the specifier of the MongoDB protocol. Use “mongodb+srv” with a single service name in place of “host1” to specify the initial list of servers with an SRV record.
    2. -
    3. An optional username and password.
    4. -
    5. The only required part of the uri. This specifies either a hostname, IPv4 address, IPv6 address enclosed in “[” and “]”, or UNIX domain socket.
    6. -
    7. An optional port number. Defaults to :27017.
    8. -
    9. Extra optional hosts and ports. You would specify multiple hosts, for example, for connections to replica sets.
    10. -
    11. The name of the database to authenticate if the connection string includes authentication credentials. If /database is not specified and the connection string includes credentials, defaults to the ‘admin’ database.
    12. -
    13. Connection specific options.
    14. -
    -
    -

    Note

    -

    Option names are case-insensitive

    -
    -

    The MongoDB C Driver exposes constants for each supported connection option. These constants make it easier to discover connection options, but their string values can be used as well.

    -

    For example, the following calls are equal.

    -
    uri = mongoc_uri_new ("mongodb://localhost/?" MONGOC_URI_APPNAME "=applicationName");
    -uri = mongoc_uri_new ("mongodb://localhost/?appname=applicationName");
    -uri = mongoc_uri_new ("mongodb://localhost/?appName=applicationName");
    -
    -
    -
    -
    -

    Replica Set Example

    -

    To describe a connection to a replica set named ‘test’ with the following mongod hosts:

    -
      -
    • db1.example.com on port 27017
    • -
    • db2.example.com on port 2500
    • -
    -

    You would use a connection string that resembles the following.

    -
    mongodb://db1.example.com,db2.example.com:2500/?replicaSet=test
    -
    -
    -
    -
    -

    SRV Example

    -

    If you have configured an SRV record with a name like “_mongodb._tcp.server.example.com” whose records are a list of one or more MongoDB server hostnames, use a connection string like this:

    -
    uri = mongoc_uri_new ("mongodb+srv://server.example.com/?replicaSet=rs&appName=applicationName");
    -
    -
    -

    The driver prefixes the service name with “_mongodb._tcp.”, then performs a DNS SRV query to resolve the service name to one or more hostnames. If this query succeeds, the driver performs a DNS TXT query on the service name (without the “_mongodb._tcp” prefix) for additional URI options configured as TXT records.

    -

    On Unix, the MongoDB C Driver relies on libresolv to look up SRV and TXT records. If libresolv is unavailable, then using a “mongodb+srv” URI will cause an error. If your libresolv lacks res_nsearch then the driver will fall back to res_search, which is not thread-safe.

    -
    -
    -

    IPv4 and IPv6

    -

    If connecting to a hostname that has both IPv4 and IPv6 DNS records, the behavior follows RFC-6555. A connection to the IPv6 address is attempted first. If IPv6 fails, then a connection is attempted to the IPv4 address. If the connection attempt to IPv6 does not complete within 250ms, then IPv4 is tried in parallel. Whichever succeeds connection first cancels the other. The successful DNS result is cached for 10 minutes.

    -

    As a consequence, attempts to connect to a mongod only listening on IPv4 may be delayed if there are both A (IPv4) and AAAA (IPv6) DNS records associated with the host.

    -

    To avoid a delay, configure hostnames to match the MongoDB configuration. That is, only create an A record if the mongod is only listening on IPv4.

    -
    -
    -

    Connection Options

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_RETRYWRITESretrywritesIf “true” and the server is a MongoDB 3.6+ replica set or sharded cluster, the driver safely retries a write that failed due to a network error or replica set failover. Only inserts, updates of single documents, or deletes of single -documents are retried.
    MONGOC_URI_APPNAMEappnameThe client application name. This value is used by MongoDB when it logs connection information and profile information, such as slow queries.
    MONGOC_URI_SSLssl{true|false}, indicating if SSL must be used. (See also mongoc_client_set_ssl_opts() and mongoc_client_pool_set_ssl_opts().)
    MONGOC_URI_COMPRESSORScompressorsComma separated list of compressors, if any, to use to compress the wire protocol messages. Snappy are Zlib are optional build time dependencies, and enable the “snappy” and “zlib” values respectively. Defaults to empty (no compressors).
    MONGOC_URI_CONNECTTIMEOUTMSconnecttimeoutmsThis setting applies to new server connections. It is also used as the socket timeout for server discovery and monitoring operations. The default is 10,000 ms (10 seconds).
    MONGOC_URI_SOCKETTIMEOUTMSsockettimeoutmsThe time in milliseconds to attempt to send or receive on a socket before the attempt times out. The default is 300,000 (5 minutes).
    MONGOC_URI_REPLICASETreplicasetThe name of the Replica Set that the driver should connect to.
    MONGOC_URI_ZLIBCOMPRESSIONLEVELzlibcompressionlevelWhen the MONGOC_URI_COMPRESSORS includes “zlib” this options configures the zlib compression level, when the zlib compressor is used to compress client data.
    -

    Setting any of the *timeoutMS options above to 0 will be interpreted as “use the default value”.

    -
    -
    -

    Authentication Options

    - ----- - - - - - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_AUTHMECHANISMauthmechanismSpecifies the mechanism to use when authenticating as the provided user. See Authentication for supported values.
    MONGOC_URI_AUTHMECHANISMPROPERTIESauthmechanismpropertiesCertain authentication mechanisms have additional options that can be configured. These options should be provided as comma separated option_key:option_value pair and provided as authMechanismProperties.
    MONGOC_URI_AUTHSOURCEauthsourceThe authSource defines the database that should be used to authenticate to. It is unnecessary to provide this option the database name is the same as the database used in the URI.
    -
    -

    Mechanism Properties

    - ----- - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_CANONICALIZEHOSTNAMEcanonicalizehostnameUse the canonical hostname of the service, rather than its configured alias, when authenticating with Cyrus-SASL Kerberos.
    MONGOC_URI_GSSAPISERVICENAMEgssapiservicenameUse alternative service name. The default is mongodb.
    -
    -
    -
    -

    SSL Options

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_SSLCLIENTCERTIFICATEKEYFILEsslclientcertificatekeyfilePath to PEM formatted Private Key, with its Public Certificate concatenated at the end.
    MONGOC_URI_SSLCLIENTCERTIFICATEKEYPASSWORDsslclientcertificatekeypasswordThe password, if any, to use to unlock encrypted Private Key.
    MONGOC_URI_SSLCERTIFICATEAUTHORITYFILEsslcertificateauthorityfileOne, or a bundle of, Certificate Authorities whom should be considered to be trusted.
    MONGOC_URI_SSLALLOWINVALIDCERTIFICATESsslallowinvalidcertificatesAccept and ignore certificate verification errors (e.g. untrusted issuer, expired, etc etc)
    MONGOC_URI_SSLALLOWINVALIDHOSTNAMESsslallowinvalidhostnamesIgnore hostname verification of the certificate (e.g. Man In The Middle, using valid certificate, but issued for another hostname)
    -

    See mongoc_ssl_opt_t for details about these options and about building libmongoc with SSL support.

    -
    -
    -

    Server Discovery, Monitoring, and Selection Options

    -

    Clients in a mongoc_client_pool_t share a topology scanner that runs on a background thread. The thread wakes every heartbeatFrequencyMS (default 10 seconds) to scan all MongoDB servers in parallel. Whenever an application operation requires a server that is not known–for example, if there is no known primary and your application attempts an insert–the thread rescans all servers every half-second. In this situation the pooled client waits up to serverSelectionTimeoutMS (default 30 seconds) for the thread to find a server suitable for the operation, then returns an error with domain MONGOC_ERROR_SERVER_SELECTION.

    -

    Technically, the total time an operation may wait while a pooled client scans the topology is controlled both by serverSelectionTimeoutMS and connectTimeoutMS. The longest wait occurs if the last scan begins just at the end of the selection timeout, and a slow or down server requires the full connection timeout before the client gives up.

    -

    A non-pooled client is single-threaded. Every heartbeatFrequencyMS, it blocks the next application operation while it does a parallel scan. This scan takes as long as needed to check the slowest server: roughly connectTimeoutMS. Therefore the default heartbeatFrequencyMS for single-threaded clients is greater than for pooled clients: 60 seconds.

    -

    By default, single-threaded (non-pooled) clients scan only once when an operation requires a server that is not known. If you attempt an insert and there is no known primary, the client checks all servers once trying to find it, then succeeds or returns an error with domain MONGOC_ERROR_SERVER_SELECTION. But if you set serverSelectionTryOnce to “false”, the single-threaded client loops, checking all servers every half-second, until serverSelectionTimeoutMS.

    -

    The total time an operation may wait for a single-threaded client to scan the topology is determined by connectTimeoutMS in the try-once case, or serverSelectionTimeoutMS and connectTimeoutMS if serverSelectionTryOnce is set “false”.

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_HEARTBEATFREQUENCYMSheartbeatfrequencymsThe interval between server monitoring checks. Defaults to 10,000ms (10 seconds) in pooled (multi-threaded) mode, 60,000ms (60 seconds) in non-pooled mode (single-threaded).
    MONGOC_URI_SERVERSELECTIONTIMEOUTMSserverselectiontimeoutmsA timeout in milliseconds to block for server selection before throwing an exception. The default is 30,0000ms (30 seconds).
    MONGOC_URI_SERVERSELECTIONTRYONCEserverselectiontryonceIf “true”, the driver scans the topology exactly once after server selection fails, then either selects a server or returns an error. If it is false, then the driver repeatedly searches for a suitable server for up to serverSelectionTimeoutMS milliseconds (pausing a half second between attempts). The default for serverSelectionTryOnce is “false” for pooled clients, otherwise “true”. Pooled clients ignore serverSelectionTryOnce; they signal the thread to rescan the topology every half-second until serverSelectionTimeoutMS expires.
    MONGOC_URI_SOCKETCHECKINTERVALMSsocketcheckintervalmsOnly applies to single threaded clients. If a socket has not been used within this time, its connection is checked with a quick “isMaster” call before it is used again. Defaults to 5,000ms (5 seconds).
    -

    Setting any of the *TimeoutMS options above to 0 will be interpreted as “use the default value”.

    -
    -
    -

    Connection Pool Options

    -

    These options govern the behavior of a mongoc_client_pool_t. They are ignored by a non-pooled mongoc_client_t.

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_MAXPOOLSIZEmaxpoolsizeThe maximum number of clients created by a mongoc_client_pool_t total (both in the pool and checked out). The default value is 100. Once it is reached, mongoc_client_pool_pop() blocks until another thread pushes a client.
    MONGOC_URI_MINPOOLSIZEminpoolsizeDeprecated. This option’s behavior does not match its name, and its actual behavior will likely hurt performance.
    MONGOC_URI_MAXIDLETIMEMSmaxidletimemsNot implemented.
    MONGOC_URI_WAITQUEUEMULTIPLEwaitqueuemultipleNot implemented.
    MONGOC_URI_WAITQUEUETIMEOUTMSwaitqueuetimeoutmsNot implemented.
    -
    -
    -

    Write Concern Options

    - ----- - - - - - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_Ww

    Determines the write concern (guarantee). Valid values:

    -
      -
    • 0 = The driver will not acknowledge write operations but will pass or handle any network and socket errors that it receives to the client. If you disable write concern but enable the getLastError command’s w option, w overrides the w option.
    • -
    • 1 = Provides basic acknowledgement of write operations. By specifying 1, you require that a standalone mongod instance, or the primary for replica sets, acknowledge all write operations. For drivers released after the default write concern change, this is the default write concern setting.
    • -
    • majority = For replica sets, if you specify the special majority value to w option, write operations will only return successfully after a majority of the configured replica set members have acknowledged the write operation.
    • -
    • n = For replica sets, if you specify a number n greater than 1, operations with this write concern return only after n members of the set have acknowledged the write. If you set n to a number that is greater than the number of available set members or members that hold data, MongoDB will wait, potentially indefinitely, for these members to become available.
    • -
    • tags = For replica sets, you can specify a tag set to require that all members of the set that have these tags configured return confirmation of the write operation.
    • -
    -
    MONGOC_URI_WTIMEOUTMSwtimeoutmsThe time in milliseconds to wait for replication to succeed, as specified in the w option, before timing out. When wtimeoutMS is 0, write operations will never time out.
    MONGOC_URI_JOURNALjournal

    Controls whether write operations will wait until the mongod acknowledges the write operations and commits the data to the on disk journal.

    -
      -
    • true = Enables journal commit acknowledgement write concern. Equivalent to specifying the getLastError command with the j option enabled.
    • -
    • false = Does not require that mongod commit write operations to the journal before acknowledging the write operation. This is the default option for the journal parameter.
    • -
    -
    -
    -
    -

    Read Concern Options

    - ----- - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_READCONCERNLEVELreadconcernlevelThe level of isolation for read operations. If the level is left unspecified, the server default will be used. See readConcern in the MongoDB Manual for details.
    -
    -
    -

    Read Preference Options

    -

    When connected to a replica set, the driver chooses which member to query using the read preference:

    -
      -
    1. Choose members whose type matches “readPreference”.
    2. -
    3. From these, if there are any tags sets configured, choose members matching the first tag set. If there are none, fall back to the next tag set and so on, until some members are chosen or the tag sets are exhausted.
    4. -
    5. From the chosen servers, distribute queries randomly among the server with the fastest round-trip times. These include the server with the fastest time and any whose round-trip time is no more than “localThresholdMS” slower.
    6. -
    - ----- - - - - - - - - - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_READPREFERENCEreadpreference

    Specifies the replica set read preference for this connection. This setting overrides any slaveOk value. The read preference values are the following:

    -
      -
    • primary (default)
    • -
    • primaryPreferred
    • -
    • secondary
    • -
    • secondaryPreferred
    • -
    • nearest
    • -
    -
    MONGOC_URI_READPREFERENCETAGSreadpreferencetagsA representation of a tag set. See also Tag Sets.
    MONGOC_URI_LOCALTHRESHOLDMSlocalthresholdmsHow far to distribute queries, beyond the server with the fastest round-trip time. By default, only servers within 15ms of the fastest round-trip time receive queries.
    MONGOC_URI_MAXSTALENESSSECONDSmaxstalenesssecondsThe maximum replication lag, in wall clock time, that a secondary can suffer and still be eligible. The smallest allowed value for maxStalenessSeconds is 90 seconds.
    -
    -

    Note

    -

    When connecting to more than one mongos, libmongoc’s localThresholdMS applies only to the selection of mongos servers. The threshold for selecting among replica set members in shards is controlled by the mongos’s localThreshold command line option.

    -
    -
    -
    -

    Legacy Options

    -

    For historical reasons, the following options are available. They should however not be used.

    - ----- - - - - - - - - - - - - - - - - -
    ConstantKeyDescription
    MONGOC_URI_SAFEsafe{true|false} Same as w={1|0}
    MONGOC_URI_SLAVEOKslaveokWhen set, same as readPreference=secondaryPreferred
    -
    - -
    - - -
    - -
    -
    -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_unescape.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_unescape.html deleted file mode 100644 index f7d0122..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_uri_unescape.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_uri_unescape() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_uri_unescape()

    -
    -

    Synopsis

    -
    char *
    -mongoc_uri_unescape (const char *escaped_string);
    -
    -
    -
    -
    -

    Parameters

    -
      -
    • escaped_string: A utf8 encoded string.
    • -
    -
    -
    -

    Description

    -

    Unescapes an URI encoded string. For example, “%40” would become “@”.

    -
    -
    -

    Returns

    -

    Returns a newly allocated string that should be freed with bson_free().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_version.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_version.html deleted file mode 100644 index 50757fa..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_version.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - Version Checks — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Version Checks

    -

    Conditional compilation based on mongoc version

    -
    -

    Description

    -

    The following preprocessor macros can be used to perform various checks based on the version of the library you are compiling against. -This may be useful if you only want to enable a feature on a certain version of the library.

    -
    -#include <mongoc/mongoc.h>
    -
    -#define MONGOC_MAJOR_VERSION (1)
    -#define MONGOC_MINOR_VERSION (13)
    -#define MONGOC_MICRO_VERSION (1)
    -#define MONGOC_VERSION_S     "1.13.1"
    -#define MONGOC_VERSION_HEX   ((1 << 24) | (0 << 16) | (0 << 8) | 0)
    -#define MONGOC_CHECK_VERSION(major, minor, micro)
    -
    -

    Only compile a block on MongoDB C Driver 1.1.0 and newer.

    -
    #if MONGOC_CHECK_VERSION(1, 1, 0)
    -static void
    -do_something (void)
    -{
    -}
    -#endif
    -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_append.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_append.html deleted file mode 100644 index 731af00..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_append.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - mongoc_write_concern_append() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_append()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_append (mongoc_write_concern_t *write_concern,
    -                             bson_t *command);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    This function appends a write concern to command options. It is useful for appending a write concern to command options before passing them to mongoc_client_write_command_with_opts() or a related function that takes an options document.

    -
    -
    -

    Returns

    -

    Returns true on success. If any arguments are invalid, returns false and logs an error.

    -
    -
    -

    Example

    -

    See the example code for mongoc_client_write_command_with_opts().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_copy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_copy.html deleted file mode 100644 index 1b36cc0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_copy.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_write_concern_copy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_copy()

    -
    -

    Synopsis

    -
    mongoc_write_concern_t *
    -mongoc_write_concern_copy (const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Performs a deep copy of write_concern.

    -
    -
    -

    Returns

    -

    Returns a newly allocated copy of write_concern that should be freed with mongoc_write_concern_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_destroy.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_destroy.html deleted file mode 100644 index c292f6e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_destroy.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_write_concern_destroy() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_destroy()

    -
    -

    Synopsis

    -
    void
    -mongoc_write_concern_destroy (mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Frees all resources associated with the write concern structure. Does nothing if write_concern is NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_fsync.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_fsync.html deleted file mode 100644 index d4da953..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_fsync.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - mongoc_write_concern_get_fsync() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_get_fsync()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_get_fsync (const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches if an fsync should be performed before returning success on a write operation.

    -
    -
    -

    Returns

    -

    Returns true if fsync is set as part of the write concern.

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    The fsync write concern is deprecated; use journal instead.

    -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_journal.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_journal.html deleted file mode 100644 index 6ce556a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_journal.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_write_concern_get_journal() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_get_journal()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_get_journal (const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches if the write should be journaled before indicating success.

    -
    -
    -

    Returns

    -

    Returns true if the write should be journaled.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_w.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_w.html deleted file mode 100644 index 467a9a4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_w.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_write_concern_get_w() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_get_w()

    -
    -

    Synopsis

    -
    int32_t
    -mongoc_write_concern_get_w (const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches the w parameter of the write concern.

    -
    -
    -

    Returns

    -

    Returns an integer containing the w value. If wmajority is set, this would be MONGOC_WRITE_CONCERN_W_MAJORITY.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wmajority.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wmajority.html deleted file mode 100644 index 15a5cb4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wmajority.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_write_concern_get_wmajority() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_get_wmajority()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_get_wmajority (
    -   const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Fetches if the write should be written to a majority of nodes before indicating success.

    -
    -
    -

    Returns

    -

    Returns true if wmajority is set.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtag.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtag.html deleted file mode 100644 index a636d6f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtag.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - mongoc_write_concern_get_wtag() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_get_wtag()

    -
    -

    Synopsis

    -
    const char *
    -mongoc_write_concern_get_wtag (const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    A string containing the wtag setting if it has been set. Otherwise returns NULL.

    -
    -
    -

    Returns

    -

    Returns a string which should not be modified or freed, or NULL.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtimeout.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtimeout.html deleted file mode 100644 index 2ebd924..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_get_wtimeout.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - mongoc_write_concern_get_wtimeout() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_get_wtimeout()

    -
    -

    Synopsis

    -
    int32_t
    -mongoc_write_concern_get_wtimeout (const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Get the timeout in milliseconds that the server should wait before returning with a write concern timeout.

    -

    A value of 0 indicates no write timeout.

    -
    -
    -

    Returns

    -

    Returns an 32-bit signed integer containing the timeout.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_acknowledged.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_acknowledged.html deleted file mode 100644 index 88bf710..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_acknowledged.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - mongoc_write_concern_is_acknowledged() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_is_acknowledged()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_is_acknowledged (
    -   const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Test if this is an acknowledged or unacknowledged write concern.

    -

    If write_concern is NULL, returns true. (In other words, writes are acknowledged by default.)

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_default.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_default.html deleted file mode 100644 index 7e8334a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_default.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_write_concern_is_default() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_is_default()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_is_default (mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Returns true if write_concern has not been modified from the default. For example, if no “w” option is set in the MongoDB URI and you have not called mongoc_client_set_write_concern(), then -mongoc_write_concern_is_default() is true for the write concern returned by mongoc_client_get_write_concern().

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_valid.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_valid.html deleted file mode 100644 index f59444f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_is_valid.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - mongoc_write_concern_is_valid() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_is_valid()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_is_valid (const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Test if this write concern uses an invalid combination of options.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_journal_is_set.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_journal_is_set.html deleted file mode 100644 index 16cf4f2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_journal_is_set.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - mongoc_write_concern_journal_is_set() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_journal_is_set()

    -
    -

    Synopsis

    -
    bool
    -mongoc_write_concern_journal_is_set (
    -   const mongoc_write_concern_t *write_concern);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Test whether this write concern’s “journal” option was explicitly set or uses the default setting.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_new.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_new.html deleted file mode 100644 index ffdea73..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_new.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - mongoc_write_concern_new() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_new()

    -
    -

    Synopsis

    -
    mongoc_write_concern_t *
    -mongoc_write_concern_new (void);
    -
    -
    -
    -
    -

    Returns

    -

    Creates a newly allocated write concern that can be configured based on user preference. This should be freed with mongoc_write_concern_destroy() when no longer in use.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_fsync.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_fsync.html deleted file mode 100644 index 402594d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_fsync.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - mongoc_write_concern_set_fsync() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_set_fsync()

    -
    -

    Synopsis

    -
    void
    -mongoc_write_concern_set_fsync (mongoc_write_concern_t *write_concern,
    -                                bool fsync_);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets if a fsync must be performed before indicating write success.

    -

    Beginning in version 1.9.0, this function can now alter the write concern after -it has been used in an operation. Previously, using the struct with an operation -would mark it as “frozen” and calling this function would log a warning instead -instead of altering the write concern.

    -
    -
    -

    Deprecated

    -
    -

    Warning

    -

    The fsync write concern is deprecated.

    -
    -

    Please use mongoc_write_concern_set_journal() instead.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_journal.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_journal.html deleted file mode 100644 index 99c148b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_journal.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_write_concern_set_journal() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_set_journal()

    -
    -

    Synopsis

    -
    void
    -mongoc_write_concern_set_journal (mongoc_write_concern_t *write_concern,
    -                                  bool journal);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets if the write must have been journaled before indicating success.

    -

    Beginning in version 1.9.0, this function can now alter the write concern after -it has been used in an operation. Previously, using the struct with an operation -would mark it as “frozen” and calling this function would log a warning instead -instead of altering the write concern.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_w.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_w.html deleted file mode 100644 index 36ac735..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_w.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_write_concern_set_w() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_set_w()

    -
    -

    Synopsis

    -
    void
    -mongoc_write_concern_set_w (mongoc_write_concern_t *write_concern, int32_t w);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the w value for the write concern. See mongoc_write_concern_t for more information on this setting.

    -

    Unacknowledged writes are not causally consistent. If you execute a write operation with a mongoc_write_concern_t on which you have called mongoc_write_concern_set_w() with a value of 0, the write does not participate in causal consistency, even when executed with a mongoc_client_session_t.

    -

    Beginning in version 1.9.0, this function can now alter the write concern after -it has been used in an operation. Previously, using the struct with an operation -would mark it as “frozen” and calling this function would log a warning instead -instead of altering the write concern.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wmajority.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wmajority.html deleted file mode 100644 index 3467753..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wmajority.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - mongoc_write_concern_set_wmajority() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_set_wmajority()

    -
    -

    Synopsis

    -
    void
    -mongoc_write_concern_set_wmajority (mongoc_write_concern_t *write_concern,
    -                                    int32_t wtimeout_msec);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets if the write must have been propagated to a majority of nodes before indicating write success.

    -

    The timeout specifies how long, in milliseconds, the server should wait before indicating that the write has failed. This is not the same as a socket timeout. A value of zero may be used to indicate no timeout.

    -

    Beginning in version 1.9.0, this function can now alter the write concern after -it has been used in an operation. Previously, using the struct with an operation -would mark it as “frozen” and calling this function would log a warning instead -instead of altering the write concern.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtag.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtag.html deleted file mode 100644 index 1d8cd59..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtag.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_write_concern_set_wtag() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_set_wtag()

    -
    -

    Synopsis

    -
    void
    -mongoc_write_concern_set_wtag (mongoc_write_concern_t *write_concern,
    -                               const char *tag);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Sets the write tag that must be satisfied for the write to indicate success. Write tags are preset write concerns configured on your MongoDB server. See mongoc_write_concern_t for more information on this setting.

    -

    Beginning in version 1.9.0, this function can now alter the write concern after -it has been used in an operation. Previously, using the struct with an operation -would mark it as “frozen” and calling this function would log a warning instead -instead of altering the write concern.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtimeout.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtimeout.html deleted file mode 100644 index 3e38fa6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_set_wtimeout.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - mongoc_write_concern_set_wtimeout() — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_set_wtimeout()

    -
    -

    Synopsis

    -
    void
    -mongoc_write_concern_set_wtimeout (mongoc_write_concern_t *write_concern,
    -                                   int32_t wtimeout_msec);
    -
    -
    -
    -
    -

    Parameters

    - -
    -
    -

    Description

    -

    Set the timeout in milliseconds that the server should wait before returning with a write concern timeout. This is not the same as a socket timeout. A value of zero may be used to indicate no write concern timeout.

    -

    Beginning in version 1.9.0, this function can now alter the write concern after -it has been used in an operation. Previously, using the struct with an operation -would mark it as “frozen” and calling this function would log a warning instead -instead of altering the write concern.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_t.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_t.html deleted file mode 100644 index de94123..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/mongoc_write_concern_t.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - mongoc_write_concern_t — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    mongoc_write_concern_t

    -

    Write Concern abstraction

    -
    -

    Synopsis

    -

    mongoc_write_concern_t tells the driver what level of acknowledgement to await from the server. The default, MONGOC_WRITE_CONCERN_W_DEFAULT, is right for the great majority of applications.

    -

    You can specify a write concern on connection objects, database objects, collection objects, or per-operation. Data-modifying operations typically use the write concern of the object they operate on, and check the server response for a write concern error or write concern timeout. For example, mongoc_collection_drop_index() uses the collection’s write concern, and a write concern error or timeout in the response is considered a failure.

    -

    Exceptions to this principle are the generic command functions:

    - -

    These generic command functions do not automatically apply a write concern, and they do not check the server response for a write concern error or write concern timeout.

    -

    See Write Concern on the MongoDB website for more information.

    -
    -
    -

    Write Concern Levels

    -

    Set the write concern level with mongoc_write_concern_set_w().

    - ---- - - - - - - - - - - - - - - -
    MONGOC_WRITE_CONCERN_W_DEFAULT (1)By default, writes block awaiting acknowledgement from MongoDB. Acknowledged write concern allows clients to catch network, duplicate key, and other errors.
    MONGOC_WRITE_CONCERN_W_UNACKNOWLEDGED (0)With this write concern, MongoDB does not acknowledge the receipt of write operation. Unacknowledged is similar to errors ignored; however, mongoc attempts to receive and handle network errors when possible.
    MONGOC_WRITE_CONCERN_W_MAJORITY (majority)Block until a write has been propagated to a majority of the nodes in the replica set.
    nBlock until a write has been propagated to at least n nodes in the replica set.
    -
    -
    -

    Deprecations

    -

    The write concern MONGOC_WRITE_CONCERN_W_ERRORS_IGNORED (value -1) is a deprecated synonym for MONGOC_WRITE_CONCERN_W_UNACKNOWLEDGED (value 0), and will be removed in the next major release.

    -

    mongoc_write_concern_set_fsync() is deprecated.

    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/objects.inv b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/objects.inv deleted file mode 100644 index 920816b0f6a3cd62f1f43cfb27cc1bc9b95a5657..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7724 zcmV+{9@F6?AX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkSZ*FIA zL_#1#AVhL$c4cx3BOq2~a&u{KZaN?_E-^DMF$yCfRA^-&a%F8{X>Md?av*PJAarPH zb0B7EY-J#6b0A}HZE$jBb8}^6Aa!$TZf78RY-wUH3V7PBUE7k}IC6dOuc!#^!zf~F z?ODfc*nS&Hv*Qg*BZYb{eyd=y*wvh7k+n>+TfI;FA@BDo?{~tdg54dyH6`__hGgA)wiEMyuK;M;l65z85>eXlF4jT zmM9+{s{UB@op1K0I93f|=T%&`UlhN;y|u0L)qhU~uLVX^?Q?fJmi=bRRr9@hgynNW zwEODA#~;4``0maA?dP-O8*_q$K-PrhnUnjUq4`{MBRW-6zx3#uR+6u3bOe9LKsj?M?Nc>h{z~DU)jI*i;ewaV?W#22R57=ivzniGkEuI0`Goaz&C5a-(S0~NuGEv z^)+25gWV@z9vC`UsHyQf%Pci=fu%f*eSH{w%@T(Ftd=mC`uNr?`^t3Py?H#Z|EO?|KC~kkH7!lu4qrT$bddO zkSV*V`o8NAX39N0Ry}0h&WWeWxxe=Yx}Tx9l^<#*bnL#fQa5G)?4^@wX9^^%6UrNT z@BZWUqsJ5IO;A6)Z3}tXVQYP0zqML-W78a5&k9{zOTBxplii%Fc112u%%u@>tWR+t z_9Y(kz5DwnV-3uFu*2!yo88;pyS_FxG2nXGmrYf)<2BY<%V!Vjp*CUQZ$3!aZZgSl z*2ox}h~lL&u%K+4rLOG0YU-mO?ysHoH@6>u*qO4v=%1bN2wnU7rm63$^0{oHzP%KB zs*lHCO(@vCpG$9=E*nl$kym){|8sLG9&C^-g0wb%D#K{=y`q_?fDcZ=Oe1UfF-C^+ zzUo7=sb~rrO>JZ9t$A8&g#BO<&V~Bi7k<9#yUYGmnZar&Uz=)=28e~nvTK?tlseEd zQ^4ZqY;|X??pCWiZ}o0$r&RsYosiymecsQ4xhI`Q^9+2y^llgjFXk^3*Wh7aO?i9N z3N&n3v|@1VdN$b}6!9(zeLfxk znZ9|0)+6^9;)t2QPJ8ok@9g|?-a|FuGpfZM9B!Uie`nhLY{S~z^d>-F4y75g$D(|I zgNZFBqk7ICD30?_ltX;=8YgP2Cy~Tp7y=`uj1Qt|-yFMrr0*N~aA#)f>U20)!&20m zH&x0eua#GT$0t?7!0k|d8Mb)i6m*U_sOZCK?6Y@YorcDX87sQs=4-tV4z6*)0Y&!v z4mLami`H;koJhUCH`FJ+3!#?Al@Kqw)K}N$S?`O3Yn*UE1^Zt|6K^&($Eu_AV@8Y4 zK-HU6XOl0BipG@%%zC2in_M6?sa!wAF-kCsXpl8Ruy}xXB7#JCP11#ED7|4)uN0^aWrUjAAt9VaXmvotwUj0s0F$na!+G9+G= z6{Z*)F<3!OkBk+gf1;?4!VB?vdZ@1U%+tKDOs03Nib22rrO>1*$myWfL=}V-N~5~T zK|Gz}G`LkWQE!uP$T}Jamj?`~w#hAW5M}7C?x^~*e&Il)D%V_GN?Q!^(FbePNB2OJ??Evqq@~WTK+q^L zg5#(a<0A(P#Pk?hFshbD&^$BM+F6^(b2+DyIl+Myp6J%+G^#q!*fly-W5X()T3_d@ zyi$j%$(f3zrgM+XRx-4@qhT3KI<~g-UwPe*!BUmlvW6yTsoYVtGry9S;kZ`Tr~I4> zT`@83N0A#^TAP1M3W8VaR!LhsInr^enrgtlH>0?y7ARtM8xocMsjR3hNXM5XM^mJDXYHK@kT0=0}+_? zq;5@ir>M5aahx6@5FP9pDtjCVw3MrcOuk}CH~Q+*Ju3Q?$8nS%ArKwRJLU71N~3DB z8;OGCl`3egSOq^9G*-w9S|ZZYIihNZYg3f!hFHM70}D*UyR9t{HKi|#*03)g{um*7 z4v}?_*XR7?HCcys;Tja-8l-To;1RNd@p>vWQ<=wc&Uystsuyn#JE)rMhBoX>Xw_(2 zu?l`}tgVn2w1j%3VffW0{~~lSiB45qnCuC~MYJe_BJzhI=Mg3H#c+l;22$)T{*IA@ z7^XIQkBDWm@pLqn_f`229SBXe19{?AAPF4Gk5$H!*oZF+)$K7sW_NuINQ{Ld%H{!T zd#+40J>eLJ2_X>q&d+VW)2PXABnqTg+=!>396L6)J%Sn35dgEE4`W|`R~yQCw>@Yo zLup{F6gG3iztcwtF;Vguhf&4|lxTK{r|k$F;F}~w z5tbKuM&T~S5fg_Hg;9iZoWceYJ}gBrl4J%DEOo15sat`iZW$K#@y-a+Huj*M;M!dU zvj#z$H8R5N2=|g*1ECEYA#T~ORz$ZN2s9a<FN~x z)*R85xl(w}Gp+&Y5fzR3sD*KK#&G)nq5ey@Z z00;}%^^ikx?E1lUoT7z7ct<2vaCQPrd*ZJqHN_(gCes;eE;?~qtUm}|bSYRQ-sDuQ zr*SLRpdGtjD{j>(#<9c>K@!>ST5s$hxen(*jwYQE)2#%^(Nam*EO*Nt{wgq$ZpCtp zD@q{U(*08n*#Skjx4;JKlaAgZC0dJN>9&rrTt{+2IkG&I3;romCPst22bg?$)7Xmf z9CeH&9dH|DxA~B%aBgH^y(gOVfcGiM5GL^6f%gGeND^ieMJOP0ybT$@D%qFwd{v4s zWcOTRugvMibe_-TLA^=_id8a@R>?rQN(SO88StxQx|b8_y@Y)waYFwst#+4#4qY!$ zC1{c|!J*X3g(J``9D%rS2pP5zhBAeKjD;Eh#JGR5_lDA1PK^2C1R4M4_mmB< zDDvCMdW$LgdjSkA=0gA|3-f6;15ph5C)P~Hd}gJv0$cvMHHWYdkAX|n{DZUil1hZv zXPV>sOqd<uywkNXx7{gsIh=}%>`K%T}yI4(Kw41fX` znRiZdG4EV)0uz;YK2*;pTz6CQWAex3=WcWw6gh@P-O%p?kaQ?l#QgvXbivZe(n>LNwmdVnoPd}k7j@Gri^u42q|yOCNb5B9PBGz{IwrkJahflAR|I7+0Wp{W zA51_DCcp#}pn?g=gA}+y3gjS#ZG#lFgA`PQl&MdeLM{h5i__^a0=juS!$h8C($$?s zL~n~oA-L&mOGGN6H$)IfmM7Z`kpZ~DOoMq+WXJ{>bQ44*r>ut?Al734#g;v0O@j%l z6o&B9saOiZIkI$YmEfN-BROF+`h*!3>mD@oIgh{~bZ*ssZ9A4Q#p0AHN zglz}$^gn^bsi_+P2mpCRpT%pa)1&$`kG7L=_ulq$JVcm+v(q#CW zRSuz6tO%q)n5<%`JVo;4@kVi47M=>ZyF-W5rwv1xX zjbc!Y;(_BKlX+_4F$UmXC5w)0`SwAzX*|h8$#0XpYl<`A?Ggc!w(;v?HjMdgD!F=s zh`dZ>t5fJ67xJVdgO2DJoIp+I*Bo3X&+={*b>4cT;|r|FzMhr0JCe$Gb=90;i@RP! z=bFcA+^`*alNVM&>4b$Ue6WiR^zwy9P3KRbpzsPhblV7v*ZE=!UJM8}y?al%pG7Ho9T!=!Q+B z8#az^P>*iVjc(XHx?#iU2JPrpH$a-__+a|0$yVrlM>9<1cqUz4b)vfLJIQ#6$&H87 z)Oag<9%2yVE#*0HmNJ-|ayJ3atDSc>y6l{TV#Ar3v+qCf_#><;u24bX4WXG2bT%0S zFpex^oXhcb+CYk0i`HnTLg&BeV~D~`hjN^P`qrOeNb|{8|4?N6n3=xpou~pufFy|m z3{6+wkL?5X&5j1Mq$`Z!wLjEi4<0{XRm=gL=MI20yZwV$$)unx>kOh9(H#Xjh-C@) z7Nj!6e;)1?93IH>cnHmPIenubGANeC$Qg=iDC}~8hG&BEWD|&H9Is7RxJ!vOy&^!f zya5iUZfY2maVvz9q#=l5)P%7W$g?p4&B=*f1}KhaigzAlViil4Bn1GIMTtfnhOuFn z4j%;@4ntPeN%3luo4RulV?N&29mwBP(U-GfH4-shbN4##KJ2+GkM zU5KNpxi2LomZe3$jf4;_p-e^-Eg3&UvSKiTRf-z7?JC%I5X!U@W|pV#n5y28V==BA zm60-WAq@$3Z!(?M1kyy$AEL8a%DL*oUqwKykl3htBx;0su`jc4uCq)B1v2E}~H^YHrT5Z+`C#GLL} zEd8B12Be%O9F(}4mn8U${oG!0XH*hIv6wqH;#~YA2WfrqNsXv;aWFWV%}Rw6IPbnu%)RH z>PI*NDPk!3sf}c*@o0 z0O)u{aS~NHW-&2b3j0G0O1cRxl1@05+MaSHCM*UmQO`J*y6;AlR}bdD)XzM~N|GZ9 zob^Z9wG`un_>w^&r8>mlFOXjxoX3tmv7n-jGz9tx8@l0t;(%I6iR4*}Eixc4xyV6@ zqp2A64cJ(f!)Oj9J_S;@=vs_WG&XaE+Kjul6iIO{+6NrZxHSKSYxp}F!~(Wjmv@iS zBAmptmJ~u$Mwv?_ffqdy*!VH6PXu&Nq$?lnhuX5NuIN|}V$8n%i}?7Hg9!VxIJ4il(M6l~a?GliWCn@gvj{O$ zalr9qeN{fvhO88`WXm&CP;o;BDtyR5g$x;6_{iIOq>N#Xxd+p60b<4Ac4uj3oUxhZ z4*nNzgfB1%Dt0NC2Tn~w&T!_I{}r6$cz0Lz)rsm_IVyH5mj`Yo!a+emxJgFSK#Vz- zM$@UZ>mL|nMvB@p<(Vlah(-X+U>-z$`MRz2MB5EOnC(D}+h?Emj36yz&v_Oc?z;YP zEzsSl6qF-cKse(d&=5W9uEBpFITWK_HPP=PPo@3_G<%Sj+L@07F@^+^bNLMe>;qge zD8nMnjN1hr+N_mg25mWN>XEngNEv&~tnuMI#b9>Pa6XBaxqSMQ;Ygt#3A7F4uw>8;l~QQD02(?nX{?hG3OhgjrpN23UU@pnMuzKF)hN=8czRuDHE#v^^)r z%sByW?NKoINZJcV$k1K8raM1JYcQ_wxwR4OO-)jXXeF@Vi9ITB$8>RYdnbvXh1ROd zo*_yK4{f8q(8EMk=V78GcsOYNNyh>X!dLr9tX!jb#V>hr$GuN6spHAZKe_CN17nv_ z2=A-`Z^>UN?oWTXeb>?E?7Z<(nTw>lI#p|@k)lpCuUmS?qKLR+#fDgd0(_OTnMWP?F z#q=S74$XED6iN}ubBg(PBF6p$2oRg!|=vHlre^ITy;DA+aFbA4k@rX3`aK(cmJ+pvp|8&LMSc}Nr17A zJRN&m%2U^$7`rnBH9QM*%fh6E!B7T#YKo-PY?Om&hGfpkWq71VU;@Wsz*w$LT^4rI zVM!Jg!Li753j1DBvk`Yfpr$7oVivd|ZKSw4Kn5@QJ5n(KH<QD}17~&P9SVpfMp*V&mTThC`Zo>gQx1~t6AQ`d+!_oa}a*4KRRD=^&pqx+~>641? zNg#S+Dcrq__3*5tn$Z&FjAN!EayvOyG*V(T+KNN%goys5I z-|lY5t1B|@T#EAJ?e1T8?~4AZZg*eZda561wbzDx7)(9fuiX^>OJRSS_J%Az9LMHi z=5_G>0^fW1tuHsp?^M3~Xv=Sg(Y8}Ow&yb65P0=%|Era``r&6%c8bl)V`aGOoRKPm1Vi7OtR~Me>VSEJH_tZ mbiMq|qid)=xQ5!F$2vaMi-`S`{0XcfW&2;J_Wyr?X6|22N3C=K diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/search.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/search.html deleted file mode 100644 index 9782a26..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/search.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - Search — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - - - - - - -
    -
    - -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/searchindex.js b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/searchindex.js deleted file mode 100644 index 8944b32..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({docnames:["advanced-connections","aggregate","api","application-performance-monitoring","authentication","basic-troubleshooting","bulk","connection-pooling","create-indexes","cursors","debugging","distinct-mapreduce","errors","full_index","guides","index","init-cleanup","installing","lifecycle","logging","matcher","mongoc-common-task-examples","mongoc_apm_callbacks_destroy","mongoc_apm_callbacks_new","mongoc_apm_callbacks_t","mongoc_apm_command_failed_get_command_name","mongoc_apm_command_failed_get_context","mongoc_apm_command_failed_get_duration","mongoc_apm_command_failed_get_error","mongoc_apm_command_failed_get_host","mongoc_apm_command_failed_get_operation_id","mongoc_apm_command_failed_get_reply","mongoc_apm_command_failed_get_request_id","mongoc_apm_command_failed_get_server_id","mongoc_apm_command_failed_t","mongoc_apm_command_started_get_command","mongoc_apm_command_started_get_command_name","mongoc_apm_command_started_get_context","mongoc_apm_command_started_get_database_name","mongoc_apm_command_started_get_host","mongoc_apm_command_started_get_operation_id","mongoc_apm_command_started_get_request_id","mongoc_apm_command_started_get_server_id","mongoc_apm_command_started_t","mongoc_apm_command_succeeded_get_command_name","mongoc_apm_command_succeeded_get_context","mongoc_apm_command_succeeded_get_duration","mongoc_apm_command_succeeded_get_host","mongoc_apm_command_succeeded_get_operation_id","mongoc_apm_command_succeeded_get_reply","mongoc_apm_command_succeeded_get_request_id","mongoc_apm_command_succeeded_get_server_id","mongoc_apm_command_succeeded_t","mongoc_apm_server_changed_get_context","mongoc_apm_server_changed_get_host","mongoc_apm_server_changed_get_new_description","mongoc_apm_server_changed_get_previous_description","mongoc_apm_server_changed_get_topology_id","mongoc_apm_server_changed_t","mongoc_apm_server_closed_get_context","mongoc_apm_server_closed_get_host","mongoc_apm_server_closed_get_topology_id","mongoc_apm_server_closed_t","mongoc_apm_server_heartbeat_failed_get_context","mongoc_apm_server_heartbeat_failed_get_duration","mongoc_apm_server_heartbeat_failed_get_error","mongoc_apm_server_heartbeat_failed_get_host","mongoc_apm_server_heartbeat_failed_t","mongoc_apm_server_heartbeat_started_get_context","mongoc_apm_server_heartbeat_started_get_host","mongoc_apm_server_heartbeat_started_t","mongoc_apm_server_heartbeat_succeeded_get_context","mongoc_apm_server_heartbeat_succeeded_get_duration","mongoc_apm_server_heartbeat_succeeded_get_host","mongoc_apm_server_heartbeat_succeeded_get_reply","mongoc_apm_server_heartbeat_succeeded_t","mongoc_apm_server_opening_get_context","mongoc_apm_server_opening_get_host","mongoc_apm_server_opening_get_topology_id","mongoc_apm_server_opening_t","mongoc_apm_set_command_failed_cb","mongoc_apm_set_command_started_cb","mongoc_apm_set_command_succeeded_cb","mongoc_apm_set_server_changed_cb","mongoc_apm_set_server_closed_cb","mongoc_apm_set_server_heartbeat_failed_cb","mongoc_apm_set_server_heartbeat_started_cb","mongoc_apm_set_server_heartbeat_succeeded_cb","mongoc_apm_set_server_opening_cb","mongoc_apm_set_topology_changed_cb","mongoc_apm_set_topology_closed_cb","mongoc_apm_set_topology_opening_cb","mongoc_apm_topology_changed_get_context","mongoc_apm_topology_changed_get_new_description","mongoc_apm_topology_changed_get_previous_description","mongoc_apm_topology_changed_get_topology_id","mongoc_apm_topology_changed_t","mongoc_apm_topology_closed_get_context","mongoc_apm_topology_closed_get_topology_id","mongoc_apm_topology_closed_t","mongoc_apm_topology_opening_get_context","mongoc_apm_topology_opening_get_topology_id","mongoc_apm_topology_opening_t","mongoc_bulk_operation_delete","mongoc_bulk_operation_delete_one","mongoc_bulk_operation_destroy","mongoc_bulk_operation_execute","mongoc_bulk_operation_get_hint","mongoc_bulk_operation_get_write_concern","mongoc_bulk_operation_insert","mongoc_bulk_operation_insert_with_opts","mongoc_bulk_operation_remove","mongoc_bulk_operation_remove_many_with_opts","mongoc_bulk_operation_remove_one","mongoc_bulk_operation_remove_one_with_opts","mongoc_bulk_operation_replace_one","mongoc_bulk_operation_replace_one_with_opts","mongoc_bulk_operation_set_bypass_document_validation","mongoc_bulk_operation_set_hint","mongoc_bulk_operation_t","mongoc_bulk_operation_update","mongoc_bulk_operation_update_many_with_opts","mongoc_bulk_operation_update_one","mongoc_bulk_operation_update_one_with_opts","mongoc_change_stream_destroy","mongoc_change_stream_error_document","mongoc_change_stream_next","mongoc_change_stream_t","mongoc_check_version","mongoc_cleanup","mongoc_client_command","mongoc_client_command_simple","mongoc_client_command_simple_with_server_id","mongoc_client_command_with_opts","mongoc_client_destroy","mongoc_client_find_databases_with_opts","mongoc_client_get_collection","mongoc_client_get_database","mongoc_client_get_database_names","mongoc_client_get_database_names_with_opts","mongoc_client_get_default_database","mongoc_client_get_gridfs","mongoc_client_get_max_bson_size","mongoc_client_get_max_message_size","mongoc_client_get_read_concern","mongoc_client_get_read_prefs","mongoc_client_get_server_description","mongoc_client_get_server_descriptions","mongoc_client_get_server_status","mongoc_client_get_uri","mongoc_client_get_write_concern","mongoc_client_new","mongoc_client_new_from_uri","mongoc_client_pool_destroy","mongoc_client_pool_max_size","mongoc_client_pool_min_size","mongoc_client_pool_new","mongoc_client_pool_pop","mongoc_client_pool_push","mongoc_client_pool_set_apm_callbacks","mongoc_client_pool_set_appname","mongoc_client_pool_set_error_api","mongoc_client_pool_set_ssl_opts","mongoc_client_pool_t","mongoc_client_pool_try_pop","mongoc_client_read_command_with_opts","mongoc_client_read_write_command_with_opts","mongoc_client_select_server","mongoc_client_session_abort_transaction","mongoc_client_session_advance_cluster_time","mongoc_client_session_advance_operation_time","mongoc_client_session_append","mongoc_client_session_commit_transaction","mongoc_client_session_destroy","mongoc_client_session_get_client","mongoc_client_session_get_cluster_time","mongoc_client_session_get_lsid","mongoc_client_session_get_operation_time","mongoc_client_session_get_opts","mongoc_client_session_in_transaction","mongoc_client_session_start_transaction","mongoc_client_session_t","mongoc_client_set_apm_callbacks","mongoc_client_set_appname","mongoc_client_set_error_api","mongoc_client_set_read_concern","mongoc_client_set_read_prefs","mongoc_client_set_ssl_opts","mongoc_client_set_stream_initiator","mongoc_client_set_write_concern","mongoc_client_start_session","mongoc_client_t","mongoc_client_watch","mongoc_client_write_command_with_opts","mongoc_collection_aggregate","mongoc_collection_command","mongoc_collection_command_simple","mongoc_collection_command_with_opts","mongoc_collection_copy","mongoc_collection_count","mongoc_collection_count_documents","mongoc_collection_count_with_opts","mongoc_collection_create_bulk_operation","mongoc_collection_create_bulk_operation_with_opts","mongoc_collection_create_index","mongoc_collection_create_index_with_opts","mongoc_collection_delete","mongoc_collection_delete_many","mongoc_collection_delete_one","mongoc_collection_destroy","mongoc_collection_drop","mongoc_collection_drop_index","mongoc_collection_drop_index_with_opts","mongoc_collection_drop_with_opts","mongoc_collection_ensure_index","mongoc_collection_estimated_document_count","mongoc_collection_find","mongoc_collection_find_and_modify","mongoc_collection_find_and_modify_with_opts","mongoc_collection_find_indexes","mongoc_collection_find_indexes_with_opts","mongoc_collection_find_with_opts","mongoc_collection_get_last_error","mongoc_collection_get_name","mongoc_collection_get_read_concern","mongoc_collection_get_read_prefs","mongoc_collection_get_write_concern","mongoc_collection_insert","mongoc_collection_insert_bulk","mongoc_collection_insert_many","mongoc_collection_insert_one","mongoc_collection_keys_to_index_string","mongoc_collection_read_command_with_opts","mongoc_collection_read_write_command_with_opts","mongoc_collection_remove","mongoc_collection_rename","mongoc_collection_rename_with_opts","mongoc_collection_replace_one","mongoc_collection_save","mongoc_collection_set_read_concern","mongoc_collection_set_read_prefs","mongoc_collection_set_write_concern","mongoc_collection_stats","mongoc_collection_t","mongoc_collection_update","mongoc_collection_update_many","mongoc_collection_update_one","mongoc_collection_validate","mongoc_collection_watch","mongoc_collection_write_command_with_opts","mongoc_cursor_clone","mongoc_cursor_current","mongoc_cursor_destroy","mongoc_cursor_error","mongoc_cursor_error_document","mongoc_cursor_get_batch_size","mongoc_cursor_get_hint","mongoc_cursor_get_host","mongoc_cursor_get_id","mongoc_cursor_get_limit","mongoc_cursor_get_max_await_time_ms","mongoc_cursor_is_alive","mongoc_cursor_more","mongoc_cursor_new_from_command_reply","mongoc_cursor_new_from_command_reply_with_opts","mongoc_cursor_next","mongoc_cursor_set_batch_size","mongoc_cursor_set_hint","mongoc_cursor_set_limit","mongoc_cursor_set_max_await_time_ms","mongoc_cursor_t","mongoc_database_add_user","mongoc_database_command","mongoc_database_command_simple","mongoc_database_command_with_opts","mongoc_database_copy","mongoc_database_create_collection","mongoc_database_destroy","mongoc_database_drop","mongoc_database_drop_with_opts","mongoc_database_find_collections","mongoc_database_find_collections_with_opts","mongoc_database_get_collection","mongoc_database_get_collection_names","mongoc_database_get_collection_names_with_opts","mongoc_database_get_name","mongoc_database_get_read_concern","mongoc_database_get_read_prefs","mongoc_database_get_write_concern","mongoc_database_has_collection","mongoc_database_read_command_with_opts","mongoc_database_read_write_command_with_opts","mongoc_database_remove_all_users","mongoc_database_remove_user","mongoc_database_set_read_concern","mongoc_database_set_read_prefs","mongoc_database_set_write_concern","mongoc_database_t","mongoc_database_watch","mongoc_database_write_command_with_opts","mongoc_delete_flags_t","mongoc_error_has_label","mongoc_find_and_modify_opts_append","mongoc_find_and_modify_opts_destroy","mongoc_find_and_modify_opts_get_bypass_document_validation","mongoc_find_and_modify_opts_get_fields","mongoc_find_and_modify_opts_get_flags","mongoc_find_and_modify_opts_get_max_time_ms","mongoc_find_and_modify_opts_get_sort","mongoc_find_and_modify_opts_get_update","mongoc_find_and_modify_opts_new","mongoc_find_and_modify_opts_set_bypass_document_validation","mongoc_find_and_modify_opts_set_fields","mongoc_find_and_modify_opts_set_flags","mongoc_find_and_modify_opts_set_max_time_ms","mongoc_find_and_modify_opts_set_sort","mongoc_find_and_modify_opts_set_update","mongoc_find_and_modify_opts_t","mongoc_get_major_version","mongoc_get_micro_version","mongoc_get_minor_version","mongoc_get_version","mongoc_gridfs_create_file","mongoc_gridfs_create_file_from_stream","mongoc_gridfs_destroy","mongoc_gridfs_drop","mongoc_gridfs_file_destroy","mongoc_gridfs_file_error","mongoc_gridfs_file_get_aliases","mongoc_gridfs_file_get_chunk_size","mongoc_gridfs_file_get_content_type","mongoc_gridfs_file_get_filename","mongoc_gridfs_file_get_id","mongoc_gridfs_file_get_length","mongoc_gridfs_file_get_md5","mongoc_gridfs_file_get_metadata","mongoc_gridfs_file_get_upload_date","mongoc_gridfs_file_list_destroy","mongoc_gridfs_file_list_error","mongoc_gridfs_file_list_next","mongoc_gridfs_file_list_t","mongoc_gridfs_file_opt_t","mongoc_gridfs_file_readv","mongoc_gridfs_file_remove","mongoc_gridfs_file_save","mongoc_gridfs_file_seek","mongoc_gridfs_file_set_aliases","mongoc_gridfs_file_set_content_type","mongoc_gridfs_file_set_filename","mongoc_gridfs_file_set_id","mongoc_gridfs_file_set_md5","mongoc_gridfs_file_set_metadata","mongoc_gridfs_file_t","mongoc_gridfs_file_tell","mongoc_gridfs_file_writev","mongoc_gridfs_find","mongoc_gridfs_find_one","mongoc_gridfs_find_one_by_filename","mongoc_gridfs_find_one_with_opts","mongoc_gridfs_find_with_opts","mongoc_gridfs_get_chunks","mongoc_gridfs_get_files","mongoc_gridfs_remove_by_filename","mongoc_gridfs_t","mongoc_host_list_t","mongoc_index_opt_geo_get_default","mongoc_index_opt_geo_init","mongoc_index_opt_geo_t","mongoc_index_opt_get_default","mongoc_index_opt_init","mongoc_index_opt_t","mongoc_index_opt_wt_get_default","mongoc_index_opt_wt_init","mongoc_index_opt_wt_t","mongoc_init","mongoc_insert_flags_t","mongoc_iovec_t","mongoc_matcher_destroy","mongoc_matcher_match","mongoc_matcher_new","mongoc_matcher_t","mongoc_query_flags_t","mongoc_rand","mongoc_rand_add","mongoc_rand_seed","mongoc_rand_status","mongoc_read_concern_append","mongoc_read_concern_copy","mongoc_read_concern_destroy","mongoc_read_concern_get_level","mongoc_read_concern_is_default","mongoc_read_concern_new","mongoc_read_concern_set_level","mongoc_read_concern_t","mongoc_read_mode_t","mongoc_read_prefs_add_tag","mongoc_read_prefs_copy","mongoc_read_prefs_destroy","mongoc_read_prefs_get_max_staleness_seconds","mongoc_read_prefs_get_mode","mongoc_read_prefs_get_tags","mongoc_read_prefs_is_valid","mongoc_read_prefs_new","mongoc_read_prefs_set_max_staleness_seconds","mongoc_read_prefs_set_mode","mongoc_read_prefs_set_tags","mongoc_read_prefs_t","mongoc_remove_flags_t","mongoc_reply_flags_t","mongoc_server_description_destroy","mongoc_server_description_host","mongoc_server_description_id","mongoc_server_description_ismaster","mongoc_server_description_new_copy","mongoc_server_description_round_trip_time","mongoc_server_description_t","mongoc_server_description_type","mongoc_server_descriptions_destroy_all","mongoc_session_opt_t","mongoc_session_opts_clone","mongoc_session_opts_destroy","mongoc_session_opts_get_causal_consistency","mongoc_session_opts_get_default_transaction_opts","mongoc_session_opts_new","mongoc_session_opts_set_causal_consistency","mongoc_session_opts_set_default_transaction_opts","mongoc_socket_accept","mongoc_socket_bind","mongoc_socket_close","mongoc_socket_connect","mongoc_socket_destroy","mongoc_socket_errno","mongoc_socket_getnameinfo","mongoc_socket_getsockname","mongoc_socket_listen","mongoc_socket_new","mongoc_socket_recv","mongoc_socket_send","mongoc_socket_sendv","mongoc_socket_setsockopt","mongoc_socket_t","mongoc_ssl_opt_get_default","mongoc_ssl_opt_t","mongoc_stream_buffered_new","mongoc_stream_buffered_t","mongoc_stream_close","mongoc_stream_cork","mongoc_stream_destroy","mongoc_stream_file_get_fd","mongoc_stream_file_new","mongoc_stream_file_new_for_path","mongoc_stream_file_t","mongoc_stream_flush","mongoc_stream_get_base_stream","mongoc_stream_gridfs_new","mongoc_stream_read","mongoc_stream_readv","mongoc_stream_setsockopt","mongoc_stream_socket_get_socket","mongoc_stream_socket_new","mongoc_stream_socket_t","mongoc_stream_t","mongoc_stream_timed_out","mongoc_stream_tls_t","mongoc_stream_uncork","mongoc_stream_write","mongoc_stream_writev","mongoc_topology_description_get_servers","mongoc_topology_description_has_readable_server","mongoc_topology_description_has_writable_server","mongoc_topology_description_t","mongoc_topology_description_type","mongoc_transaction_opt_t","mongoc_transaction_opts_clone","mongoc_transaction_opts_destroy","mongoc_transaction_opts_get_read_concern","mongoc_transaction_opts_get_read_prefs","mongoc_transaction_opts_get_write_concern","mongoc_transaction_opts_new","mongoc_transaction_opts_set_read_concern","mongoc_transaction_opts_set_read_prefs","mongoc_transaction_opts_set_write_concern","mongoc_update_flags_t","mongoc_uri_copy","mongoc_uri_destroy","mongoc_uri_get_auth_mechanism","mongoc_uri_get_auth_source","mongoc_uri_get_compressors","mongoc_uri_get_database","mongoc_uri_get_hosts","mongoc_uri_get_mechanism_properties","mongoc_uri_get_option_as_bool","mongoc_uri_get_option_as_int32","mongoc_uri_get_option_as_utf8","mongoc_uri_get_options","mongoc_uri_get_password","mongoc_uri_get_read_concern","mongoc_uri_get_read_prefs","mongoc_uri_get_read_prefs_t","mongoc_uri_get_replica_set","mongoc_uri_get_service","mongoc_uri_get_ssl","mongoc_uri_get_string","mongoc_uri_get_username","mongoc_uri_get_write_concern","mongoc_uri_new","mongoc_uri_new_for_host_port","mongoc_uri_new_with_error","mongoc_uri_option_is_bool","mongoc_uri_option_is_int32","mongoc_uri_option_is_utf8","mongoc_uri_set_auth_mechanism","mongoc_uri_set_auth_source","mongoc_uri_set_compressors","mongoc_uri_set_database","mongoc_uri_set_mechanism_properties","mongoc_uri_set_option_as_bool","mongoc_uri_set_option_as_int32","mongoc_uri_set_option_as_utf8","mongoc_uri_set_password","mongoc_uri_set_read_concern","mongoc_uri_set_read_prefs_t","mongoc_uri_set_username","mongoc_uri_set_write_concern","mongoc_uri_t","mongoc_uri_unescape","mongoc_version","mongoc_write_concern_append","mongoc_write_concern_copy","mongoc_write_concern_destroy","mongoc_write_concern_get_fsync","mongoc_write_concern_get_journal","mongoc_write_concern_get_w","mongoc_write_concern_get_wmajority","mongoc_write_concern_get_wtag","mongoc_write_concern_get_wtimeout","mongoc_write_concern_is_acknowledged","mongoc_write_concern_is_default","mongoc_write_concern_is_valid","mongoc_write_concern_journal_is_set","mongoc_write_concern_new","mongoc_write_concern_set_fsync","mongoc_write_concern_set_journal","mongoc_write_concern_set_w","mongoc_write_concern_set_wmajority","mongoc_write_concern_set_wtag","mongoc_write_concern_set_wtimeout","mongoc_write_concern_t","tutorial","visual-studio-guide"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:55},filenames:["advanced-connections.rst","aggregate.rst","api.rst","application-performance-monitoring.rst","authentication.rst","basic-troubleshooting.rst","bulk.rst","connection-pooling.rst","create-indexes.rst","cursors.rst","debugging.rst","distinct-mapreduce.rst","errors.rst","full_index.rst","guides.rst","index.rst","init-cleanup.rst","installing.rst","lifecycle.rst","logging.rst","matcher.rst","mongoc-common-task-examples.rst","mongoc_apm_callbacks_destroy.rst","mongoc_apm_callbacks_new.rst","mongoc_apm_callbacks_t.rst","mongoc_apm_command_failed_get_command_name.rst","mongoc_apm_command_failed_get_context.rst","mongoc_apm_command_failed_get_duration.rst","mongoc_apm_command_failed_get_error.rst","mongoc_apm_command_failed_get_host.rst","mongoc_apm_command_failed_get_operation_id.rst","mongoc_apm_command_failed_get_reply.rst","mongoc_apm_command_failed_get_request_id.rst","mongoc_apm_command_failed_get_server_id.rst","mongoc_apm_command_failed_t.rst","mongoc_apm_command_started_get_command.rst","mongoc_apm_command_started_get_command_name.rst","mongoc_apm_command_started_get_context.rst","mongoc_apm_command_started_get_database_name.rst","mongoc_apm_command_started_get_host.rst","mongoc_apm_command_started_get_operation_id.rst","mongoc_apm_command_started_get_request_id.rst","mongoc_apm_command_started_get_server_id.rst","mongoc_apm_command_started_t.rst","mongoc_apm_command_succeeded_get_command_name.rst","mongoc_apm_command_succeeded_get_context.rst","mongoc_apm_command_succeeded_get_duration.rst","mongoc_apm_command_succeeded_get_host.rst","mongoc_apm_command_succeeded_get_operation_id.rst","mongoc_apm_command_succeeded_get_reply.rst","mongoc_apm_command_succeeded_get_request_id.rst","mongoc_apm_command_succeeded_get_server_id.rst","mongoc_apm_command_succeeded_t.rst","mongoc_apm_server_changed_get_context.rst","mongoc_apm_server_changed_get_host.rst","mongoc_apm_server_changed_get_new_description.rst","mongoc_apm_server_changed_get_previous_description.rst","mongoc_apm_server_changed_get_topology_id.rst","mongoc_apm_server_changed_t.rst","mongoc_apm_server_closed_get_context.rst","mongoc_apm_server_closed_get_host.rst","mongoc_apm_server_closed_get_topology_id.rst","mongoc_apm_server_closed_t.rst","mongoc_apm_server_heartbeat_failed_get_context.rst","mongoc_apm_server_heartbeat_failed_get_duration.rst","mongoc_apm_server_heartbeat_failed_get_error.rst","mongoc_apm_server_heartbeat_failed_get_host.rst","mongoc_apm_server_heartbeat_failed_t.rst","mongoc_apm_server_heartbeat_started_get_context.rst","mongoc_apm_server_heartbeat_started_get_host.rst","mongoc_apm_server_heartbeat_started_t.rst","mongoc_apm_server_heartbeat_succeeded_get_context.rst","mongoc_apm_server_heartbeat_succeeded_get_duration.rst","mongoc_apm_server_heartbeat_succeeded_get_host.rst","mongoc_apm_server_heartbeat_succeeded_get_reply.rst","mongoc_apm_server_heartbeat_succeeded_t.rst","mongoc_apm_server_opening_get_context.rst","mongoc_apm_server_opening_get_host.rst","mongoc_apm_server_opening_get_topology_id.rst","mongoc_apm_server_opening_t.rst","mongoc_apm_set_command_failed_cb.rst","mongoc_apm_set_command_started_cb.rst","mongoc_apm_set_command_succeeded_cb.rst","mongoc_apm_set_server_changed_cb.rst","mongoc_apm_set_server_closed_cb.rst","mongoc_apm_set_server_heartbeat_failed_cb.rst","mongoc_apm_set_server_heartbeat_started_cb.rst","mongoc_apm_set_server_heartbeat_succeeded_cb.rst","mongoc_apm_set_server_opening_cb.rst","mongoc_apm_set_topology_changed_cb.rst","mongoc_apm_set_topology_closed_cb.rst","mongoc_apm_set_topology_opening_cb.rst","mongoc_apm_topology_changed_get_context.rst","mongoc_apm_topology_changed_get_new_description.rst","mongoc_apm_topology_changed_get_previous_description.rst","mongoc_apm_topology_changed_get_topology_id.rst","mongoc_apm_topology_changed_t.rst","mongoc_apm_topology_closed_get_context.rst","mongoc_apm_topology_closed_get_topology_id.rst","mongoc_apm_topology_closed_t.rst","mongoc_apm_topology_opening_get_context.rst","mongoc_apm_topology_opening_get_topology_id.rst","mongoc_apm_topology_opening_t.rst","mongoc_bulk_operation_delete.rst","mongoc_bulk_operation_delete_one.rst","mongoc_bulk_operation_destroy.rst","mongoc_bulk_operation_execute.rst","mongoc_bulk_operation_get_hint.rst","mongoc_bulk_operation_get_write_concern.rst","mongoc_bulk_operation_insert.rst","mongoc_bulk_operation_insert_with_opts.rst","mongoc_bulk_operation_remove.rst","mongoc_bulk_operation_remove_many_with_opts.rst","mongoc_bulk_operation_remove_one.rst","mongoc_bulk_operation_remove_one_with_opts.rst","mongoc_bulk_operation_replace_one.rst","mongoc_bulk_operation_replace_one_with_opts.rst","mongoc_bulk_operation_set_bypass_document_validation.rst","mongoc_bulk_operation_set_hint.rst","mongoc_bulk_operation_t.rst","mongoc_bulk_operation_update.rst","mongoc_bulk_operation_update_many_with_opts.rst","mongoc_bulk_operation_update_one.rst","mongoc_bulk_operation_update_one_with_opts.rst","mongoc_change_stream_destroy.rst","mongoc_change_stream_error_document.rst","mongoc_change_stream_next.rst","mongoc_change_stream_t.rst","mongoc_check_version.rst","mongoc_cleanup.rst","mongoc_client_command.rst","mongoc_client_command_simple.rst","mongoc_client_command_simple_with_server_id.rst","mongoc_client_command_with_opts.rst","mongoc_client_destroy.rst","mongoc_client_find_databases_with_opts.rst","mongoc_client_get_collection.rst","mongoc_client_get_database.rst","mongoc_client_get_database_names.rst","mongoc_client_get_database_names_with_opts.rst","mongoc_client_get_default_database.rst","mongoc_client_get_gridfs.rst","mongoc_client_get_max_bson_size.rst","mongoc_client_get_max_message_size.rst","mongoc_client_get_read_concern.rst","mongoc_client_get_read_prefs.rst","mongoc_client_get_server_description.rst","mongoc_client_get_server_descriptions.rst","mongoc_client_get_server_status.rst","mongoc_client_get_uri.rst","mongoc_client_get_write_concern.rst","mongoc_client_new.rst","mongoc_client_new_from_uri.rst","mongoc_client_pool_destroy.rst","mongoc_client_pool_max_size.rst","mongoc_client_pool_min_size.rst","mongoc_client_pool_new.rst","mongoc_client_pool_pop.rst","mongoc_client_pool_push.rst","mongoc_client_pool_set_apm_callbacks.rst","mongoc_client_pool_set_appname.rst","mongoc_client_pool_set_error_api.rst","mongoc_client_pool_set_ssl_opts.rst","mongoc_client_pool_t.rst","mongoc_client_pool_try_pop.rst","mongoc_client_read_command_with_opts.rst","mongoc_client_read_write_command_with_opts.rst","mongoc_client_select_server.rst","mongoc_client_session_abort_transaction.rst","mongoc_client_session_advance_cluster_time.rst","mongoc_client_session_advance_operation_time.rst","mongoc_client_session_append.rst","mongoc_client_session_commit_transaction.rst","mongoc_client_session_destroy.rst","mongoc_client_session_get_client.rst","mongoc_client_session_get_cluster_time.rst","mongoc_client_session_get_lsid.rst","mongoc_client_session_get_operation_time.rst","mongoc_client_session_get_opts.rst","mongoc_client_session_in_transaction.rst","mongoc_client_session_start_transaction.rst","mongoc_client_session_t.rst","mongoc_client_set_apm_callbacks.rst","mongoc_client_set_appname.rst","mongoc_client_set_error_api.rst","mongoc_client_set_read_concern.rst","mongoc_client_set_read_prefs.rst","mongoc_client_set_ssl_opts.rst","mongoc_client_set_stream_initiator.rst","mongoc_client_set_write_concern.rst","mongoc_client_start_session.rst","mongoc_client_t.rst","mongoc_client_watch.rst","mongoc_client_write_command_with_opts.rst","mongoc_collection_aggregate.rst","mongoc_collection_command.rst","mongoc_collection_command_simple.rst","mongoc_collection_command_with_opts.rst","mongoc_collection_copy.rst","mongoc_collection_count.rst","mongoc_collection_count_documents.rst","mongoc_collection_count_with_opts.rst","mongoc_collection_create_bulk_operation.rst","mongoc_collection_create_bulk_operation_with_opts.rst","mongoc_collection_create_index.rst","mongoc_collection_create_index_with_opts.rst","mongoc_collection_delete.rst","mongoc_collection_delete_many.rst","mongoc_collection_delete_one.rst","mongoc_collection_destroy.rst","mongoc_collection_drop.rst","mongoc_collection_drop_index.rst","mongoc_collection_drop_index_with_opts.rst","mongoc_collection_drop_with_opts.rst","mongoc_collection_ensure_index.rst","mongoc_collection_estimated_document_count.rst","mongoc_collection_find.rst","mongoc_collection_find_and_modify.rst","mongoc_collection_find_and_modify_with_opts.rst","mongoc_collection_find_indexes.rst","mongoc_collection_find_indexes_with_opts.rst","mongoc_collection_find_with_opts.rst","mongoc_collection_get_last_error.rst","mongoc_collection_get_name.rst","mongoc_collection_get_read_concern.rst","mongoc_collection_get_read_prefs.rst","mongoc_collection_get_write_concern.rst","mongoc_collection_insert.rst","mongoc_collection_insert_bulk.rst","mongoc_collection_insert_many.rst","mongoc_collection_insert_one.rst","mongoc_collection_keys_to_index_string.rst","mongoc_collection_read_command_with_opts.rst","mongoc_collection_read_write_command_with_opts.rst","mongoc_collection_remove.rst","mongoc_collection_rename.rst","mongoc_collection_rename_with_opts.rst","mongoc_collection_replace_one.rst","mongoc_collection_save.rst","mongoc_collection_set_read_concern.rst","mongoc_collection_set_read_prefs.rst","mongoc_collection_set_write_concern.rst","mongoc_collection_stats.rst","mongoc_collection_t.rst","mongoc_collection_update.rst","mongoc_collection_update_many.rst","mongoc_collection_update_one.rst","mongoc_collection_validate.rst","mongoc_collection_watch.rst","mongoc_collection_write_command_with_opts.rst","mongoc_cursor_clone.rst","mongoc_cursor_current.rst","mongoc_cursor_destroy.rst","mongoc_cursor_error.rst","mongoc_cursor_error_document.rst","mongoc_cursor_get_batch_size.rst","mongoc_cursor_get_hint.rst","mongoc_cursor_get_host.rst","mongoc_cursor_get_id.rst","mongoc_cursor_get_limit.rst","mongoc_cursor_get_max_await_time_ms.rst","mongoc_cursor_is_alive.rst","mongoc_cursor_more.rst","mongoc_cursor_new_from_command_reply.rst","mongoc_cursor_new_from_command_reply_with_opts.rst","mongoc_cursor_next.rst","mongoc_cursor_set_batch_size.rst","mongoc_cursor_set_hint.rst","mongoc_cursor_set_limit.rst","mongoc_cursor_set_max_await_time_ms.rst","mongoc_cursor_t.rst","mongoc_database_add_user.rst","mongoc_database_command.rst","mongoc_database_command_simple.rst","mongoc_database_command_with_opts.rst","mongoc_database_copy.rst","mongoc_database_create_collection.rst","mongoc_database_destroy.rst","mongoc_database_drop.rst","mongoc_database_drop_with_opts.rst","mongoc_database_find_collections.rst","mongoc_database_find_collections_with_opts.rst","mongoc_database_get_collection.rst","mongoc_database_get_collection_names.rst","mongoc_database_get_collection_names_with_opts.rst","mongoc_database_get_name.rst","mongoc_database_get_read_concern.rst","mongoc_database_get_read_prefs.rst","mongoc_database_get_write_concern.rst","mongoc_database_has_collection.rst","mongoc_database_read_command_with_opts.rst","mongoc_database_read_write_command_with_opts.rst","mongoc_database_remove_all_users.rst","mongoc_database_remove_user.rst","mongoc_database_set_read_concern.rst","mongoc_database_set_read_prefs.rst","mongoc_database_set_write_concern.rst","mongoc_database_t.rst","mongoc_database_watch.rst","mongoc_database_write_command_with_opts.rst","mongoc_delete_flags_t.rst","mongoc_error_has_label.rst","mongoc_find_and_modify_opts_append.rst","mongoc_find_and_modify_opts_destroy.rst","mongoc_find_and_modify_opts_get_bypass_document_validation.rst","mongoc_find_and_modify_opts_get_fields.rst","mongoc_find_and_modify_opts_get_flags.rst","mongoc_find_and_modify_opts_get_max_time_ms.rst","mongoc_find_and_modify_opts_get_sort.rst","mongoc_find_and_modify_opts_get_update.rst","mongoc_find_and_modify_opts_new.rst","mongoc_find_and_modify_opts_set_bypass_document_validation.rst","mongoc_find_and_modify_opts_set_fields.rst","mongoc_find_and_modify_opts_set_flags.rst","mongoc_find_and_modify_opts_set_max_time_ms.rst","mongoc_find_and_modify_opts_set_sort.rst","mongoc_find_and_modify_opts_set_update.rst","mongoc_find_and_modify_opts_t.rst","mongoc_get_major_version.rst","mongoc_get_micro_version.rst","mongoc_get_minor_version.rst","mongoc_get_version.rst","mongoc_gridfs_create_file.rst","mongoc_gridfs_create_file_from_stream.rst","mongoc_gridfs_destroy.rst","mongoc_gridfs_drop.rst","mongoc_gridfs_file_destroy.rst","mongoc_gridfs_file_error.rst","mongoc_gridfs_file_get_aliases.rst","mongoc_gridfs_file_get_chunk_size.rst","mongoc_gridfs_file_get_content_type.rst","mongoc_gridfs_file_get_filename.rst","mongoc_gridfs_file_get_id.rst","mongoc_gridfs_file_get_length.rst","mongoc_gridfs_file_get_md5.rst","mongoc_gridfs_file_get_metadata.rst","mongoc_gridfs_file_get_upload_date.rst","mongoc_gridfs_file_list_destroy.rst","mongoc_gridfs_file_list_error.rst","mongoc_gridfs_file_list_next.rst","mongoc_gridfs_file_list_t.rst","mongoc_gridfs_file_opt_t.rst","mongoc_gridfs_file_readv.rst","mongoc_gridfs_file_remove.rst","mongoc_gridfs_file_save.rst","mongoc_gridfs_file_seek.rst","mongoc_gridfs_file_set_aliases.rst","mongoc_gridfs_file_set_content_type.rst","mongoc_gridfs_file_set_filename.rst","mongoc_gridfs_file_set_id.rst","mongoc_gridfs_file_set_md5.rst","mongoc_gridfs_file_set_metadata.rst","mongoc_gridfs_file_t.rst","mongoc_gridfs_file_tell.rst","mongoc_gridfs_file_writev.rst","mongoc_gridfs_find.rst","mongoc_gridfs_find_one.rst","mongoc_gridfs_find_one_by_filename.rst","mongoc_gridfs_find_one_with_opts.rst","mongoc_gridfs_find_with_opts.rst","mongoc_gridfs_get_chunks.rst","mongoc_gridfs_get_files.rst","mongoc_gridfs_remove_by_filename.rst","mongoc_gridfs_t.rst","mongoc_host_list_t.rst","mongoc_index_opt_geo_get_default.rst","mongoc_index_opt_geo_init.rst","mongoc_index_opt_geo_t.rst","mongoc_index_opt_get_default.rst","mongoc_index_opt_init.rst","mongoc_index_opt_t.rst","mongoc_index_opt_wt_get_default.rst","mongoc_index_opt_wt_init.rst","mongoc_index_opt_wt_t.rst","mongoc_init.rst","mongoc_insert_flags_t.rst","mongoc_iovec_t.rst","mongoc_matcher_destroy.rst","mongoc_matcher_match.rst","mongoc_matcher_new.rst","mongoc_matcher_t.rst","mongoc_query_flags_t.rst","mongoc_rand.rst","mongoc_rand_add.rst","mongoc_rand_seed.rst","mongoc_rand_status.rst","mongoc_read_concern_append.rst","mongoc_read_concern_copy.rst","mongoc_read_concern_destroy.rst","mongoc_read_concern_get_level.rst","mongoc_read_concern_is_default.rst","mongoc_read_concern_new.rst","mongoc_read_concern_set_level.rst","mongoc_read_concern_t.rst","mongoc_read_mode_t.rst","mongoc_read_prefs_add_tag.rst","mongoc_read_prefs_copy.rst","mongoc_read_prefs_destroy.rst","mongoc_read_prefs_get_max_staleness_seconds.rst","mongoc_read_prefs_get_mode.rst","mongoc_read_prefs_get_tags.rst","mongoc_read_prefs_is_valid.rst","mongoc_read_prefs_new.rst","mongoc_read_prefs_set_max_staleness_seconds.rst","mongoc_read_prefs_set_mode.rst","mongoc_read_prefs_set_tags.rst","mongoc_read_prefs_t.rst","mongoc_remove_flags_t.rst","mongoc_reply_flags_t.rst","mongoc_server_description_destroy.rst","mongoc_server_description_host.rst","mongoc_server_description_id.rst","mongoc_server_description_ismaster.rst","mongoc_server_description_new_copy.rst","mongoc_server_description_round_trip_time.rst","mongoc_server_description_t.rst","mongoc_server_description_type.rst","mongoc_server_descriptions_destroy_all.rst","mongoc_session_opt_t.rst","mongoc_session_opts_clone.rst","mongoc_session_opts_destroy.rst","mongoc_session_opts_get_causal_consistency.rst","mongoc_session_opts_get_default_transaction_opts.rst","mongoc_session_opts_new.rst","mongoc_session_opts_set_causal_consistency.rst","mongoc_session_opts_set_default_transaction_opts.rst","mongoc_socket_accept.rst","mongoc_socket_bind.rst","mongoc_socket_close.rst","mongoc_socket_connect.rst","mongoc_socket_destroy.rst","mongoc_socket_errno.rst","mongoc_socket_getnameinfo.rst","mongoc_socket_getsockname.rst","mongoc_socket_listen.rst","mongoc_socket_new.rst","mongoc_socket_recv.rst","mongoc_socket_send.rst","mongoc_socket_sendv.rst","mongoc_socket_setsockopt.rst","mongoc_socket_t.rst","mongoc_ssl_opt_get_default.rst","mongoc_ssl_opt_t.rst","mongoc_stream_buffered_new.rst","mongoc_stream_buffered_t.rst","mongoc_stream_close.rst","mongoc_stream_cork.rst","mongoc_stream_destroy.rst","mongoc_stream_file_get_fd.rst","mongoc_stream_file_new.rst","mongoc_stream_file_new_for_path.rst","mongoc_stream_file_t.rst","mongoc_stream_flush.rst","mongoc_stream_get_base_stream.rst","mongoc_stream_gridfs_new.rst","mongoc_stream_read.rst","mongoc_stream_readv.rst","mongoc_stream_setsockopt.rst","mongoc_stream_socket_get_socket.rst","mongoc_stream_socket_new.rst","mongoc_stream_socket_t.rst","mongoc_stream_t.rst","mongoc_stream_timed_out.rst","mongoc_stream_tls_t.rst","mongoc_stream_uncork.rst","mongoc_stream_write.rst","mongoc_stream_writev.rst","mongoc_topology_description_get_servers.rst","mongoc_topology_description_has_readable_server.rst","mongoc_topology_description_has_writable_server.rst","mongoc_topology_description_t.rst","mongoc_topology_description_type.rst","mongoc_transaction_opt_t.rst","mongoc_transaction_opts_clone.rst","mongoc_transaction_opts_destroy.rst","mongoc_transaction_opts_get_read_concern.rst","mongoc_transaction_opts_get_read_prefs.rst","mongoc_transaction_opts_get_write_concern.rst","mongoc_transaction_opts_new.rst","mongoc_transaction_opts_set_read_concern.rst","mongoc_transaction_opts_set_read_prefs.rst","mongoc_transaction_opts_set_write_concern.rst","mongoc_update_flags_t.rst","mongoc_uri_copy.rst","mongoc_uri_destroy.rst","mongoc_uri_get_auth_mechanism.rst","mongoc_uri_get_auth_source.rst","mongoc_uri_get_compressors.rst","mongoc_uri_get_database.rst","mongoc_uri_get_hosts.rst","mongoc_uri_get_mechanism_properties.rst","mongoc_uri_get_option_as_bool.rst","mongoc_uri_get_option_as_int32.rst","mongoc_uri_get_option_as_utf8.rst","mongoc_uri_get_options.rst","mongoc_uri_get_password.rst","mongoc_uri_get_read_concern.rst","mongoc_uri_get_read_prefs.rst","mongoc_uri_get_read_prefs_t.rst","mongoc_uri_get_replica_set.rst","mongoc_uri_get_service.rst","mongoc_uri_get_ssl.rst","mongoc_uri_get_string.rst","mongoc_uri_get_username.rst","mongoc_uri_get_write_concern.rst","mongoc_uri_new.rst","mongoc_uri_new_for_host_port.rst","mongoc_uri_new_with_error.rst","mongoc_uri_option_is_bool.rst","mongoc_uri_option_is_int32.rst","mongoc_uri_option_is_utf8.rst","mongoc_uri_set_auth_mechanism.rst","mongoc_uri_set_auth_source.rst","mongoc_uri_set_compressors.rst","mongoc_uri_set_database.rst","mongoc_uri_set_mechanism_properties.rst","mongoc_uri_set_option_as_bool.rst","mongoc_uri_set_option_as_int32.rst","mongoc_uri_set_option_as_utf8.rst","mongoc_uri_set_password.rst","mongoc_uri_set_read_concern.rst","mongoc_uri_set_read_prefs_t.rst","mongoc_uri_set_username.rst","mongoc_uri_set_write_concern.rst","mongoc_uri_t.rst","mongoc_uri_unescape.rst","mongoc_version.rst","mongoc_write_concern_append.rst","mongoc_write_concern_copy.rst","mongoc_write_concern_destroy.rst","mongoc_write_concern_get_fsync.rst","mongoc_write_concern_get_journal.rst","mongoc_write_concern_get_w.rst","mongoc_write_concern_get_wmajority.rst","mongoc_write_concern_get_wtag.rst","mongoc_write_concern_get_wtimeout.rst","mongoc_write_concern_is_acknowledged.rst","mongoc_write_concern_is_default.rst","mongoc_write_concern_is_valid.rst","mongoc_write_concern_journal_is_set.rst","mongoc_write_concern_new.rst","mongoc_write_concern_set_fsync.rst","mongoc_write_concern_set_journal.rst","mongoc_write_concern_set_w.rst","mongoc_write_concern_set_wmajority.rst","mongoc_write_concern_set_wtag.rst","mongoc_write_concern_set_wtimeout.rst","mongoc_write_concern_t.rst","tutorial.rst","visual-studio-guide.rst"],objects:{},objnames:{},objtypes:{},terms:{"0000m":524,"000m":524,"05552b562c7a0b3143a729aaa0838e558dc49b25":21,"0x555556cd7310":10,"15m":524,"16mb":142,"250m":[0,524],"2fmongodb":[0,507],"2ftmp":[0,507],"40domain":[490,515],"40exampl":[4,507],"40mb":143,"5372ab0a25164be923d10d50":9,"537afac9a70e5b4d556153bc":20,"55ef43766cb5f36a3bae6ee4":548,"55ef549236fe322f9490e17b":548,"56562a99d13e6d86239c7b00":[311,312,313,315,316,317],"5a1442f3122d331c3c6757e1":10,"abstract":[19,119,270,297,317,340,352,363,376,380,393,406,440,461,524,547],"boolean":[117,125,126,221,247,501,508,541,542,548],"break":[163,180,363,472,548],"byte":[5,138,139,283,284,333,342,354,382,383,384,436,437,438,443,446,452,455,456,464,465,466],"case":[5,6,9,11,12,17,20,107,148,180,183,213,289,363,472,491,492,493,508,509,510,516,517,518,524],"catch":[181,547],"char":[0,1,3,6,8,9,11,19,21,25,36,38,44,127,130,131,132,133,136,137,138,139,141,151,160,163,165,166,180,181,183,191,193,196,211,212,216,217,221,223,231,235,236,246,254,270,271,276,282,283,284,285,289,293,297,301,302,311,312,313,314,315,316,317,321,330,331,334,341,347,348,350,357,362,363,364,370,373,376,380,389,392,405,416,432,442,450,471,472,485,486,488,490,491,492,493,495,499,500,502,503,505,506,507,508,509,510,511,512,513,514,516,517,518,519,522,525,534,545,548],"const":[0,1,3,6,8,9,11,19,21,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,53,54,55,56,57,59,60,61,63,64,65,66,68,69,71,72,73,74,76,77,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,97,98,100,101,103,104,107,108,109,110,111,112,113,114,115,116,118,120,121,122,123,125,126,127,130,131,132,133,135,136,137,139,141,144,145,147,149,150,151,152,156,160,162,163,165,166,167,169,171,174,175,176,177,178,179,180,181,183,185,186,187,189,191,192,193,194,195,196,197,199,200,201,202,203,204,205,206,207,208,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,244,245,246,247,248,249,250,251,254,255,256,258,261,264,265,270,271,272,273,274,276,279,280,281,282,284,285,286,287,288,289,290,291,293,294,295,296,298,299,301,302,304,305,306,307,308,309,312,313,315,316,317,321,328,330,331,332,334,335,341,346,347,348,349,350,351,354,355,356,357,358,359,362,363,365,368,370,371,373,378,379,380,382,383,384,387,389,392,395,396,398,399,400,401,405,410,411,412,413,414,416,419,421,422,425,427,429,437,439,441,442,450,467,468,469,471,472,473,475,476,477,479,480,481,483,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,525,528,530,531,532,533,534,535,536,538,539,545,548],"default":[0,4,5,6,12,16,17,18,19,126,140,141,142,143,144,145,150,155,157,180,181,185,186,188,189,190,191,195,202,216,221,224,225,226,238,239,240,241,244,254,270,286,287,288,294,295,296,313,314,365,366,368,369,371,372,390,393,394,398,406,418,421,422,423,424,425,441,442,455,456,461,465,466,468,472,482,491,492,493,515,524,536,537,539,547,548],"enum":[11,19,21,300,375,381,394,407,408,482],"final":[1,3,9,17,262,549],"function":[1,4,5,7,8,9,10,11,16,18,19,21,80,81,82,83,84,85,86,87,88,89,90,91,103,104,106,107,109,111,113,115,118,120,121,122,123,126,129,130,131,132,135,138,139,141,142,143,148,154,155,156,157,158,159,160,161,162,164,165,166,167,171,180,183,184,185,186,187,188,189,190,192,193,194,195,196,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,219,220,222,227,228,230,231,232,233,234,235,236,237,238,242,244,245,246,247,248,249,250,253,254,256,261,262,263,264,265,267,268,269,271,272,273,275,276,278,279,280,281,283,286,288,289,290,291,292,293,294,295,296,298,299,302,312,314,315,316,322,323,324,327,339,342,353,355,356,366,369,372,374,378,386,392,395,396,413,416,425,426,427,428,429,430,431,434,436,439,443,445,446,447,448,450,452,453,454,455,456,457,459,464,465,466,468,469,471,479,480,481,490,497,505,507,527,541,542,543,544,545,546,548],"goto":[11,21,127,180,181,472,548],"import":[1,10,19,442],"int":[0,1,3,6,8,9,11,19,21,127,128,163,165,180,181,191,193,194,200,215,217,246,254,270,297,317,318,319,320,345,363,364,380,382,383,384,385,405,427,428,429,431,433,434,435,436,439,445,446,448,449,450,452,457,464,472,548],"long":[0,160,302,314,317,524,544],"new":[3,5,7,12,23,55,79,88,93,103,104,138,141,142,143,148,151,152,155,156,163,169,170,188,199,201,202,203,204,205,214,216,217,219,221,228,235,236,237,238,242,245,246,247,262,263,269,271,276,280,282,283,300,312,316,317,322,323,341,370,379,393,402,413,435,442,443,449,450,454,459,497,506,511,512,514,516,517,518,519,522,524,548,549],"null":[0,1,3,6,8,9,10,11,12,19,21,22,105,106,110,112,114,116,121,123,125,127,131,132,133,134,135,138,139,140,141,146,147,148,151,163,164,165,166,167,168,171,172,173,175,180,181,182,190,191,192,193,194,195,196,197,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,227,228,229,230,232,233,234,235,236,237,238,242,244,245,246,247,248,249,251,252,253,254,264,270,271,272,273,274,276,277,278,279,280,281,283,284,289,290,291,292,293,298,299,302,303,311,312,313,314,315,316,317,323,324,325,326,327,337,338,343,356,357,358,359,362,379,380,388,389,393,397,405,409,420,424,425,426,430,435,443,447,449,450,453,454,468,472,474,484,488,489,490,500,505,507,529,534,536,548],"public":[5,524],"return":[0,1,3,6,7,8,9,11,12,18,19,21,107,127,158,163,173,174,181,191,255,259,266,269,270,297,317,363,364,380,381,390,408,416,417,418,421,422,423,471,472,475,476,477,491,492,493,508,509,510,524,536,537,546,548],"short":[5,548],"st\u0155\u00ec\u00f1g":10,"static":[1,3,6,9,10,127,163,194,196,199,200,201,215,216,221,405,490,526,548],"switch":[548,549],"throw":[381,524],"transient":[180,472],"true":[0,3,4,6,9,10,11,21,110,112,114,115,116,120,121,122,123,127,128,131,132,133,148,159,160,161,163,165,166,167,168,171,172,179,180,182,183,184,193,194,196,197,202,205,206,207,208,212,213,216,217,218,221,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,253,254,262,265,267,268,271,273,274,279,289,290,291,292,293,299,301,302,304,311,312,313,314,315,316,317,325,327,338,343,344,349,362,378,386,390,392,401,421,424,442,462,468,469,490,501,507,508,509,510,515,516,517,518,524,527,530,531,533,536,537,548],"try":[11,12,21,180,338,472,524],"var":11,"void":[1,3,6,9,11,19,21,22,23,26,28,37,45,53,57,59,61,63,65,68,71,76,78,80,81,82,83,84,85,86,87,88,89,90,91,92,95,97,98,100,101,103,104,105,109,111,113,115,117,118,120,122,124,127,129,134,147,153,154,155,158,159,162,163,169,170,173,177,182,185,186,187,188,189,191,196,199,200,201,209,215,216,221,239,240,241,252,254,257,266,269,277,294,295,296,302,303,305,308,309,310,311,312,313,314,315,316,317,318,319,320,321,324,326,337,346,347,348,350,351,363,364,365,366,368,369,370,371,372,373,374,377,382,383,384,385,388,391,395,397,403,404,405,409,417,420,423,424,425,430,436,437,439,441,442,447,455,457,465,474,478,479,480,481,484,520,521,523,526,529,540,541,542,543,544,545,546,548],"while":[1,7,9,11,12,110,112,114,116,121,123,127,163,180,181,191,216,221,253,254,270,281,338,340,344,354,363,380,382,405,406,472,524,548],Adding:549,And:[3,416,471],But:524,CAs:0,DNS:[0,12,524],For:[0,4,7,12,16,17,19,127,185,186,189,193,194,199,201,210,211,221,229,235,249,263,264,278,281,284,299,390,393,468,469,508,509,510,524,525,537,547,548],Has:[169,170],Its:470,NOT:[191,270,344,345,352,354,363],Not:[195,446,452,464,524],One:[6,17,165,193,201,345,513,524],Such:453,TLS:[0,188,271,463],That:[0,363,524],The:[0,1,3,4,5,6,7,9,10,11,12,15,17,18,19,20,25,26,27,29,30,31,32,33,35,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,53,54,55,56,57,59,60,61,63,64,66,68,69,71,72,73,74,76,77,78,92,93,94,95,97,98,100,101,106,107,109,110,118,119,126,127,128,130,131,132,133,135,136,137,138,139,141,142,143,144,145,148,150,154,155,157,159,160,161,162,165,166,169,170,180,182,183,184,185,186,187,188,189,191,192,193,194,195,196,197,199,201,202,205,206,207,208,220,222,227,228,229,230,232,233,234,235,236,237,239,240,241,242,245,246,248,249,250,254,256,263,264,265,266,267,268,269,271,272,273,274,276,281,290,291,294,295,296,298,299,301,314,316,318,319,320,332,342,345,354,356,363,364,376,381,382,385,392,393,394,398,406,408,412,413,417,422,425,428,433,435,436,437,438,442,450,455,456,457,461,465,466,475,476,477,478,479,480,481,482,490,491,492,493,508,509,510,511,512,514,516,517,518,519,522,524,526,530,541,544,547,548,549],Then:[221,442,548],There:[12,17,136,137,363,425,461,548],These:[0,1,6,12,300,375,381,407,408,482,524,547,548],Use:[1,4,12,15,18,32,41,50,118,135,165,166,167,169,170,171,181,190,193,199,201,216,220,232,233,249,262,263,264,267,281,290,291,299,322,342,354,381,412,418,423,468,469,524],Used:[24,381],Useful:[140,198,275],Using:[4,7,13,14,15,17],Will:[117,313,513],With:[216,221,547],__line__:[302,311,312,313,314,315,316,317],_id:[1,3,6,9,11,12,20,127,180,181,192,201,221,227,229,230,238,246,248,298,311,312,313,315,316,317,332,424,472,548],_id_:[6,201,548],_load_resume_token:127,_mongoc_bulk_operation_t:119,_mongoc_change_stream_t:127,_mongoc_client_pool_t:163,_mongoc_client_t:191,_mongoc_collection_t:243,_mongoc_cursor_t:270,_mongoc_database_t:297,_mongoc_gridfs_file_list_t:340,_mongoc_gridfs_file_t:352,_mongoc_gridfs_t:363,_mongoc_matcher_t:380,_mongoc_server_description_t:415,_mongoc_session_opt_t:418,_mongoc_socket_t:440,_mongoc_stream_buffered_t:444,_mongoc_stream_file_t:451,_mongoc_stream_socket_t:460,_mongoc_stream_t:461,_mongoc_stream_tls_t:463,_mongoc_topology_description_t:470,_mongoc_transaction_opt_t:472,_mongoc_uri_t:524,_mongodb:524,_new:217,_previous_:[316,317],_remov:217,_save_resume_token:127,_simpl:548,_tcp:524,_win32:[9,376,380],aaaa:[0,524],aarch64:17,abbbbc:281,abbrevi:1,abl:317,abort:[12,168,173,179,180,302,314,317,424],about:[5,18,31,146,181,190,216,221,242,254,363,393,415,418,423,524,548],abov:[1,6,17,524,549],absolut:[429,437,438,442],accept:[127,155,255,426,492,515,524],access:[5,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,127,191,243,263,264,270,271,292,297,344,354,382,406,548],accommod:317,accord:[17,133,167,197,274],account:[5,165,166,193,232,233,249,290,291,299],accur:[199,200,201,215,228],acknowledg:[0,189,202,241,296,524,536,547],acmar:1,acquir:[18,181,190,418,423],across:16,action:[243,297],activ:[5,7],actual:[4,107,155,256,258,262,524,549],add:[0,3,6,7,10,11,12,79,88,133,135,139,165,166,180,181,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,302,311,312,313,314,315,316,317,395,429,472,548,549],add_execut:548,added:[0,9,10,17,227,229,230,271,311,312,313,314,315,316],adding:119,addit:[9,110,112,114,116,121,123,133,135,139,165,166,191,193,194,197,200,201,203,205,207,208,212,213,215,216,220,229,230,232,233,236,237,245,246,249,254,262,263,264,270,274,279,281,284,290,291,299,517,524,549],addition:[5,17,127,196],addr:[427,429,433],address:[4,435,524],addressless:4,addrlen:[427,429,433],addtoset:1,adjust:[17,345],admin:[3,4,21,163,317,524,548],admindb:21,advanc:[11,13,14,15,21,169,170,548],advantag:[6,17],af_inet:435,affect:[19,185,189],after:[6,9,12,16,18,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,119,127,129,159,162,165,180,181,182,183,187,190,192,193,202,203,217,229,236,246,248,254,258,268,269,294,295,296,298,302,312,315,316,340,363,374,381,392,418,423,424,425,431,442,447,450,479,480,481,488,490,494,511,512,513,514,515,516,517,518,519,520,521,522,523,524,541,542,543,544,545,546,548],afterward:[106,119,263,264],again:[10,12,180,425,472,524],against:[0,4,6,9,192,248,298,442,526,548],age:[302,311,313,314,315,316,317],agg:11,aggreg:[11,13,14,15,127,192,194,248,263,264,298],aggregation1:1,agre:[11,21],aid:[13,14,15],algorithm:0,alia:524,alias:[328,341,346,352],aliv:0,all:[1,3,4,5,6,7,9,11,16,17,18,19,30,40,48,106,110,116,117,119,121,123,127,129,134,147,153,155,157,162,173,180,182,187,194,195,202,203,207,208,213,216,221,228,229,230,237,245,246,252,258,266,268,269,272,277,281,283,284,292,303,315,317,325,355,359,362,363,374,377,381,388,397,405,406,407,409,430,442,446,447,452,464,467,484,494,515,524,529,548,549],all_build:17,alloc:[5,10,16,106,124,129,136,137,140,147,151,152,156,190,192,194,198,202,203,216,221,248,250,252,275,276,282,298,310,322,323,339,355,356,357,358,359,374,379,387,391,396,402,426,432,443,449,450,454,459,467,483,490,505,506,507,525,528,540,548],allow:[0,3,6,118,127,142,143,201,267,363,376,381,382,393,406,426,442,461,464,482,524,547],allow_invalid_hostnam:442,allowpartialresult:221,allplansexecut:21,along:[162,183,187,199,201,206,234],alreadi:[5,12,17,180,183,375,482,511,512,516,517,518],also:[3,6,9,10,11,15,16,17,160,217,236,247,268,363,406,415,514,519,522,524,548,549],alter:[392,541,542,543,544,545,546],altern:[4,524,548],although:[268,269,314],alwai:[12,16,18,106,131,133,148,165,166,172,193,197,205,209,217,218,232,233,242,247,249,274,290,291,299,332,363],among:[406,524,548],amount:[17,127,192,221,248,269,298,345],ani:[0,5,6,11,12,16,18,21,89,96,116,121,123,127,129,133,155,159,165,166,171,175,177,180,181,182,184,187,190,191,192,193,194,197,199,201,217,221,227,229,230,232,233,248,249,267,268,274,290,291,298,299,302,317,324,326,332,337,338,349,363,366,369,372,374,386,393,400,405,406,418,423,425,442,452,472,513,524,527,548],anoth:[4,7,10,12,17,21,126,127,157,169,170,431,524],anyth:[17,313,393],apach:[11,21],api:[6,13,15,161,184,193,213,249,299,352,363,442,452,455,461,465,466,470,548],apm:[13,15],app:17,append:[127,171,192,248,298,312,386,511,512,516,517,518,527],appli:[121,123,130,131,165,166,193,194,196,221,232,233,245,246,249,269,272,273,290,291,299,406,524,547],applic:[4,5,7,9,11,12,13,15,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,118,127,155,159,160,167,182,183,185,189,216,237,241,245,246,263,264,266,267,268,269,296,393,406,468,469,470,524,547,548,549],applicationnam:524,appnam:[1,3,6,8,160,163,165,180,181,183,191,193,217,246,254,270,317,363,405,424,472,524,548],approach:17,appropri:[199,201,206,234,263,264,345,548],apt:17,arbitrari:[6,201,221,302,363,548],archiv:549,archlinux:17,aren:548,argc:[0,1,3,6,8,9,11,19,21,163,165,180,181,191,193,217,246,254,270,297,363,380,472,548],argument:[11,12,110,112,114,116,121,123,131,132,133,148,159,165,166,168,171,172,180,182,184,193,196,197,205,206,207,208,212,213,217,218,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,263,267,268,269,271,273,274,279,289,290,291,292,293,299,302,311,312,314,315,316,317,325,343,345,349,362,386,425,479,480,481,527,548],argv:[0,1,3,6,8,9,11,19,21,163,165,180,181,191,193,217,246,254,270,297,363,380,472,548],arm:17,armor:[0,442],around:[217,426,427,428,429,432,457],arrai:[1,6,11,12,20,121,123,147,194,207,208,227,228,229,230,237,245,246,283,284,342,354,417,467,548],array_it:11,arrayfilt:[121,123,245,246],arrayofint:10,arrayofstr:10,artifact:17,as_json:127,as_json_len:127,ascend:[8,231],ascii:4,assert:[6,140,363],associ:[0,124,134,153,173,176,188,209,213,252,277,303,324,325,326,327,328,337,351,377,388,397,409,430,447,484,524,529],assum:[17,548],asynchron:7,attack:442,attempt:[0,4,6,12,127,202,203,229,254,272,279,442,524,547],auth:5,authent:[0,5,6,11,12,13,15,17,21,311,485,486,490,511,512,514,515,519,522,549],authmechan:[4,485,490,507,511,515,524],authmechanismproperti:[4,490,515,524],author:[0,5,292,293,315,316,317,442,524],authsourc:[4,486,507,512,524],auto:10,automat:[0,9,10,17,127,136,137,167,180,216,442,547],avail:[1,3,4,5,6,12,16,17,154,164,201,222,311,393,405,406,438,442,468,469,513,524,548],avg:1,avg_city_pop:1,avgobjs:548,avoid:[0,18,181,190,418,423,448,524],awai:[3,468,469],await:[189,241,296,547],awaitdata:[9,221,263,264,269],back:[158,323,524,548],background:[7,370,524],backlog:434,backward:[12,16,107,118,256,267,268],bad:12,bad_queri:254,badoper:254,badvalu:254,bar:[6,194,216,221],base:[6,12,140,191,217,373,380,391,406,453,461,496,498,504,506,526,540,548],base_stream:443,basi:[11,21,163],basic:[13,15,189,201,241,296,340,363,380,524],basic_aggreg:11,bat:17,batch:[6,119,194,195,202,203,216,221,255,262,263,266,272],batch_siz:[130,195,216,266,272],batchsiz:[192,194,221,248,263,264,298],bcon:[6,217],bcon_bool:[6,194,221,315,316,317,548],bcon_cod:11,bcon_date_tim:548,bcon_docu:8,bcon_doubl:[11,21],bcon_int32:[1,3,6,21,127,147,180,181,216,217,221,246,302,311,312,314,317,424,472,548],bcon_int64:[6,127,165,193,200,215,221,254],bcon_new:[1,3,6,8,11,21,127,147,165,180,181,193,194,196,200,201,215,216,217,221,246,254,302,311,312,313,314,315,316,317,380,405,424,472,548],bcon_oid:548,bcon_utf8:[6,8,11,21,165,193,194,196,201,216,221,313,317,405,548],bcrypt:549,becaus:[3,12,155,262],becom:[9,164,490,524,525],been:[3,5,17,18,142,143,157,175,177,179,181,190,216,251,252,262,327,338,385,390,392,393,400,408,418,423,429,431,462,490,511,512,513,514,515,516,517,518,519,520,521,522,523,524,534,537,541,542,543,544,545,546,547,548],befor:[0,4,6,16,18,79,88,118,126,159,160,161,162,165,166,181,187,190,193,194,200,201,209,215,216,217,221,233,235,236,249,262,267,268,291,299,363,366,369,372,375,386,418,423,442,455,465,466,488,524,527,530,531,533,535,541,542,544,546,548,549],began:12,begin:[7,10,12,16,24,43,70,81,86,129,133,135,139,165,166,193,197,200,201,202,203,205,207,208,212,213,215,216,220,221,229,230,232,233,236,237,245,246,249,250,274,279,281,284,290,291,299,374,392,442,524,541,542,543,544,545,546],begun:262,behavior:[0,7,12,127,155,261,524],behaviour:442,behind:4,being:[344,354],below:[4,19,216,507,548],besid:[194,442],best:[323,442],better:[427,429,446,464],between:[0,4,254,426,427,429,440,524],bewar:376,beyond:[265,524],bin:[17,549],binari:10,bind:427,bit:[17,329,333,353,382,535,549],bitwis:[110,116,121,123,207,208,228,229,230,237,244,245,246,375,381,407,408,482],blast:381,block:[7,126,127,157,164,181,189,192,241,248,265,296,298,339,342,381,455,456,465,466,468,469,524,526,547],book:[316,317],bool:[6,8,10,11,21,110,112,114,115,116,117,120,121,122,123,125,126,127,128,131,132,133,147,148,159,160,161,163,165,166,167,168,171,172,179,180,181,182,183,184,193,196,197,202,204,205,206,207,208,210,211,212,213,214,217,218,221,227,228,229,230,232,233,234,235,236,237,238,242,244,245,246,247,249,253,254,261,262,265,267,268,271,273,274,278,279,289,290,291,292,293,299,301,302,304,311,312,313,314,315,316,317,325,327,338,343,344,349,362,370,378,386,390,392,401,421,424,442,462,468,469,472,490,491,501,508,509,510,511,512,513,514,515,516,517,518,519,522,527,530,531,533,536,537,538,539,541,542,548],born:548,both:[0,7,17,127,166,221,233,291,363,442,524],bound:383,brew:17,brief:548,brows:548,bsd:[426,427,428,429,434,440],bson:[0,6,9,10,12,13,15,31,110,112,114,116,121,123,125,126,133,135,139,142,165,166,170,175,176,177,193,194,196,197,199,200,201,203,205,206,207,208,212,213,215,216,217,220,221,227,229,230,232,233,234,236,237,245,246,249,254,264,265,274,279,281,284,290,291,299,305,308,309,335,346,349,351,363,380,412,482,487,494,497,515,549],bson_append_array_begin:548,bson_append_array_end:548,bson_append_bool:[6,9],bson_append_date_tim:548,bson_append_document_begin:[9,281,363,548],bson_append_document_end:[9,281,363,548],bson_append_int32:[3,8,163,302,312,313,314,315,317,363,548],bson_append_int64:127,bson_append_oid:548,bson_append_regex:281,bson_append_timestamp:9,bson_append_utf8:[191,201,270,302,311,312,313,314,315,316,317,370,515,548],bson_append_valu:127,bson_as_canonical_extended_json:[1,3,6,9,11,21,127,165,191,193,196,216,217,221,270,302,311,312,313,314,315,316,317,380,405,490,548],bson_as_json:[8,180,181,254,472,548],bson_as_relaxed_extended_json:[3,127,246],bson_assert:[9,11,21,246],bson_concat:127,bson_destroi:[1,3,6,8,9,11,21,106,127,131,133,147,148,163,165,166,172,180,181,191,193,194,196,197,200,201,205,207,208,215,216,217,218,221,229,230,232,233,237,242,245,246,247,249,254,270,274,281,284,290,291,299,302,311,312,313,314,315,316,317,363,370,380,405,472,515,548],bson_empti:127,bson_error_t:[1,3,6,8,9,11,12,21,28,65,106,110,112,114,116,121,123,125,127,131,132,133,138,139,141,147,148,163,165,166,167,168,171,172,180,181,190,191,193,194,196,197,199,200,201,204,205,206,207,208,210,211,212,213,214,215,216,217,218,219,221,227,228,229,230,232,233,234,235,236,237,238,242,244,245,246,247,249,253,254,270,271,273,274,276,278,279,280,281,283,284,289,290,291,292,293,299,302,311,312,313,314,315,316,317,325,327,338,343,349,356,357,358,362,363,370,379,405,424,472,507,548],bson_fre:[1,3,6,8,9,11,21,127,165,180,181,191,193,196,216,217,221,231,246,254,270,302,311,312,313,314,315,316,317,380,405,432,472,490,525,548],bson_get_monotonic_tim:[180,472],bson_gnuc_deprec:[148,155,214,242],bson_gnuc_deprecated_for:[199,201,202,206,216,228,238,261,263,280,355,356],bson_gnuc_printf:19,bson_gnuc_pur:[365,368,371,441],bson_gnuc_warn_unused_result:[194,195,202,203,216,221,250,358,359,505,507],bson_has_field:487,bson_host_name_max:364,bson_init:[8,9,127,191,201,270,363,370],bson_init_stat:490,bson_initi:[3,6,9,11,127,163,180,281,284,302,311,312,313,314,315,316,317,405,424,472,515,548],bson_iter_doubl:11,bson_iter_holds_arrai:11,bson_iter_holds_doubl:11,bson_iter_holds_timestamp:9,bson_iter_init_find:[9,11,127,281],bson_iter_next:11,bson_iter_recurs:11,bson_iter_t:[9,11,127,281],bson_iter_timestamp:9,bson_iter_utf8:281,bson_iter_valu:127,bson_json_reader_destroi:127,bson_json_reader_new_from_fil:127,bson_json_reader_read:127,bson_json_reader_t:[127,548],bson_new:[6,165,180,181,193,472,548],bson_new_from_json:548,bson_oid_init:548,bson_oid_t:[57,61,78,95,98,101,227,229,230,548],bson_reader_destroi:380,bson_reader_new_from_fd:380,bson_reader_read:380,bson_reader_t:380,bson_stat:549,bson_strdup:[11,21],bson_strdup_printf:[11,21,492],bson_strfreev:[138,139,283,284],bson_t:[1,3,6,8,9,10,11,12,21,31,35,49,74,103,104,106,109,110,111,112,113,114,115,116,120,121,122,123,125,126,127,130,131,132,133,135,139,147,148,163,165,166,169,171,172,175,176,180,181,191,192,193,194,195,196,197,199,200,201,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218,220,221,222,227,228,229,230,231,232,233,234,235,236,237,238,242,244,245,246,247,248,249,251,254,263,264,265,270,271,272,273,274,276,278,279,280,281,284,290,291,298,299,301,302,305,308,309,311,312,313,314,315,316,317,328,335,341,346,351,355,356,358,359,363,370,378,379,380,386,395,400,405,412,424,472,487,490,494,497,511,512,515,516,517,518,527,548],bson_type_int32:363,bson_uint32_to_str:548,bson_validate_flags_t:[110,116,121,123,207,208,229,230,237,245,246],bson_value_copi:127,bson_value_destroi:127,bson_value_t:[127,332,349,363],bsondump:20,buf:[363,382,383,384,436,437,455,465,548],buffer:[0,6,188,262,383,384,436,437,438,443,444,446,448,452,455,461,464,465,493],buffer_s:443,buflen:[436,437],bug:[15,20,548],build:[1,4,10,15,21,118,165,167,193,194,217,263,264,267,370,442,524,549],builder:[303,310,311,312,313,314,315,316,317],buildinfo:3,built:[0,5,12,17,190,461],bulk1:6,bulk2:6,bulk3:6,bulk4:6,bulk5:6,bulk5_fail:6,bulk5_success:6,bulk6:6,bulk:[11,13,14,15,21,30,40,48,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,193,202,203,222,228,229,249,299],bulk_col:6,bump:[302,311,312,314,315,317],bundl:[17,524],bye:20,bypass:[117,311,317],bypassdocumentvalid:[194,229,230,237,245,246],c_rehash:0,ca_dir:[0,4,162,187,442],ca_fil:[0,4,162,187,442],cach:[0,4,127,524],cached_operation_tim:127,calcul:548,call:[5,6,7,9,11,12,16,18,19,80,81,82,83,84,85,86,87,88,89,90,91,103,104,106,107,109,110,111,112,113,114,115,116,118,119,120,121,122,123,126,129,130,133,135,139,148,154,155,157,158,159,160,161,162,164,165,166,175,180,181,183,185,186,187,189,190,192,193,194,197,198,199,200,201,202,203,212,213,215,216,220,221,231,232,233,236,248,249,250,256,265,266,267,268,269,270,271,272,274,275,279,281,284,290,291,294,295,296,298,299,302,304,312,315,316,346,347,348,350,351,366,369,372,374,390,392,418,423,424,425,430,431,433,435,447,479,480,481,505,524,537,541,542,543,544,545,546,548],callback:[3,22,23,24,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,80,81,82,83,84,85,86,87,88,89,90,91,93,94,159,182,188,468,469,470],caller:[106,413,448],came:[18,181,190,418,423],can:[0,1,4,5,6,9,10,11,12,16,17,18,19,21,127,133,135,139,157,159,160,161,162,165,166,180,190,191,192,193,194,197,200,201,203,205,207,208,212,213,215,216,220,221,227,229,230,232,233,236,237,243,245,246,248,249,263,265,268,271,274,279,281,284,290,291,297,298,299,311,317,341,344,354,355,358,359,363,364,375,380,381,382,391,392,393,401,406,425,437,438,442,472,479,480,481,492,507,516,517,518,524,526,540,541,542,543,544,545,546,547,548,549],cancel:[0,524],cannot:[12,19,160,228,254,269,511,512,513,514,515,519,522],canon:[231,524],canonicalize_host_nam:[4,490,515],canonicalizehostnam:524,cap:[9,548],capabl:[1,408],captur:431,casefirst:[6,165,193,201,221],cast:[3,468,469],cat:[11,21],categori:12,caus:[254,524],causal:[18,169,170,181,190,418,421,423,424,543],causal_consist:424,caution:363,caveat:[363,406],cbs:3,cdriver:5,center:200,centerspher:200,cento:17,certain:[0,6,12,21,524,526],certif:[0,15,524],cflag:[3,8,9,11,21,163,165,180,181,191,193,270,472,548],challeng:4,chang:[3,4,58,83,89,96,124,125,127,192,216,248,266,268,269,298,345,346,347,348,350,351,407,442,468,469,524,548,549],changestream:127,charact:4,check:[1,2,4,5,7,9,13,15,17,67,70,75,85,86,87,125,130,131,132,135,179,196,213,220,253,254,263,264,272,273,281,289,327,378,382,401,406,431,442,524,547,548],checklist:15,checkout:17,checksum:350,child2:548,child:[363,548],choic:[406,549],choos:[12,17,118,140,167,216,267,312,393,406,524,549],chose:549,chosen:524,chunk:[12,141,329,343,360,362],chunk_siz:[341,352],clang:17,clariti:3,clean:[0,409,415,548],cleanup:[2,5,11,13,15,17,21,127,217],clear:[4,182,289,431],cleartext:271,click:[5,549],client:[0,1,3,4,5,6,7,8,9,11,15,21,32,41,50,110,116,121,123,125,127,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,155,157,158,160,161,162,163,164,165,166,167,173,180,181,182,183,184,185,186,187,188,189,190,191,192,193,202,203,207,208,213,217,229,230,237,240,243,245,246,254,262,263,264,270,286,288,295,297,317,363,370,380,393,398,403,405,411,412,414,424,425,472,482,487,513,524,547,548],client_sess:[171,181,424],clock:[406,429,436,437,438,524],clone:[17,21,250,270],clone_collect:21,clonecollect:198,clonecollectionascap:[165,193],close:[3,12,18,62,99,155,181,190,381,418,423,428,436,445],closer:548,cluster:[3,142,143,169,191,406,524,548],cluster_tim:169,clustertim:[169,170,175],cmake:[4,5,16,17,442,549],cmake_install_prefix:[17,549],cmakelist:548,cmd:[3,165,193,196],cmpxchg:217,cng:442,coalesc:6,cobol:548,code:[3,6,11,12,16,19,21,103,104,133,135,138,139,142,143,148,165,166,171,173,180,193,194,197,199,200,201,202,203,204,205,207,208,212,213,214,215,216,218,219,220,221,227,228,229,230,232,233,236,237,238,242,245,246,247,249,254,263,274,279,280,281,283,284,290,291,299,300,301,356,357,358,370,376,386,418,420,423,472,490,497,527,548,549],codenam:254,coll:[127,246,248],coll_nam:548,collat:[112,114,116,121,123,133,165,166,192,193,194,197,200,201,207,208,212,213,215,221,232,233,236,237,245,246,248,249,274,279,290,291,298,299,370],collect:[1,3,6,8,9,11,12,20,21,106,127,136,137,141,166,180,181,185,189,191,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,254,262,263,264,270,276,280,281,282,283,284,289,291,294,295,296,302,311,312,313,314,315,316,317,370,393,405,406,424,472,547,548],collection1:194,collection2:194,collection_nam:[3,8,11,21,191,216,221,270],collectionnam:317,collnam:[6,405],collscan:21,collstat:[196,242,548],colon:406,color:548,com:[4,9,17,490,507,515,524],combin:[406,538],come:[5,6,19,201,254,406,461],comma:[0,406,489,513,524],command:[1,4,8,10,12,15,17,24,25,30,31,34,35,36,40,43,44,48,52,67,70,75,85,86,87,110,112,114,116,121,123,127,130,131,132,133,135,139,148,165,166,171,192,193,194,195,196,197,198,200,201,202,203,205,207,208,212,213,215,217,220,222,229,230,232,233,236,237,242,243,245,246,247,248,249,263,264,269,272,273,274,275,276,279,281,284,290,291,292,293,298,299,302,310,317,363,386,407,412,414,524,527,547],command_fail:3,command_opt:205,command_start:3,command_succeed:3,comment:221,commit:[12,172,179,180,472,524],common:[0,11,13,14,15,270,442,548],common_oper:21,commun:[12,257],comparison:[112,114,116,121,123,133,165,166,193,194,197,200,201,207,208,212,213,215,232,233,236,237,245,246,249,274,279,290,291,299],compat:[4,12,16,107,118,199,201,206,234,256,263,264,267,268,393,406,442],compil:[0,4,5,9,11,17,19,21,162,187,318,319,320,378,442,526,548],complet:[0,7,9,12,17,19,75,82,87,180,188,262,263,524],compli:6,complianc:[11,21],compon:[17,170,177],composit:1,compress:524,compressor:[0,487,513,524],comput:[4,334],concaten:[0,524],concern:[12,106,108,130,131,132,133,144,150,165,166,180,185,189,192,193,194,196,197,200,201,202,203,205,206,207,208,212,213,215,217,218,221,224,226,227,228,229,230,232,233,236,237,238,239,241,244,245,246,248,249,272,273,274,276,279,290,291,294,296,297,298,299,302,314,317,386,388,389,390,391,392,406,425,472,479,481,496,498,504,520,523,527,529,530,532,535,536,537,538,539,540,541,542,543,544,545,546],conclud:17,concurr:[7,363],condit:[11,21,526],config:[3,8,9,11,21,163,165,180,181,191,193,270,408,472],config_str:373,configur:[0,3,4,7,9,10,16,17,19,112,114,116,121,123,133,140,144,145,150,161,162,165,166,167,171,178,184,190,193,194,197,198,200,201,207,208,212,213,215,221,232,233,236,237,239,245,246,249,274,275,279,286,288,290,291,292,294,299,391,406,421,424,425,461,472,478,479,480,481,496,498,504,524,540,545,549],confirm:[442,524],conflict:12,conform:[3,470],conjunct:448,connect:[1,3,4,11,12,13,14,15,17,20,21,58,83,89,96,140,142,143,147,151,154,162,163,183,187,191,192,240,248,254,270,295,298,363,393,406,412,415,429,442,468,469,470,492,507,514,547,549],connection_str:[3,8,163,165,180,181,191,193,270,472,548],connecttimeoutm:[454,492,509,524],consecut:6,consequ:[0,524],consid:[3,5,19,106,166,193,206,217,218,227,228,229,230,233,237,238,244,245,246,249,291,299,406,444,460,492,524,547,548],consider:17,consist:[18,169,170,181,190,192,248,298,401,418,421,423,424,543],consol:549,constant:[11,524],constraint:[6,517],construct:[11,110,116,121,123,133,135,139,162,165,166,187,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,317,492,548],consult:[133,165,166,193,197,232,233,249,274,290,291,299,548],consum:[9,376,382],contact:[11,262],contain:[0,4,10,11,12,17,21,31,115,116,120,121,122,123,127,130,131,133,135,136,139,151,165,166,192,193,194,195,196,197,199,200,201,202,206,207,208,211,212,216,217,218,219,220,221,229,230,232,233,234,237,238,242,244,245,246,248,249,272,273,274,280,281,283,284,289,290,291,293,297,298,299,301,335,341,346,347,348,350,351,357,358,359,360,361,362,363,367,370,373,378,379,383,426,429,434,435,438,439,443,494,497,505,506,507,532,534,535,545],content:[10,198,275,323,330,347,483,490],content_typ:[341,347,352],context:[3,26,37,45,53,59,63,68,71,76,92,97,100,159,182],continu:[9,17,180,202,203,229,236,375,472],contract:188,contrast:[200,215],contribut:17,control:[382,442,524],conveni:[216,302,314,317,363,524,548],convert:[216,221],copi:[0,5,11,17,19,21,25,28,29,31,35,36,38,39,44,47,49,54,55,56,60,65,66,69,73,74,77,93,94,126,159,162,169,170,180,182,183,187,198,250,265,275,305,308,309,387,396,413,419,425,442,473,479,480,481,483,528],copydb:275,copyright:[11,21],core:5,cork:464,correct:[4,17,185,189,241,296,491,492,493],correctli:10,correl:[30,32,40,41,48,50],correspond:[12,135,141,219,220,280,281,375,381,407,408,482],corrupt:12,could:[19,147,180,181,293,356,363,379,472],couldn:[6,11],count:[1,6,7,11,106,165,199,201,215,232,290,455,465],counter:[15,16,129,374],cover:[4,406],creat:[0,1,3,4,5,6,7,10,12,13,14,15,16,18,23,24,125,126,130,136,137,141,149,151,152,156,157,174,180,181,190,192,202,203,204,205,209,214,231,237,245,246,248,250,254,268,269,270,271,272,276,294,295,296,298,310,313,317,322,323,332,341,370,379,391,402,405,418,419,423,425,435,443,449,450,454,459,472,473,478,506,524,540,549],create_index:8,createindex:[8,205,370],createrol:[193,249,299],creation:[18,205,363,365,368,371,382],credenti:[4,12,514,524],critic:19,crl_file:[162,187,442],cross:15,crud:[15,193,243,249,299],crypt32:549,crypto:[190,442],cryptograph:382,cryptographi:442,csharp:5,curl:17,current:[4,12,17,20,148,169,170,240,247,251,292,293,295,345,353,380,389,406,428,431,437,442,461,468,469],cursor:[1,5,11,12,13,14,15,126,130,131,135,181,191,194,195,216,219,220,221,246,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,272,280,281,314,381,405,408,548],custom:[0,6,10,127,167,188,191,406],custom_data:271,cyru:[4,17,524],data:[10,11,12,15,21,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,124,126,163,181,192,248,262,271,298,323,343,362,381,383,385,452,490,515,524,547,548],databas:[3,4,6,11,21,38,130,131,132,133,135,136,137,138,139,140,141,163,165,166,180,185,189,193,197,232,233,235,236,249,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,317,393,406,472,488,514,524,547,548],databasenam:317,datacent:405,date:336,db1:524,db2:[21,524],db_name:[130,131,132,133,140,165,166,193,299,548],dbadmin:[6,311],dbname:405,dbpath:21,dcmake_build_typ:17,dcmake_install_prefix:17,dcmake_prefix_path:17,debian:17,debug:[13,14,15,17,19,549],decis:12,deep:[198,275,387,396,528],default_languag:370,default_txn_opt:[180,472],defin:[6,9,10,11,12,19,266,375,416,471,482,489,524,526,549],degre:[382,548],delai:[0,524],deleg:4,delet:[5,103,104,112,193,206,207,208,234,243,249,299,300,407,524],deletedcount:[207,208],deliv:5,delta:345,demand:[3,7,548],demonstr:[9,11,12,165,180,193,301,548],denable_automatic_init_and_cleanup:[16,17],denable_html_doc:17,denable_man_pag:17,denable_mongoc:17,denable_shm_count:5,denable_ssl:[162,187],denable_trac:[5,19],depend:[0,3,15,17,18,382,524,549],deploy:412,deprec:[4,155,524],deriv:4,descend:[1,221,231,315,317],describ:[4,6,17,167,193,249,299,394,524],descript:[0,17,55,56,93,94,147,186,295,393,415,417,467],descriptor:[445,448,449,451],design:12,desir:[110,116,121,123,207,208,229,230,237,243,245,246,429,443],despit:[3,180],destin:[437,438],destroi:[18,90,99,105,106,119,124,155,159,181,182,190,205,209,247,263,264,324,326,413,418,423,490,548],destruct:18,detail:[8,12,31,120,121,122,123,130,183,199,201,262,301,342,354,392,406,524,548],detect:[0,12,17,370],determin:[3,4,12,265,270,315,468,469,524],dev:[17,321],devel:17,develop:[5,19,155],dialog:549,did:[5,181],didn:[313,317],died:548,differ:[4,17,21,216,254,376,382,406,548,549],direct:[21,406],directli:[0,7,17,18,147,148,216,242,247,302,382,440],directori:[0,10,17,548,549],disabl:[5,18,181,190,406,418,423,424,442,524],discov:[3,7,524],discoveri:[3,416,471],disk:524,dispatch:394,displai:[1,17],dispos:5,distinct:[13,14,15,133,165,166,193,194,197,221,232,233,249,274,290,291,299],distinguish:4,distribut:[11,17,21,442,524],dll:549,dnf:17,do_someth:[340,526],doc:[0,1,3,6,9,11,17,21,127,180,181,191,216,221,254,270,281,405,424,472,548],docsexamin:21,document:[1,3,4,9,11,12,15,18,31,103,104,106,109,110,111,112,113,114,115,116,117,120,121,122,123,125,126,127,131,133,135,136,137,139,142,165,166,168,171,172,173,175,176,179,180,181,190,192,193,194,195,196,197,199,200,201,203,205,206,207,208,212,213,215,216,217,218,219,220,221,227,228,229,230,232,233,234,236,237,238,244,245,246,247,248,249,251,254,255,262,263,264,265,266,268,269,270,272,273,274,279,280,281,284,290,291,298,299,305,308,309,311,313,315,316,317,335,370,375,378,380,386,407,408,412,418,423,472,478,482,487,494,497,524,527],doe:[0,4,5,12,16,17,22,105,120,121,122,123,127,129,131,132,134,155,173,190,196,198,209,213,219,220,229,252,262,273,275,277,302,303,312,315,316,324,326,337,363,374,380,388,397,409,420,424,430,447,454,468,469,474,484,497,524,529,543,547],doesn:[11,183,302,313,314,317],dog:[11,21],doing:6,domain:[6,9,12,19,213,254,356,357,358,435,524],don:[11,21,162,187],done:[4,9,21,180,181,472,548],dopenssl_root_dir:442,doubel:382,doubl:[10,11,367,383],down:[381,428,524],download:[17,549],driver:[0,3,4,5,6,7,9,10,12,13,16,19,20,21,34,43,52,58,62,67,70,75,79,80,81,82,83,84,85,86,87,88,89,90,91,96,99,102,107,118,129,161,162,163,167,183,184,187,189,190,216,221,241,256,258,263,264,267,296,302,314,317,332,363,374,382,406,412,415,442,461,468,469,470,492,514,519,522,524,526,547,548,549],drop:[0,1,3,16,193,212,213,235,236,249,262,279,299,325],drop_dup:370,drop_target_before_renam:[235,236],dropdup:370,due:[6,18,181,190,418,423,524],dump:[5,19],dup:6,duplic:[3,6,12,370,547],durat:[27,46,64,72,414],dure:[4,19,228,407],dynam:[548,549],e11000:6,each:[1,5,6,7,11,18,133,135,159,165,166,182,192,193,194,195,197,219,220,232,233,248,249,266,274,280,281,290,291,298,299,312,339,382,398,403,406,412,424,425,472,524,548,549],easier:524,easili:[5,127,461],echo:20,edit:[3,4,549],effect:[6,118,169,170,267,268],egress:5,einval:345,either:[6,11,17,21,161,184,194,207,208,217,230,237,245,246,254,289,311,524],elaps:7,element:[121,123,227,230,245,246,342,354,417,438],elig:[406,524],els:[3,6,11,21,127,139,165,180,193,196,199,200,201,213,215,284,302,311,312,313,314,315,316,317,363,376,380,405,421,455,472,490,548],embed:[7,196],embeddeddocu:10,emit:11,empti:[6,11,12,19,31,125,127,192,205,219,220,221,239,248,254,262,294,298,305,308,309,406,412,524,548],en_u:[6,165,193,201,221],enabl:[0,5,6,16,19,187,201,311,442,487,513,524,526],enable_icu:4,enablemajorityreadconcern:[165,193],enclos:524,encod:[0,4,348,357,362,525],encount:[4,12,192,248,298,455,465],encrypt:[442,524],end:[0,5,16,129,173,323,345,374,455,465,524,548],endif:[9,162,187,191,270,376,380,526],enough:[382,385],ensur:[4,5,147,162,169,170,263,264,401,442,548],enter:17,enterpris:[4,165,193,549],entir:[180,325,472,483],entireti:[120,121,122,123],entri:[8,17,112,114,116,121,123,127,133,165,166,181,193,194,197,200,201,207,208,212,213,215,232,233,236,237,245,246,249,274,279,281,284,290,291,299,424],entropi:[383,384],environ:[4,5,382,549],epel:17,ephemer:265,epoch:336,equal:[1,20,128,213,398,403,524],equival:[261,428,450,524],err:[125,180,472],err_doc:127,errmsg:[3,6,254],errno:[19,345,427,428,429,431,433,434,435,436,437,438,439,445,446,449,450,452,455,456,457,464,465,466],error:[1,2,3,4,5,6,8,9,11,13,15,17,19,21,28,31,65,125,127,130,132,147,159,160,161,163,167,168,171,172,180,181,182,183,184,185,186,187,189,191,192,194,204,210,211,216,221,231,235,248,250,251,263,264,265,267,270,272,278,298,301,302,311,312,313,314,315,316,317,323,342,344,349,354,363,370,381,382,386,405,408,424,431,442,462,472,505,507,524,527,547,548],error_cod:[180,472],errorlabel:[12,180,472],escaped_str:525,especi:19,essenti:363,establish:[0,142,143,192,248,270,298,548],estim:[383,398,403,406],etc:[17,243,442,524],evalu:406,even:[9,106,148,196,202,262,273,311,317,375,442,543],event:[3,7,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,127,159,182],everi:[7,524],everyth:[1,6],exact:17,exactli:[16,129,374,524],exampl:[0,4,6,7,9,10,12,13,14,15,19,106,135,173,203,205,207,208,212,213,220,222,229,230,236,237,245,262,263,264,279,301,364,390,418,423,508,509,510,511,512,514,519,522,525,537,547,548],example_col:246,exceed:155,except:[1,11,18,21,160,162,164,221,406,456,524,547],excess:155,exclud:312,exclus:[127,216],exe:[17,548],execut:[3,6,7,8,15,16,34,43,52,70,80,86,103,104,106,111,112,113,114,115,116,119,120,121,122,123,130,132,133,165,166,180,193,194,195,196,197,199,200,201,202,203,215,216,221,222,232,233,247,249,250,254,256,258,263,267,270,272,274,290,291,299,314,356,358,359,424,543,549],executionstag:21,executionstat:21,executionsuccess:21,executiontimemilli:21,executiontimemillisestim:21,exhaust:[12,221,265,524],exist:[9,12,19,20,127,141,213,219,220,235,236,289,313,317,363],exit:[9,16,18,127,363,548],exit_cod:[11,127,180,181,472],exit_failur:[1,3,6,8,9,11,21,127,163,165,180,181,191,193,217,246,270,317,363,472,548],exit_success:[1,3,6,8,9,11,127,163,165,180,181,191,193,217,246,270,317,363,472,548],expand:549,expect:155,expens:[363,375],expir:[4,436,437,442,524],expire_after_second:370,expire_at:[426,429,436,437,438],explain:[6,549],explicitli:[4,21,216,221,239,294,393,539],explor:549,expos:[442,524],expr:200,express:[11,17,21,170,177],extend:[7,126],extens:[363,461],extern:4,extra:[9,17,201,242,271,302,314,317,524],extract:[11,17,524],fail:[0,1,3,5,6,8,9,11,12,21,24,31,34,67,80,85,106,107,127,139,163,165,180,181,190,191,193,199,200,201,215,217,228,246,254,270,284,292,301,317,363,370,375,405,408,424,429,472,524,544,548],failov:[0,180,472,524],failur:[1,5,12,106,138,139,141,148,166,180,181,191,193,194,196,199,200,201,202,203,206,215,217,218,227,228,229,230,233,237,238,244,245,246,249,250,254,263,264,270,271,273,276,283,284,291,299,342,345,354,379,426,427,428,429,434,436,437,438,439,446,449,450,455,456,464,465,466,505,507,547,548],fake:254,fall:524,fallback:[438,491,492,493],fals:[4,6,10,11,12,21,106,110,112,114,116,121,123,126,127,130,131,132,133,148,159,160,161,163,165,166,168,171,172,179,180,182,183,184,192,193,194,196,197,203,205,206,207,208,212,213,217,218,221,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,248,249,253,254,265,267,268,271,273,274,279,289,290,291,292,293,298,299,302,311,312,313,314,315,316,317,325,327,338,343,344,349,362,378,380,386,392,421,424,442,490,508,511,512,513,514,515,519,522,524,527,548],fam:317,fam_bypass:[311,317],fam_field:[312,317],fam_flag:[313,317],fam_opt:[302,314,317],fam_sort:[315,317],fam_upd:[316,317],famili:[364,382,435],fan:7,far:524,faster:381,fastest:524,fclose:127,fcntl:363,featur:[5,6,17,20,162,187,201,221,452,526,548],feb:4,fedora:17,fedoraproject:17,fetch:[6,108,135,147,149,219,220,223,224,225,226,251,257,258,262,280,281,283,284,285,287,316,317,328,329,330,331,332,333,334,335,336,338,399,400,438,453,467,485,486,488,489,490,494,495,496,497,498,499,501,502,503,504,530,531,532,533,548],few:6,fewer:17,fflush:452,field:[1,6,8,11,12,115,116,120,121,122,123,127,130,133,135,139,165,166,192,193,194,195,197,200,201,207,208,212,213,215,216,217,220,221,229,230,232,233,236,237,238,245,246,248,249,254,272,274,279,281,284,289,290,291,298,299,302,305,317,358,359,366,369,372,425,442,472,548],field_name_on:221,field_name_two:221,fieldnam:312,file:[0,4,10,11,12,17,20,21,127,140,141,322,323,325,326,327,328,329,330,331,332,333,334,335,336,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,442,445,448,449,450,451,454,455,465,548,549],file_id:363,file_stream:127,filenam:[12,331,341,348,352,357,362,363],fileno:380,fill:[12,167,171,194,207,208,229,230,245,246,323,356,357,358],filter:[20,21,121,123,200,216,221,245,246,280,281,358,359,363,380,405,468],find:[11,20,21,30,40,48,217,218,221,243,254,256,263,264,267,281,302,303,310,311,312,313,314,315,316,317,355,357,358,359,524],find_and_modifi:[217,313,317],find_and_modify_opt:303,find_opt:181,find_packag:548,find_queri:11,findandmodifi:[217,310,314,315,317],findicu:4,findon:1,finish:[18,262,548],firewal:4,first:[0,1,3,6,7,11,17,18,21,106,127,131,133,135,136,137,139,159,160,161,162,165,166,193,194,196,197,200,201,202,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,269,270,273,274,279,281,284,290,291,299,315,356,357,358,393,406,407,425,472,482,524,548],firstbatch:[263,264],firstnam:[302,311,312,313,314,315,316,317],fit:363,five:127,fix:12,flag:[10,130,194,195,199,201,206,216,227,228,234,244,272,300,306,317,436,450],flaw:12,flow:548,flush:452,follow:[0,1,4,5,9,11,12,17,19,21,127,165,166,180,183,192,193,194,196,200,221,232,233,246,248,249,290,291,298,299,363,406,524,526,548,549],foo:[6,10,194,216,221,405],footbal:[302,311,313,314,315,316,317],fopen:127,for_writ:167,forc:452,foreach:11,form:[1,11,12,21],format:[3,15,19,316,321,548],forward:[4,21,106],found:[0,5,11,12,127,167,213,221,227,230,254,281,356,357,358,408,548],four:548,fourth:6,fprintf:[1,3,6,8,9,11,21,127,139,163,165,181,191,193,196,199,200,201,213,215,216,217,221,246,254,270,281,284,302,311,312,313,314,315,316,317,363,405,424,548],framework:[11,13,14,15],free:[0,18,22,23,105,134,141,153,173,175,176,178,181,190,252,277,303,337,356,357,358,363,377,388,397,410,417,418,420,423,447,474,484,529],freebsd:17,freed:[25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,108,130,133,136,137,138,139,140,144,145,146,147,149,150,152,156,165,166,167,172,180,190,192,193,194,195,197,198,202,203,207,208,216,217,218,221,223,224,225,226,229,230,231,232,233,237,242,245,246,248,249,250,251,254,272,274,275,282,283,284,285,286,287,288,290,291,298,299,310,322,323,328,330,331,332,334,335,339,355,359,360,361,379,387,391,396,400,402,425,432,435,441,443,449,450,459,467,478,479,480,481,483,485,486,487,488,489,493,494,495,496,497,498,499,502,503,504,506,525,528,534,540,548],freeli:17,friendlier:440,from:[1,4,5,6,7,9,10,11,12,15,18,21,126,127,131,133,135,139,154,155,157,158,160,162,164,165,166,169,170,174,180,181,183,185,186,187,189,190,191,192,193,194,197,199,201,203,205,207,208,209,212,213,215,216,220,221,224,226,229,230,232,233,236,237,240,241,243,245,246,248,249,254,258,262,263,264,265,267,269,270,272,274,276,279,281,284,290,291,293,295,296,297,298,299,301,323,342,343,345,352,362,375,380,381,382,390,406,407,408,418,423,425,442,443,448,454,455,472,497,511,512,513,514,515,516,517,518,519,520,521,522,523,524,537,547,549],fromdb:21,fromhost:21,frozen:[392,541,542,543,544,545,546],fseek:345,fsync:[530,541],fsync_:541,fulfil:[188,191],full:[0,247,380,381,524],fulli:382,futur:[12,16,185,186,189,221,302,314,317,393],futureopt:[302,314,317],fwrite:[127,363],gather:[354,376,438,456],gcc:[3,8,9,11,17,21,163,165,180,181,191,193,270,472,548],gdbinit:10,gener:[1,12,15,213,227,229,230,352,363,382,383,384,385,406,411,442,446,461,464,547,548,549],geo:[365,367,370],geo_opt:370,geo_test:370,geowithin:200,get:[1,11,17,106,136,137,140,146,175,176,177,178,281,381,411,412,414,432,535,548],gethostnam:549,getlasterror:524,getmor:[5,30,40,48,269],getnameinfo:432,getpeernam:432,github:17,gitvers:21,give:[9,12,524,548],given:[5,11,163,188,191,206,207,208,231,234,263,264,276,292,331,345,413,468,548],global:[16,129,186,202,240,295,374,406],goal:[311,312,313,315,316,317],going:19,good:265,good_queri:254,got:[127,302,311,312,313,314,315,316,317],govern:[11,21,524],grab:363,grace:548,graph:5,great:[185,189,241,296,393,406,547],greater:[1,11,128,169,170,524],greatest:1,gridf:[12,141,322,323,324,325,328,329,331,332,333,334,335,336,339,340,341,344,346,347,352,354,355,356,357,358,359,360,361,362,363,454],gridfs_fil:363,gridfs_file_list:363,group:[1,272],grow:443,gssapi:[15,490,507,511,515],gssapiservicenam:524,gte:[1,6,20,380],guarante:[181,199,200,201,215,382,524,548,549],guid:[0,4,13,15,17,548],half:524,hand:254,handl:[6,12,127,194,202,203,243,250,297,363,405,440,505,507,524,547,548],handshak:183,happen:[192,248,298,375,379],hardwar:382,has:[0,1,3,7,9,12,18,118,125,142,143,147,157,175,177,179,181,183,190,194,199,201,238,246,251,252,253,254,258,261,262,263,267,268,327,338,385,390,392,393,408,418,423,429,431,442,462,468,469,511,512,513,514,515,516,517,518,519,520,521,522,523,524,534,537,541,542,543,544,545,546,547,548],hash:4,hat:17,have:[5,6,7,10,11,12,17,116,121,123,135,162,175,183,187,216,220,228,229,264,281,302,311,312,315,316,332,390,400,424,490,517,524,537,542,543,544,548,549],haven:10,haystack_bucket_s:367,heartbeat:[3,67,70,75],heartbeat_failed_ev:3,heartbeat_started_ev:3,heartbeat_succeeded_ev:3,heartbeatfrequencym:[7,524],hello:[20,191,270,380,548],hello_mongoc:548,help:[5,10,548,549],helper:[10,11,12,19,21,148,192,236,242,247,248,298,432,439,548],here:[3,9,11,17,21,192,221,248,298,406,440],hex:[5,19],higher:[15,167,263,264],highest:[133,165,166,193,194,197,221,232,233,249,274,290,291,299],him:[316,317],hint:[107,118,201,221,256,267,406],his:[302,311,312,313,314,315,317],histor:[216,468,469,524],hold:[1,10,23,163,415,524,548],home:17,homebrew:17,hopper:548,host01:0,host02:0,host03:0,host1:524,host2:524,host:[0,3,4,21,29,39,47,54,60,66,69,73,77,140,191,257,270,364,410,489,524,548],host_and_port:[3,11,21,147,364],hosta:7,hostb:7,hostn:524,hostnam:[0,4,442,506,524],how:[0,1,5,6,9,11,12,21,161,165,180,184,193,200,215,216,375,381,394,524,544,548,549],howev:[0,6,9,216,406,524,547,548],http:[11,17,21,163,548],human:12,hurt:[155,524],i686:17,iOS:442,ibrahimov:[302,311,312,313,314,315,316,317],icu_root:4,idea:461,ident:[160,162,164,456],identifi:[17,118,267,411],idl:[0,18,155,181,190,381,418,423],ids:3,ifdef:[9,162,187,376,380],ignor:[0,166,168,199,200,201,213,215,221,233,291,311,370,406,442,454,468,524,547],illustr:548,immedi:[11,164,254],implement:[20,127,191,193,249,299,356,363,446,452,453,464,524],impli:[11,21],in_shutdown:[163,548],inact:381,inc:[6,11,21,181,302,311,312,314,317],includ:[0,1,3,6,8,9,10,11,12,15,17,19,21,107,118,127,133,135,139,147,153,159,163,165,166,180,181,182,191,193,194,196,197,199,200,201,212,213,215,216,217,220,221,227,229,230,232,233,236,243,246,249,254,256,263,267,270,271,274,277,279,281,284,290,291,293,297,299,301,312,325,340,358,359,362,363,367,370,373,376,377,380,405,415,418,440,442,447,453,472,497,514,524,526,549],inconsist:[12,16,20,440],increas:6,increment:[170,177],indefinit:524,independ:[18,425,472],index:[3,6,12,14,15,204,205,211,212,213,214,219,220,231,365,367,368,370,371,373],index_nam:[8,211,212],index_opt:205,indexdetail:548,indexfilterset:21,indexs:548,indic:[6,125,126,127,262,345,353,455,456,466,501,524,531,533,535,541,542,544,545,546,548],individu:[191,370,393,516,517,518],industri:442,info:[17,19,28,65],inform:[0,4,5,106,127,146,194,199,201,210,211,216,221,235,237,245,246,247,254,278,393,404,415,497,524,543,545,547,548],ingress:5,inherit:[133,135,139,165,166,180,185,189,193,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,243,245,246,249,274,279,281,284,290,291,294,295,296,297,299,425,472],initi:[2,4,13,15,17,91,102,106,129,133,148,165,166,172,183,188,193,196,197,200,205,215,217,218,232,233,237,242,247,249,263,264,270,273,274,290,291,299,305,308,309,363,366,369,372,374,376,443,490,524,548],inlin:[10,11],input:[11,12,549],input_fil:363,insensit:[491,492,493,508,509,510,516,517,518,524],insert:[3,5,7,9,11,12,20,21,109,110,116,121,123,127,136,137,165,180,193,203,227,228,229,230,238,243,246,249,299,313,375,424,472,524],insert_cmd:127,insert_data:[11,21],insert_opt:[180,424,472],insertedcount:[229,230],insid:216,insofar:382,instal:[1,4,5,10,13,15,442,549],instanc:[0,1,11,21,141,144,145,150,326,360,361,363,405,496,498,504,524,548],instead:[4,103,104,127,138,148,155,164,185,186,187,189,199,201,202,206,216,219,221,228,238,242,247,263,280,283,300,355,356,381,392,497,530,541,542,543,544,545,546,548,549],instruct:[0,11,17,313,548,549],int32:[10,133,135,139,165,166,192,193,194,197,200,201,212,213,215,220,232,233,236,248,249,274,279,281,284,290,291,298,299,492,517],int32_t:[142,143,161,180,184,329,370,455,456,465,466,472,532,535,543,544,546],int64:[10,192,221,248,298,336],int64_t:[27,30,32,40,41,46,48,50,64,72,180,199,200,201,215,258,259,268,333,336,345,398,403,414,426,429,436,437,438,472,548],integ:[221,329,333,353,403,406,509,532,535],integr:[19,363],intend:[4,17,198,275,548],interact:548,interfac:[131,273,317,340,376,380,406,426,427,429,461],intern:[19,183,236,381,490,493,548],interpret:[133,197,274,345,524],interv:[5,7,524],introduc:[4,12,166,233,291],introduct:[22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,159,182,468,469,470,548],invalid:[0,4,12,21,110,112,114,116,121,123,131,132,133,148,159,161,165,166,168,171,172,180,182,184,193,194,196,197,205,206,207,208,212,213,218,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,254,267,268,271,273,274,279,289,290,291,292,293,299,302,325,343,349,362,379,386,408,442,447,490,491,492,493,527,538],invis:216,invok:17,iov:[342,354,363,438,456,466],iov_bas:[363,376],iov_len:[363,376],iov_max:438,iovcnt:[342,354,438,456,466],iovec:376,irrespect:406,is_initi:370,iseof:21,ismast:[7,67,70,75,85,86,87,183,406,412,414,524],isod:548,isol:[393,524],issu:[0,4,5,442,524,548],issuer:524,item:[17,456,466],iter:[9,11,12,125,126,127,253,254,262,265,270,281,339,340,355,359,548],its:[6,7,11,12,17,18,19,21,62,84,90,99,127,133,135,139,141,155,165,166,173,181,190,193,194,197,198,200,201,209,212,213,215,220,221,232,233,236,249,262,274,275,279,281,284,290,291,299,343,363,412,418,423,442,490,515,524,548],java:5,javascript:10,jira:5,journal:[524,530,531,539,542],json:[1,10,127,165,193,217,490],jsw:10,just:[11,363,393,405,524],keep:[0,5,17,155,429],keepal:0,kei:[3,6,8,11,12,115,116,120,121,122,123,165,193,201,204,205,214,231,370,406,442,487,524,547,548],kept:155,kerbero:[15,17,515,524,549],kerberosus:507,keychain:442,keylen:548,killcursor:5,kind:[11,21,363],kinit:4,klistcredenti:4,know:[4,12,227,229,230,375,381,482],knowledg:[468,469,470],known:[4,12,15,138,139,147,393,467,468,469,508,509,510,516,517,518,524],krb5cc_1000:4,krbtgt:4,label:[180,301],lack:524,lag:[406,524],lang_nam:548,languag:[7,11,15,21,118,167,263,264,267,461,548],language_overrid:370,larg:[30,40,48,202,203],larger:12,last:[1,169,170,222,327,381,406,431,524,548],last_tim:9,lasterrorobject:[311,312,313,315,316,317],lastextents:548,lastnam:[302,311,312,313,314,315,316,317],lastwrited:406,later:[6,11,21,112,114,116,121,123,127,133,165,166,193,194,197,200,201,207,208,212,213,215,216,232,233,236,237,245,246,249,269,270,274,279,290,291,299,311,381,406],latest:17,latitud:1,launch:[7,21],law:[11,21],lazi:270,lbson:548,ldap:[4,17],leak:[5,9],learn:549,least:[155,222,406,442,547],leav:[12,118,267,268],left:[127,524],legaci:[6,15,221],len:10,length:[11,147,160,183,229,333,352,439,467,548],less:[19,398,403,548],let:[1,9,17],letter:1,level:[15,19,167,263,264,382,392,439,457,524],lib:[3,8,9,11,21,163,165,180,181,191,193,270,472,548,549],libbson:[10,12,13,15,548,549],libicu:4,libmongoc:[3,8,9,11,13,14,15,18,21,127,128,163,165,166,180,181,191,193,233,270,291,318,319,320,321,472,524],librari:[13,15,16,442,526,548,549],libresolv:524,libsasl2:17,libssl:17,licens:[11,21],lifecycl:[2,13,15],lifetim:[18,126,265,422,454,475,476,477],like:[0,1,3,4,5,7,8,10,11,16,17,155,169,216,221,269,281,314,321,347,363,426,427,429,442,492,524,548,549],limit:[1,11,21,130,157,195,199,200,201,206,215,216,221,234,264,266,268,272],line:[9,17,302,311,312,313,314,315,316,317,524,548],lineariz:393,linger:5,link:[4,15,29,39,47,54,60,66,69,73,77,364,489],linker:549,linux:[5,17,440,442],list:[0,4,5,7,10,12,17,29,39,47,54,60,66,69,73,77,133,138,139,147,165,166,193,194,197,221,232,233,249,274,281,284,290,291,299,337,338,339,340,355,359,363,364,393,406,442,489,524,549],listcollect:[263,264,281,284],listen:[0,127,192,248,298,434,524],littl:19,lldb_bson:10,lldbinit:10,lmongoc:548,load:[1,10,442],loc:1,local:[0,6,9,10,11,17,21,165,193,201,221,227,229,230,262,393,401,432,442,548],localhost:[0,1,3,4,6,11,21,127,246,254,297,317,363,405,487,490,492,507,513,515,524,548],localthreshold:524,localthresholdm:524,locat:[1,106,110,112,114,125,126,131,132,133,138,139,141,148,165,166,167,168,171,172,180,193,196,197,199,200,201,204,205,206,207,208,210,211,212,213,214,215,216,217,218,219,227,228,229,230,232,233,234,235,236,237,238,242,244,245,246,247,249,253,254,265,271,273,274,276,278,279,280,283,284,289,290,291,292,293,299,325,327,338,343,356,357,358,362,370,379,507],locktimeout:12,log:[2,13,15,32,41,50,159,160,161,182,183,184,267,302,311,313,314,323,349,386,513,524,527,541,542,543,544,545,546,548],log_domain:19,log_func:19,log_level:19,logic:[3,12,127,133,165,166,167,171,176,192,193,197,232,233,248,249,274,290,291,298,299,406],login:5,longer:[4,136,137,146,152,156,183,190,192,194,198,202,203,216,248,250,275,298,310,323,339,355,357,358,359,379,387,391,430,435,442,443,449,450,459,506,528,540],longest:524,longitud:1,look:[10,17,363,442,524,548],loop:[7,254,524],loos:[455,465,466],lot:[11,21,381],low:[263,264,382],lower:[6,165,193,201,221,383],lte:[20,317,380],macbook:21,machin:[11,21,442],maco:15,macro:[393,513,526,548],made:[9,142,143,363,431],mai:[0,3,6,9,11,12,18,19,20,21,110,112,114,115,116,121,123,126,133,135,139,159,165,166,180,181,182,188,190,192,193,194,197,200,201,202,203,205,207,208,212,213,215,220,228,229,230,232,233,236,237,245,246,248,249,264,270,274,279,280,281,284,290,291,292,298,299,332,345,367,370,373,375,381,382,406,407,408,418,423,431,443,448,452,472,482,524,526,544,546],main:[0,1,3,5,6,8,9,11,16,18,19,21,127,163,165,180,181,191,193,217,246,254,270,297,317,363,380,405,472,548],mainli:107,maintain:[12,191],major:[128,165,185,189,192,193,241,248,296,298,393,524,526,533,544,547,548],make:[4,6,12,15,17,19,165,193,201,316,317,323,401,406,442,524,549],makefil:17,man:[12,442,524],manag:[5,15,191,196,273,548],mani:[0,12,200,215],manner:548,manual:[8,112,114,116,121,123,127,133,136,137,165,166,181,193,194,197,200,201,207,208,212,213,215,216,221,232,233,236,237,245,246,249,255,266,274,279,281,284,290,291,299,370,382,393,424,524],map:[11,455,465,466],map_reduce_advanc:11,map_reduce_bas:11,mapper:11,mapreduc:[13,14,15,166,233,291],mark:[392,541,542,543,544,545,546],marshal:340,master:17,match:[0,1,12,116,121,123,155,194,200,206,207,208,215,217,234,235,236,237,244,245,246,254,262,313,355,356,357,358,359,362,378,380,405,406,407,408,468,482,524,548],matchedcount:[237,245,246],matcher:[280,377,378,380],math:548,matic:548,matter:406,max:[1,12,127,142,143,195,216,221,434],max_await_time_m:269,max_pool_s:154,max_staleness_second:403,max_tim:127,max_time_m:314,maxawaittimem:[126,127,192,221,248,264,298],maxidletimem:524,maximum:[126,142,143,154,155,192,200,215,221,248,255,266,268,269,272,298,314,406,524],maxpools:[157,524],maxscan:221,maxstalenesssecond:[398,403,524],maxtimem:[181,221,269,307],md5:[334,341,350,352],mean:[4,5,6,9,12,180,255,264,265,270,406,472,548],meant:[11,21,434],meanwhil:16,measur:414,mechan:[4,382],member:[0,3,12,147,406,524],memcpi:0,memori:[5,9,16,129,196,273,374,409],mere:6,messag:[0,1,3,6,8,9,11,12,19,21,32,41,50,127,139,143,147,161,163,165,180,181,191,193,196,199,200,201,213,215,216,217,221,246,254,270,284,302,311,312,313,314,315,316,317,323,363,405,424,472,524,548],metadata:[3,335,341,351,352,361],method:[4,6,363,524,549],micro:[128,526],microsecond:[27,46,64,72,436,437,438],microsoft:[13,14,15,17,426,427,429],middl:[442,524],might:[0,4,11,12,262],migrat:[199,201,263],millisecond:[6,126,269,314,336,414,426,429,455,456,465,466,524,535,544,546],mimic:452,min:[1,221],min_byt:[342,455,456,465],min_pool_s:155,mind:429,ming64_shel:17,mingw64:17,mingw:15,minheartbeatfrequencym:517,minim:7,minimum:[128,155,342,455,456,548],minor:[128,526],minpools:524,minut:[0,7,18,181,190,381,418,423,524],misconfigur:190,miss:[12,127],mistak:[166,233,291],mix:383,mkdir:[17,21],mktime:548,mode:[130,131,195,196,272,273,394,399,402,404,450,497,524],model:[363,455,465,466],moder:317,modif:[217,344],modifi:[25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,108,122,123,144,145,149,150,175,176,178,217,218,221,222,223,224,225,226,251,285,286,287,288,303,310,315,316,317,328,330,331,332,334,335,344,354,360,361,366,369,372,375,381,390,400,410,441,448,482,485,486,487,488,489,490,493,494,495,496,497,498,499,502,503,504,534,537,547],modifiedcount:[237,245,246],modul:[10,17],mongo:[0,1,4,9,10,12,17,20,21,147,165,193,381,415,416,469,524,548,549],mongo_uri:9,mongoc:[0,1,3,5,6,8,9,11,17,21,127,163,165,180,181,191,193,194,196,199,200,201,215,216,217,221,243,246,270,297,340,363,367,370,373,376,380,382,383,384,385,405,415,418,440,461,472,526,547,549],mongoc_apm_callbacks_destroi:[3,13,23,24],mongoc_apm_callbacks_new:[3,13,24],mongoc_apm_callbacks_t:[3,13,15,22,23,80,81,82,83,84,85,86,87,88,89,90,91,159,182],mongoc_apm_command_failed_cb_t:80,mongoc_apm_command_failed_get_command_nam:[3,13,34],mongoc_apm_command_failed_get_context:[3,13,34],mongoc_apm_command_failed_get_dur:[13,34],mongoc_apm_command_failed_get_error:[3,13,34],mongoc_apm_command_failed_get_host:[13,34],mongoc_apm_command_failed_get_operation_id:[13,34],mongoc_apm_command_failed_get_repli:[13,34],mongoc_apm_command_failed_get_request_id:[13,34],mongoc_apm_command_failed_get_server_id:[13,34],mongoc_apm_command_failed_t:[3,13,15,25,26,27,28,29,30,31,32,33,80],mongoc_apm_command_started_cb_t:81,mongoc_apm_command_started_get_command:[3,13,43],mongoc_apm_command_started_get_command_nam:[3,13,43],mongoc_apm_command_started_get_context:[3,13,43],mongoc_apm_command_started_get_database_nam:[13,43],mongoc_apm_command_started_get_host:[3,13,43],mongoc_apm_command_started_get_operation_id:[13,43],mongoc_apm_command_started_get_request_id:[13,43],mongoc_apm_command_started_get_server_id:[13,43],mongoc_apm_command_started_t:[3,13,15,35,36,37,38,39,40,41,42,81],mongoc_apm_command_succeeded_cb_t:82,mongoc_apm_command_succeeded_get_command_nam:[3,13,52],mongoc_apm_command_succeeded_get_context:[3,13,52],mongoc_apm_command_succeeded_get_dur:[13,52],mongoc_apm_command_succeeded_get_host:[13,52],mongoc_apm_command_succeeded_get_operation_id:[13,52],mongoc_apm_command_succeeded_get_repli:[3,13,52],mongoc_apm_command_succeeded_get_request_id:[13,52],mongoc_apm_command_succeeded_get_server_id:[13,52],mongoc_apm_command_succeeded_t:[3,13,15,44,45,46,47,48,49,50,51,82],mongoc_apm_server_changed_cb_t:83,mongoc_apm_server_changed_get_context:[3,13,58],mongoc_apm_server_changed_get_host:[3,13,58],mongoc_apm_server_changed_get_new_descript:[3,13,58],mongoc_apm_server_changed_get_previous_descript:[3,13,58],mongoc_apm_server_changed_get_topology_id:[13,58],mongoc_apm_server_changed_t:[3,13,15,53,54,55,56,57,83],mongoc_apm_server_closed_cb_t:84,mongoc_apm_server_closed_get_context:[3,13,62],mongoc_apm_server_closed_get_host:[3,13,62],mongoc_apm_server_closed_get_topology_id:[13,62],mongoc_apm_server_closed_t:[3,13,15,59,60,61,84],mongoc_apm_server_heartbeat_failed_cb_t:85,mongoc_apm_server_heartbeat_failed_get_context:[3,13,67],mongoc_apm_server_heartbeat_failed_get_dur:[13,67],mongoc_apm_server_heartbeat_failed_get_error:[3,13,67],mongoc_apm_server_heartbeat_failed_get_host:[3,13,67],mongoc_apm_server_heartbeat_failed_t:[3,13,15,63,64,65,66,85],mongoc_apm_server_heartbeat_started_cb_t:86,mongoc_apm_server_heartbeat_started_get_context:[3,13,70],mongoc_apm_server_heartbeat_started_get_host:[3,13,70],mongoc_apm_server_heartbeat_started_t:[3,13,15,68,69,86],mongoc_apm_server_heartbeat_succeeded_cb_t:87,mongoc_apm_server_heartbeat_succeeded_get_context:[3,13,75],mongoc_apm_server_heartbeat_succeeded_get_dur:[13,75],mongoc_apm_server_heartbeat_succeeded_get_host:[3,13,75],mongoc_apm_server_heartbeat_succeeded_get_repli:[3,13,75],mongoc_apm_server_heartbeat_succeeded_t:[3,13,15,71,72,73,74,87],mongoc_apm_server_opening_cb_t:88,mongoc_apm_server_opening_get_context:[3,13,79],mongoc_apm_server_opening_get_host:[3,13,79],mongoc_apm_server_opening_get_topology_id:[13,79],mongoc_apm_server_opening_t:[3,13,15,76,77,78,88],mongoc_apm_set_command_failed_cb:[3,13,24],mongoc_apm_set_command_started_cb:[3,13,24],mongoc_apm_set_command_succeeded_cb:[3,13,24],mongoc_apm_set_server_changed_cb:[3,13,24],mongoc_apm_set_server_closed_cb:[3,13,24],mongoc_apm_set_server_heartbeat_failed_cb:[3,13,24],mongoc_apm_set_server_heartbeat_started_cb:[3,13,24],mongoc_apm_set_server_heartbeat_succeeded_cb:[3,13,24],mongoc_apm_set_server_opening_cb:[3,13,24],mongoc_apm_set_topology_changed_cb:[3,13,24,468,469],mongoc_apm_set_topology_closed_cb:[3,13,24],mongoc_apm_set_topology_opening_cb:[3,13,24],mongoc_apm_topology_changed_cb_t:89,mongoc_apm_topology_changed_get_context:[3,13,96],mongoc_apm_topology_changed_get_new_descript:[3,13,96],mongoc_apm_topology_changed_get_previous_descript:[3,13,96],mongoc_apm_topology_changed_get_topology_id:[13,96],mongoc_apm_topology_changed_t:[3,13,15,89,92,93,94,95],mongoc_apm_topology_closed_cb_t:90,mongoc_apm_topology_closed_get_context:[3,13,99],mongoc_apm_topology_closed_get_topology_id:[13,99],mongoc_apm_topology_closed_t:[3,13,15,90,97,98],mongoc_apm_topology_opening_cb_t:91,mongoc_apm_topology_opening_get_context:[3,13,102],mongoc_apm_topology_opening_get_topology_id:[13,102],mongoc_apm_topology_opening_t:[3,13,15,91,100,101],mongoc_bulk_operation_delet:[13,119],mongoc_bulk_operation_delete_on:[13,119],mongoc_bulk_operation_destroi:[6,11,13,21,119,202,203],mongoc_bulk_operation_execut:[6,11,12,13,21,103,104,107,109,110,111,112,113,114,115,116,118,119,120,121,122,123,202,203],mongoc_bulk_operation_get_hint:[13,106,119],mongoc_bulk_operation_get_write_concern:[13,119],mongoc_bulk_operation_insert:[6,11,13,21,116,119,202,203],mongoc_bulk_operation_insert_with_opt:[13,109,119],mongoc_bulk_operation_remov:[6,13,103,112,119],mongoc_bulk_operation_remove_many_with_opt:[13,103,104,111,113,114,116,119],mongoc_bulk_operation_remove_on:[6,13,104,111,114,119],mongoc_bulk_operation_remove_one_with_opt:[13,103,104,111,112,113,119],mongoc_bulk_operation_replace_on:[6,13,119],mongoc_bulk_operation_replace_one_with_opt:[6,13,115,119],mongoc_bulk_operation_set_bypass_document_valid:[6,13,119],mongoc_bulk_operation_set_hint:[13,119],mongoc_bulk_operation_t:[2,6,11,13,15,18,21,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,202,203],mongoc_bulk_operation_upd:[13,119,122,202,203],mongoc_bulk_operation_update_many_with_opt:[6,13,119,120,123],mongoc_bulk_operation_update_on:[13,119],mongoc_bulk_operation_update_one_with_opt:[6,13,119,120,121,122],mongoc_change_stream_destroi:[13,127,192,248,298],mongoc_change_stream_error_docu:[13,127,192,248,298],mongoc_change_stream_next:[12,13,127,192,248,298],mongoc_change_stream_t:[2,13,15,18,124,125,126,181,190,192,248,298,418,423],mongoc_check_vers:[13,526],mongoc_cleanup:[0,1,3,5,6,8,11,13,16,18,19,21,127,163,165,180,181,191,193,217,254,270,297,317,363,374,380,405,472,548],mongoc_client_command:[13,131,191,547],mongoc_client_command_simpl:[3,13,133,147,163,165,166,191,193,197,274,547,548],mongoc_client_command_simple_with_server_id:[13,191],mongoc_client_command_with_opt:[12,13,130,191],mongoc_client_destroi:[0,1,3,6,8,9,11,13,18,21,127,140,152,165,180,181,191,193,213,217,246,254,270,297,317,363,405,472,548],mongoc_client_find_databases_with_opt:[13,191,266,268,269],mongoc_client_get_collect:[1,3,6,9,13,127,181,191,213,217,246,254,270,370,405,424,548],mongoc_client_get_databas:[6,8,11,13,21,180,191,297,317,472,548],mongoc_client_get_database_nam:[13,191],mongoc_client_get_database_names_with_opt:[12,13,138,191],mongoc_client_get_default_databas:[13,191,514],mongoc_client_get_gridf:[13,191,363],mongoc_client_get_max_bson_s:[13,191],mongoc_client_get_max_message_s:[13,191],mongoc_client_get_read_concern:[13,191,390],mongoc_client_get_read_pref:[13,191],mongoc_client_get_server_descript:[13,191,412,415,417],mongoc_client_get_server_statu:[13,191],mongoc_client_get_uri:[13,191],mongoc_client_get_write_concern:[13,191,537],mongoc_client_new:[0,4,7,13,18,140,191,213,254,297,405,424,548],mongoc_client_new_from_uri:[1,3,6,8,9,11,13,18,21,127,151,165,180,181,191,193,217,246,270,317,363,472,513,548],mongoc_client_pool_destroi:[13,18,156,163,548],mongoc_client_pool_max_s:[13,163],mongoc_client_pool_min_s:[13,154,163],mongoc_client_pool_new:[7,13,18,163,548],mongoc_client_pool_pop:[7,13,18,159,160,161,162,163,164,524,548],mongoc_client_pool_push:[7,13,18,155,157,163,548],mongoc_client_pool_set_apm_callback:[3,13,24,26,37,45,53,59,63,68,71,76,92,97,100,163],mongoc_client_pool_set_appnam:[13,163],mongoc_client_pool_set_error_api:[12,13,163,184,548],mongoc_client_pool_set_ssl_opt:[13,163,187,442,524],mongoc_client_pool_t:[2,7,13,15,18,153,154,155,156,157,158,159,160,161,162,164,183,185,186,187,189,191,442,524,548],mongoc_client_pool_try_pop:[13,162,163],mongoc_client_read_command_with_opt:[13,130,133,148,166,191,193,194,197,200,201,215,232,233,242,247,249,274,290,291,299,386],mongoc_client_read_write_command_with_opt:[13,130,191],mongoc_client_select_serv:[13,133,135,139,165,166,191,193,194,197,200,201,212,213,215,220,221,232,233,236,249,274,279,281,284,290,291,299],mongoc_client_session_abort_transact:[13,169,170,172,173,174,175,176,177,178,180,181,190,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,480,481],mongoc_client_session_advance_cluster_tim:[13,168,170,172,173,174,175,176,177,178,180,181,190,419,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_client_session_advance_operation_tim:[13,168,169,172,173,174,175,176,177,178,180,181,190,419,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_client_session_append:[13,133,135,139,165,166,180,181,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,424,472],mongoc_client_session_commit_transact:[12,13,168,169,170,173,174,175,176,177,178,180,181,190,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,480,481],mongoc_client_session_destroi:[13,18,168,169,170,172,174,175,176,177,178,180,181,190,418,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,480,481],mongoc_client_session_get_cli:[13,168,169,170,172,173,175,176,177,178,180,181,190,419,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_client_session_get_cluster_tim:[13,168,169,170,172,173,174,176,177,178,180,181,190,419,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_client_session_get_lsid:[13,168,169,170,172,173,174,175,177,178,180,181,190,419,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_client_session_get_operation_tim:[13,168,169,170,172,173,174,175,176,178,180,181,190,419,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_client_session_get_opt:[13,168,169,170,172,173,174,175,176,177,180,181,190,419,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_client_session_in_transact:[13,181],mongoc_client_session_start_transact:[12,13,133,135,139,165,166,168,169,170,172,173,174,175,176,177,178,181,190,193,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,301,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,480,481],mongoc_client_session_t:[2,13,15,18,133,135,139,165,166,168,169,170,171,172,173,174,175,176,177,178,179,180,190,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,418,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,480,481,543],mongoc_client_set_apm_callback:[3,13,24,26,37,45,53,59,63,68,71,76,92,97,100,191],mongoc_client_set_appnam:[13,160,191,548],mongoc_client_set_error_api:[1,3,6,8,9,11,12,13,21,165,180,181,191,193,213,217,246,254,270,317,363,405,424,472],mongoc_client_set_read_concern:[13,191,390],mongoc_client_set_read_pref:[13,191],mongoc_client_set_ssl_opt:[0,4,13,162,191,442,524],mongoc_client_set_stream_initi:[13,191],mongoc_client_set_write_concern:[13,191,537],mongoc_client_start_sess:[13,18,133,135,139,165,166,168,169,170,172,173,174,175,176,177,178,180,181,191,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,418,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,480,481],mongoc_client_t:[0,1,2,3,4,6,7,8,9,11,12,13,15,18,21,127,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,155,157,158,163,164,165,166,167,174,180,181,182,183,184,185,186,187,188,189,190,192,193,213,217,246,254,263,264,270,297,317,352,363,405,418,423,424,442,472,487,513,524,548],mongoc_client_watch:[13,127,191,248,298],mongoc_client_write_command_with_opt:[13,130,133,165,166,171,191,194,197,203,205,207,208,212,213,229,230,233,236,237,245,246,249,274,279,291,299,527],mongoc_collection_aggreg:[1,13,243,263,264],mongoc_collection_command:[13,196,243,547],mongoc_collection_command_simpl:[13,21,216,221,232,233,243,249,547,548],mongoc_collection_command_with_opt:[13,195,243],mongoc_collection_copi:[13,243],mongoc_collection_count:[13,200,201,243,548],mongoc_collection_count_docu:[13,199,201,215,243],mongoc_collection_count_with_opt:[12,13,200,243],mongoc_collection_create_bulk_oper:[13,243],mongoc_collection_create_bulk_operation_with_opt:[6,11,13,21,106,202,243],mongoc_collection_create_index:[12,13,243,370],mongoc_collection_create_index_with_opt:[13,243],mongoc_collection_delet:[13,243],mongoc_collection_delete_mani:[12,13,206,208,234,243,300],mongoc_collection_delete_on:[12,13,206,207,234,243,300,548],mongoc_collection_destroi:[1,3,6,9,11,13,21,127,136,180,181,191,198,213,217,243,246,254,270,282,317,370,405,472,548],mongoc_collection_drop:[3,13,243,246,317],mongoc_collection_drop_index:[13,243,547],mongoc_collection_drop_index_with_opt:[13,243],mongoc_collection_drop_with_opt:[13,210,211,243],mongoc_collection_ensure_index:[13,243],mongoc_collection_estimated_document_count:[13,199,200,201,243],mongoc_collection_find:[13,243,259,268],mongoc_collection_find_and_modifi:[13,243],mongoc_collection_find_and_modify_with_opt:[13,217,243,302,311,312,313,314,315,316,317],mongoc_collection_find_index:[13,243],mongoc_collection_find_indexes_with_opt:[13,219,243,266,268,269],mongoc_collection_find_with_opt:[9,11,12,13,181,191,216,243,246,254,264,269,270,314,340,358,359,405,548],mongoc_collection_get_last_error:[13,243],mongoc_collection_get_nam:[13,196,243],mongoc_collection_get_read_concern:[13,243],mongoc_collection_get_read_pref:[13,243],mongoc_collection_get_write_concern:[13,243],mongoc_collection_insert:[13,243],mongoc_collection_insert_bulk:[12,13,243],mongoc_collection_insert_mani:[3,13,227,228,230,243],mongoc_collection_insert_on:[3,12,13,127,180,193,227,229,238,243,246,249,299,424,472,548],mongoc_collection_keys_to_index_str:[8,13,243],mongoc_collection_read_command_with_opt:[13,195,243],mongoc_collection_read_write_command_with_opt:[13,195,243],mongoc_collection_remov:[13,243],mongoc_collection_renam:[13,243],mongoc_collection_rename_with_opt:[13,235,243],mongoc_collection_replace_on:[12,13,238,243,244,246],mongoc_collection_sav:[13,243],mongoc_collection_set_read_concern:[13,198,243],mongoc_collection_set_read_pref:[13,198,243],mongoc_collection_set_write_concern:[13,198,243],mongoc_collection_stat:[13,243],mongoc_collection_t:[1,2,3,6,9,11,13,15,18,21,127,136,180,181,191,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,232,233,234,235,236,237,238,239,240,241,242,244,245,246,247,248,249,254,270,276,282,297,302,311,312,313,314,315,316,317,360,361,405,424,472,548],mongoc_collection_upd:[13,243,316],mongoc_collection_update_mani:[12,13,237,243,244,246],mongoc_collection_update_on:[12,13,181,237,243,244,245,548],mongoc_collection_valid:[13,243],mongoc_collection_watch:[13,126,127,192,298],mongoc_collection_write_command_with_opt:[8,13,127,195,243],mongoc_crit:19,mongoc_cursor_clon:[13,270],mongoc_cursor_curr:[13,270],mongoc_cursor_destroi:[1,9,11,13,130,181,191,194,195,216,221,250,254,270,272,281,405,548],mongoc_cursor_error:[1,9,11,12,13,130,135,181,191,216,220,221,254,263,264,265,270,281,405],mongoc_cursor_error_docu:[13,125,130,253,270],mongoc_cursor_get_batch_s:[13,270],mongoc_cursor_get_hint:[13,270],mongoc_cursor_get_host:[13,270,364],mongoc_cursor_get_id:[13,270],mongoc_cursor_get_limit:[13,270],mongoc_cursor_get_max_await_time_m:[13,270],mongoc_cursor_is_al:[13,270],mongoc_cursor_mor:[9,13,261,270],mongoc_cursor_new_from_command_repli:[13,270],mongoc_cursor_new_from_command_reply_with_opt:[13,263,270],mongoc_cursor_next:[1,9,11,12,13,126,130,181,191,194,216,221,246,250,254,262,268,269,270,272,281,405,548],mongoc_cursor_set_batch_s:[13,135,220,269,270,281],mongoc_cursor_set_hint:[13,256,270],mongoc_cursor_set_limit:[13,135,220,259,270,281],mongoc_cursor_set_max_await_time_m:[9,13,135,220,260,270,281],mongoc_cursor_t:[1,2,9,11,13,15,18,130,135,181,190,191,194,195,209,216,219,220,221,246,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,272,280,281,340,405,418,423,548],mongoc_database_add_us:[13,297],mongoc_database_command:[11,13,273,297,547],mongoc_database_command_simpl:[11,13,21,290,291,297,299,547],mongoc_database_command_with_opt:[12,13,272,297],mongoc_database_copi:[13,297],mongoc_database_create_collect:[6,13,180,297,317,472],mongoc_database_destroi:[6,8,11,13,21,137,140,180,275,297,317,472,548],mongoc_database_drop:[13,297],mongoc_database_drop_with_opt:[13,278,297],mongoc_database_find_collect:[13,297],mongoc_database_find_collections_with_opt:[13,266,268,269,280,297],mongoc_database_get_collect:[11,13,21,180,294,295,296,297,472],mongoc_database_get_collection_nam:[13,297],mongoc_database_get_collection_names_with_opt:[13,281,283,297],mongoc_database_get_nam:[13,140,297],mongoc_database_get_read_concern:[13,297],mongoc_database_get_read_pref:[13,297],mongoc_database_get_write_concern:[13,297],mongoc_database_has_collect:[13,297],mongoc_database_read_command_with_opt:[13,272,297],mongoc_database_read_write_command_with_opt:[13,272,297],mongoc_database_remove_all_us:[13,297],mongoc_database_remove_us:[13,297],mongoc_database_set_read_concern:[13,275,297],mongoc_database_set_read_pref:[13,275,297],mongoc_database_set_write_concern:[13,275,297],mongoc_database_t:[2,6,8,11,13,15,18,21,137,140,180,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,298,299,317,472,548],mongoc_database_watch:[13,127,192,248,297],mongoc_database_write_command_with_opt:[8,13,272,297],mongoc_debug:19,mongoc_definit:548,mongoc_delete_flags_t:[2,13,15,206],mongoc_delete_non:300,mongoc_delete_single_remov:[206,300],mongoc_disable_shm:5,mongoc_enable_ssl:[162,187],mongoc_error:[19,147,180,363,472],mongoc_error_api_version_2:[12,161,184],mongoc_error_api_version_legaci:[12,161,184],mongoc_error_bson:12,mongoc_error_bson_invalid:12,mongoc_error_change_stream_no_resume_token:12,mongoc_error_cli:12,mongoc_error_client_authent:12,mongoc_error_client_in_exhaust:12,mongoc_error_client_no_acceptable_p:12,mongoc_error_client_session_failur:12,mongoc_error_client_too_big:12,mongoc_error_collect:12,mongoc_error_collection_delete_fail:12,mongoc_error_collection_insert_fail:12,mongoc_error_collection_update_fail:12,mongoc_error_command:[6,12],mongoc_error_command_invalid_arg:12,mongoc_error_cursor:12,mongoc_error_cursor_invalid_cursor:12,mongoc_error_duplicate_kei:12,mongoc_error_gridf:12,mongoc_error_gridfs_chunk_miss:12,mongoc_error_gridfs_corrupt:12,mongoc_error_gridfs_invalid_filenam:12,mongoc_error_gridfs_protocol_error:12,mongoc_error_has_label:[12,13,180,472],mongoc_error_namespac:12,mongoc_error_namespace_invalid:12,mongoc_error_protocol:12,mongoc_error_protocol_bad_wire_vers:12,mongoc_error_protocol_invalid_repli:12,mongoc_error_queri:12,mongoc_error_query_failur:[12,213],mongoc_error_sasl:12,mongoc_error_scram:12,mongoc_error_scram_protocol_error:12,mongoc_error_serv:[9,12,213],mongoc_error_server_select:[12,524],mongoc_error_server_selection_failur:12,mongoc_error_stream:12,mongoc_error_stream_connect:12,mongoc_error_stream_name_resolut:12,mongoc_error_stream_socket:12,mongoc_error_transact:12,mongoc_error_transaction_invalid:12,mongoc_error_write_concern:[6,12],mongoc_find_and_modify_flags_t:[306,313],mongoc_find_and_modify_non:313,mongoc_find_and_modify_opts_append:[13,314,317],mongoc_find_and_modify_opts_destroi:[13,302,310,311,312,313,314,315,316,317],mongoc_find_and_modify_opts_get_bypass_document_valid:[13,317],mongoc_find_and_modify_opts_get_field:[13,317],mongoc_find_and_modify_opts_get_flag:[13,317],mongoc_find_and_modify_opts_get_max_time_m:[13,317],mongoc_find_and_modify_opts_get_sort:[13,317],mongoc_find_and_modify_opts_get_upd:[13,317],mongoc_find_and_modify_opts_new:[13,302,311,312,313,314,315,316,317],mongoc_find_and_modify_opts_set_bypass_document_valid:[13,304,317],mongoc_find_and_modify_opts_set_field:[13,305,317],mongoc_find_and_modify_opts_set_flag:[13,306,312,316,317],mongoc_find_and_modify_opts_set_max_time_m:[13,302,307,317],mongoc_find_and_modify_opts_set_sort:[13,308,317],mongoc_find_and_modify_opts_set_upd:[13,302,309,311,312,313,314,315,317],mongoc_find_and_modify_opts_t:[2,13,15,218,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316],mongoc_find_and_modify_remov:313,mongoc_find_and_modify_return_new:[312,313,316,317],mongoc_find_and_modify_upsert:[313,317],mongoc_get_major_vers:[13,526],mongoc_get_micro_vers:[13,526],mongoc_get_minor_vers:[13,526],mongoc_get_vers:[13,526],mongoc_gridf:363,mongoc_gridfs_create_fil:[13,363,454],mongoc_gridfs_create_file_from_stream:[13,363,454],mongoc_gridfs_destroi:[13,141,363],mongoc_gridfs_drop:[13,363],mongoc_gridfs_file_destroi:[13,322,323,339,340,352,356,357,358,363],mongoc_gridfs_file_error:[13,342,344,352,354,363],mongoc_gridfs_file_get_alias:[13,352],mongoc_gridfs_file_get_chunk_s:[13,352],mongoc_gridfs_file_get_content_typ:[13,352],mongoc_gridfs_file_get_filenam:[13,352,363],mongoc_gridfs_file_get_id:[13,352],mongoc_gridfs_file_get_length:[13,352],mongoc_gridfs_file_get_md5:[13,352],mongoc_gridfs_file_get_metadata:[13,352],mongoc_gridfs_file_get_upload_d:[13,352],mongoc_gridfs_file_list_destroi:[13,340,355,359,363],mongoc_gridfs_file_list_error:[13,340],mongoc_gridfs_file_list_next:[13,340,363],mongoc_gridfs_file_list_t:[2,13,15,18,337,338,339,352,355,359,363],mongoc_gridfs_file_opt_t:[2,13,15,322,323,352,363],mongoc_gridfs_file_readv:[13,352],mongoc_gridfs_file_remov:[13,352],mongoc_gridfs_file_sav:[12,13,346,347,348,350,351,352,363],mongoc_gridfs_file_seek:[13,352],mongoc_gridfs_file_set_alias:[13,352],mongoc_gridfs_file_set_content_typ:[13,352],mongoc_gridfs_file_set_filenam:[13,352],mongoc_gridfs_file_set_id:[12,13,352,363],mongoc_gridfs_file_set_md5:[13,352],mongoc_gridfs_file_set_metadata:[13,352],mongoc_gridfs_file_t:[2,13,15,18,322,323,326,327,328,329,330,331,332,333,334,335,336,339,340,341,342,343,344,345,346,347,348,349,350,351,353,354,356,357,358,363,454],mongoc_gridfs_file_tel:[13,352],mongoc_gridfs_file_writev:[13,322,352],mongoc_gridfs_find:[13,340,363],mongoc_gridfs_find_on:[13,363],mongoc_gridfs_find_one_by_filenam:[13,363],mongoc_gridfs_find_one_with_opt:[13,356,363],mongoc_gridfs_find_with_opt:[13,355,363],mongoc_gridfs_get_chunk:[13,363],mongoc_gridfs_get_fil:[13,363],mongoc_gridfs_remove_by_filenam:[12,13,363],mongoc_gridfs_t:[2,13,15,18,141,322,323,324,325,352,355,356,357,358,359,360,361,362],mongoc_handshake_appname_max:[160,183],mongoc_host_list_t:[2,13,15,29,39,47,54,60,66,69,73,77,191,257,410,489],mongoc_include_dir:548,mongoc_index_opt_geo_get_default:[13,367],mongoc_index_opt_geo_init:[13,367,370],mongoc_index_opt_geo_t:[2,13,15,365,366,370,373],mongoc_index_opt_get_default:[13,370],mongoc_index_opt_init:[13,370],mongoc_index_opt_storage_t:[370,373],mongoc_index_opt_t:[2,13,15,204,205,214,367,368,369,373],mongoc_index_opt_wt_get_default:[13,373],mongoc_index_opt_wt_init:[13,373],mongoc_index_opt_wt_t:[2,13,15,367,370,371,372],mongoc_info:19,mongoc_init:[0,1,3,5,6,8,9,11,13,16,18,19,21,127,129,163,165,180,181,191,193,217,254,270,297,317,363,380,405,472,548],mongoc_insert_continue_on_error:375,mongoc_insert_flags_t:[2,13,15,227,228],mongoc_insert_no_valid:375,mongoc_insert_non:375,mongoc_iovec_t:[2,13,15,342,354,363,438,456,466],mongoc_librari:548,mongoc_log:19,mongoc_log_default_handl:19,mongoc_log_domain:19,mongoc_log_func_t:19,mongoc_log_level_crit:19,mongoc_log_level_debug:19,mongoc_log_level_error:19,mongoc_log_level_info:19,mongoc_log_level_messag:19,mongoc_log_level_str:19,mongoc_log_level_t:19,mongoc_log_level_trac:19,mongoc_log_level_warn:19,mongoc_log_set_handl:19,mongoc_log_trace_dis:19,mongoc_log_trace_en:19,mongoc_major_vers:[318,526],mongoc_matcher_destroi:[13,379,380],mongoc_matcher_match:[13,380],mongoc_matcher_new:[13,378,380],mongoc_matcher_t:[2,13,15,377,378,379],mongoc_messag:19,mongoc_micro_vers:[319,526],mongoc_minor_vers:[320,526],mongoc_no_max_stal:[398,403,406],mongoc_query_await_data:[381,408],mongoc_query_exhaust:381,mongoc_query_flags_t:[2,13,15,130,194,195,199,201,216,272],mongoc_query_no_cursor_timeout:381,mongoc_query_non:[1,11,194,199,201,216,381,548],mongoc_query_oplog_replai:381,mongoc_query_parti:381,mongoc_query_slave_ok:381,mongoc_query_tailable_cursor:381,mongoc_rand:[2,13,15],mongoc_rand_add:[13,382],mongoc_rand_se:[13,382],mongoc_rand_statu:[13,382],mongoc_read_concern_append:[13,133,165,166,193,194,197,200,201,215,221,232,233,274,284,290,291,393],mongoc_read_concern_copi:[13,393],mongoc_read_concern_destroi:[13,165,180,193,284,387,391,393,472],mongoc_read_concern_get_level:[13,393],mongoc_read_concern_is_default:[13,393],mongoc_read_concern_level_avail:393,mongoc_read_concern_level_lineariz:393,mongoc_read_concern_level_loc:[185,393],mongoc_read_concern_level_major:[165,193,284,393],mongoc_read_concern_level_snapshot:393,mongoc_read_concern_new:[13,165,180,193,221,284,393,472],mongoc_read_concern_set_level:[13,165,180,193,221,284,393,472],mongoc_read_concern_t:[2,13,15,133,144,165,166,180,185,193,194,197,199,200,201,215,221,224,232,233,239,274,284,286,290,291,294,386,387,388,389,390,391,392,472,475,479,496,520],mongoc_read_mode_t:[2,13,15,399,402,404],mongoc_read_nearest:[394,406],mongoc_read_prefs_add_tag:[13,406],mongoc_read_prefs_copi:[13,406],mongoc_read_prefs_destroi:[3,11,13,165,181,193,396,402,405,406],mongoc_read_prefs_get_max_staleness_second:[13,406],mongoc_read_prefs_get_mod:[13,406],mongoc_read_prefs_get_tag:[13,406],mongoc_read_prefs_is_valid:[13,406],mongoc_read_prefs_new:[3,11,13,165,181,193,221,405,406],mongoc_read_prefs_set_max_staleness_second:[13,406],mongoc_read_prefs_set_mod:[13,406],mongoc_read_prefs_set_tag:[13,406],mongoc_read_prefs_t:[2,3,11,12,13,15,130,131,132,133,145,148,165,166,167,181,186,191,193,194,195,196,197,199,200,201,215,216,221,225,232,233,240,242,272,273,274,287,290,291,295,395,396,397,398,399,400,401,402,403,404,405,468,476,480,498,521],mongoc_read_primari:[130,131,195,196,240,272,273,295,394,406],mongoc_read_primary_pref:[394,406],mongoc_read_secondari:[3,11,165,181,193,221,394,405,406],mongoc_read_secondary_pref:[394,406],mongoc_remove_flags_t:[2,13,15,234],mongoc_remove_non:407,mongoc_remove_single_remov:[234,407],mongoc_reply_await_cap:408,mongoc_reply_cursor_not_found:408,mongoc_reply_flags_t:[2,13,15],mongoc_reply_non:408,mongoc_reply_query_failur:408,mongoc_reply_shard_config_stal:408,mongoc_server_description_destroi:[13,146,167,415],mongoc_server_description_host:[3,13,147,415],mongoc_server_description_id:[13,133,135,139,165,166,193,194,197,200,201,212,213,215,220,221,232,233,236,249,274,279,281,284,290,291,299,415],mongoc_server_description_ismast:[13,415],mongoc_server_description_new_copi:[13,415],mongoc_server_description_round_trip_tim:[13,415],mongoc_server_description_t:[2,3,13,15,55,56,62,79,84,88,146,147,167,409,410,411,412,413,414,416,417,467],mongoc_server_description_typ:[3,13,415],mongoc_server_descriptions_destroy_al:[3,13,147,415,467],mongoc_session_opt_t:[2,13,15,18,178,180,181,190,419,420,421,422,423,424,425,472],mongoc_session_opts_clon:[13,168,169,170,172,173,174,175,176,177,178,180,190,418,420,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_session_opts_destroi:[13,18,168,169,170,172,173,174,175,176,177,178,180,181,190,418,419,421,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_session_opts_get_causal_consist:[13,168,169,170,172,173,174,175,176,177,178,180,190,418,419,420,422,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_session_opts_get_default_transaction_opt:[13,168,169,170,172,173,174,175,176,177,178,180,190,418,419,420,421,423,424,425,473,474,475,476,477,478,479,480,481],mongoc_session_opts_new:[13,18,168,169,170,172,173,174,175,176,177,178,180,181,190,418,419,420,421,422,424,425,472,473,474,475,476,477,478,479,480,481],mongoc_session_opts_set_causal_consist:[13,18,168,169,170,172,173,174,175,176,177,178,180,181,190,418,419,420,421,422,423,425,473,474,475,476,477,478,479,480,481],mongoc_session_opts_set_default_transaction_opt:[13,168,169,170,172,173,174,175,176,177,178,180,190,418,419,420,421,422,423,424,472,473,474,475,476,477,478,479,480,481],mongoc_smallest_max_staleness_second:406,mongoc_socket_accept:[13,440],mongoc_socket_bind:[13,440],mongoc_socket_clos:[13,440],mongoc_socket_connect:[13,440],mongoc_socket_destroi:[13,426,435,440],mongoc_socket_errno:[13,428,440],mongoc_socket_getnameinfo:[13,440],mongoc_socket_getsocknam:[13,440],mongoc_socket_listen:[13,440],mongoc_socket_new:[13,440],mongoc_socket_recv:[13,440],mongoc_socket_send:[13,440],mongoc_socket_sendv:[13,440],mongoc_socket_setsockopt:[13,440],mongoc_socket_t:[2,13,15,426,427,428,429,430,431,432,433,434,435,436,437,438,439,458,459],mongoc_socklen_t:[427,429,433,439,457],mongoc_ssl_opt_get_default:[0,13,442],mongoc_ssl_opt_t:[0,2,4,13,15,162,187,441,524],mongoc_stat:549,mongoc_static_definit:548,mongoc_static_include_dir:548,mongoc_static_librari:548,mongoc_static_vers:548,mongoc_stream_buffered_new:[13,444,446,461,464],mongoc_stream_buffered_t:[2,13,15,443,453,461],mongoc_stream_clos:[13,461],mongoc_stream_cork:[13,461,464],mongoc_stream_destroi:[13,363,443,444,445,449,450,459,461],mongoc_stream_file_get_fd:[13,451],mongoc_stream_file_new:[13,451],mongoc_stream_file_new_for_path:[13,363,451],mongoc_stream_file_t:[2,13,15,448,449,450,461],mongoc_stream_flush:[13,461],mongoc_stream_get_base_stream:[13,461],mongoc_stream_gridfs_new:[13,352,363],mongoc_stream_initiator_t:[188,191],mongoc_stream_read:[13,456,461,465],mongoc_stream_readv:[13,363,454,455,461,465],mongoc_stream_setsockopt:[13,461],mongoc_stream_socket_get_socket:[13,460],mongoc_stream_socket_new:[13,460],mongoc_stream_socket_t:[2,13,15,458,459,461],mongoc_stream_t:[2,13,15,18,188,191,323,363,376,443,444,445,446,447,449,450,451,452,453,454,455,456,457,459,460,462,463,464,465,466],mongoc_stream_timed_out:[13,461],mongoc_stream_tls_t:[2,13,15,453,461],mongoc_stream_uncork:[13,446,461],mongoc_stream_writ:[13,455,456,461],mongoc_stream_writev:[13,454,455,456,461,465],mongoc_topology_description_get_serv:[3,13,470],mongoc_topology_description_has_readable_serv:[3,13,470],mongoc_topology_description_has_writable_serv:[3,13,470],mongoc_topology_description_t:[2,3,13,15,90,91,93,94,99,102,467,468,469,471],mongoc_topology_description_typ:[3,13,470],mongoc_transaction_opt_t:[2,13,15,133,135,139,165,166,180,193,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,422,425,473,474,475,476,477,478,479,480,481],mongoc_transaction_opts_clon:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,474,475,476,477,478,479,480,481],mongoc_transaction_opts_destroi:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,475,476,477,478,479,480,481],mongoc_transaction_opts_get_read_concern:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,474,476,477,478,479,480,481],mongoc_transaction_opts_get_read_pref:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,474,475,477,478,479,480,481],mongoc_transaction_opts_get_write_concern:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,474,475,476,478,479,480,481],mongoc_transaction_opts_new:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,474,475,476,477,479,480,481],mongoc_transaction_opts_set_read_concern:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,474,475,476,477,478,480,481],mongoc_transaction_opts_set_read_pref:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,481],mongoc_transaction_opts_set_write_concern:[13,168,169,170,172,173,174,175,176,177,178,180,190,419,420,421,422,423,424,425,472,473,474,475,476,477,478,479,480],mongoc_update_flags_t:[2,13,15,244],mongoc_update_multi_upd:[244,482],mongoc_update_no_valid:482,mongoc_update_non:482,mongoc_update_upsert:482,mongoc_uri_appnam:524,mongoc_uri_authmechan:524,mongoc_uri_authmechanismproperti:524,mongoc_uri_authsourc:524,mongoc_uri_canonicalizehostnam:524,mongoc_uri_compressor:524,mongoc_uri_connecttimeoutm:524,mongoc_uri_copi:[13,524],mongoc_uri_destroi:[1,3,6,8,9,11,13,21,127,163,165,180,181,191,193,217,246,270,317,363,472,483,506,524,548],mongoc_uri_get_auth_mechan:[4,13,486,490,511,512,515,524],mongoc_uri_get_auth_sourc:[4,13,485,490,511,512,515,524],mongoc_uri_get_compressor:[13,524],mongoc_uri_get_databas:[13,524],mongoc_uri_get_host:[13,364,524],mongoc_uri_get_mechanism_properti:[4,13,485,486,511,512,515,524],mongoc_uri_get_opt:[13,524],mongoc_uri_get_option_as_bool:[13,524],mongoc_uri_get_option_as_int32:[13,524],mongoc_uri_get_option_as_utf8:[13,524],mongoc_uri_get_password:[13,524],mongoc_uri_get_read_concern:[13,524],mongoc_uri_get_read_pref:[13,524],mongoc_uri_get_read_prefs_t:[13,497,524],mongoc_uri_get_replica_set:[13,524],mongoc_uri_get_servic:[13,524],mongoc_uri_get_ssl:[13,524],mongoc_uri_get_str:[13,524],mongoc_uri_get_usernam:[13,524],mongoc_uri_get_write_concern:[13,524],mongoc_uri_gssapiservicenam:524,mongoc_uri_heartbeatfrequencym:524,mongoc_uri_journ:524,mongoc_uri_localthresholdm:524,mongoc_uri_maxidletimem:524,mongoc_uri_maxpools:524,mongoc_uri_maxstalenesssecond:524,mongoc_uri_minpools:524,mongoc_uri_new:[0,7,13,487,490,513,515,524],mongoc_uri_new_for_host_port:[13,524],mongoc_uri_new_with_error:[1,3,6,8,9,11,13,21,127,163,165,180,181,191,193,217,246,270,317,363,472,505,524,548],mongoc_uri_option_is_bool:[13,524],mongoc_uri_option_is_int32:[13,524],mongoc_uri_option_is_utf8:[13,524],mongoc_uri_readconcernlevel:524,mongoc_uri_readprefer:524,mongoc_uri_readpreferencetag:524,mongoc_uri_replicaset:524,mongoc_uri_retrywrit:524,mongoc_uri_saf:524,mongoc_uri_serverselectiontimeoutm:524,mongoc_uri_serverselectiontryonc:524,mongoc_uri_set_auth_mechan:[4,13,485,486,490,512,515,524],mongoc_uri_set_auth_sourc:[4,13,485,486,490,511,515,524],mongoc_uri_set_compressor:[13,524],mongoc_uri_set_databas:[13,524],mongoc_uri_set_mechanism_properti:[4,13,485,486,490,511,512,524],mongoc_uri_set_option_as_bool:[13,524],mongoc_uri_set_option_as_int32:[13,524],mongoc_uri_set_option_as_utf8:[13,524],mongoc_uri_set_password:[13,524],mongoc_uri_set_read_concern:[13,524],mongoc_uri_set_read_prefs_t:[13,524],mongoc_uri_set_usernam:[13,524],mongoc_uri_set_write_concern:[13,524],mongoc_uri_slaveok:524,mongoc_uri_socketcheckintervalm:524,mongoc_uri_sockettimeoutm:524,mongoc_uri_ssl:524,mongoc_uri_sslallowinvalidcertif:524,mongoc_uri_sslallowinvalidhostnam:524,mongoc_uri_sslcertificateauthorityfil:524,mongoc_uri_sslclientcertificatekeyfil:524,mongoc_uri_sslclientcertificatekeypassword:524,mongoc_uri_t:[0,1,2,3,6,7,8,9,11,13,15,21,127,149,152,156,163,165,180,181,191,193,217,246,270,317,363,472,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,511,512,513,514,515,516,517,518,519,520,521,522,523,548],mongoc_uri_unescap:[13,524],mongoc_uri_w:524,mongoc_uri_waitqueuemultipl:524,mongoc_uri_waitqueuetimeoutm:524,mongoc_uri_wtimeoutm:524,mongoc_uri_zlibcompressionlevel:524,mongoc_vers:548,mongoc_version_:526,mongoc_version_hex:526,mongoc_warn:[19,505,513],mongoc_write_concern_append:[6,13,127,133,165,166,193,194,197,203,205,207,208,212,213,229,230,233,236,237,245,246,249,274,279,291,299,302,314,317,547],mongoc_write_concern_copi:[13,547],mongoc_write_concern_destroi:[6,13,127,165,180,193,302,314,317,472,528,540,547],mongoc_write_concern_get_fsync:[13,547],mongoc_write_concern_get_journ:[13,547],mongoc_write_concern_get_w:[13,547],mongoc_write_concern_get_wmajor:[13,547],mongoc_write_concern_get_wtag:[13,547],mongoc_write_concern_get_wtimeout:[13,547],mongoc_write_concern_is_acknowledg:[13,547],mongoc_write_concern_is_default:[13,547],mongoc_write_concern_is_valid:[13,547],mongoc_write_concern_journal_is_set:[13,547],mongoc_write_concern_new:[6,13,127,165,180,193,194,302,314,317,472,547],mongoc_write_concern_set_fsync:[13,547],mongoc_write_concern_set_journ:[13,541,547],mongoc_write_concern_set_w:[6,13,194,302,314,317,424,547],mongoc_write_concern_set_wmajor:[13,127,165,180,193,472,547],mongoc_write_concern_set_wtag:[13,547],mongoc_write_concern_set_wtimeout:[6,13,547],mongoc_write_concern_t:[2,6,13,15,108,127,133,150,165,166,180,189,191,193,194,197,202,203,205,206,207,208,212,213,217,226,227,228,229,230,233,234,236,237,238,241,244,245,246,249,274,279,287,288,291,296,299,302,314,317,424,472,477,481,504,523,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546],mongoc_write_concern_w_default:[189,202,222,241,296,547],mongoc_write_concern_w_errors_ignor:547,mongoc_write_concern_w_major:[532,547],mongoc_write_concern_w_unacknowledg:547,mongod:[0,1,3,4,11,21,405,415,524],mongodb:[1,3,5,6,7,8,9,11,12,13,16,19,20,21,24,34,43,52,80,81,82,112,114,116,121,122,123,127,129,133,135,136,137,138,139,140,147,151,162,163,165,166,180,181,185,186,187,189,191,193,194,197,198,199,200,201,205,207,208,212,213,215,216,217,221,232,233,236,237,240,241,243,245,246,247,249,250,254,255,257,263,264,266,269,270,274,275,279,281,284,289,290,291,295,296,297,299,311,317,323,342,343,344,352,362,363,364,370,374,375,380,381,382,390,393,394,404,405,406,407,412,424,442,454,468,469,470,472,482,487,489,490,492,500,507,508,509,510,513,515,520,521,523,524,526,537,545,547,549],mongodbus:4,mongodump:20,mongoimport:1,monitor:[5,7,13,15,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,159,182,416,468,469,470,471],monoton:[429,436,437,438],month:548,more:[0,4,7,9,10,19,120,121,122,123,127,194,199,201,210,211,216,221,235,237,245,246,247,262,263,264,270,278,313,393,404,426,482,513,524,543,545,547,548],most:[17,160,183,207,208,216,243,245,246,406,412,442,549],mous:[11,21],move:345,msbuild:17,msg:[5,281],msy:17,msys2:15,msys2_shel:17,msys64:17,much:[0,5],multi:[7,12,18,163,168,172,173,179,180,181,190,191,418,423,472,478,524],multipl:[0,18,119,154,155,157,158,164,244,246,315,364,381,406,524],munin:5,must:[0,1,4,6,7,10,11,12,16,18,21,23,106,119,120,121,122,123,129,133,141,146,147,159,160,161,162,165,166,167,172,175,176,178,180,181,190,192,193,194,197,200,202,205,207,208,216,217,218,221,222,227,229,230,232,233,237,242,245,246,247,248,249,263,264,265,274,290,291,298,299,311,342,356,357,358,374,406,410,418,423,442,454,467,468,469,478,490,524,541,542,544,545,548,549],mutex:[19,163,548],mutual:127,my_capped_collect:[165,193],my_collect:[165,193],my_logg:19,my_r:[7,510],my_servic:515,myca:4,mycert:4,mycertpassword:4,mycol:548,mydb:[4,507,548],mypass:507,myreplset:[0,9,507],myshard01:0,myuser:507,myvalu:492,n_document:[228,229],n_new_sd:3,n_prev_sd:3,n_written:127,nagio:5,nagl:0,name:[0,1,3,4,8,10,12,21,25,36,38,44,107,118,130,131,132,133,136,137,140,141,160,165,166,183,193,194,196,211,212,216,223,235,236,256,267,271,276,281,282,283,284,285,289,293,299,363,370,432,433,439,491,492,493,500,508,509,510,514,515,516,517,518,524,548],name_filt:281,namespac:[21,141],namespaceexist:[180,472],nat:4,nativ:[0,4,15],navig:5,ndoc:[11,21],nearest:[406,524],nearspher:200,necessari:[3,6,181,188,216],need:[0,4,6,7,18,126,136,137,192,216,248,298,346,347,348,350,351,442,524,548],needtim:21,needyield:21,neg:[221,268,345,455,456,465,466],negoti:[4,270],neq:380,nest:1,net:4,network:[4,5,6,9,12,19,31,121,123,131,132,133,148,165,166,168,172,180,193,196,197,205,206,207,208,212,213,218,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,254,270,271,273,274,279,289,290,291,292,293,299,323,325,343,362,435,462,472,524,547],never:[4,9,192,194,248,254,298,524],new_db:[235,236],new_nam:[235,236],new_sd:3,new_td:3,new_valu:548,newer:[17,442,526],newli:[136,137,140,147,151,152,156,190,192,194,198,202,203,216,221,248,250,275,276,282,298,310,322,323,339,355,356,357,358,359,379,387,391,396,402,426,432,443,449,450,454,459,467,483,505,506,507,525,528,540],next:[6,7,11,15,126,262,265,339,364,442,524,547],next_doc:246,nfail:3,nin:[20,380],nindex:548,nindexeswa:3,ninsert:[6,20,165,193],nmatch:6,nmodifi:6,noconfirm:17,nocursortimeout:221,node:[0,3,191,405,406,533,544,547],non:[4,7,199,201,207,208,221,227,229,230,231,245,246,356,425,442,456,461,466,472,492,524],none:[4,12,116,121,123,140,221,389,524],nonexist:[180,472],normal:[6,7,17,165,180,193,201,381,472],notat:548,note:[0,1,4,6,11,16,129,160,263,269,314,316,317,323,374,406,454,497],noth:[22,105,134,173,209,252,277,303,324,326,337,388,397,409,420,430,447,474,484,529],notherdoc:10,notic:548,notif:[3,23,24,34,43,52,58,62,67,70,75,79,80,81,82,83,84,85,86,87,88,89,90,91,96,99,102,159,182],now:[4,6,11,17,21,107,118,180,256,267,392,472,541,542,543,544,545,546,549],nremov:6,nrepli:254,nreturn:21,nsucceed:3,num:[382,383,384],number:[1,5,6,11,30,32,40,41,48,50,107,118,154,155,157,192,194,195,199,200,201,215,216,228,248,255,256,258,266,267,268,270,272,298,342,354,382,383,384,385,407,417,436,437,438,455,456,461,465,466,524,548],numberint:10,numberlong:10,numer:20,numext:548,nupsert:6,o_rdonli:363,obei:[166,233,291],object:[2,7,13,15,217,218,265,297,363,393,406,410,413,547,548],objectid:[10,332,548,549],observ:[58,83,89,96],obsolet:205,obtain:[11,21,126,127,133,135,139,165,166,193,194,197,200,201,212,213,215,220,221,232,233,236,249,274,279,281,284,290,291,299,548],occur:[6,9,19,20,116,121,123,125,192,216,221,236,248,253,254,270,298,338,344,349,382,524],occurr:11,off:[5,17,127],offer:548,offici:548,often:5,oid:[9,20,311,312,313,315,316,317,548],old:[12,107,118,216,221,256,267,311,317],old_valu:548,older:[213,221],oldest:[315,317],omit:[0,126,166,193,194,221,233,249,291,299,442],onc:[4,7,16,17,18,106,119,127,129,159,160,161,162,374,442,524],one:[0,1,6,7,10,12,17,18,157,164,165,181,190,191,193,201,207,208,230,231,237,245,246,266,313,344,345,352,354,375,406,416,418,423,425,471,524,548],onli:[0,4,5,6,7,9,17,18,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,103,104,106,111,112,113,114,115,116,118,119,120,121,122,123,127,140,159,160,161,162,163,167,169,170,181,185,189,190,191,192,244,247,248,262,263,264,267,269,270,281,298,311,344,352,354,363,393,398,401,403,405,406,407,418,422,423,428,442,455,465,466,468,475,476,477,482,493,516,517,518,524,526,548,549],onto:[163,548],op_delet:6,op_insert:6,op_queri:[216,221],op_upd:6,opaqu:[107,118,119,132,146,191,256,263,267,411,470],opcod:6,open:[3,5,7,9,17,79,102,127,428,450,549],openssl:[17,463],oper:[1,3,5,7,12,13,14,15,18,21,30,40,48,80,81,82,103,104,106,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,127,167,169,170,175,177,180,181,185,186,189,190,192,200,202,203,222,224,225,226,229,236,239,240,241,243,248,254,256,267,270,294,295,296,298,300,301,302,314,315,317,327,375,380,381,392,406,407,418,423,424,437,448,482,524,530,541,542,543,544,545,546,547,549],operationtim:[127,169,170,177],oplog:9,oplogreplai:221,opportun:425,opt:[6,8,9,106,110,112,114,116,121,123,127,133,135,139,162,165,166,171,180,181,187,190,192,193,194,197,200,201,203,204,205,207,208,212,213,214,215,218,220,221,229,230,232,233,236,237,245,246,248,249,263,264,274,276,279,281,284,290,291,298,299,302,304,305,306,307,308,309,311,312,313,314,315,316,317,322,323,358,359,363,366,369,370,372,386,419,420,421,422,424,425,472,473,474,475,476,477,479,480,481],optim:[7,17,127],option:[4,5,6,7,10,12,17,106,110,112,114,116,121,123,125,126,127,130,131,132,133,135,138,139,141,147,148,157,159,162,165,166,167,168,171,172,180,181,182,187,190,191,192,193,194,195,196,197,199,200,201,202,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218,219,220,227,228,229,230,232,233,234,235,236,237,238,242,244,245,246,247,248,249,253,254,263,264,269,270,271,272,273,274,276,278,279,280,281,283,284,289,290,291,292,293,298,299,311,312,313,314,315,316,317,322,323,325,327,338,341,343,356,357,358,359,362,363,365,367,368,370,371,373,379,386,390,419,422,425,441,450,472,473,475,476,477,490,491,492,493,494,507,508,509,510,511,512,513,514,515,516,517,518,519,520,522,523,527,537,538,539,548,549],option_kei:524,option_valu:524,optlen:[439,457],optnam:[439,457],optval:[439,457],order:[0,1,3,4,18,106,112,114,116,121,123,133,165,166,193,194,197,200,201,202,203,207,208,212,213,215,216,217,221,229,232,233,236,237,245,246,249,274,279,290,291,299,315,358,359,376,406,424,548],orderbi:216,org:[11,17,21],origin:[12,224,226,413],other:[0,4,11,12,16,17,18,21,129,169,170,180,183,193,202,203,216,221,227,229,230,231,249,254,271,293,299,332,374,382,393,406,461,472,490,515,524,536,547,548],other_host_and_port:21,otherwis:[0,11,18,112,114,116,121,123,130,131,133,151,164,165,166,167,179,183,193,194,195,196,197,199,200,201,207,208,212,213,215,232,233,236,237,238,240,245,246,249,253,254,265,272,273,274,279,290,291,295,299,311,312,313,314,315,316,327,338,344,345,378,385,392,406,431,433,435,442,443,445,449,450,452,454,457,468,505,507,511,512,516,517,518,524,534],our:[0,5,11,217,548],out:[6,7,11,12,17,110,112,114,116,121,123,167,171,181,194,207,208,229,230,245,246,257,356,357,358,381,490,524],out_collect:11,out_collection_nam:11,outcollect:11,output:[3,9,11,17,166,233,291,311,312,313,315,316,317,490],outsid:5,over:[4,6,11,125,192,248,298],overal:[3,6,89,96],overhead:19,overrid:[19,133,135,139,162,165,166,180,187,193,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,425,472,524],overridden:[133,165,166,193,194,197,221,232,233,243,249,274,290,291,297,299,425,472],overs:12,overwrit:[442,513],own:[5,7,11,19,21,127,360,361,363,410,412,496,498,504,548],ownership:[454,459],packag:[15,548],packet:[0,5,19,381],pacman:17,pad:[364,367,370,373,442],paddingfactor:548,page:[0,18,221,548],pain:19,pair:[11,406,524,548],parallel:[0,6,524],paramet:[0,12,470,524],parent:[243,297],pars:[1,3,6,8,9,11,15,21,127,133,151,163,165,180,181,191,193,197,217,246,270,274,317,363,472,507,511,512,513,514,515,516,517,518,519,520,521,522,523,524,548],parsedqueri:21,part:[4,29,39,47,54,60,66,69,73,77,103,104,111,112,113,114,115,116,117,120,121,122,123,183,364,524,530],partial:381,partial_filter_express:370,particip:[424,543],particular:[17,297,363,382,548],partit:9,pass:[0,3,4,6,11,12,21,24,26,37,45,53,59,63,68,71,76,92,97,100,106,110,112,114,116,121,123,127,167,180,181,182,188,194,199,201,206,207,208,210,211,221,229,230,234,235,242,245,246,263,268,278,316,386,425,450,454,457,464,468,469,472,507,524,527,548],password:[0,4,11,21,271,490,495,515,519,522,524],past:443,path:[0,4,10,17,442,450,524,549],paus:524,pem:[0,4,442,524],pem_fil:[0,4,162,187,442],pem_pwd:[4,162,187,442],peopl:549,per:[1,7,255,266,406,547],perfectli:12,perform:[4,6,7,9,13,15,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,109,110,120,122,155,159,163,182,198,199,201,202,217,228,244,245,246,275,292,293,294,295,296,342,354,375,380,381,387,401,429,436,438,444,448,455,456,465,466,468,469,470,482,524,526,528,530,541,548,549],perhap:461,period:[381,412],permiss:[11,21],permit:314,persist:[127,346,347,348,350,351],phd:548,php:7,physic:452,pid:5,ping:[147,163,548],pip:10,pipe:[1,20],pipelin:[1,6,127,192,194,248,263,264,298],pipeline_queri:194,pkg:[3,8,9,11,17,21,163,165,180,181,191,193,270,472],place:[216,511,512,516,517,518,524,548],plai:[311,317],plain:[15,347],plan:[216,221],plannervers:21,platform:[0,5,15,16,376,426,427,429,442,450,548,549],player:[302,311,313,314,315,316,317],pleas:[5,20,103,104,138,186,202,206,219,228,238,240,263,280,283,295,300,394,497,541,548],point:[0,162,187,192,248,270,298,442,490],pointer:[3,26,37,45,53,59,63,68,71,76,92,97,100,159,171,177,182,188,217,229,254,345,365,368,371,386,390,461,468,469,493,527,537],poll:7,pool:[5,13,14,15,153,154,155,157,158,159,160,161,162,163,164,173,181,184,185,186,187,189,190,191,411,412,418,423,442,548],pop:[1,187],popul:[207,208,229,230,237,245,246,507],port1:524,port2:524,port:[0,3,11,21,364,410,506,524,548],portabl:[16,376,426,427,429,440],portion:[163,488,495,503,548],portn:524,posit:[311,313,315,316,317,345,353,403,406,543,544,546],possibl:[0,5,6,9,17,188,196,269,314,442,547],possibleprimari:416,potenti:[106,262,342,524],power8:17,ppc64le:17,practic:[1,11,363,442],pre:334,preced:6,pref:[3,167,191,254,270,401,468,521],prefenc:406,prefer:[12,130,131,133,145,165,166,167,180,186,192,194,196,197,199,201,216,221,225,232,233,240,248,267,272,273,274,287,290,291,295,297,298,363,391,394,395,396,397,399,400,403,404,405,406,425,468,472,480,497,498,521,540,549],prefix:[10,141,363,524],prepar:[165,193],preprocess:4,preprocessor:[526,549],present:[0,4],preserv:[12,198,275],preset:545,pretti:[311,317],prev_sd:3,prev_td:3,prevent:[381,446],previou:[3,7,10,56,94,262,424],previous:[6,263,304,392,464,513,541,542,543,544,545,546],prid64:[199,200,201,215,548],primari:[3,7,12,133,165,180,181,186,193,194,197,221,232,240,274,290,295,363,406,469,472,524],primarypref:[406,524],primit:[16,129,374,382],princip:4,principl:547,print:[3,10,12,19,216,217,221,254,548],print_all_docu:[9,216],print_bson:9,print_collection_stat:196,print_count:[200,215],print_pipelin:1,print_query_count:[199,201],print_r:[11,21],print_ten_docu:221,printbson:10,printf:[1,3,6,8,9,11,21,127,139,147,165,180,193,196,199,200,201,213,215,216,217,221,246,281,284,302,311,312,313,314,315,316,317,363,380,405,472,490,548],prioriti:[0,133,165,166,193,194,197,221,232,233,249,274,290,291,299],privat:[461,524,548],prng:[382,385],pro:21,probabl:[163,548],probe:0,problem:[5,17,363],problemat:16,proce:549,process:[1,5,9,16,17,129,202,344,354,374,428,441],produc:[1,490],product:[5,17],profess:[302,311,313,314,315,316,317],profil:[524,548],program:[3,5,7,11,15,16,17,18,20,21,129,163,185,186,187,189,194,202,203,231,250,374,382,505,507],programm:548,progress:[12,106,168,172,173,179,180],prohibit:[18,133,165,166,181,190,193,194,197,221,232,233,249,274,290,291,299,418,423],project:[5,13,14,15,17,221],prompt:10,proof:[4,16],prop:[490,515],propag:[103,104,106,109,110,111,112,113,114,115,116,120,121,123,131,133,138,139,141,148,165,166,193,196,197,199,200,201,202,203,205,206,207,208,212,213,214,215,217,218,219,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,253,254,273,274,276,279,280,283,284,289,290,291,292,293,299,325,327,338,343,356,357,358,362,379,544,547],properli:[4,216],properti:[4,490,515,549],protocol:[4,5,32,41,50,216,270,375,381,407,408,435,482,524],prove:548,provid:[0,1,4,5,6,10,11,12,17,19,21,110,116,119,121,123,132,142,143,151,152,156,180,191,192,194,205,206,207,208,212,213,229,230,234,236,237,243,245,246,248,263,270,276,279,297,298,340,352,363,364,378,379,380,382,406,408,427,429,440,442,449,459,461,485,486,488,494,506,524,548,549],pseudo:382,pthread:[163,548],pthread_creat:[163,548],pthread_join:[163,548],pthread_mutex_init:[163,548],pthread_mutex_lock:[163,548],pthread_mutex_t:[163,548],pthread_mutex_unlock:[163,548],pthread_t:[163,548],publicli:1,pull:[381,382],purpos:[198,275,549],push:[1,155,524],put:7,pymongo:10,python:10,queri:[1,5,6,9,11,12,20,21,30,40,48,130,138,139,148,163,165,181,191,193,194,199,200,201,206,207,208,215,216,217,218,221,234,237,244,245,246,250,254,258,262,268,269,270,302,311,312,313,314,315,316,317,340,355,356,358,359,363,378,379,380,381,408,524,548],query_collect:9,query_don:11,queryplann:21,queu:106,queue:[103,104,109,110,111,112,113,114,115,116,120,121,122,123],quick:524,quit:363,r_ok:127,rack1:405,rack2:405,rack:[405,406],ran:549,random:[382,383,384,385],randomli:524,rang:[263,264],rather:[4,7,381,382,524],raw:[10,127,133,165,166,192,193,197,232,233,248,249,274,290,291,298,299],reach:[429,438,524],read:[1,11,12,127,130,131,133,144,145,165,166,167,180,181,185,186,191,192,193,194,196,197,199,200,201,215,216,221,224,225,232,233,239,240,248,249,254,262,265,267,270,272,273,274,287,290,291,294,295,297,298,299,323,342,363,386,388,389,390,391,392,394,395,396,397,398,399,400,401,403,404,405,424,425,436,448,454,455,456,468,472,479,480,496,497,498,520,521],read_concern:[165,180,185,193,239,294,386,387,388,389,390,392,472,479],read_mod:402,read_pref:[11,130,131,132,133,148,165,166,186,193,194,195,196,197,199,200,201,215,216,221,232,233,240,272,273,274,290,291,295,395,396,397,398,399,400,401,403,404,405,468,480],readabl:[12,468],readconcern:[133,165,166,193,194,197,200,201,215,221,232,233,239,274,290,291,294,389,390,392,393,524],readconcernlevel:524,reader:[127,363,380],readprefer:524,readpreferencetag:[406,524],readv:352,reason:[202,203,268,468,469,524],receipt:547,receiv:[3,5,6,7,12,24,25,28,29,31,35,36,38,39,44,47,49,54,55,56,57,60,61,65,66,69,73,74,77,78,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,98,101,127,147,159,172,177,182,192,221,248,298,436,467,470,524,547],recent:[17,155,412,442],recommend:[0,4,17,127,191,442],record:[0,216,270,524],recreat:127,recv:436,red:[17,548],redhat:17,reduc:[6,11,19,380],refer:[13,15,178,199,201,221,410,412,470,524,548],referenc:[17,324],reflect:181,refresh:[18,181,190,418,423],regardless:[6,428],regex:10,regist:[19,159,182,327,338,400,468,469,548],regul:442,regular:[262,340],reiniti:[16,129,374],rejectedplan:21,rel:345,relat:[0,3,12,16,363,386,527],releas:[16,106,129,131,134,148,153,252,277,337,374,377,426,430,447,524,547,548],reli:[216,524],reliabl:[12,180],relwithdebinfo:17,remain:[0,1,9,162,183,187,302,312,315,316,442,454,490],rememb:549,remoteth:21,remov:[6,19,20,62,84,111,112,113,114,115,116,120,121,122,123,207,208,217,221,234,292,293,313,343,362,377,378,379,380,407,547,548,549],renam:[235,236],repeat:270,repeatedli:524,replac:[6,115,116,188,191,200,237,515,549],repli:[0,3,5,6,8,11,12,21,31,49,74,106,125,127,131,132,133,148,165,166,172,180,181,193,196,197,200,205,207,208,215,216,217,218,221,229,230,232,233,237,242,245,246,247,249,254,263,264,273,274,290,291,299,301,302,311,312,313,314,315,316,317,381,408,424,472,548],replic:[6,406,524],replica:[3,9,11,12,147,165,186,191,193,240,295,363,381,406,468,547,548],replicaset:[0,3,7,9,127,147,405,499,507,510,524],replicasetnoprimari:[3,471],replicasetwithprimari:[3,471],replset:[165,193],reply_json:[180,472],reply_str:8,report:[2,4,6,13,15,110,112,114,116,121,123,161,184,548],repositori:[10,17],repres:[192,248,298,405,406,470,548],represent:[135,219,220,280,281,321,524],reproduc:5,request:[5,32,41,50,163,192,205,212,213,248,266,298,325,405,548],requir:[0,4,10,11,17,21,30,40,48,112,114,116,121,123,128,133,162,165,166,187,193,194,197,200,201,207,208,212,213,215,217,232,233,236,237,245,246,249,266,270,274,279,290,291,299,382,442,524,548,549],required_major:128,required_micro:128,required_minor:128,requiressl:[0,4],res:[11,21],res_nsearch:524,res_search:524,rescan:524,resembl:524,reset:250,resolv:[0,254,524],resort:406,resourc:[16,129,134,153,173,209,252,277,303,324,326,337,374,377,388,397,430,447,484,529],respect:[155,524,548],respond:[7,12,213],respons:[4,7,11,12,16,129,130,131,132,194,196,254,263,272,273,374,406,412,413,547],rest:548,restart:127,restor:[6,19,311],restorest:21,result:[0,1,4,6,9,11,30,40,48,126,127,131,133,135,138,139,144,145,148,150,165,166,193,194,196,197,202,203,207,208,216,217,218,219,220,221,222,229,230,232,233,237,242,245,246,249,250,258,262,266,268,269,270,272,273,274,280,281,290,291,299,313,345,355,356,357,358,359,381,425,433,435,442,472,505,507,524,548],resum:[12,192,248,298,381],resume_token:127,resume_token_doc:127,resume_token_path:127,resumeaft:[127,192,248,298],ret:[6,11,21,163,548],retain:265,retri:[180,472,524],retriev:[9,107,130,144,145,150,157,160,162,163,191,192,199,201,242,248,255,256,258,260,268,270,286,288,298,338,342,344,354,361,381,428,433,437,458,548],retry_transact:[180,472],retrywrit:524,returnkei:221,retval:548,revers:[18,548],review:17,revoc:442,rfc:[0,4,524],rhel:17,right:[393,547,549],robust:9,robustli:9,role:[6,271,311],root:442,roughli:[7,524],round:[6,255,262,266,414,524],rout:[191,363],routin:549,rp_tag:405,rs0:127,rsarbit:416,rsghost:416,rsother:416,rsprimari:[3,416],rssecondari:[3,416],rule:[6,16,311],run:[0,4,6,9,10,17,130,131,132,133,148,165,166,188,192,193,205,242,247,248,254,298,299,382,406,412,524,548,549],run_queri:254,run_query_with_read_prefs_tag:405,runtim:[5,382],s390x:17,safe:[3,7,10,154,155,157,158,163,164,191,213,236,270,344,352,354,363,442,448,524,548],safeti:[19,548],said:363,sake:[107,118,180,256,267,393,472],same:[0,1,4,12,17,20,107,162,192,199,201,248,264,298,316,363,382,406,428,524,544,546],sampl:[9,11,21,548],sasl:[12,15,17,524],sasl_error:12,saslprep:4,satisfi:[6,221,269,401,545],save:[238,344,363,375],savest:21,scan:[7,524],scandata:247,scanner:524,scatter:[342,376],scenario:191,schannel:442,schema:[6,194,229,230,237,245,246,311],scheme:[489,500],school:548,scope:[10,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94],scram:[12,15,511],script:10,sdam:470,sds:[147,417],search:524,second:[0,1,3,6,7,17,21,127,180,406,472,524],secondari:[3,7,11,181,381,398,403,406,524],secondarypref:[406,524],section:[489,548],secur32:549,secur:[4,382],see:[0,1,5,6,7,8,9,10,11,17,19,21,127,133,135,139,161,163,165,166,171,181,184,186,191,193,194,197,199,201,204,205,207,208,210,211,212,213,214,217,218,220,222,229,230,231,232,233,235,236,240,247,249,255,261,266,274,278,279,284,289,290,291,295,299,301,327,358,359,363,378,386,392,393,394,404,415,418,470,472,524,527,543,545,547,548],seed:[0,382,384,385],seek:352,seek_cur:345,seek_end:345,seek_set:345,seen:507,segfault:5,segment:5,select:[4,7,17,112,113,114,115,116,120,121,122,123,167,194,315,398,403,406,549],selector:[6,103,104,111,112,113,114,115,116,120,121,122,123,181,201,206,207,208,234,237,244,245,246,407],semant:[452,455,465,466],send:[0,6,12,21,67,85,133,165,166,193,197,232,233,249,274,290,291,299,437,438,524],sendmsg:438,sens:[401,406],sent:[4,5,6,34,43,52,58,62,67,70,75,79,96,99,102,183,216,239,294,302,393,437,438],separ:[0,1,17,21,216,221,406,489,513,524],sequenc:[12,18,181,190,380,418,423,548],serial:6,server:[3,4,5,6,7,12,17,20,21,29,31,32,33,39,41,42,47,50,51,54,58,60,62,66,67,69,70,73,75,77,79,83,84,85,86,87,88,89,90,96,99,106,107,118,121,122,123,125,127,130,131,132,133,135,136,137,138,139,142,143,146,147,148,163,165,166,167,168,172,176,183,187,190,191,192,193,194,196,197,198,199,200,201,205,206,207,208,212,213,215,218,219,220,221,227,228,229,230,232,233,234,236,237,238,239,240,242,244,245,246,247,248,249,250,252,254,255,256,258,262,263,264,266,267,269,271,272,273,274,275,279,280,281,284,289,290,291,292,293,294,295,298,299,302,314,323,325,342,343,344,362,364,370,375,380,381,406,408,409,410,411,412,413,414,415,416,417,434,467,468,469,470,471,482,535,544,545,546,547,548],server_chang:3,server_changed_ev:3,server_clos:3,server_closed_ev:3,server_heartbeat_fail:3,server_heartbeat_start:3,server_heartbeat_succeed:3,server_id:[118,132,146,263,267],server_open:3,server_opening_ev:3,serverid:[133,135,139,165,166,193,194,197,200,201,212,213,215,220,221,232,233,236,249,264,274,279,281,284,290,291,299],serverinfo:21,serverselectiontimeoutm:524,serverselectiontryonc:[254,524],serverstatu:148,servic:[4,500,515,524],service_nam:[4,490,515],session:[3,10,12,133,135,139,165,166,168,169,170,171,172,173,174,175,176,177,178,179,180,181,190,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,418,419,421,422,423,424,425,472],session_opt:[180,424,472],sessionid:[133,135,139,165,166,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,264,274,279,281,284,290,291,299],set:[3,4,9,10,11,17,24,106,110,112,114,116,121,123,125,126,127,131,132,133,138,139,141,147,148,154,155,159,160,161,162,165,166,168,172,180,182,183,184,185,186,187,189,190,191,193,194,196,197,200,201,203,205,206,207,208,212,213,215,216,217,218,227,228,229,230,232,233,234,236,237,238,239,240,241,242,244,245,246,247,249,253,254,259,260,262,263,264,265,268,269,271,273,274,276,279,283,284,289,290,291,292,293,294,295,296,299,302,305,306,307,308,309,317,325,327,338,341,343,345,346,347,348,349,350,351,362,363,375,379,381,389,390,392,393,403,404,405,408,424,425,427,428,429,433,434,435,436,437,438,439,442,445,446,449,450,452,455,456,457,464,465,466,468,472,482,490,491,492,493,511,512,513,514,515,516,517,518,519,520,521,522,523,530,532,533,534,537,539,541,542,543,544,545,546,547,548,549],set_:243,setsockopt:[439,457],setter:[425,472],sever:[4,17,352,548],sha:[12,15,511],shall:[141,154,188,194,199,201,202,203,206,209,216,227,230,234,237,238,244,250,262,265,271,322,323,324,339,356,395,396,443,445,446,447,448,450,452,453,454,455,464,465,466],shallow:442,shard:[191,381,406,408,471,524,548],share:[0,5,17,524,548],shell:[1,9,21,548],shim:461,should:[0,1,7,9,12,17,18,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,103,104,108,115,120,121,122,123,127,130,131,136,137,138,139,140,141,142,143,144,145,148,149,150,152,155,156,188,190,191,194,195,196,198,199,200,201,202,203,204,205,206,214,215,216,217,219,222,223,224,225,226,228,231,234,238,242,245,246,247,250,251,263,272,275,280,282,283,284,285,286,287,288,300,310,311,322,323,328,330,331,332,334,335,339,347,352,355,359,360,361,363,366,369,370,372,376,379,387,391,394,396,400,402,406,426,429,430,432,433,435,441,443,444,448,449,450,459,460,482,483,485,486,487,488,489,490,494,495,496,497,498,499,501,502,503,504,506,524,525,528,530,531,533,534,535,540,544,546,548],show:[5,10,127,216,254],show_serv:147,showdiskloc:216,shown:3,showrecordid:[216,221],shut:428,shutdown:[16,428],side:[32,41,50,110,116,121,123,125,176,194,207,208,229,230,237,245,246,252,254,262,270,271,314,380,482],sign:[268,329,333,336,535],signal:524,significantli:19,silent:370,similar:[4,17,125,126,199,201,434,547,548],simpl:[0,7,11,548],simpli:[0,5,11,17,199,201,206,216,234,262,548],simplifi:[131,196,273],sinc:[6,7,127,163,181,262,336],singl:[6,11,20,104,109,110,113,114,115,116,119,122,123,147,191,206,229,234,244,265,442,471,482,524,548],singlebatch:221,situat:[16,406,524],sixth:6,size:[7,12,142,143,155,165,193,216,255,266,329,433,434,443,548],size_t:[3,127,147,229,342,354,417,436,437,438,443,455,456,465,466,467,548],sizeof:[0,127,363,548],skip:[110,116,121,123,127,130,194,195,199,200,201,207,208,215,216,221,229,230,237,245,246,264,272],slaveok:524,sleep:[9,163,548],slow:524,slower:524,slowest:524,small:0,smaller:19,smallest:524,smoot:1,snappi:[0,487,513,524],snapshot:[180,221,393,472],snippet:[17,21,548],so_keepal:0,sock:[0,426,427,429,430,431,432,433,434,436,437,438,439,507],sock_stream:435,sockaddr:[427,429,433],socket:[5,7,191,271,292,293,376,426,427,428,429,430,431,432,433,434,435,436,440,446,457,459,460,464,524,544,546,549],socketcheckintervalm:524,sockettimeoutm:[454,509,524],sockopt:439,softwar:[11,21],solari:440,sole:[18,29,39,47,54,60,66,69,73,77],solut:549,some:[0,11,12,16,17,18,20,21,181,190,221,263,264,269,302,314,317,363,375,381,382,418,423,442,507,517,524],someth:[0,3,11,17,21,163,321,347,548],soon:[0,7],sort:[1,6,165,193,201,216,217,221,308,317,358,359,363],sourc:[1,10,12,17,133,165,166,180,193,194,197,221,232,233,249,274,290,291,299,472],space:452,spars:370,spec:[3,6,167,217,380,416,471],special:[193,249,299,524],specif:[0,4,11,12,20,21,120,121,122,123,130,131,132,133,135,139,165,166,193,194,197,200,201,212,213,215,220,221,231,232,233,236,249,274,279,281,284,290,291,299,301,370,373,378,379,406,431,470,524,548],specifi:[0,1,3,4,5,11,17,106,118,121,123,126,132,140,146,192,194,199,200,201,215,216,217,225,226,240,245,246,248,267,298,314,315,317,322,323,330,336,357,363,375,381,382,383,393,402,406,407,442,501,524,544,547],spectrum:380,sphinx:17,srv:[489,500],ssize_t:[127,342,354,363,436,437,438,455,456,465,466],ssl:[4,12,16,17,129,162,187,374,441,442,461,501,507,508,549],ssl_default:0,ssl_opt:[0,4,442],sslallowconnectionswithoutcertif:0,sslallowinvalidcertif:[442,524],sslallowinvalidhostnam:[442,524],sslcafil:[0,4,442],sslcertificateauthorityfil:[442,524],sslclientcertificatekeyfil:[442,524],sslclientcertificatekeypassword:[442,524],sslmode:[0,4],sslpemkeyfil:[0,4],sspi:4,stack:[196,490],stage:[21,127,194],stale:[398,403,408],standalon:[0,416,469,524,548],standard:[10,201,231,451,524],start:[0,3,4,6,10,11,12,15,17,18,43,70,81,120,121,122,123,165,179,180,181,190,192,193,248,298,345,418,422,423,424,425,442,472],startatoperationtim:[127,192,248,298],startup:382,stat:[3,5,196],state:[12,16,17,129,374,468,469],statist:[5,242],stats_t:3,statu:[58,67,70,75,83,85,86,87,148,385,470],stdafx:549,stderr:[1,3,5,6,8,9,11,19,21,127,139,163,165,181,191,193,196,199,200,201,213,215,216,217,221,246,254,270,281,284,302,311,312,313,314,315,316,317,363,405,424,513,548],stdin:380,stdin_fileno:380,stdio:[1,3,6,8,9,11,21,163,165,180,181,191,193,196,199,200,201,215,216,217,221,270,363,380,472,548],stdlib:[8,9,165,191,193,270,363],stdout:[5,9,19,181,191,270,363,548],step:[4,11,15,17],stepdown:12,stick:406,still:[0,205,311,317,406,492,524],stop:[62,84,90,99,106,202],storage_opt:370,storages:548,store:[0,4,127,132,148,200,205,215,242,273,433,442,548],str:[1,6,9,11,21,181,191,196,216,217,221,254,270,302,311,312,313,314,315,316,317,347,348,350,380,405,548],straight:231,strcmp:[140,363],stream:[5,30,40,48,124,125,126,127,188,192,248,298,323,363,381,436,444,445,446,447,448,452,453,454,455,456,457,458,459,460,462,463,464,465,466],strerror:19,striker:[302,311,313,314,315,316,317],string:[0,1,4,7,10,11,12,20,21,25,36,38,44,138,139,151,162,183,187,211,212,213,221,223,231,283,284,285,289,293,321,330,331,334,347,348,350,357,362,393,406,416,432,471,485,486,488,493,495,499,500,502,503,505,506,507,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,534,545,548],stringif:231,strncmp:[11,21],strong:382,strongli:4,struct:[3,18,23,119,127,147,162,163,181,187,190,191,198,243,270,275,297,340,341,352,363,364,367,370,373,376,380,392,415,417,418,419,423,427,429,433,440,442,444,451,460,461,463,467,470,472,473,478,479,480,481,524,541,542,543,544,545,546,548],structur:[0,9,10,12,105,134,153,163,277,282,297,303,310,324,341,352,366,367,369,370,372,373,376,377,388,435,440,442,447,489,529,548],strv:[139,284],studio:[13,14,15],style:[340,449,451,507],subclass:[444,451,460,463],subdocu:[20,207,208,230,237,245,246,548],subject:4,submit:[15,119,217],subsequ:[155,169,170,192,248,298],subset:[20,192,248,298,312,435],subsystem:[12,376],succe:[0,6,12,24,180,289,472,524],succeed:[3,52,75,548],success:[0,3,5,106,107,110,112,114,116,121,123,131,132,133,141,148,159,165,166,171,180,182,184,190,193,196,197,205,206,207,208,212,218,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,267,268,273,274,276,279,290,291,292,293,299,302,311,312,313,314,315,316,317,325,343,344,345,349,357,358,362,386,426,427,428,429,433,434,435,436,438,439,443,445,446,452,454,455,456,457,464,465,466,472,505,507,524,527,530,531,533,541,542,544,545,548],successfulli:[1,17,52,151,183,213,254,271,311,312,313,314,315,316,370,516,517,518,524,548],sudo:17,suffer:[406,524],suffici:382,suffix:0,suit:323,suitabl:[118,167,254,267,405,524],sum:[1,11],supersed:[109,111,113,115,120,122,130,195,227,234,244,261,272],suppli:[12,172,188],support:[0,4,5,6,12,15,20,190,192,195,221,247,248,298,302,314,317,363,380,406,524],suppress:19,sure:442,suse:17,symbol:[10,349,549],synchron:127,synonym:547,syntax:[1,216,221],synthes:[263,342],sysadmin:5,system:[0,3,17,19,363,382,429,436,437,438,442,461,549],syu:17,tabl:[165,166,193,194,221,232,233,249,290,291,299],tag:[11,17,21,395,400,405,497,524,545],tagset:405,tail:9,tail_collect:9,tailabl:[221,262,263,264,269],take:[6,165,166,171,193,216,232,233,249,290,291,299,302,314,317,386,456,524,527],talk:311,talli:[312,315,317],tar:17,target:[133,135,139,165,166,193,194,197,200,201,212,213,215,217,218,220,221,232,233,236,249,274,279,281,284,290,291,299,406,450],target_compile_definit:548,target_include_directori:548,target_link_librari:548,task:[13,14,15],tcp:[0,188],tcp_keepcnt:0,tcp_keepidl:0,tcp_keepintvl:0,tcp_nodelai:0,technic:524,tell:[12,352,547,548],temporari:[180,470,472],ten:221,term:[107,118,256,267],termin:[138,139,283,284],test2:21,test:[1,3,6,8,9,11,12,17,20,21,165,181,191,193,217,270,297,301,363,370,424,524,536,538,539,548],testasdf:6,text:[4,347],textual:[112,114,116,121,123,133,165,166,193,194,197,200,201,207,208,212,213,215,232,233,236,237,245,246,249,274,279,290,291,299],than:[0,1,4,7,11,12,128,169,170,183,212,221,231,381,382,393,398,403,440,482,524,548],thei:[4,5,6,9,18,155,162,181,187,243,297,375,376,381,382,407,408,482,524,547,548],them:[17,127,147,363,386,442,527,548,549],therefor:[12,16,250,376,442,454,524],thi:[1,3,4,5,6,7,9,10,11,12,16,17,18,19,20,21,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,53,54,55,56,57,59,60,61,63,64,65,66,68,69,71,72,73,74,76,77,78,92,93,94,95,97,98,100,101,103,104,106,107,109,111,112,113,114,115,116,117,118,120,121,122,123,126,127,130,131,132,133,135,138,139,142,143,148,154,155,156,157,158,159,160,161,162,163,164,165,166,167,169,170,171,174,176,178,179,180,183,184,185,186,187,188,189,190,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,219,220,222,225,227,228,230,231,232,233,234,235,236,237,238,241,242,243,244,245,246,247,248,249,250,253,254,256,258,261,262,263,264,265,266,267,268,269,271,272,273,274,275,276,278,279,280,281,283,286,288,289,290,291,292,293,294,295,296,297,298,299,302,310,311,312,315,316,322,323,324,327,339,341,342,346,347,348,350,351,352,353,355,356,360,361,363,366,367,369,370,372,373,375,378,379,381,382,386,391,392,393,394,395,396,401,410,413,414,416,421,422,425,426,427,428,429,430,431,432,433,434,435,436,438,439,440,441,442,443,445,446,447,448,450,452,453,454,456,457,459,462,464,468,469,471,472,479,480,481,482,488,489,490,493,496,497,498,500,504,505,507,514,519,522,524,526,527,532,536,538,539,540,541,542,543,544,545,546,547,548,549],thin:[210,211,217,235,278],thing:[5,11,21],think:5,third:[3,6],those:[9,193,249,299,398,403],though:[17,205,311,317,455,465,466],thread:[7,15,16,18,19,129,163,181,190,344,354,374,418,423,431,442,524],three:1,threshold:524,through:[4,11,17,162,187,188,201,269,271,273,314,376,548],throughput:6,thu:141,ticket:4,tightli:363,time:[0,3,6,7,9,12,17,18,127,159,169,170,181,182,188,190,191,192,221,248,269,298,314,352,375,381,406,414,418,423,436,437,438,524,548],timemilli:11,timeout:[5,9,12,18,106,126,130,131,132,133,166,181,190,193,196,197,206,217,218,227,228,229,230,233,237,238,244,245,246,249,254,269,272,273,274,291,299,418,423,426,429,437,438,454,455,456,462,465,466,492,524,535,544,546,547],timeout_msec:[342,354,455,456,465,466],timeoutm:524,timestamp:[9,10,19,127,169,170,177,192,248,298],tlocal:[11,21],tls:461,tm_mdai:548,tm_mon:548,tm_year:548,tmp:[0,4,21],to_insert:[127,246],to_str:246,tocollect:[165,193],todb:21,todo:0,togeth:[6,375,381,407,408,482],token:[12,127],told:262,too:[12,160,221,302,314,317],tool:[5,17],top:[340,406,461,524],topic:548,topolog:[3,7,57,61,78,89,90,95,96,98,99,101,102,146,147,467,468,469,471,524],topology_chang:3,topology_changed_ev:3,topology_clos:3,topology_closed_ev:3,topology_id:[57,61,78,95,98,101],topology_open:3,topology_opening_ev:3,total:[5,7,11,157,524],total_pop:1,totaldocsexamin:21,totalindexs:548,totalkeysexamin:21,trace:5,track:[5,258,548],tradit:216,traffic:270,transact:[12,18,133,135,139,165,166,168,172,173,179,180,181,190,193,194,197,200,201,203,205,207,208,212,213,215,220,221,229,230,232,233,236,237,245,246,249,274,279,281,284,290,291,299,418,422,423,425,472,473,475,476,477,478,479,480,481],transfer:[5,454,459],transienttransactionerror:[180,301,472],translat:4,transpar:[221,548],transport:[188,191,452],tri:[0,12,196,524],trip:[6,255,262,266,414,524],troubleshoot:[13,15,548],trust:[0,442,524],trust_dir:4,tune:[367,370,373],turn:461,tutori:[0,4,6,13,15,193,249,299,549],two:[1,3,6,7,10,17,21,127,165,180,193,472,549],twod_bits_precis:[367,370],twod_location_max:[367,370],twod_location_min:[367,370],twod_sphere_vers:367,txn_opt:[180,425,472],txt:[524,548],type:[0,5,6,10,17,18,20,119,191,221,227,229,230,330,332,347,349,363,406,416,435,470,471,491,492,493,508,509,510,516,517,518,524,548],typedef:[3,19,80,81,82,83,84,85,86,87,88,89,90,91,119,127,163,191,243,270,297,300,340,341,352,363,364,367,370,373,375,376,380,381,394,407,408,415,418,440,442,444,451,460,461,463,470,472,482,524],typic:[216,435,547],u_long:376,ubuntu:17,uint16_t:[364,506],uint32_t:[6,9,33,42,51,106,107,118,130,132,146,154,155,170,177,195,216,228,255,256,260,263,266,267,269,272,307,314,341,342,354,411,548],uint64_t:[269,314,353],uint8_t:[367,548],unacknowledg:[18,171,181,190,418,423,424,536,543,547],unalt:[198,275],unavail:[3,406,524],unawar:548,unblock:7,unchang:268,undef:19,under:[11,21],undergo:4,underli:[126,191,194,199,201,216,265,329,330,334,339,345,354,356,436,443,444,445,446,448,450,452,453,458,464],underneath:435,unescap:525,unfortun:3,uniniti:[106,172,200,207,208,215,217,229,230,237,242,245,246,305,308,309,490],uninstal:17,uniqu:[5,6,12,370,406,549],unistd:127,unit:1,unix:[4,15,336,426,427,429,442,449,451,461,524],unknown:[0,3,12,254,270,363,416,471],unknowntransactioncommitresult:[180,301,472],unless:[0,11,17,21,106,239,294,442],unlock:[442,524],unmodifi:221,unnecessari:524,unrecogn:213,unrecover:[180,472],unreli:262,unset:[118,267,492,515],unsign:[139,163,284,353,434,548],unspecifi:524,untar:17,until:[6,7,12,107,109,110,126,142,143,147,157,256,258,265,270,323,493,524,547],untrust:524,unus:[130,166,233,291,342,354],unwrap:196,updat:[5,6,7,9,12,120,121,122,123,181,193,217,218,236,237,238,243,244,245,246,249,299,302,309,311,312,313,314,315,317,412,482,511,512,516,517,518,524,549],update_opt:181,updatedexist:[311,312,313,315,316,317],upload:336,upload_d:352,upon:[106,136,137,138,139,141,186,196,273,276,283,284,327,379,426,449,450,455,460,465,466],upsert:[6,115,116,120,121,122,123,217,237,238,245,246,313,317,482],upsertedcount:237,upsertedid:[237,245,246],uri:[0,1,3,4,6,7,8,9,11,21,127,140,147,151,152,156,157,163,165,180,181,185,186,189,191,193,217,246,270,317,363,364,390,454,472,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,537,548],uri_str:[1,3,6,8,127,151,163,165,180,181,191,193,217,246,254,270,317,363,472,505,507,548],url:[0,4],usabl:7,usag:[9,11,21,363],use:[0,1,4,7,9,11,12,17,18,19,21,103,104,118,127,132,133,135,136,137,138,139,140,152,156,157,165,166,167,171,180,181,184,186,187,190,191,192,193,194,197,198,200,201,202,203,205,206,207,208,212,213,215,216,219,220,221,225,228,229,230,232,233,236,237,238,239,240,241,245,246,248,249,250,263,267,274,275,279,280,281,283,284,286,287,288,290,291,294,295,296,298,299,300,301,310,316,317,323,339,355,356,357,358,359,363,376,379,387,391,392,406,418,423,435,442,443,447,449,450,455,456,459,461,465,497,501,506,524,528,530,540,541,547,548,549],used:[0,4,7,18,103,104,106,107,108,138,142,143,148,149,155,163,175,177,181,188,190,191,192,199,201,202,204,205,212,213,214,216,217,219,224,226,228,236,238,242,247,248,256,258,263,268,270,276,279,280,283,298,300,310,317,329,341,352,363,367,370,373,382,392,403,405,418,423,438,442,443,448,497,501,524,526,541,542,543,544,545,546,548,549],useful:[17,19,107,243,262,268,297,386,431,482,524,526,527],user:[0,4,6,11,17,21,127,188,201,216,271,292,293,311,315,317,382,391,442,452,490,507,515,524,540,548],user_data:[19,188,191],userflag:548,usernam:[0,4,11,21,271,293,503,519,522,524],uses:[0,1,4,5,7,12,18,107,130,131,192,195,196,201,242,248,256,258,266,272,273,298,332,438,442,454,468,469,492,538,539,547,548,549],using:[0,4,5,6,7,11,12,15,17,18,127,132,151,152,156,181,190,192,194,236,248,298,370,379,392,402,406,418,423,429,430,436,437,438,442,449,459,505,524,541,542,543,544,545,546,548],usr:[17,548],usual:[382,549],utcdatetim:10,utf8:[518,525],utf:[348,357,362,511,512,513,514,519,522],util:17,v_int32:363,val:11,valgrind:5,valid:[4,25,29,31,35,36,38,39,44,47,49,54,55,56,60,66,69,73,74,77,93,94,106,110,112,114,116,117,119,121,123,162,183,187,194,199,201,206,207,208,229,230,234,237,245,246,247,265,302,311,312,315,316,317,375,401,422,442,454,475,476,477,482,493,507,508,509,510,511,512,513,514,515,519,522,524],validationact:317,validationlevel:317,valu:[0,1,4,11,19,107,133,135,139,165,166,175,193,194,197,200,201,212,213,215,220,221,232,233,236,249,259,260,274,279,281,284,290,291,299,302,307,311,312,313,315,316,317,318,319,320,363,364,366,369,370,372,406,422,424,439,442,454,456,466,475,476,477,491,492,493,511,512,513,514,516,517,518,524,532,535,543,544,546,547,548],value_typ:[127,363],variabl:[5,10,431],variant:548,variat:17,varieti:17,variou:[0,19,133,165,166,193,194,197,202,203,221,232,233,249,274,290,291,299,341,376,440,526],vassar:548,vast:548,vcxproj:17,vector:[138,139,438,456,466],verbos:10,veri:4,verif:524,verifi:[0,1,442,548],version:[2,11,13,15,16,17,20,21,128,133,161,165,166,184,193,196,197,205,213,217,221,232,233,249,263,264,274,290,291,299,316,317,321,370,377,378,379,380,392,393,442,541,542,543,544,545,546,548],via:[4,5,103,104,106,109,110,111,112,113,114,115,116,120,121,123,131,133,138,139,141,148,165,166,193,196,197,199,200,201,205,206,207,208,212,213,214,215,217,218,219,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,253,254,274,276,279,280,283,284,289,290,291,292,293,299,325,327,338,343,356,357,358,362,379,548],view:[7,412],violat:12,virtual:4,vista:17,visual:[13,14,15],w64:15,wai:[7,9,12,17,406,482,548],wait:[6,7,181,192,221,248,269,298,382,455,465,524,535,544,546],waitqueuemultipl:524,waitqueuetimeoutm:524,wake:524,wall:[9,11,21,406,524],want:[0,5,11,17,21,140,163,198,206,234,275,381,526,548,549],warn:[19,180,472,513,541,542,543,544,545,546],warranti:[11,21],watch:[5,127],weak_cert_valid:[4,442],websit:[186,199,201,240,295,393,394,404,524,547],weight:370,well:[7,9,12,252,263,382,524],were:[3,18,437,442,489,548],wget:17,what:[4,11,12,19,155,547],whatev:188,when:[0,4,5,6,7,9,12,17,18,19,24,34,43,52,58,62,67,70,75,79,96,99,102,118,125,126,130,136,137,140,152,156,166,167,180,187,190,191,192,194,196,198,200,202,203,216,233,237,245,246,248,250,256,258,263,264,267,272,275,291,298,310,311,318,319,320,323,339,341,355,357,358,359,362,364,376,379,381,387,391,393,406,425,430,433,435,438,442,443,449,450,455,459,465,472,482,506,524,528,540,543,547,548,549],whenc:345,whenev:[80,81,82,83,84,85,86,87,88,89,90,91,524],where:[1,6,12,16,127,135,165,193,200,219,220,280,281],whether:[12,126,167,179,213,301,406,524,539],which:[0,3,6,10,11,12,17,21,106,112,113,114,115,116,118,120,121,122,123,127,130,132,140,141,154,155,162,174,178,187,192,205,221,223,228,245,246,247,248,254,261,264,267,270,272,285,298,312,315,330,331,358,359,363,406,410,424,425,436,442,472,485,486,487,488,494,495,499,502,503,524,534,543,549],whichev:[0,524],whole:[180,363,472],whom:524,whose:[120,121,122,123,398,403,524],why:31,wide:127,win32:549,win64:17,window:[4,15,426,427,428,429,440,548],winningplan:21,wire:[4,5,32,41,50,216,270,375,381,407,408,482,524],wiredtig:[371,373],wish:265,within:[0,7,12,17,18,181,190,270,289,353,366,369,372,418,423,524],without:[0,5,11,17,21,127,133,165,166,193,197,225,232,233,249,271,274,290,291,299,363,524],wmajor:[532,533],won:406,word:536,work:[0,21,446,451,460,463,464,548],worker:[163,548],world:[20,191,270,380,548],worth:363,would:[216,345,392,524,525,532,541,542,543,544,545,546],wrap:[0,118,167,191,263,264,267,270,363,453,457,461],wrapper:[210,211,217,235,278,426,427,428,429,432,457,461],writabl:469,write:[11,12,13,14,15,18,21,106,108,109,118,119,127,130,131,132,133,150,163,165,166,167,171,180,181,189,190,194,196,197,202,203,205,206,207,208,212,213,217,218,221,222,226,227,228,229,230,232,233,236,237,238,241,244,245,246,263,264,267,272,273,274,276,279,290,291,296,297,302,314,317,322,323,354,363,376,406,418,423,424,425,438,446,448,452,454,465,466,472,481,504,523,527,529,530,531,532,533,535,536,537,538,539,540,541,542,543,544,545,546,548],write_concern:[6,165,180,189,193,194,202,206,222,227,228,234,238,241,244,296,472,481,527,528,529,530,531,532,533,534,535,536,537,538,539,541,542,543,544,545,546],writeconcern:[133,165,166,193,194,197,203,205,207,208,212,213,229,230,233,236,237,245,246,249,274,279,291,299],writeconcernerror:[6,207,208,229,230,237,245,246],writeerror:[3,6,207,208,229,230,237,245,246],writeresult:[20,165,193],writev:[352,466],written:[17,216,354,465,466,533],wrong:12,ws2_32:549,wtag:534,wtimeout:[6,180,472],wtimeout_msec:[544,546],wtimeoutm:[165,193,524],www:[11,21],x00:10,x01:10,x02:10,x10x:10,x10y:10,x13:10,x509:4,x509_derived_usernam:4,x86:17,x86_64:17,xcode:17,xzf:17,yale:548,year:548,yet:[6,262],you:[1,3,4,5,9,10,11,12,16,17,18,19,20,21,23,129,133,135,139,140,141,163,165,166,175,176,178,191,193,194,197,198,200,201,202,203,205,206,207,208,212,213,215,216,220,221,227,229,230,232,233,234,236,237,245,246,249,265,274,275,279,281,284,290,291,299,346,347,348,350,351,355,356,357,358,359,363,374,375,376,381,382,390,393,406,410,424,429,430,437,468,469,482,524,526,537,543,547,548,549],your:[3,4,5,7,10,12,15,16,17,18,19,129,191,227,229,230,363,374,375,382,406,429,442,482,524,545,549],yourself:16,yum:17,zero:[6,107,195,199,201,255,256,258,266,492,543,544,546],zipcod:1,zlatan:[302,311,312,313,314,315,316,317],zlib:[0,487,513,524],zlibcompressionlevel:524,zseri:17},titles:["Advanced Connections","Aggregation Framework Examples","API Reference","Application Performance Monitoring (APM)","Authentication","Basic Troubleshooting","Bulk Write Operations","Connection Pooling","Creating Indexes","Cursors","Aids for Debugging","\u201cdistinct\u201d and \u201cmapReduce\u201d","Error Reporting","Index","Guides","MongoDB C Driver","Initialization and cleanup","Installing the MongoDB C Driver (libmongoc) and BSON library (libbson)","Object Lifecycle","Logging","Client Side Document Matching","Common Tasks","mongoc_apm_callbacks_destroy()","mongoc_apm_callbacks_new()","mongoc_apm_callbacks_t","mongoc_apm_command_failed_get_command_name()","mongoc_apm_command_failed_get_context()","mongoc_apm_command_failed_get_duration()","mongoc_apm_command_failed_get_error()","mongoc_apm_command_failed_get_host()","mongoc_apm_command_failed_get_operation_id()","mongoc_apm_command_failed_get_reply()","mongoc_apm_command_failed_get_request_id()","mongoc_apm_command_failed_get_server_id()","mongoc_apm_command_failed_t","mongoc_apm_command_started_get_command()","mongoc_apm_command_started_get_command_name()","mongoc_apm_command_started_get_context()","mongoc_apm_command_started_get_database_name()","mongoc_apm_command_started_get_host()","mongoc_apm_command_started_get_operation_id()","mongoc_apm_command_started_get_request_id()","mongoc_apm_command_started_get_server_id()","mongoc_apm_command_started_t","mongoc_apm_command_succeeded_get_command_name()","mongoc_apm_command_succeeded_get_context()","mongoc_apm_command_succeeded_get_duration()","mongoc_apm_command_succeeded_get_host()","mongoc_apm_command_succeeded_get_operation_id()","mongoc_apm_command_succeeded_get_reply()","mongoc_apm_command_succeeded_get_request_id()","mongoc_apm_command_succeeded_get_server_id()","mongoc_apm_command_succeeded_t","mongoc_apm_server_changed_get_context()","mongoc_apm_server_changed_get_host()","mongoc_apm_server_changed_get_new_description()","mongoc_apm_server_changed_get_previous_description()","mongoc_apm_server_changed_get_topology_id()","mongoc_apm_server_changed_t","mongoc_apm_server_closed_get_context()","mongoc_apm_server_closed_get_host()","mongoc_apm_server_closed_get_topology_id()","mongoc_apm_server_closed_t","mongoc_apm_server_heartbeat_failed_get_context()","mongoc_apm_server_heartbeat_failed_get_duration()","mongoc_apm_server_heartbeat_failed_get_error()","mongoc_apm_server_heartbeat_failed_get_host()","mongoc_apm_server_heartbeat_failed_t","mongoc_apm_server_heartbeat_started_get_context()","mongoc_apm_server_heartbeat_started_get_host()","mongoc_apm_server_heartbeat_started_t","mongoc_apm_server_heartbeat_succeeded_get_context()","mongoc_apm_server_heartbeat_succeeded_get_duration()","mongoc_apm_server_heartbeat_succeeded_get_host()","mongoc_apm_server_heartbeat_succeeded_get_reply()","mongoc_apm_server_heartbeat_succeeded_t","mongoc_apm_server_opening_get_context()","mongoc_apm_server_opening_get_host()","mongoc_apm_server_opening_get_topology_id()","mongoc_apm_server_opening_t","mongoc_apm_set_command_failed_cb()","mongoc_apm_set_command_started_cb()","mongoc_apm_set_command_succeeded_cb()","mongoc_apm_set_server_changed_cb()","mongoc_apm_set_server_closed_cb()","mongoc_apm_set_server_heartbeat_failed_cb()","mongoc_apm_set_server_heartbeat_started_cb()","mongoc_apm_set_server_heartbeat_succeeded_cb()","mongoc_apm_set_server_opening_cb()","mongoc_apm_set_topology_changed_cb()","mongoc_apm_set_topology_closed_cb()","mongoc_apm_set_topology_opening_cb()","mongoc_apm_topology_changed_get_context()","mongoc_apm_topology_changed_get_new_description()","mongoc_apm_topology_changed_get_previous_description()","mongoc_apm_topology_changed_get_topology_id()","mongoc_apm_topology_changed_t","mongoc_apm_topology_closed_get_context()","mongoc_apm_topology_closed_get_topology_id()","mongoc_apm_topology_closed_t","mongoc_apm_topology_opening_get_context()","mongoc_apm_topology_opening_get_topology_id()","mongoc_apm_topology_opening_t","mongoc_bulk_operation_delete()","mongoc_bulk_operation_delete_one()","mongoc_bulk_operation_destroy()","mongoc_bulk_operation_execute()","mongoc_bulk_operation_get_hint()","mongoc_bulk_operation_get_write_concern()","mongoc_bulk_operation_insert()","mongoc_bulk_operation_insert_with_opts()","mongoc_bulk_operation_remove()","mongoc_bulk_operation_remove_many_with_opts()","mongoc_bulk_operation_remove_one()","mongoc_bulk_operation_remove_one_with_opts()","mongoc_bulk_operation_replace_one()","mongoc_bulk_operation_replace_one_with_opts()","mongoc_bulk_operation_set_bypass_document_validation()","mongoc_bulk_operation_set_hint()","mongoc_bulk_operation_t","mongoc_bulk_operation_update()","mongoc_bulk_operation_update_many_with_opts()","mongoc_bulk_operation_update_one()","mongoc_bulk_operation_update_one_with_opts()","mongoc_change_stream_destroy()","mongoc_change_stream_error_document()","mongoc_change_stream_next()","mongoc_change_stream_t","mongoc_check_version()","mongoc_cleanup()","mongoc_client_command()","mongoc_client_command_simple()","mongoc_client_command_simple_with_server_id()","mongoc_client_command_with_opts()","mongoc_client_destroy()","mongoc_client_find_databases_with_opts()","mongoc_client_get_collection()","mongoc_client_get_database()","mongoc_client_get_database_names()","mongoc_client_get_database_names_with_opts()","mongoc_client_get_default_database()","mongoc_client_get_gridfs()","mongoc_client_get_max_bson_size()","mongoc_client_get_max_message_size()","mongoc_client_get_read_concern()","mongoc_client_get_read_prefs()","mongoc_client_get_server_description()","mongoc_client_get_server_descriptions()","mongoc_client_get_server_status()","mongoc_client_get_uri()","mongoc_client_get_write_concern()","mongoc_client_new()","mongoc_client_new_from_uri()","mongoc_client_pool_destroy()","mongoc_client_pool_max_size()","mongoc_client_pool_min_size()","mongoc_client_pool_new()","mongoc_client_pool_pop()","mongoc_client_pool_push()","mongoc_client_pool_set_apm_callbacks()","mongoc_client_pool_set_appname()","mongoc_client_pool_set_error_api()","mongoc_client_pool_set_ssl_opts()","mongoc_client_pool_t","mongoc_client_pool_try_pop()","mongoc_client_read_command_with_opts()","mongoc_client_read_write_command_with_opts()","mongoc_client_select_server()","mongoc_client_session_abort_transaction()","mongoc_client_session_advance_cluster_time()","mongoc_client_session_advance_operation_time()","mongoc_client_session_append()","mongoc_client_session_commit_transaction()","mongoc_client_session_destroy()","mongoc_client_session_get_client()","mongoc_client_session_get_cluster_time()","mongoc_client_session_get_lsid()","mongoc_client_session_get_operation_time()","mongoc_client_session_get_opts()","mongoc_client_session_in_transaction()","mongoc_client_session_start_transaction()","mongoc_client_session_t","mongoc_client_set_apm_callbacks()","mongoc_client_set_appname()","mongoc_client_set_error_api()","mongoc_client_set_read_concern()","mongoc_client_set_read_prefs()","mongoc_client_set_ssl_opts()","mongoc_client_set_stream_initiator()","mongoc_client_set_write_concern()","mongoc_client_start_session()","mongoc_client_t","mongoc_client_watch()","mongoc_client_write_command_with_opts()","mongoc_collection_aggregate()","mongoc_collection_command()","mongoc_collection_command_simple()","mongoc_collection_command_with_opts()","mongoc_collection_copy()","mongoc_collection_count()","mongoc_collection_count_documents()","mongoc_collection_count_with_opts()","mongoc_collection_create_bulk_operation()","mongoc_collection_create_bulk_operation_with_opts()","mongoc_collection_create_index()","mongoc_collection_create_index_with_opts()","mongoc_collection_delete()","mongoc_collection_delete_many()","mongoc_collection_delete_one()","mongoc_collection_destroy()","mongoc_collection_drop()","mongoc_collection_drop_index()","mongoc_collection_drop_index_with_opts()","mongoc_collection_drop_with_opts()","mongoc_collection_ensure_index()","mongoc_collection_estimated_document_count()","mongoc_collection_find()","mongoc_collection_find_and_modify()","mongoc_collection_find_and_modify_with_opts()","mongoc_collection_find_indexes()","mongoc_collection_find_indexes_with_opts()","mongoc_collection_find_with_opts()","mongoc_collection_get_last_error()","mongoc_collection_get_name()","mongoc_collection_get_read_concern()","mongoc_collection_get_read_prefs()","mongoc_collection_get_write_concern()","mongoc_collection_insert()","mongoc_collection_insert_bulk()","mongoc_collection_insert_many()","mongoc_collection_insert_one()","mongoc_collection_keys_to_index_string()","mongoc_collection_read_command_with_opts()","mongoc_collection_read_write_command_with_opts()","mongoc_collection_remove()","mongoc_collection_rename()","mongoc_collection_rename_with_opts()","mongoc_collection_replace_one()","mongoc_collection_save()","mongoc_collection_set_read_concern()","mongoc_collection_set_read_prefs()","mongoc_collection_set_write_concern()","mongoc_collection_stats()","mongoc_collection_t","mongoc_collection_update()","mongoc_collection_update_many()","mongoc_collection_update_one()","mongoc_collection_validate()","mongoc_collection_watch()","mongoc_collection_write_command_with_opts()","mongoc_cursor_clone()","mongoc_cursor_current()","mongoc_cursor_destroy()","mongoc_cursor_error()","mongoc_cursor_error_document()","mongoc_cursor_get_batch_size()","mongoc_cursor_get_hint()","mongoc_cursor_get_host()","mongoc_cursor_get_id()","mongoc_cursor_get_limit()","mongoc_cursor_get_max_await_time_ms()","mongoc_cursor_is_alive()","mongoc_cursor_more()","mongoc_cursor_new_from_command_reply()","mongoc_cursor_new_from_command_reply_with_opts()","mongoc_cursor_next()","mongoc_cursor_set_batch_size()","mongoc_cursor_set_hint()","mongoc_cursor_set_limit()","mongoc_cursor_set_max_await_time_ms()","mongoc_cursor_t","mongoc_database_add_user()","mongoc_database_command()","mongoc_database_command_simple()","mongoc_database_command_with_opts()","mongoc_database_copy()","mongoc_database_create_collection()","mongoc_database_destroy()","mongoc_database_drop()","mongoc_database_drop_with_opts()","mongoc_database_find_collections()","mongoc_database_find_collections_with_opts()","mongoc_database_get_collection()","mongoc_database_get_collection_names()","mongoc_database_get_collection_names_with_opts()","mongoc_database_get_name()","mongoc_database_get_read_concern()","mongoc_database_get_read_prefs()","mongoc_database_get_write_concern()","mongoc_database_has_collection()","mongoc_database_read_command_with_opts()","mongoc_database_read_write_command_with_opts()","mongoc_database_remove_all_users()","mongoc_database_remove_user()","mongoc_database_set_read_concern()","mongoc_database_set_read_prefs()","mongoc_database_set_write_concern()","mongoc_database_t","mongoc_database_watch()","mongoc_database_write_command_with_opts()","mongoc_delete_flags_t","mongoc_error_has_label()","mongoc_find_and_modify_opts_append()","mongoc_find_and_modify_opts_destroy()","mongoc_find_and_modify_opts_get_bypass_document_validation()","mongoc_find_and_modify_opts_get_fields()","mongoc_find_and_modify_opts_get_flags()","mongoc_find_and_modify_opts_get_max_time_ms()","mongoc_find_and_modify_opts_get_sort()","mongoc_find_and_modify_opts_get_update()","mongoc_find_and_modify_opts_new()","mongoc_find_and_modify_opts_set_bypass_document_validation()","mongoc_find_and_modify_opts_set_fields()","mongoc_find_and_modify_opts_set_flags()","mongoc_find_and_modify_opts_set_max_time_ms()","mongoc_find_and_modify_opts_set_sort()","mongoc_find_and_modify_opts_set_update()","mongoc_find_and_modify_opts_t","mongoc_get_major_version()","mongoc_get_micro_version()","mongoc_get_minor_version()","mongoc_get_version()","mongoc_gridfs_create_file()","mongoc_gridfs_create_file_from_stream()","mongoc_gridfs_destroy()","mongoc_gridfs_drop()","mongoc_gridfs_file_destroy()","mongoc_gridfs_file_error()","mongoc_gridfs_file_get_aliases()","mongoc_gridfs_file_get_chunk_size()","mongoc_gridfs_file_get_content_type()","mongoc_gridfs_file_get_filename()","mongoc_gridfs_file_get_id()","mongoc_gridfs_file_get_length()","mongoc_gridfs_file_get_md5()","mongoc_gridfs_file_get_metadata()","mongoc_gridfs_file_get_upload_date()","mongoc_gridfs_file_list_destroy()","mongoc_gridfs_file_list_error()","mongoc_gridfs_file_list_next()","mongoc_gridfs_file_list_t","mongoc_gridfs_file_opt_t","mongoc_gridfs_file_readv()","mongoc_gridfs_file_remove()","mongoc_gridfs_file_save()","mongoc_gridfs_file_seek()","mongoc_gridfs_file_set_aliases()","mongoc_gridfs_file_set_content_type()","mongoc_gridfs_file_set_filename()","mongoc_gridfs_file_set_id()","mongoc_gridfs_file_set_md5()","mongoc_gridfs_file_set_metadata()","mongoc_gridfs_file_t","mongoc_gridfs_file_tell()","mongoc_gridfs_file_writev()","mongoc_gridfs_find()","mongoc_gridfs_find_one()","mongoc_gridfs_find_one_by_filename()","mongoc_gridfs_find_one_with_opts()","mongoc_gridfs_find_with_opts()","mongoc_gridfs_get_chunks()","mongoc_gridfs_get_files()","mongoc_gridfs_remove_by_filename()","mongoc_gridfs_t","mongoc_host_list_t","mongoc_index_opt_geo_get_default()","mongoc_index_opt_geo_init()","mongoc_index_opt_geo_t","mongoc_index_opt_get_default()","mongoc_index_opt_init()","mongoc_index_opt_t","mongoc_index_opt_wt_get_default()","mongoc_index_opt_wt_init()","mongoc_index_opt_wt_t","mongoc_init()","mongoc_insert_flags_t","mongoc_iovec_t","mongoc_matcher_destroy()","mongoc_matcher_match()","mongoc_matcher_new()","mongoc_matcher_t","mongoc_query_flags_t","mongoc_rand","mongoc_rand_add()","mongoc_rand_seed()","mongoc_rand_status()","mongoc_read_concern_append()","mongoc_read_concern_copy()","mongoc_read_concern_destroy()","mongoc_read_concern_get_level()","mongoc_read_concern_is_default()","mongoc_read_concern_new()","mongoc_read_concern_set_level()","mongoc_read_concern_t","mongoc_read_mode_t","mongoc_read_prefs_add_tag()","mongoc_read_prefs_copy()","mongoc_read_prefs_destroy()","mongoc_read_prefs_get_max_staleness_seconds()","mongoc_read_prefs_get_mode()","mongoc_read_prefs_get_tags()","mongoc_read_prefs_is_valid()","mongoc_read_prefs_new()","mongoc_read_prefs_set_max_staleness_seconds()","mongoc_read_prefs_set_mode()","mongoc_read_prefs_set_tags()","mongoc_read_prefs_t","mongoc_remove_flags_t","mongoc_reply_flags_t","mongoc_server_description_destroy()","mongoc_server_description_host()","mongoc_server_description_id()","mongoc_server_description_ismaster()","mongoc_server_description_new_copy()","mongoc_server_description_round_trip_time()","mongoc_server_description_t","mongoc_server_description_type()","mongoc_server_descriptions_destroy_all()","mongoc_session_opt_t","mongoc_session_opts_clone()","mongoc_session_opts_destroy()","mongoc_session_opts_get_causal_consistency()","mongoc_session_opts_get_default_transaction_opts()","mongoc_session_opts_new()","mongoc_session_opts_set_causal_consistency()","mongoc_session_opts_set_default_transaction_opts()","mongoc_socket_accept()","mongoc_socket_bind()","mongoc_socket_close()","mongoc_socket_connect()","mongoc_socket_destroy()","mongoc_socket_errno()","mongoc_socket_getnameinfo()","mongoc_socket_getsockname()","mongoc_socket_listen()","mongoc_socket_new()","mongoc_socket_recv()","mongoc_socket_send()","mongoc_socket_sendv()","mongoc_socket_setsockopt()","mongoc_socket_t","mongoc_ssl_opt_get_default()","mongoc_ssl_opt_t","mongoc_stream_buffered_new()","mongoc_stream_buffered_t","mongoc_stream_close()","mongoc_stream_cork()","mongoc_stream_destroy()","mongoc_stream_file_get_fd()","mongoc_stream_file_new()","mongoc_stream_file_new_for_path()","mongoc_stream_file_t","mongoc_stream_flush()","mongoc_stream_get_base_stream()","mongoc_stream_gridfs_new()","mongoc_stream_read()","mongoc_stream_readv()","mongoc_stream_setsockopt()","mongoc_stream_socket_get_socket()","mongoc_stream_socket_new()","mongoc_stream_socket_t","mongoc_stream_t","mongoc_stream_timed_out()","mongoc_stream_tls_t","mongoc_stream_uncork()","mongoc_stream_write()","mongoc_stream_writev()","mongoc_topology_description_get_servers()","mongoc_topology_description_has_readable_server()","mongoc_topology_description_has_writable_server()","mongoc_topology_description_t","mongoc_topology_description_type()","mongoc_transaction_opt_t","mongoc_transaction_opts_clone()","mongoc_transaction_opts_destroy()","mongoc_transaction_opts_get_read_concern()","mongoc_transaction_opts_get_read_prefs()","mongoc_transaction_opts_get_write_concern()","mongoc_transaction_opts_new()","mongoc_transaction_opts_set_read_concern()","mongoc_transaction_opts_set_read_prefs()","mongoc_transaction_opts_set_write_concern()","mongoc_update_flags_t","mongoc_uri_copy()","mongoc_uri_destroy()","mongoc_uri_get_auth_mechanism()","mongoc_uri_get_auth_source()","mongoc_uri_get_compressors()","mongoc_uri_get_database()","mongoc_uri_get_hosts()","mongoc_uri_get_mechanism_properties()","mongoc_uri_get_option_as_bool()","mongoc_uri_get_option_as_int32()","mongoc_uri_get_option_as_utf8()","mongoc_uri_get_options()","mongoc_uri_get_password()","mongoc_uri_get_read_concern()","mongoc_uri_get_read_prefs()","mongoc_uri_get_read_prefs_t()","mongoc_uri_get_replica_set()","mongoc_uri_get_service()","mongoc_uri_get_ssl()","mongoc_uri_get_string()","mongoc_uri_get_username()","mongoc_uri_get_write_concern()","mongoc_uri_new()","mongoc_uri_new_for_host_port()","mongoc_uri_new_with_error()","mongoc_uri_option_is_bool()","mongoc_uri_option_is_int32()","mongoc_uri_option_is_utf8()","mongoc_uri_set_auth_mechanism()","mongoc_uri_set_auth_source()","mongoc_uri_set_compressors()","mongoc_uri_set_database()","mongoc_uri_set_mechanism_properties()","mongoc_uri_set_option_as_bool()","mongoc_uri_set_option_as_int32()","mongoc_uri_set_option_as_utf8()","mongoc_uri_set_password()","mongoc_uri_set_read_concern()","mongoc_uri_set_read_prefs_t()","mongoc_uri_set_username()","mongoc_uri_set_write_concern()","mongoc_uri_t","mongoc_uri_unescape()","Version Checks","mongoc_write_concern_append()","mongoc_write_concern_copy()","mongoc_write_concern_destroy()","mongoc_write_concern_get_fsync()","mongoc_write_concern_get_journal()","mongoc_write_concern_get_w()","mongoc_write_concern_get_wmajority()","mongoc_write_concern_get_wtag()","mongoc_write_concern_get_wtimeout()","mongoc_write_concern_is_acknowledged()","mongoc_write_concern_is_default()","mongoc_write_concern_is_valid()","mongoc_write_concern_journal_is_set()","mongoc_write_concern_new()","mongoc_write_concern_set_fsync()","mongoc_write_concern_set_journal()","mongoc_write_concern_set_w()","mongoc_write_concern_set_wmajority()","mongoc_write_concern_set_wtag()","mongoc_write_concern_set_wtimeout()","mongoc_write_concern_t","Tutorial","Using libmongoc in a Microsoft Visual Studio project"],titleterms:{"function":[3,12,24,34,43,52,58,62,67,70,75,79,96,99,102,119,127,163,181,191,200,243,270,297,317,340,341,352,363,367,370,373,380,382,393,406,415,418,440,442,451,460,461,463,470,472,524,547],"return":[23,25,26,27,29,30,31,32,33,35,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,53,54,55,56,57,59,60,61,63,64,66,68,69,71,72,73,74,76,77,78,92,93,94,95,97,98,100,101,106,108,110,112,114,116,121,123,125,126,128,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,156,157,159,160,161,164,165,166,167,168,171,172,175,176,178,179,180,182,183,184,190,192,193,194,195,196,197,198,199,200,201,202,203,205,206,207,208,212,213,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,236,237,238,242,244,245,246,247,248,249,250,251,253,254,261,262,263,264,265,267,268,271,272,273,274,275,276,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,298,299,301,302,304,306,307,310,311,312,313,314,315,316,318,319,320,321,322,323,325,327,328,329,330,331,332,333,334,335,336,338,339,342,343,344,345,349,353,354,355,356,357,358,359,360,361,362,365,368,371,378,379,385,386,387,389,391,392,396,399,400,401,402,410,412,413,426,427,428,429,431,432,433,434,435,436,437,438,439,441,443,445,446,448,449,450,452,453,454,455,456,457,458,459,462,464,465,466,467,468,469,483,485,486,487,488,489,490,494,495,496,497,498,499,500,501,502,503,504,505,506,507,511,512,513,514,515,516,517,518,519,522,525,527,528,530,531,532,533,534,535,540],"static":549,TLS:442,The:[216,221],Use:548,Using:[548,549],addit:0,address:0,advanc:0,aggreg:1,aid:10,also:[4,12,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,109,111,112,113,114,115,116,117,119,120,121,122,123,151,159,168,169,170,172,173,174,175,176,177,178,180,182,190,192,200,202,203,215,216,221,237,245,246,248,253,254,262,269,281,298,364,367,370,373,419,420,421,422,423,424,425,442,444,445,446,455,456,461,464,465,468,469,473,474,475,476,477,478,479,480,481,485,486,490,511,512,515],api:[2,12],apm:3,append:[302,548],applic:3,authent:[4,442,524],automat:16,avail:[162,187],averag:1,basic:[4,5,11,20,193,249,299,548],bcon:548,bson:[17,548],bug:5,build:17,bulk:6,bypass:6,bypassdocumentvalid:311,certif:[4,442],channel:442,check:526,checklist:5,citi:1,cleanup:16,client:[18,20,442],clonecollect:21,cluster:0,cmake:548,code:1,collat:6,collect:18,command:[3,11,21,216,221,548],common:21,complic:11,compress:0,concern:[6,243,393,524,547],config:548,configur:442,connect:[0,7,524,548],content:548,copydb:21,count:[200,548],counter:5,creat:[8,548],crud:548,cursor:9,custom:19,darwin:442,data:[0,1],databas:18,debug:10,delet:548,deprec:[16,20,103,104,138,142,143,148,199,200,201,202,204,205,206,214,216,219,221,228,238,242,247,261,263,280,283,300,355,356,370,377,378,379,380,497,530,541,547],descript:[12,107,108,117,118,129,130,138,171,194,196,198,199,200,201,202,203,205,206,207,208,209,210,211,212,213,215,216,217,218,221,222,223,224,225,226,227,228,229,230,231,234,235,236,237,238,239,240,241,242,244,245,246,247,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,266,267,268,269,272,275,276,278,279,280,283,302,303,305,308,309,311,312,313,314,315,316,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,366,367,369,370,372,373,374,375,381,382,383,384,385,386,387,388,389,390,392,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,411,412,413,414,416,426,427,428,429,430,431,432,433,434,435,436,437,438,439,442,444,471,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,541,542,543,544,545,546],destroi:9,disabl:19,discoveri:524,distinct:11,document:[6,17,20,548],domain:0,driver:[15,17],entropi:382,error:[12,103,104,106,109,110,111,112,113,114,115,116,120,121,123,131,133,135,138,139,141,148,165,166,190,193,196,197,199,200,201,202,203,205,206,207,208,212,213,214,215,217,218,219,220,227,228,229,230,232,233,234,236,237,238,242,244,245,246,247,249,253,254,271,273,274,276,279,280,281,283,284,289,290,291,292,293,299,325,327,338,343,345,356,357,358,362,379],exampl:[1,3,8,11,21,127,133,139,140,163,165,166,171,180,181,191,193,194,196,197,199,200,201,215,216,217,218,221,232,233,246,249,254,270,274,281,284,290,291,297,299,317,340,363,370,380,386,405,420,424,472,487,490,507,513,515,524,527],execut:548,explain:[21,216,221],failur:9,featur:16,field:312,find:[216,548],findandmodifi:302,flag:[313,375,381,407,408,482],format:524,framework:1,from:[0,17,200,548],further:6,gdb:10,gener:17,git:17,gridf:18,gssapi:4,guid:14,handl:9,handler:19,header:548,includ:548,index:[8,13],initi:16,insert:[6,548],instal:[17,548],introduct:15,ipv4:[0,524],ipv6:[0,524],json:548,kerbero:4,label:12,legaci:[4,524],level:[393,547],libbson:17,libmongoc:[17,548,549],librari:17,libressl:442,libtl:442,lifecycl:[18,265,363,415],link:[548,549],lldb:10,log:19,maco:[17,442],macro:19,make:548,manag:17,manual:548,mapreduc:11,match:20,max:406,maxtimem:314,mechan:524,microsoft:[548,549],migrat:200,million:1,mingw:17,mix:6,mode:[7,406],mongoc:548,mongoc_apm_callbacks_destroi:22,mongoc_apm_callbacks_new:23,mongoc_apm_callbacks_t:24,mongoc_apm_command_failed_get_command_nam:25,mongoc_apm_command_failed_get_context:26,mongoc_apm_command_failed_get_dur:27,mongoc_apm_command_failed_get_error:28,mongoc_apm_command_failed_get_host:29,mongoc_apm_command_failed_get_operation_id:30,mongoc_apm_command_failed_get_repli:31,mongoc_apm_command_failed_get_request_id:32,mongoc_apm_command_failed_get_server_id:33,mongoc_apm_command_failed_t:34,mongoc_apm_command_started_get_command:35,mongoc_apm_command_started_get_command_nam:36,mongoc_apm_command_started_get_context:37,mongoc_apm_command_started_get_database_nam:38,mongoc_apm_command_started_get_host:39,mongoc_apm_command_started_get_operation_id:40,mongoc_apm_command_started_get_request_id:41,mongoc_apm_command_started_get_server_id:42,mongoc_apm_command_started_t:43,mongoc_apm_command_succeeded_get_command_nam:44,mongoc_apm_command_succeeded_get_context:45,mongoc_apm_command_succeeded_get_dur:46,mongoc_apm_command_succeeded_get_host:47,mongoc_apm_command_succeeded_get_operation_id:48,mongoc_apm_command_succeeded_get_repli:49,mongoc_apm_command_succeeded_get_request_id:50,mongoc_apm_command_succeeded_get_server_id:51,mongoc_apm_command_succeeded_t:52,mongoc_apm_server_changed_get_context:53,mongoc_apm_server_changed_get_host:54,mongoc_apm_server_changed_get_new_descript:55,mongoc_apm_server_changed_get_previous_descript:56,mongoc_apm_server_changed_get_topology_id:57,mongoc_apm_server_changed_t:58,mongoc_apm_server_closed_get_context:59,mongoc_apm_server_closed_get_host:60,mongoc_apm_server_closed_get_topology_id:61,mongoc_apm_server_closed_t:62,mongoc_apm_server_heartbeat_failed_get_context:63,mongoc_apm_server_heartbeat_failed_get_dur:64,mongoc_apm_server_heartbeat_failed_get_error:65,mongoc_apm_server_heartbeat_failed_get_host:66,mongoc_apm_server_heartbeat_failed_t:67,mongoc_apm_server_heartbeat_started_get_context:68,mongoc_apm_server_heartbeat_started_get_host:69,mongoc_apm_server_heartbeat_started_t:70,mongoc_apm_server_heartbeat_succeeded_get_context:71,mongoc_apm_server_heartbeat_succeeded_get_dur:72,mongoc_apm_server_heartbeat_succeeded_get_host:73,mongoc_apm_server_heartbeat_succeeded_get_repli:74,mongoc_apm_server_heartbeat_succeeded_t:75,mongoc_apm_server_opening_get_context:76,mongoc_apm_server_opening_get_host:77,mongoc_apm_server_opening_get_topology_id:78,mongoc_apm_server_opening_t:79,mongoc_apm_set_command_failed_cb:80,mongoc_apm_set_command_started_cb:81,mongoc_apm_set_command_succeeded_cb:82,mongoc_apm_set_server_changed_cb:83,mongoc_apm_set_server_closed_cb:84,mongoc_apm_set_server_heartbeat_failed_cb:85,mongoc_apm_set_server_heartbeat_started_cb:86,mongoc_apm_set_server_heartbeat_succeeded_cb:87,mongoc_apm_set_server_opening_cb:88,mongoc_apm_set_topology_changed_cb:89,mongoc_apm_set_topology_closed_cb:90,mongoc_apm_set_topology_opening_cb:91,mongoc_apm_topology_changed_get_context:92,mongoc_apm_topology_changed_get_new_descript:93,mongoc_apm_topology_changed_get_previous_descript:94,mongoc_apm_topology_changed_get_topology_id:95,mongoc_apm_topology_changed_t:96,mongoc_apm_topology_closed_get_context:97,mongoc_apm_topology_closed_get_topology_id:98,mongoc_apm_topology_closed_t:99,mongoc_apm_topology_opening_get_context:100,mongoc_apm_topology_opening_get_topology_id:101,mongoc_apm_topology_opening_t:102,mongoc_bulk_operation_delet:103,mongoc_bulk_operation_delete_on:104,mongoc_bulk_operation_destroi:105,mongoc_bulk_operation_execut:106,mongoc_bulk_operation_get_hint:107,mongoc_bulk_operation_get_write_concern:108,mongoc_bulk_operation_insert:109,mongoc_bulk_operation_insert_with_opt:110,mongoc_bulk_operation_remov:111,mongoc_bulk_operation_remove_many_with_opt:112,mongoc_bulk_operation_remove_on:113,mongoc_bulk_operation_remove_one_with_opt:114,mongoc_bulk_operation_replace_on:115,mongoc_bulk_operation_replace_one_with_opt:116,mongoc_bulk_operation_set_bypass_document_valid:117,mongoc_bulk_operation_set_hint:118,mongoc_bulk_operation_t:119,mongoc_bulk_operation_upd:120,mongoc_bulk_operation_update_many_with_opt:121,mongoc_bulk_operation_update_on:122,mongoc_bulk_operation_update_one_with_opt:123,mongoc_change_stream_destroi:124,mongoc_change_stream_error_docu:125,mongoc_change_stream_next:126,mongoc_change_stream_t:127,mongoc_check_vers:128,mongoc_cleanup:129,mongoc_client_command:130,mongoc_client_command_simpl:131,mongoc_client_command_simple_with_server_id:132,mongoc_client_command_with_opt:133,mongoc_client_destroi:134,mongoc_client_find_databases_with_opt:135,mongoc_client_get_collect:136,mongoc_client_get_databas:137,mongoc_client_get_database_nam:138,mongoc_client_get_database_names_with_opt:139,mongoc_client_get_default_databas:140,mongoc_client_get_gridf:141,mongoc_client_get_max_bson_s:142,mongoc_client_get_max_message_s:143,mongoc_client_get_read_concern:144,mongoc_client_get_read_pref:145,mongoc_client_get_server_descript:[146,147],mongoc_client_get_server_statu:148,mongoc_client_get_uri:149,mongoc_client_get_write_concern:150,mongoc_client_new:151,mongoc_client_new_from_uri:152,mongoc_client_pool_destroi:153,mongoc_client_pool_max_s:154,mongoc_client_pool_min_s:155,mongoc_client_pool_new:156,mongoc_client_pool_pop:157,mongoc_client_pool_push:158,mongoc_client_pool_set_apm_callback:159,mongoc_client_pool_set_appnam:160,mongoc_client_pool_set_error_api:161,mongoc_client_pool_set_ssl_opt:162,mongoc_client_pool_t:163,mongoc_client_pool_try_pop:164,mongoc_client_read_command_with_opt:165,mongoc_client_read_write_command_with_opt:166,mongoc_client_select_serv:167,mongoc_client_session_abort_transact:168,mongoc_client_session_advance_cluster_tim:169,mongoc_client_session_advance_operation_tim:170,mongoc_client_session_append:171,mongoc_client_session_commit_transact:172,mongoc_client_session_destroi:173,mongoc_client_session_get_cli:174,mongoc_client_session_get_cluster_tim:175,mongoc_client_session_get_lsid:176,mongoc_client_session_get_operation_tim:177,mongoc_client_session_get_opt:178,mongoc_client_session_in_transact:179,mongoc_client_session_start_transact:180,mongoc_client_session_t:181,mongoc_client_set_apm_callback:182,mongoc_client_set_appnam:183,mongoc_client_set_error_api:184,mongoc_client_set_read_concern:185,mongoc_client_set_read_pref:186,mongoc_client_set_ssl_opt:187,mongoc_client_set_stream_initi:188,mongoc_client_set_write_concern:189,mongoc_client_start_sess:190,mongoc_client_t:191,mongoc_client_watch:192,mongoc_client_write_command_with_opt:193,mongoc_collection_aggreg:194,mongoc_collection_command:195,mongoc_collection_command_simpl:196,mongoc_collection_command_with_opt:197,mongoc_collection_copi:198,mongoc_collection_count:199,mongoc_collection_count_docu:200,mongoc_collection_count_with_opt:201,mongoc_collection_create_bulk_oper:202,mongoc_collection_create_bulk_operation_with_opt:203,mongoc_collection_create_index:204,mongoc_collection_create_index_with_opt:205,mongoc_collection_delet:206,mongoc_collection_delete_mani:207,mongoc_collection_delete_on:208,mongoc_collection_destroi:209,mongoc_collection_drop:210,mongoc_collection_drop_index:211,mongoc_collection_drop_index_with_opt:212,mongoc_collection_drop_with_opt:213,mongoc_collection_ensure_index:214,mongoc_collection_estimated_document_count:215,mongoc_collection_find:216,mongoc_collection_find_and_modifi:217,mongoc_collection_find_and_modify_with_opt:218,mongoc_collection_find_index:219,mongoc_collection_find_indexes_with_opt:220,mongoc_collection_find_with_opt:221,mongoc_collection_get_last_error:222,mongoc_collection_get_nam:223,mongoc_collection_get_read_concern:224,mongoc_collection_get_read_pref:225,mongoc_collection_get_write_concern:226,mongoc_collection_insert:227,mongoc_collection_insert_bulk:228,mongoc_collection_insert_mani:229,mongoc_collection_insert_on:230,mongoc_collection_keys_to_index_str:231,mongoc_collection_read_command_with_opt:232,mongoc_collection_read_write_command_with_opt:233,mongoc_collection_remov:234,mongoc_collection_renam:235,mongoc_collection_rename_with_opt:236,mongoc_collection_replace_on:237,mongoc_collection_sav:238,mongoc_collection_set_read_concern:239,mongoc_collection_set_read_pref:240,mongoc_collection_set_write_concern:241,mongoc_collection_stat:242,mongoc_collection_t:243,mongoc_collection_upd:244,mongoc_collection_update_mani:245,mongoc_collection_update_on:246,mongoc_collection_valid:247,mongoc_collection_watch:248,mongoc_collection_write_command_with_opt:249,mongoc_cursor_clon:250,mongoc_cursor_curr:251,mongoc_cursor_destroi:252,mongoc_cursor_error:253,mongoc_cursor_error_docu:254,mongoc_cursor_get_batch_s:255,mongoc_cursor_get_hint:256,mongoc_cursor_get_host:257,mongoc_cursor_get_id:258,mongoc_cursor_get_limit:259,mongoc_cursor_get_max_await_time_m:260,mongoc_cursor_is_al:261,mongoc_cursor_mor:262,mongoc_cursor_new_from_command_repli:263,mongoc_cursor_new_from_command_reply_with_opt:264,mongoc_cursor_next:265,mongoc_cursor_set_batch_s:266,mongoc_cursor_set_hint:267,mongoc_cursor_set_limit:268,mongoc_cursor_set_max_await_time_m:269,mongoc_cursor_t:270,mongoc_database_add_us:271,mongoc_database_command:272,mongoc_database_command_simpl:273,mongoc_database_command_with_opt:274,mongoc_database_copi:275,mongoc_database_create_collect:276,mongoc_database_destroi:277,mongoc_database_drop:278,mongoc_database_drop_with_opt:279,mongoc_database_find_collect:280,mongoc_database_find_collections_with_opt:281,mongoc_database_get_collect:282,mongoc_database_get_collection_nam:283,mongoc_database_get_collection_names_with_opt:284,mongoc_database_get_nam:285,mongoc_database_get_read_concern:286,mongoc_database_get_read_pref:287,mongoc_database_get_write_concern:288,mongoc_database_has_collect:289,mongoc_database_read_command_with_opt:290,mongoc_database_read_write_command_with_opt:291,mongoc_database_remove_all_us:292,mongoc_database_remove_us:293,mongoc_database_set_read_concern:294,mongoc_database_set_read_pref:295,mongoc_database_set_write_concern:296,mongoc_database_t:297,mongoc_database_watch:298,mongoc_database_write_command_with_opt:299,mongoc_delete_flags_t:300,mongoc_error_has_label:301,mongoc_find_and_modify_opts_append:302,mongoc_find_and_modify_opts_destroi:303,mongoc_find_and_modify_opts_get_bypass_document_valid:304,mongoc_find_and_modify_opts_get_field:305,mongoc_find_and_modify_opts_get_flag:306,mongoc_find_and_modify_opts_get_max_time_m:307,mongoc_find_and_modify_opts_get_sort:308,mongoc_find_and_modify_opts_get_upd:309,mongoc_find_and_modify_opts_new:310,mongoc_find_and_modify_opts_set_bypass_document_valid:311,mongoc_find_and_modify_opts_set_field:312,mongoc_find_and_modify_opts_set_flag:313,mongoc_find_and_modify_opts_set_max_time_m:314,mongoc_find_and_modify_opts_set_sort:315,mongoc_find_and_modify_opts_set_upd:316,mongoc_find_and_modify_opts_t:317,mongoc_get_major_vers:318,mongoc_get_micro_vers:319,mongoc_get_minor_vers:320,mongoc_get_vers:321,mongoc_gridfs_create_fil:322,mongoc_gridfs_create_file_from_stream:323,mongoc_gridfs_destroi:324,mongoc_gridfs_drop:325,mongoc_gridfs_file_destroi:326,mongoc_gridfs_file_error:327,mongoc_gridfs_file_get_alias:328,mongoc_gridfs_file_get_chunk_s:329,mongoc_gridfs_file_get_content_typ:330,mongoc_gridfs_file_get_filenam:331,mongoc_gridfs_file_get_id:332,mongoc_gridfs_file_get_length:333,mongoc_gridfs_file_get_md5:334,mongoc_gridfs_file_get_metadata:335,mongoc_gridfs_file_get_upload_d:336,mongoc_gridfs_file_list_destroi:337,mongoc_gridfs_file_list_error:338,mongoc_gridfs_file_list_next:339,mongoc_gridfs_file_list_t:340,mongoc_gridfs_file_opt_t:341,mongoc_gridfs_file_readv:342,mongoc_gridfs_file_remov:343,mongoc_gridfs_file_sav:344,mongoc_gridfs_file_seek:345,mongoc_gridfs_file_set_alias:346,mongoc_gridfs_file_set_content_typ:347,mongoc_gridfs_file_set_filenam:348,mongoc_gridfs_file_set_id:349,mongoc_gridfs_file_set_md5:350,mongoc_gridfs_file_set_metadata:351,mongoc_gridfs_file_t:352,mongoc_gridfs_file_tel:353,mongoc_gridfs_file_writev:354,mongoc_gridfs_find:355,mongoc_gridfs_find_on:356,mongoc_gridfs_find_one_by_filenam:357,mongoc_gridfs_find_one_with_opt:358,mongoc_gridfs_find_with_opt:359,mongoc_gridfs_get_chunk:360,mongoc_gridfs_get_fil:361,mongoc_gridfs_remove_by_filenam:362,mongoc_gridfs_t:363,mongoc_host_list_t:364,mongoc_index_opt_geo_get_default:365,mongoc_index_opt_geo_init:366,mongoc_index_opt_geo_t:367,mongoc_index_opt_get_default:368,mongoc_index_opt_init:369,mongoc_index_opt_t:370,mongoc_index_opt_wt_get_default:371,mongoc_index_opt_wt_init:372,mongoc_index_opt_wt_t:373,mongoc_init:374,mongoc_insert_flags_t:375,mongoc_iovec_t:376,mongoc_matcher_destroi:377,mongoc_matcher_match:378,mongoc_matcher_new:379,mongoc_matcher_t:380,mongoc_query_flags_t:381,mongoc_rand:382,mongoc_rand_add:383,mongoc_rand_se:384,mongoc_rand_statu:385,mongoc_read_concern_append:386,mongoc_read_concern_copi:387,mongoc_read_concern_destroi:388,mongoc_read_concern_get_level:389,mongoc_read_concern_is_default:390,mongoc_read_concern_new:391,mongoc_read_concern_set_level:392,mongoc_read_concern_t:393,mongoc_read_mode_t:394,mongoc_read_prefs_add_tag:395,mongoc_read_prefs_copi:396,mongoc_read_prefs_destroi:397,mongoc_read_prefs_get_max_staleness_second:398,mongoc_read_prefs_get_mod:399,mongoc_read_prefs_get_tag:400,mongoc_read_prefs_is_valid:401,mongoc_read_prefs_new:402,mongoc_read_prefs_set_max_staleness_second:403,mongoc_read_prefs_set_mod:404,mongoc_read_prefs_set_tag:405,mongoc_read_prefs_t:406,mongoc_remove_flags_t:407,mongoc_reply_flags_t:408,mongoc_server_description_destroi:409,mongoc_server_description_host:410,mongoc_server_description_id:411,mongoc_server_description_ismast:412,mongoc_server_description_new_copi:413,mongoc_server_description_round_trip_tim:414,mongoc_server_description_t:415,mongoc_server_description_typ:416,mongoc_server_descriptions_destroy_al:417,mongoc_session_opt_t:418,mongoc_session_opts_clon:419,mongoc_session_opts_destroi:420,mongoc_session_opts_get_causal_consist:421,mongoc_session_opts_get_default_transaction_opt:422,mongoc_session_opts_new:423,mongoc_session_opts_set_causal_consist:424,mongoc_session_opts_set_default_transaction_opt:425,mongoc_socket_accept:426,mongoc_socket_bind:427,mongoc_socket_clos:428,mongoc_socket_connect:429,mongoc_socket_destroi:430,mongoc_socket_errno:431,mongoc_socket_getnameinfo:432,mongoc_socket_getsocknam:433,mongoc_socket_listen:434,mongoc_socket_new:435,mongoc_socket_recv:436,mongoc_socket_send:437,mongoc_socket_sendv:438,mongoc_socket_setsockopt:439,mongoc_socket_t:440,mongoc_ssl_opt_get_default:441,mongoc_ssl_opt_t:442,mongoc_stream_buffered_new:443,mongoc_stream_buffered_t:444,mongoc_stream_clos:445,mongoc_stream_cork:446,mongoc_stream_destroi:447,mongoc_stream_file_get_fd:448,mongoc_stream_file_new:449,mongoc_stream_file_new_for_path:450,mongoc_stream_file_t:451,mongoc_stream_flush:452,mongoc_stream_get_base_stream:453,mongoc_stream_gridfs_new:454,mongoc_stream_read:455,mongoc_stream_readv:456,mongoc_stream_setsockopt:457,mongoc_stream_socket_get_socket:458,mongoc_stream_socket_new:459,mongoc_stream_socket_t:460,mongoc_stream_t:461,mongoc_stream_timed_out:462,mongoc_stream_tls_t:463,mongoc_stream_uncork:464,mongoc_stream_writ:465,mongoc_stream_writev:466,mongoc_topology_description_get_serv:467,mongoc_topology_description_has_readable_serv:468,mongoc_topology_description_has_writable_serv:469,mongoc_topology_description_t:470,mongoc_topology_description_typ:471,mongoc_transaction_opt_t:472,mongoc_transaction_opts_clon:473,mongoc_transaction_opts_destroi:474,mongoc_transaction_opts_get_read_concern:475,mongoc_transaction_opts_get_read_pref:476,mongoc_transaction_opts_get_write_concern:477,mongoc_transaction_opts_new:478,mongoc_transaction_opts_set_read_concern:479,mongoc_transaction_opts_set_read_pref:480,mongoc_transaction_opts_set_write_concern:481,mongoc_update_flags_t:482,mongoc_uri_copi:483,mongoc_uri_destroi:484,mongoc_uri_get_auth_mechan:485,mongoc_uri_get_auth_sourc:486,mongoc_uri_get_compressor:487,mongoc_uri_get_databas:488,mongoc_uri_get_host:489,mongoc_uri_get_mechanism_properti:490,mongoc_uri_get_opt:494,mongoc_uri_get_option_as_bool:491,mongoc_uri_get_option_as_int32:492,mongoc_uri_get_option_as_utf8:493,mongoc_uri_get_password:495,mongoc_uri_get_read_concern:496,mongoc_uri_get_read_pref:497,mongoc_uri_get_read_prefs_t:498,mongoc_uri_get_replica_set:499,mongoc_uri_get_servic:500,mongoc_uri_get_ssl:501,mongoc_uri_get_str:502,mongoc_uri_get_usernam:503,mongoc_uri_get_write_concern:504,mongoc_uri_new:505,mongoc_uri_new_for_host_port:506,mongoc_uri_new_with_error:507,mongoc_uri_option_is_bool:508,mongoc_uri_option_is_int32:509,mongoc_uri_option_is_utf8:510,mongoc_uri_set_auth_mechan:511,mongoc_uri_set_auth_sourc:512,mongoc_uri_set_compressor:513,mongoc_uri_set_databas:514,mongoc_uri_set_mechanism_properti:515,mongoc_uri_set_option_as_bool:516,mongoc_uri_set_option_as_int32:517,mongoc_uri_set_option_as_utf8:518,mongoc_uri_set_password:519,mongoc_uri_set_read_concern:520,mongoc_uri_set_read_prefs_t:521,mongoc_uri_set_usernam:522,mongoc_uri_set_write_concern:523,mongoc_uri_t:524,mongoc_uri_unescap:525,mongoc_write_concern_append:527,mongoc_write_concern_copi:528,mongoc_write_concern_destroi:529,mongoc_write_concern_get_fsync:530,mongoc_write_concern_get_journ:531,mongoc_write_concern_get_w:532,mongoc_write_concern_get_wmajor:533,mongoc_write_concern_get_wtag:534,mongoc_write_concern_get_wtimeout:535,mongoc_write_concern_is_acknowledg:536,mongoc_write_concern_is_default:537,mongoc_write_concern_is_valid:538,mongoc_write_concern_journal_is_set:539,mongoc_write_concern_new:540,mongoc_write_concern_set_fsync:541,mongoc_write_concern_set_journ:542,mongoc_write_concern_set_w:543,mongoc_write_concern_set_wmajor:544,mongoc_write_concern_set_wtag:545,mongoc_write_concern_set_wtimeout:546,mongoc_write_concern_t:547,mongodb:[0,4,15,17,548],monitor:[3,524],more:11,msys2:17,nativ:442,next:[548,549],object:18,openssl:442,oper:[6,193,249,299,548],option:[0,221,302,442,524],order:6,other:194,over:[0,1],packag:17,paramet:[25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,53,54,55,56,57,59,60,61,63,64,65,66,68,69,71,72,73,74,76,77,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,97,98,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,271,272,273,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,292,293,294,295,296,298,299,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,342,343,344,345,346,347,348,349,350,351,353,354,355,356,357,358,359,360,361,362,366,369,372,377,378,379,383,384,386,387,388,389,390,392,395,396,397,398,399,400,401,402,403,404,405,409,410,411,412,413,414,416,417,419,420,421,422,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,443,445,446,447,448,449,450,452,453,454,455,456,457,458,459,462,464,465,466,467,468,469,471,473,474,475,476,477,479,480,481,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,525,527,528,529,530,531,532,533,534,535,536,537,538,539,541,542,543,544,545,546],path:548,perform:[3,5],pkg:548,plain:4,platform:17,pool:[7,18,524],popul:1,prefer:[243,524],prerequisit:17,program:548,project:[548,549],properti:524,read:[6,243,393,406,524],refer:2,relat:[18,352],releas:17,replica:[0,524],report:[5,12],requir:1,resum:127,run:[11,21,526],safeti:[154,155,157,158,159,160,161,162,164,191,270,352,363],sasl:4,scram:4,sdam:3,secur:442,see:[4,12,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,109,111,112,113,114,115,116,117,119,120,121,122,123,151,159,168,169,170,172,173,174,175,176,177,178,180,182,190,192,200,202,203,215,216,221,237,245,246,248,253,254,262,269,281,298,364,367,370,373,419,420,421,422,423,424,425,442,444,445,446,455,456,461,464,465,468,469,473,474,475,476,477,478,479,480,481,485,486,490,511,512,515],select:524,server:[0,9,442,524],session:18,set:[0,1,6,12,311,312,313,314,315,316,406,524],setup:[11,21],sha:4,shard:0,side:[9,20],singl:7,socket:0,sort:315,specifi:548,srv:524,ssl:[0,524],stale:406,start:[127,548],state:1,statu:382,step:[548,549],stream:[191,461],studio:[17,548,549],submit:5,support:[17,442],synopsi:[16,19,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547],tag:406,tailabl:9,tarbal:17,task:21,thread:[154,155,157,158,159,160,161,162,164,191,270,352,363,548],through:442,time:526,trace:19,transienttransactionerror:12,transport:442,troubleshoot:5,tutori:548,type:461,unacknowledg:6,unix:[0,17],unknowntransactioncommitresult:12,unord:6,updat:[316,548],uri:442,using:1,valid:6,valu:[375,381,407,408,482],verif:442,version:[12,526],visual:[17,548,549],w64:17,window:[17,442],write:[6,193,243,249,299,524,547],your:548,zip:1}}) \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/tutorial.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/tutorial.html deleted file mode 100644 index b01701b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/tutorial.html +++ /dev/null @@ -1,1086 +0,0 @@ - - - - - - - - Tutorial — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Tutorial

    -

    This guide offers a brief introduction to the MongoDB C Driver.

    -

    For more information on the C API, please refer to the API Reference.

    - -
    -

    Installing

    -

    For detailed instructions on installing the MongoDB C Driver on a particular platform, please see the installation guide.

    -
    -
    -

    Starting MongoDB

    -

    To run the examples in this tutorial, MongoDB must be installed and running on localhost on the default port, 27017. To check if it is up and running, connect to it with the MongoDB shell.

    -
    $ mongo --host localhost --port 27017
    -MongoDB shell version: 3.0.6
    -connecting to: localhost:27017/test
    ->
    -
    -
    -
    - - -
    -

    Making a Connection

    -

    Access MongoDB with a mongoc_client_t. It transparently connects to standalone servers, replica sets and sharded clusters on demand. To perform operations on a database or collection, create a mongoc_database_t or mongoc_collection_t struct from the mongoc_client_t.

    -

    At the start of an application, call mongoc_init() before any other libmongoc functions. At the end, call the appropriate destroy function for each collection, database, or client handle, in reverse order from how they were constructed. Call mongoc_cleanup() before exiting.

    -

    The example below establishes a connection to a standalone server on localhost, registers the client application as “connect-example,” and performs a simple command.

    -

    More information about database operations can be found in the CRUD Operations and Executing Commands sections. Examples of connecting to replica sets and sharded clusters can be found on the Advanced Connections page.

    -
    -
    hello_mongoc.c
    -
    #include <mongoc/mongoc.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   const char *uri_string = "mongodb://localhost:27017";
    -   mongoc_uri_t *uri;
    -   mongoc_client_t *client;
    -   mongoc_database_t *database;
    -   mongoc_collection_t *collection;
    -   bson_t *command, reply, *insert;
    -   bson_error_t error;
    -   char *str;
    -   bool retval;
    -
    -   /*
    -    * Required to initialize libmongoc's internals
    -    */
    -   mongoc_init ();
    -
    -   /*
    -    * Optionally get MongoDB URI from command line
    -    */
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   /*
    -    * Safely create a MongoDB URI object from the given string
    -    */
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   /*
    -    * Create a new client instance
    -    */
    -   client = mongoc_client_new_from_uri (uri);
    -   if (!client) {
    -      return EXIT_FAILURE;
    -   }
    -
    -   /*
    -    * Register the application name so we can track it in the profile logs
    -    * on the server. This can also be done from the URI (see other examples).
    -    */
    -   mongoc_client_set_appname (client, "connect-example");
    -
    -   /*
    -    * Get a handle on the database "db_name" and collection "coll_name"
    -    */
    -   database = mongoc_client_get_database (client, "db_name");
    -   collection = mongoc_client_get_collection (client, "db_name", "coll_name");
    -
    -   /*
    -    * Do work. This example pings the database, prints the result as JSON and
    -    * performs an insert
    -    */
    -   command = BCON_NEW ("ping", BCON_INT32 (1));
    -
    -   retval = mongoc_client_command_simple (
    -      client, "admin", command, NULL, &reply, &error);
    -
    -   if (!retval) {
    -      fprintf (stderr, "%s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   str = bson_as_json (&reply, NULL);
    -   printf ("%s\n", str);
    -
    -   insert = BCON_NEW ("hello", BCON_UTF8 ("world"));
    -
    -   if (!mongoc_collection_insert_one (collection, insert, NULL, NULL, &error)) {
    -      fprintf (stderr, "%s\n", error.message);
    -   }
    -
    -   bson_destroy (insert);
    -   bson_destroy (&reply);
    -   bson_destroy (command);
    -   bson_free (str);
    -
    -   /*
    -    * Release our handles and clean up libmongoc
    -    */
    -   mongoc_collection_destroy (collection);
    -   mongoc_database_destroy (database);
    -   mongoc_uri_destroy (uri);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    -
    -

    Creating BSON Documents

    -

    Documents are stored in MongoDB’s data format, BSON. The C driver uses libbson to create BSON documents. There are several ways to construct them: appending key-value pairs, using BCON, or parsing JSON.

    -
    -

    Appending BSON

    -

    A BSON document, represented as a bson_t in code, can be constructed one field at a time using libbson’s append functions.

    -

    For example, to create a document like this:

    -
    {
    -   born : ISODate("1906-12-09"),
    -   died : ISODate("1992-01-01"),
    -   name : {
    -      first : "Grace",
    -      last : "Hopper"
    -   },
    -   languages : [ "MATH-MATIC", "FLOW-MATIC", "COBOL" ],
    -   degrees: [ { degree: "BA", school: "Vassar" }, { degree: "PhD", school: "Yale" } ]
    -}
    -
    -
    -

    Use the following code:

    -
    #include <bson/bson.h>
    -
    -int
    -main (int   argc,
    -      char *argv[])
    -{
    -   struct tm   born = { 0 };
    -   struct tm   died = { 0 };
    -   const char *lang_names[] = {"MATH-MATIC", "FLOW-MATIC", "COBOL"};
    -   const char *schools[] = {"Vassar", "Yale"};
    -   const char *degrees[] = {"BA", "PhD"};
    -   uint32_t    i;
    -   char        buf[16];
    -   const       char *key;
    -   size_t      keylen;
    -   bson_t     *document;
    -   bson_t      child;
    -   bson_t      child2;
    -   char       *str;
    -
    -   document = bson_new ();
    -
    -   /*
    -    * Append { "born" : ISODate("1906-12-09") } to the document.
    -    * Passing -1 for the length argument tells libbson to calculate the string length.
    -    */
    -   born.tm_year = 6;  /* years are 1900-based */
    -   born.tm_mon = 11;  /* months are 0-based */
    -   born.tm_mday = 9;
    -   bson_append_date_time (document, "born", -1, mktime (&born) * 1000);
    -
    -   /*
    -    * Append { "died" : ISODate("1992-01-01") } to the document.
    -    */
    -   died.tm_year = 92;
    -   died.tm_mon = 0;
    -   died.tm_mday = 1;
    -
    -   /*
    -    * For convenience, this macro passes length -1 by default.
    -    */
    -   BSON_APPEND_DATE_TIME (document, "died", mktime (&died) * 1000);
    -
    -   /*
    -    * Append a subdocument.
    -    */
    -   BSON_APPEND_DOCUMENT_BEGIN (document, "name", &child);
    -   BSON_APPEND_UTF8 (&child, "first", "Grace");
    -   BSON_APPEND_UTF8 (&child, "last", "Hopper");
    -   bson_append_document_end (document, &child);
    -
    -   /*
    -    * Append array of strings. Generate keys "0", "1", "2".
    -    */
    -   BSON_APPEND_ARRAY_BEGIN (document, "languages", &child);
    -   for (i = 0; i < sizeof lang_names / sizeof (char *); ++i) {
    -      keylen = bson_uint32_to_string (i, &key, buf, sizeof buf);
    -      bson_append_utf8 (&child, key, (int) keylen, lang_names[i], -1);
    -   }
    -   bson_append_array_end (document, &child);
    -
    -   /*
    -    * Array of subdocuments:
    -    *    degrees: [ { degree: "BA", school: "Vassar" }, ... ]
    -    */
    -   BSON_APPEND_ARRAY_BEGIN (document, "degrees", &child);
    -   for (i = 0; i < sizeof degrees / sizeof (char *); ++i) {
    -      keylen = bson_uint32_to_string (i, &key, buf, sizeof buf);
    -      bson_append_document_begin (&child, key, (int) keylen, &child2);
    -      BSON_APPEND_UTF8 (&child2, "degree", degrees[i]);
    -      BSON_APPEND_UTF8 (&child2, "school", schools[i]);
    -      bson_append_document_end (&child, &child2);
    -   }
    -   bson_append_array_end (document, &child);
    -
    -   /*
    -    * Print the document as a JSON string.
    -    */
    -   str = bson_as_canonical_extended_json (document, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   /*
    -    * Clean up allocated bson documents.
    -    */
    -   bson_destroy (document);
    -   return 0;
    -}
    -
    -
    -

    See the libbson documentation for all of the types that can be appended to a bson_t.

    -
    -
    -

    Using BCON

    -

    BSON C Object Notation, BCON for short, is an alternative way of constructing BSON documents in a manner closer to the intended format. It has less type-safety than BSON’s append functions but results in less code.

    -
    #include <bson/bson.h>
    -
    -int
    -main (int   argc,
    -      char *argv[])
    -{
    -   struct tm born = { 0 };
    -   struct tm died = { 0 };
    -   bson_t   *document;
    -   char     *str;
    -
    -   born.tm_year = 6;
    -   born.tm_mon = 11;
    -   born.tm_mday = 9;
    -
    -   died.tm_year = 92;
    -   died.tm_mon = 0;
    -   died.tm_mday = 1;
    -
    -   document = BCON_NEW (
    -      "born", BCON_DATE_TIME (mktime (&born) * 1000),
    -      "died", BCON_DATE_TIME (mktime (&died) * 1000),
    -      "name", "{",
    -      "first", BCON_UTF8 ("Grace"),
    -      "last", BCON_UTF8 ("Hopper"),
    -      "}",
    -      "languages", "[",
    -      BCON_UTF8 ("MATH-MATIC"),
    -      BCON_UTF8 ("FLOW-MATIC"),
    -      BCON_UTF8 ("COBOL"),
    -      "]",
    -      "degrees", "[",
    -      "{", "degree", BCON_UTF8 ("BA"), "school", BCON_UTF8 ("Vassar"), "}",
    -      "{", "degree", BCON_UTF8 ("PhD"), "school", BCON_UTF8 ("Yale"), "}",
    -      "]");
    -
    -   /*
    -    * Print the document as a JSON string.
    -    */
    -   str = bson_as_canonical_extended_json (document, NULL);
    -   printf ("%s\n", str);
    -   bson_free (str);
    -
    -   /*
    -    * Clean up allocated bson documents.
    -    */
    -   bson_destroy (document);
    -   return 0;
    -}
    -
    -
    -

    Notice that BCON can create arrays, subdocuments and arbitrary fields.

    -
    -
    -

    Creating BSON from JSON

    -

    For single documents, BSON can be created from JSON strings via bson_new_from_json.

    -
    #include <bson/bson.h>
    -
    -int
    -main (int   argc,
    -      char *argv[])
    -{
    -   bson_error_t error;
    -   bson_t      *bson;
    -   char        *string;
    -
    -   const char *json = "{\"name\": {\"first\":\"Grace\", \"last\":\"Hopper\"}}";
    -   bson = bson_new_from_json ((const uint8_t *)json, -1, &error);
    -
    -   if (!bson) {
    -      fprintf (stderr, "%s\n", error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   string = bson_as_canonical_extended_json (bson, NULL);
    -   printf ("%s\n", string);
    -   bson_free (string);
    -
    -   return 0;
    -}
    -
    -
    -

    To initialize BSON from a sequence of JSON documents, use bson_json_reader_t.

    -
    -
    -
    -

    Basic CRUD Operations

    -

    This section demonstrates the basics of using the C Driver to interact with MongoDB.

    -
    -

    Inserting a Document

    -

    To insert documents into a collection, first obtain a handle to a mongoc_collection_t via a mongoc_client_t. Then, use mongoc_collection_insert_one() to add BSON documents to the collection. This example inserts into the database “mydb” and collection “mycoll”.

    -

    When finished, ensure that allocated structures are freed by using their respective destroy functions.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int   argc,
    -      char *argv[])
    -{
    -    mongoc_client_t *client;
    -    mongoc_collection_t *collection;
    -    bson_error_t error;
    -    bson_oid_t oid;
    -    bson_t *doc;
    -
    -    mongoc_init ();
    -
    -    client = mongoc_client_new ("mongodb://localhost:27017/?appname=insert-example");
    -    collection = mongoc_client_get_collection (client, "mydb", "mycoll");
    -
    -    doc = bson_new ();
    -    bson_oid_init (&oid, NULL);
    -    BSON_APPEND_OID (doc, "_id", &oid);
    -    BSON_APPEND_UTF8 (doc, "hello", "world");
    -
    -    if (!mongoc_collection_insert_one (
    -           collection, doc, NULL, NULL, &error)) {
    -        fprintf (stderr, "%s\n", error.message);
    -    }
    -
    -    bson_destroy (doc);
    -    mongoc_collection_destroy (collection);
    -    mongoc_client_destroy (client);
    -    mongoc_cleanup ();
    -
    -    return 0;
    -}
    -
    -
    -

    Compile the code and run it:

    -
    $ gcc -o insert insert.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./insert
    -
    -
    -

    On Windows:

    -
    C:\> cl.exe /IC:\mongo-c-driver\include\libbson-1.0 /IC:\mongo-c-driver\include\libmongoc-1.0 insert.c
    -C:\> insert
    -
    -
    -

    To verify that the insert succeeded, connect with the MongoDB shell.

    -
    $ mongo
    -MongoDB shell version: 3.0.6
    -connecting to: test
    -> use mydb
    -switched to db mydb
    -> db.mycoll.find()
    -{ "_id" : ObjectId("55ef43766cb5f36a3bae6ee4"), "hello" : "world" }
    ->
    -
    -
    -
    -
    -

    Finding a Document

    -

    To query a MongoDB collection with the C driver, use the function mongoc_collection_find_with_opts(). This returns a cursor to the matching documents. The following examples iterate through the result cursors and print the matches to stdout as JSON strings.

    -

    Use a document as a query specifier; for example,

    -
    { "color" : "red" }
    -
    -
    -

    will match any document with a field named “color” with value “red”. An empty document {} can be used to match all documents.

    -

    This first example uses an empty query specifier to find all documents in the database “mydb” and collection “mycoll”.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   mongoc_cursor_t *cursor;
    -   const bson_t *doc;
    -   bson_t *query;
    -   char *str;
    -
    -   mongoc_init ();
    -
    -   client =
    -      mongoc_client_new ("mongodb://localhost:27017/?appname=find-example");
    -   collection = mongoc_client_get_collection (client, "mydb", "mycoll");
    -   query = bson_new ();
    -   cursor = mongoc_collection_find_with_opts (collection, query, NULL, NULL);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   bson_destroy (query);
    -   mongoc_cursor_destroy (cursor);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -

    Compile the code and run it:

    -
    $ gcc -o find find.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./find
    -{ "_id" : { "$oid" : "55ef43766cb5f36a3bae6ee4" }, "hello" : "world" }
    -
    -
    -

    On Windows:

    -
    C:\> cl.exe /IC:\mongo-c-driver\include\libbson-1.0 /IC:\mongo-c-driver\include\libmongoc-1.0 find.c
    -C:\> find
    -{ "_id" : { "$oid" : "55ef43766cb5f36a3bae6ee4" }, "hello" : "world" }
    -
    -
    -

    To look for a specific document, add a specifier to query. This example adds a call to BSON_APPEND_UTF8() to look for all documents matching {"hello" : "world"}.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   mongoc_cursor_t *cursor;
    -   const bson_t *doc;
    -   bson_t *query;
    -   char *str;
    -
    -   mongoc_init ();
    -
    -   client = mongoc_client_new (
    -      "mongodb://localhost:27017/?appname=find-specific-example");
    -   collection = mongoc_client_get_collection (client, "mydb", "mycoll");
    -   query = bson_new ();
    -   BSON_APPEND_UTF8 (query, "hello", "world");
    -
    -   cursor = mongoc_collection_find_with_opts (collection, query, NULL, NULL);
    -
    -   while (mongoc_cursor_next (cursor, &doc)) {
    -      str = bson_as_canonical_extended_json (doc, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   }
    -
    -   bson_destroy (query);
    -   mongoc_cursor_destroy (cursor);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -
    $ gcc -o find-specific find-specific.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./find-specific
    -{ "_id" : { "$oid" : "55ef43766cb5f36a3bae6ee4" }, "hello" : "world" }
    -
    -
    -
    C:\> cl.exe /IC:\mongo-c-driver\include\libbson-1.0 /IC:\mongo-c-driver\include\libmongoc-1.0 find-specific.c
    -C:\> find-specific
    -{ "_id" : { "$oid" : "55ef43766cb5f36a3bae6ee4" }, "hello" : "world" }
    -
    -
    -
    -
    -

    Updating a Document

    -

    This code snippet gives an example of using mongoc_collection_update_one() to update the fields of a document.

    -

    Using the “mydb” database, the following example inserts an example document into the “mycoll” collection. Then, using its _id field, the document is updated with different values and a new field.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_collection_t *collection;
    -   mongoc_client_t *client;
    -   bson_error_t error;
    -   bson_oid_t oid;
    -   bson_t *doc = NULL;
    -   bson_t *update = NULL;
    -   bson_t *query = NULL;
    -
    -   mongoc_init ();
    -
    -   client =
    -      mongoc_client_new ("mongodb://localhost:27017/?appname=update-example");
    -   collection = mongoc_client_get_collection (client, "mydb", "mycoll");
    -
    -   bson_oid_init (&oid, NULL);
    -   doc = BCON_NEW ("_id", BCON_OID (&oid), "key", BCON_UTF8 ("old_value"));
    -
    -   if (!mongoc_collection_insert_one (collection, doc, NULL, &error)) {
    -      fprintf (stderr, "%s\n", error.message);
    -      goto fail;
    -   }
    -
    -   query = BCON_NEW ("_id", BCON_OID (&oid));
    -   update = BCON_NEW ("$set",
    -                      "{",
    -                      "key",
    -                      BCON_UTF8 ("new_value"),
    -                      "updated",
    -                      BCON_BOOL (true),
    -                      "}");
    -
    -   if (!mongoc_collection_update_one (
    -          collection, query, update, NULL, NULL, &error)) {
    -      fprintf (stderr, "%s\n", error.message);
    -      goto fail;
    -   }
    -
    -fail:
    -   if (doc)
    -      bson_destroy (doc);
    -   if (query)
    -      bson_destroy (query);
    -   if (update)
    -      bson_destroy (update);
    -
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -

    Compile the code and run it:

    -
    $ gcc -o update update.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./update
    -
    -
    -

    On Windows:

    -
    C:\> cl.exe /IC:\mongo-c-driver\include\libbson-1.0 /IC:\mongo-c-driver\include\libmongoc-1.0 update.c
    -C:\> update
    -{ "_id" : { "$oid" : "55ef43766cb5f36a3bae6ee4" }, "hello" : "world" }
    -
    -
    -

    To verify that the update succeeded, connect with the MongoDB shell.

    -
    $ mongo
    -MongoDB shell version: 3.0.6
    -connecting to: test
    -> use mydb
    -switched to db mydb
    -> db.mycoll.find({"updated" : true})
    -{ "_id" : ObjectId("55ef549236fe322f9490e17b"), "updated" : true, "key" : "new_value" }
    ->
    -
    -
    -
    -
    -

    Deleting a Document

    -

    This example illustrates the use of mongoc_collection_delete_one() to delete a document.

    -

    The following code inserts a sample document into the database “mydb” and collection “mycoll”. Then, it deletes all documents matching {"hello" : "world"}.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   bson_error_t error;
    -   bson_oid_t oid;
    -   bson_t *doc;
    -
    -   mongoc_init ();
    -
    -   client =
    -      mongoc_client_new ("mongodb://localhost:27017/?appname=delete-example");
    -   collection = mongoc_client_get_collection (client, "test", "test");
    -
    -   doc = bson_new ();
    -   bson_oid_init (&oid, NULL);
    -   BSON_APPEND_OID (doc, "_id", &oid);
    -   BSON_APPEND_UTF8 (doc, "hello", "world");
    -
    -   if (!mongoc_collection_insert_one (collection, doc, NULL, &error)) {
    -      fprintf (stderr, "Insert failed: %s\n", error.message);
    -   }
    -
    -   bson_destroy (doc);
    -
    -   doc = bson_new ();
    -   BSON_APPEND_OID (doc, "_id", &oid);
    -
    -   if (!mongoc_collection_delete_one (
    -          collection, doc, NULL, NULL, &error)) {
    -      fprintf (stderr, "Delete failed: %s\n", error.message);
    -   }
    -
    -   bson_destroy (doc);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -

    Compile the code and run it:

    -
    $ gcc -o delete delete.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./delete
    -
    -
    -

    On Windows:

    -
    C:\> cl.exe /IC:\mongo-c-driver\include\libbson-1.0 /IC:\mongo-c-driver\include\libmongoc-1.0 delete.c
    -C:\> delete
    -
    -
    -

    Use the MongoDB shell to prove that the documents have been removed successfully.

    -
    $ mongo
    -MongoDB shell version: 3.0.6
    -connecting to: test
    -> use mydb
    -switched to db mydb
    -> db.mycoll.count({"hello" : "world"})
    -0
    ->
    -
    -
    -
    -
    -

    Counting Documents

    -

    Counting the number of documents in a MongoDB collection is similar to performing a find operation. This example counts the number of documents matching {"hello" : "world"} in the database “mydb” and collection “mycoll”.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   bson_error_t error;
    -   bson_t *doc;
    -   int64_t count;
    -
    -   mongoc_init ();
    -
    -   client =
    -      mongoc_client_new ("mongodb://localhost:27017/?appname=count-example");
    -   collection = mongoc_client_get_collection (client, "mydb", "mycoll");
    -   doc = bson_new_from_json (
    -      (const uint8_t *) "{\"hello\" : \"world\"}", -1, &error);
    -
    -   count = mongoc_collection_count (
    -      collection, MONGOC_QUERY_NONE, doc, 0, 0, NULL, &error);
    -
    -   if (count < 0) {
    -      fprintf (stderr, "%s\n", error.message);
    -   } else {
    -      printf ("%" PRId64 "\n", count);
    -   }
    -
    -   bson_destroy (doc);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -

    Compile the code and run it:

    -
    $ gcc -o count count.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./count
    -1
    -
    -
    -

    On Windows:

    -
    C:\> cl.exe /IC:\mongo-c-driver\include\libbson-1.0 /IC:\mongo-c-driver\include\libmongoc-1.0 count.c
    -C:\> count
    -1
    -
    -
    -
    -
    -
    -

    Executing Commands

    -

    The driver provides helper functions for executing MongoDB commands on client, database and collection structures. These functions return cursors; the _simple variants return booleans indicating success or failure.

    -

    This example executes the collStats command against the collection “mycoll” in database “mydb”.

    -
    #include <bson/bson.h>
    -#include <mongoc/mongoc.h>
    -#include <stdio.h>
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   mongoc_client_t *client;
    -   mongoc_collection_t *collection;
    -   bson_error_t error;
    -   bson_t *command;
    -   bson_t reply;
    -   char *str;
    -
    -   mongoc_init ();
    -
    -   client = mongoc_client_new (
    -      "mongodb://localhost:27017/?appname=executing-example");
    -   collection = mongoc_client_get_collection (client, "mydb", "mycoll");
    -
    -   command = BCON_NEW ("collStats", BCON_UTF8 ("mycoll"));
    -   if (mongoc_collection_command_simple (
    -          collection, command, NULL, &reply, &error)) {
    -      str = bson_as_canonical_extended_json (&reply, NULL);
    -      printf ("%s\n", str);
    -      bson_free (str);
    -   } else {
    -      fprintf (stderr, "Failed to run command: %s\n", error.message);
    -   }
    -
    -   bson_destroy (command);
    -   bson_destroy (&reply);
    -   mongoc_collection_destroy (collection);
    -   mongoc_client_destroy (client);
    -   mongoc_cleanup ();
    -
    -   return 0;
    -}
    -
    -
    -

    Compile the code and run it:

    -
    $ gcc -o executing executing.c $(pkg-config --cflags --libs libmongoc-1.0)
    -$ ./executing
    -{ "ns" : "mydb.mycoll", "count" : 1, "size" : 48, "avgObjSize" : 48, "numExtents" : 1, "storageSize" : 8192,
    -"lastExtentSize" : 8192.000000, "paddingFactor" : 1.000000, "userFlags" : 1, "capped" : false, "nindexes" : 1,
    -"indexDetails" : {  }, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1.000000 }
    -
    -
    -

    On Windows:

    -
    C:\> cl.exe /IC:\mongo-c-driver\include\libbson-1.0 /IC:\mongo-c-driver\include\libmongoc-1.0 executing.c
    -C:\> executing
    -{ "ns" : "mydb.mycoll", "count" : 1, "size" : 48, "avgObjSize" : 48, "numExtents" : 1, "storageSize" : 8192,
    -"lastExtentSize" : 8192.000000, "paddingFactor" : 1.000000, "userFlags" : 1, "capped" : false, "nindexes" : 1,
    -"indexDetails" : {  }, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1.000000 }
    -
    -
    -
    -
    -

    Threading

    -

    The MongoDB C Driver is thread-unaware in the vast majority of its operations. This means it is up to the programmer to guarantee thread-safety.

    -

    However, mongoc_client_pool_t is thread-safe and is used to fetch a mongoc_client_t in a thread-safe manner. After retrieving a client from the pool, the client structure should be considered owned by the calling thread. When the thread is finished, the client should be placed back into the pool.

    -
    -
    example-pool.c
    -
    /* gcc example-pool.c -o example-pool $(pkg-config --cflags --libs
    - * libmongoc-1.0) */
    -
    -/* ./example-pool [CONNECTION_STRING] */
    -
    -#include <mongoc/mongoc.h>
    -#include <pthread.h>
    -#include <stdio.h>
    -
    -static pthread_mutex_t mutex;
    -static bool in_shutdown = false;
    -
    -static void *
    -worker (void *data)
    -{
    -   mongoc_client_pool_t *pool = data;
    -   mongoc_client_t *client;
    -   bson_t ping = BSON_INITIALIZER;
    -   bson_error_t error;
    -   bool r;
    -
    -   BSON_APPEND_INT32 (&ping, "ping", 1);
    -
    -   while (true) {
    -      client = mongoc_client_pool_pop (pool);
    -      /* Do something with client. If you are writing an HTTP server, you
    -       * probably only want to hold onto the client for the portion of the
    -       * request performing database queries.
    -       */
    -      r = mongoc_client_command_simple (
    -         client, "admin", &ping, NULL, NULL, &error);
    -
    -      if (!r) {
    -         fprintf (stderr, "%s\n", error.message);
    -      }
    -
    -      mongoc_client_pool_push (pool, client);
    -
    -      pthread_mutex_lock (&mutex);
    -      if (in_shutdown || !r) {
    -         pthread_mutex_unlock (&mutex);
    -         break;
    -      }
    -
    -      pthread_mutex_unlock (&mutex);
    -   }
    -
    -   bson_destroy (&ping);
    -   return NULL;
    -}
    -
    -int
    -main (int argc, char *argv[])
    -{
    -   const char *uri_string = "mongodb://127.0.0.1/?appname=pool-example";
    -   mongoc_uri_t *uri;
    -   bson_error_t error;
    -   mongoc_client_pool_t *pool;
    -   pthread_t threads[10];
    -   unsigned i;
    -   void *ret;
    -
    -   pthread_mutex_init (&mutex, NULL);
    -   mongoc_init ();
    -
    -   if (argc > 1) {
    -      uri_string = argv[1];
    -   }
    -
    -   uri = mongoc_uri_new_with_error (uri_string, &error);
    -   if (!uri) {
    -      fprintf (stderr,
    -               "failed to parse URI: %s\n"
    -               "error message:       %s\n",
    -               uri_string,
    -               error.message);
    -      return EXIT_FAILURE;
    -   }
    -
    -   pool = mongoc_client_pool_new (uri);
    -   mongoc_client_pool_set_error_api (pool, 2);
    -
    -   for (i = 0; i < 10; i++) {
    -      pthread_create (&threads[i], NULL, worker, pool);
    -   }
    -
    -   sleep (10);
    -   pthread_mutex_lock (&mutex);
    -   in_shutdown = true;
    -   pthread_mutex_unlock (&mutex);
    -
    -   for (i = 0; i < 10; i++) {
    -      pthread_join (threads[i], &ret);
    -   }
    -
    -   mongoc_client_pool_destroy (pool);
    -   mongoc_uri_destroy (uri);
    -
    -   mongoc_cleanup ();
    -
    -   return EXIT_SUCCESS;
    -}
    -
    -
    -
    -
    -
    -

    Next Steps

    -

    To find information on advanced topics, browse the rest of the C driver guide or the official MongoDB documentation.

    -

    For help with common issues, consult the Troubleshooting page. To report a bug or request a new feature, follow these instructions.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/visual-studio-guide.html b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/visual-studio-guide.html deleted file mode 100644 index 09bf4ad..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/html/visual-studio-guide.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - Using libmongoc in a Microsoft Visual Studio project — MongoDB C Driver 1.13.1 - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - -
    -

    Using libmongoc in a Microsoft Visual Studio project

    -

    Download and install libmongoc on your system, then open Visual Studio, select “File→New→Project…”, and create a new Win32 Console Application.

    -_images/msvc-create-project.png -

    Remember to switch the platform from 32-bit to 64-bit:

    -_images/msvc-switch-architecture.png -

    Right-click on your console application in the Solution Explorer and select “Properties”. Choose to edit properties for “All Configurations”, expand the “C/C++” options and choose “General”. Add to the “Additional Include Directories” these paths:

    -
    C:\mongo-c-driver\include\libbson-1.0
    -C:\mongo-c-driver\include\libmongoc-1.0
    -
    -
    -_images/msvc-add-include-directories.png -

    (If you chose a different CMAKE_INSTALL_PREFIX when you ran CMake, your include paths will be different.)

    -

    Also in the Properties dialog, expand the “Linker” options and choose “Input”, and add to the “Additional Dependencies” these libraries:

    -
    C:\mongo-c-driver\lib\bson-1.0.lib
    -C:\mongo-c-driver\lib\mongoc-1.0.lib
    -
    -
    -_images/msvc-add-dependencies.png -

    Adding these libraries as dependencies provides linker symbols to build your application, but to actually run it, libbson’s and libmongoc’s DLLs must be in your executable path. Select “Debugging” in the Properties dialog, and set the “Environment” option to:

    -
    PATH=c:/mongo-c-driver/bin
    -
    -
    -_images/msvc-set-path.png -

    Finally, include “mongoc/mongoc.h” in your project’s “stdafx.h”:

    -
    #include <mongoc/mongoc.h>
    -
    -
    -
    -

    Static linking

    -

    Following the instructions above, you have dynamically linked your application to the libbson and libmongoc DLLs. This is usually the right choice. If you want to link statically instead, update your “Additional Dependencies” list by removing bson-1.0.lib and mongoc-1.0.lib and replacing them with these libraries:

    -
    C:\mongo-c-driver\lib\bson-static-1.0.lib
    -C:\mongo-c-driver\lib\mongoc-static-1.0.lib
    -ws2_32.lib
    -Secur32.lib
    -Crypt32.lib
    -BCrypt.lib
    -
    -
    -_images/msvc-add-dependencies-static.png -

    (To explain the purpose of each library: bson-static-1.0.lib and mongoc-static-1.0.lib are static archives of the driver code. The socket library ws2_32 is required by libbson, which uses the socket routine gethostname to help guarantee ObjectId uniqueness. The BCrypt library is used by libmongoc for SSL connections to MongoDB, and Secur32 and Crypt32 are required for enterprise authentication methods like Kerberos.)

    -

    Finally, define two preprocessor symbols before including mongoc/mongoc.h in your stdafx.h:

    -
    #define BSON_STATIC
    -#define MONGOC_STATIC
    -#include <mongoc/mongoc.h>
    -
    -
    -

    Making these changes to your project is only required for static linking; for most people, the dynamic-linking instructions above are preferred.

    -
    -
    -

    Next Steps

    -

    Now you can build and debug applications in Visual Studio that use libbson and libmongoc. Proceed to Making a Connection in the tutorial to learn how connect to MongoDB and perform operations.

    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - Created using Sphinx 1.8.3, based on Sphinx Readable Theme. -
    - - - \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/CMakeLists.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/CMakeLists.txt deleted file mode 100644 index e59474f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -file (GLOB src_libmongoc_doc_includes_DIST_txts - RELATIVE - ${CMAKE_CURRENT_SOURCE_DIR} - *.txt -) - -set_dist_list (src_libmongoc_doc_includes_DIST - CMakeLists.txt - ${src_libmongoc_doc_includes_DIST_txts} -) diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-insert-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-insert-opts.txt deleted file mode 100644 index 4165bcd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-insert-opts.txt +++ /dev/null @@ -1,3 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-opts.txt deleted file mode 100644 index 1e72800..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-opts.txt +++ /dev/null @@ -1,5 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``ordered``: set to ``false`` to attempt to insert all documents, continuing after errors. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-many-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-many-opts.txt deleted file mode 100644 index 099c46e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-many-opts.txt +++ /dev/null @@ -1,3 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-one-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-one-opts.txt deleted file mode 100644 index 099c46e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-one-opts.txt +++ /dev/null @@ -1,3 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-opts.txt deleted file mode 100644 index 72e0f48..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-remove-opts.txt +++ /dev/null @@ -1,3 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-replace-one-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-replace-one-opts.txt deleted file mode 100644 index 5935d3f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-replace-one-opts.txt +++ /dev/null @@ -1,5 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``upsert``: If true, insert a document if none match ``selector``. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-many-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-many-opts.txt deleted file mode 100644 index 84819a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-many-opts.txt +++ /dev/null @@ -1,6 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``upsert``: If true, insert a document if none match ``selector``. -* ``arrayFilters``: An array of filters specifying to which array elements an update should apply. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-one-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-one-opts.txt deleted file mode 100644 index 84819a9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/bulk-update-one-opts.txt +++ /dev/null @@ -1,6 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``upsert``: If true, insert a document if none match ``selector``. -* ``arrayFilters``: An array of filters specifying to which array elements an update should apply. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/cast-away-td-const.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/cast-away-td-const.txt deleted file mode 100644 index 7cfb734..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/cast-away-td-const.txt +++ /dev/null @@ -1 +0,0 @@ -Use this function in a topology-changed callback registered with :symbol:`mongoc_apm_set_topology_changed_cb`. For historical reasons, the :symbol:`mongoc_topology_description_t` passed to the callback is a const pointer, you must cast away const to pass the pointer to |td-func|. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/create-index-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/create-index-opts.txt deleted file mode 100644 index cb0db1b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/create-index-opts.txt +++ /dev/null @@ -1,4 +0,0 @@ -``command_opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-many-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-many-opts.txt deleted file mode 100644 index d075473..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-many-opts.txt +++ /dev/null @@ -1,6 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-one-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-one-opts.txt deleted file mode 100644 index d075473..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/delete-one-opts.txt +++ /dev/null @@ -1,6 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/generic-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/generic-opts.txt deleted file mode 100644 index 48973ae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/generic-opts.txt +++ /dev/null @@ -1,4 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``serverId``: To target a specific server, include an int32 "serverId" field. Obtain the id by calling :symbol:`mongoc_client_select_server`, then :symbol:`mongoc_server_description_id` on its return value. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/init_cleanup.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/init_cleanup.txt deleted file mode 100644 index 62fc594..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/init_cleanup.txt +++ /dev/null @@ -1,3 +0,0 @@ -Initialize the MongoDB C Driver by calling :symbol:`mongoc_init` exactly once at the beginning of your program. It is responsible for initializing global state such as process counters, SSL, and threading primitives. - -Call :symbol:`mongoc_cleanup` exactly once at the end of your program to release all memory and other resources allocated by the driver. You must not call any other MongoDB C Driver functions after :symbol:`mongoc_cleanup`. Note that :symbol:`mongoc_init` does **not** reinitialize the driver after :symbol:`mongoc_cleanup`. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-many-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-many-opts.txt deleted file mode 100644 index 0564f35..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-many-opts.txt +++ /dev/null @@ -1,7 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``ordered``: set to ``false`` to attempt to insert all documents, continuing after errors. -* ``bypassDocumentValidation``: Set to ``true`` to skip server-side schema validation of the provided BSON documents. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-one-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-one-opts.txt deleted file mode 100644 index 61c2153..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/insert-one-opts.txt +++ /dev/null @@ -1,6 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``bypassDocumentValidation``: Set to ``true`` to skip server-side schema validation of the provided BSON documents. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/ipv4-and-ipv6.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/ipv4-and-ipv6.txt deleted file mode 100644 index e85e4b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/ipv4-and-ipv6.txt +++ /dev/null @@ -1,5 +0,0 @@ -If connecting to a hostname that has both IPv4 and IPv6 DNS records, the behavior follows `RFC-6555 `_. A connection to the IPv6 address is attempted first. If IPv6 fails, then a connection is attempted to the IPv4 address. If the connection attempt to IPv6 does not complete within 250ms, then IPv4 is tried in parallel. Whichever succeeds connection first cancels the other. The successful DNS result is cached for 10 minutes. - -As a consequence, attempts to connect to a mongod only listening on IPv4 may be delayed if there are both A (IPv4) and AAAA (IPv6) DNS records associated with the host. - -To avoid a delay, configure hostnames to match the MongoDB configuration. That is, only create an A record if the mongod is only listening on IPv4. \ No newline at end of file diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_call_once.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_call_once.txt deleted file mode 100644 index 12e0afe..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_call_once.txt +++ /dev/null @@ -1,4 +0,0 @@ -Thread Safety -------------- - -This function can only be called once on a pool, and must be called before the first call to :symbol:`mongoc_client_pool_pop`. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_thread_safe.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_thread_safe.txt deleted file mode 100644 index 9a2b7dc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/mongoc_client_pool_thread_safe.txt +++ /dev/null @@ -1,4 +0,0 @@ -Thread Safety -------------- - -This function is safe to call from multiple threads. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/opts-sources.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/opts-sources.txt deleted file mode 100644 index f99a768..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/opts-sources.txt +++ /dev/null @@ -1,12 +0,0 @@ -Read preferences, read and write concern, and collation can be overridden by various sources. The highest-priority sources for these options are listed first: - -================== ============== ============== ========= -Read Preferences Read Concern Write Concern Collation -================== ============== ============== ========= -``read_prefs`` ``opts`` ``opts`` ``opts`` -Transaction Transaction Transaction -|opts-source| -================== ============== ============== ========= - -In a transaction, read concern and write concern are prohibited in ``opts`` and the read preference must be primary or NULL. -:ref:`See the example for transactions ` and for :ref:`the "distinct" command with opts `. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-cmd-opts-sources.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-cmd-opts-sources.txt deleted file mode 100644 index 3fafcdb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-cmd-opts-sources.txt +++ /dev/null @@ -1,3 +0,0 @@ -Use this function for commands that read such as "count" or "distinct". - -.. include:: includes/read-opts-sources.txt diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts-sources.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts-sources.txt deleted file mode 100644 index e9f5f29..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts-sources.txt +++ /dev/null @@ -1,11 +0,0 @@ -Read preferences, read concern, and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in ``opts`` and the read preference must be primary or NULL. The highest-priority sources for these options are listed first in the following table. No write concern is applied. - -================== ============== ========= -Read Preferences Read Concern Collation -================== ============== ========= -``read_prefs`` ``opts`` ``opts`` -Transaction Transaction -|opts-source| -================== ============== ========= - -:ref:`See the example for transactions ` and for :ref:`the "distinct" command with opts `. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts.txt deleted file mode 100644 index 7d59690..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-opts.txt +++ /dev/null @@ -1,6 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``readConcern``: Construct a :symbol:`mongoc_read_concern_t` and use :symbol:`mongoc_read_concern_append` to add the read concern to ``opts``. See the example code for :symbol:`mongoc_client_read_command_with_opts`. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``serverId``: To target a specific server, include an int32 "serverId" field. Obtain the id by calling :symbol:`mongoc_client_select_server`, then :symbol:`mongoc_server_description_id` on its return value. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts-sources.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts-sources.txt deleted file mode 100644 index 2eda77a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts-sources.txt +++ /dev/null @@ -1,13 +0,0 @@ -Use this function for commands that both read and write, such as "mapReduce" with an output collection. - -Read and write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in ``opts``. The highest-priority sources for these options are listed first in the following table. Read preferences are *not* applied. The write concern is omitted for MongoDB before 3.4. - -============== ============== ========= -Read Concern Write Concern Collation -============== ============== ========= -``opts`` ``opts`` ``opts`` -Transaction Transaction -|opts-source| |opts-source| -============== ============== ========= - -:ref:`See the example for transactions ` and for :ref:`the "distinct" command with opts `. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts.txt deleted file mode 100644 index d3da004..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/read-write-opts.txt +++ /dev/null @@ -1,7 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``readConcern``: Construct a :symbol:`mongoc_read_concern_t` and use :symbol:`mongoc_read_concern_append` to add the read concern to ``opts``. See the example code for :symbol:`mongoc_client_read_command_with_opts`. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``serverId``: To target a specific server, include an int32 "serverId" field. Obtain the id by calling :symbol:`mongoc_client_select_server`, then :symbol:`mongoc_server_description_id` on its return value. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/replace-one-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/replace-one-opts.txt deleted file mode 100644 index dac1551..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/replace-one-opts.txt +++ /dev/null @@ -1,8 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``bypassDocumentValidation``: Set to ``true`` to skip server-side schema validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``upsert``: When true, creates a new document if no document matches the query. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/session-lifecycle.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/session-lifecycle.txt deleted file mode 100644 index 5ba4762..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/session-lifecycle.txt +++ /dev/null @@ -1,9 +0,0 @@ -Start a session with :symbol:`mongoc_client_start_session`, use the session for a sequence of operations and multi-document transactions, then free it with :symbol:`mongoc_client_session_destroy()`. Any :symbol:`mongoc_cursor_t` or :symbol:`mongoc_change_stream_t` using a session must be destroyed before the session, and a session must be destroyed before the :symbol:`mongoc_client_t` it came from. - -By default, sessions are `causally consistent `_. To disable causal consistency, before starting a session create a :symbol:`mongoc_session_opt_t` with :symbol:`mongoc_session_opts_new()` and call :symbol:`mongoc_session_opts_set_causal_consistency()`, then free the struct with :symbol:`mongoc_session_opts_destroy`. - -Unacknowledged writes are prohibited with sessions. - -.. the timeout warning is mandated by the Driver Sessions Spec - -A :symbol:`mongoc_client_session_t` must be used by only one thread at a time. Due to session pooling, :symbol:`mongoc_client_start_session` may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-many-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-many-opts.txt deleted file mode 100644 index 51ecd28..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-many-opts.txt +++ /dev/null @@ -1,9 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``bypassDocumentValidation``: Set to ``true`` to skip server-side schema validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``upsert``: When true, creates a new document if no document matches the query. -* ``arrayFilters``: An array of filters specifying to which array elements an update should apply. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-one-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-one-opts.txt deleted file mode 100644 index 51ecd28..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/update-one-opts.txt +++ /dev/null @@ -1,9 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``validate``: Construct a bitwise-or of all desired :symbol:`bson_validate_flags_t `. Set to ``false`` to skip client-side validation of the provided BSON documents. -* ``bypassDocumentValidation``: Set to ``true`` to skip server-side schema validation of the provided BSON documents. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``upsert``: When true, creates a new document if no document matches the query. -* ``arrayFilters``: An array of filters specifying to which array elements an update should apply. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts-sources.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts-sources.txt deleted file mode 100644 index 245ab2a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts-sources.txt +++ /dev/null @@ -1,11 +0,0 @@ -Use this function for commands that write such as "drop" or "createRole" (but not for "insert", "update", or "delete", see `Basic Write Operations`_). Write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in ``opts``. The highest-priority sources for these options are listed first in the following table. The write concern is omitted for MongoDB before 3.4. - -============== ========= -Write Concern Collation -============== ========= -``opts`` ``opts`` -Transaction -|opts-source| -============== ========= - -:ref:`See the example for transactions ` and for :ref:`the "distinct" command with opts `. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts.txt b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts.txt deleted file mode 100644 index 8de41d3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/includes/write-opts.txt +++ /dev/null @@ -1,6 +0,0 @@ -``opts`` may be NULL or a BSON document with additional command options: - -* ``writeConcern``: Construct a :symbol:`mongoc_write_concern_t` and use :symbol:`mongoc_write_concern_append` to add the write concern to ``opts``. See the example code for :symbol:`mongoc_client_write_command_with_opts`. -* ``sessionId``: First, construct a :symbol:`mongoc_client_session_t` with :symbol:`mongoc_client_start_session`. You can begin a transaction with :symbol:`mongoc_client_session_start_transaction`, optionally with a :symbol:`mongoc_transaction_opt_t` that overrides the options inherited from |opts-source|, and use :symbol:`mongoc_client_session_append` to add the session to ``opts``. See the example code for :symbol:`mongoc_client_session_t`. -* ``collation``: Configure textual comparisons. See :ref:`Setting Collation Order `, and `the MongoDB Manual entry on Collation `_. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -* ``serverId``: To target a specific server, include an int32 "serverId" field. Obtain the id by calling :symbol:`mongoc_client_select_server`, then :symbol:`mongoc_server_description_id` on its return value. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/index.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/index.rst deleted file mode 100644 index eab7d48..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/index.rst +++ /dev/null @@ -1,48 +0,0 @@ -MongoDB C Driver -================ - -A Cross Platform MongoDB Client Library for C - -Introduction ------------- - -The MongoDB C Driver, also known as "libmongoc", is a library for using MongoDB from C applications, and for writing MongoDB drivers in higher-level languages. - -It depends on :doc:`libbson ` to generate and parse BSON documents, the native data format of MongoDB. - -.. toctree:: - :maxdepth: 2 - - installing - -.. toctree:: - :maxdepth: 2 - - tutorial - -.. toctree:: - :maxdepth: 2 - - authentication - -.. toctree:: - :maxdepth: 2 - - basic-troubleshooting - -.. toctree:: - :maxdepth: 2 - - guides - -.. toctree:: - :titlesonly: - :maxdepth: 2 - - api - -.. toctree:: - :titlesonly: - :maxdepth: 2 - - application-performance-monitoring diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/init-cleanup.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/init-cleanup.rst deleted file mode 100644 index 24fc15d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/init-cleanup.rst +++ /dev/null @@ -1,29 +0,0 @@ -:man_page: mongoc_init_cleanup - -Initialization and cleanup -========================== - -Synopsis --------- - -.. include:: includes/init_cleanup.txt - -.. only:: html - - .. toctree:: - :titlesonly: - :maxdepth: 1 - - mongoc_init - mongoc_cleanup - -Deprecated feature: automatic initialization and cleanup --------------------------------------------------------- - -On some platforms the driver can automatically call :symbol:`mongoc_init` before ``main``, and call :symbol:`mongoc_cleanup` as the process exits. This is problematic in situations where related libraries also execute cleanup code on shutdown, and it creates inconsistent rules across platforms. Therefore the automatic initialization and cleanup feature is deprecated, and will be dropped in version 2.0. Meanwhile, for backward compatibility, the feature is *enabled* by default on platforms where it is available. - -For portable, future-proof code, always call :symbol:`mongoc_init` and :symbol:`mongoc_cleanup` yourself, and configure the driver like: - -.. code-block:: none - - cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=NO diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/installing.rst b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/installing.rst deleted file mode 100644 index d506303..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/installing.rst +++ /dev/null @@ -1,287 +0,0 @@ -:man_page: mongoc_installing - -Installing the MongoDB C Driver (libmongoc) and BSON library (libbson) -====================================================================== - -The following guide will step you through the process of downloading, building, and installing the current release of the MongoDB C Driver (libmongoc) and BSON library (libbson). - -Supported Platforms -------------------- - -The MongoDB C Driver is `continuously tested `_ on variety of platforms including: - -- Archlinux -- Debian 8.1 -- macOS 10.10 -- Microsoft Windows Server 2008 -- RHEL 7.0, 7.1, 7.2 -- SUSE 12 -- Ubuntu 12.04, 14.04, 16.04 -- Clang 3.4, 3.5, 3.7, 3.8 -- GCC 4.6, 4.8, 4.9, 5.3 -- MinGW-W64 -- Visual Studio 2010, 2013, 2015 -- x86, x86_64, ARM (aarch64), Power8 (ppc64le), zSeries (s390x) - -Install libmongoc with a Package Manager ----------------------------------------- - -Several Linux distributions provide packages for libmongoc and its dependencies. One advantage of installing libmongoc with a package manager is that its dependencies (including libbson) will be installed automatically. - -The libmongoc package is available on recent versions of Debian and Ubuntu. - -.. code-block:: none - - $ apt-get install libmongoc-1.0-0 - -On Fedora, a mongo-c-driver package is available in the default repositories and can be installed with: - -.. code-block:: none - - $ dnf install mongo-c-driver - -On recent Red Hat systems, such as CentOS and RHEL 7, a mongo-c-driver package is available in the `EPEL `_ repository. To check which version is available, see `https://apps.fedoraproject.org/packages/mongo-c-driver `_. The package can be installed with: - -.. code-block:: none - - $ yum install mongo-c-driver - -Install libbson with a Package Manager --------------------------------------- - -The libbson package is available on recent versions of Debian and Ubuntu. If you have installed libmongoc, then libbson will have already been installed as a dependency. It is also possible to install libbson without libmongoc. - -.. code-block:: none - - $ apt-get install libbson-1.0 - -On Fedora, a libbson package is available in the default repositories and can be installed with: - -.. code-block:: none - - $ dnf install libbson - -On recent Red Hat systems, such as CentOS and RHEL 7, a libbson package -is available in the `EPEL `_ repository. To check -which version is available, see `https://apps.fedoraproject.org/packages/libbson `_. -The package can be installed with: - -.. code-block:: none - - $ yum install libbson - -Building on Unix ----------------- - -Prerequisites for libmongoc -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -OpenSSL is required for authentication or for SSL connections to MongoDB. Kerberos or LDAP support requires Cyrus SASL. - -To install all optional dependencies on RedHat / Fedora: - -.. code-block:: none - - $ sudo yum install cmake openssl-devel cyrus-sasl-devel - -On Debian / Ubuntu: - -.. code-block:: none - - $ sudo apt-get install cmake libssl-dev libsasl2-dev - -On FreeBSD: - -.. code-block:: none - - $ su -c 'pkg install cmake openssl cyrus-sasl' - -Prerequisites for libbson -^^^^^^^^^^^^^^^^^^^^^^^^^ - -The only prerequisite for building libbson is ``cmake``. The command lines above can be adjusted to install only ``cmake``. - -Building from a release tarball -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Unless you intend to contribute to mongo-c-driver and/or libbson, you will want to build from a release tarball. - -The most recent release of libmongoc and libbson, both of which are included in mongo-c-driver, is |release| and can be :release:`downloaded here <>`. The instructions in this document utilize ``cmake``'s out-of-source build feature to keep build artifacts separate from source files. - -The following snippet will download and extract the driver, and configure it: - -.. parsed-literal:: - - $ wget |release_download| - $ tar xzf mongo-c-driver-|release|.tar.gz - $ cd mongo-c-driver-|release| - $ mkdir cmake-build - $ cd cmake-build - $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF .. - -The ``-DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF`` option is recommended, see :doc:`init-cleanup`. Another useful ``cmake`` option is ``-DCMAKE_BUILD_TYPE=Release`` for a release optimized build and ``-DCMAKE_BUILD_TYPE=Debug`` for a debug build. For a list of all configure options, run ``cmake -L ..``. - -If ``cmake`` completed successfully, you will see a considerable amount of output describing your build configuration. The final line of output should look something like this: - -.. parsed-literal:: - - -- Build files have been written to: /home/user/mongo-c-driver-|release|/cmake-build - -If ``cmake`` concludes with anything different, then there is likely an error or some other problem with the build. Review the output to identify and correct the problem. - -mongo-c-driver contains a copy of libbson, in case your system does not already have libbson installed. The build will detect if libbson is not installed and use the bundled libbson. - -Additionally, it is possible to build only libbson by setting the ``-DENABLE_MONGOC=OFF`` option: - -.. parsed-literal:: - - $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_MONGOC=OFF .. - -A build configuration description similar to the one above will be displayed, though with fewer entries. Once the configuration is complete, the selected items can be built and installed with these commands: - -.. code-block:: none - - $ make - $ sudo make install - -There are two ways to uninstall the components that have been installed. The first is to invoke the uninstall program directly. On Linux/Unix: - -.. code-block:: none - - $ sudo /usr/local/share/mongo-c-driver/uninstall.sh - -On Windows: - -.. code-block:: none - - C:\Users\user> C:\mongo-c-driver\share\mongo-c-driver\uninstall.bat - -The second way to uninstall is from within the build directory, assuming that it is in the exact same state as when the install command was invoked: - -.. code-block:: none - - $ sudo make uninstall - -The second approach simply invokes the uninstall program referenced in the first approach. - -Building from git -^^^^^^^^^^^^^^^^^ - -Clone the repository and build the current master or a particular release tag: - -.. code-block:: none - - $ git clone https://github.com/mongodb/mongo-c-driver.git - $ cd mongo-c-driver - $ git checkout x.y.z # To build a particular release - $ mkdir cmake-build - $ cd cmake-build - $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF .. - $ make - $ sudo make install - -Generating the documentation -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Install `Sphinx `_, then: - -.. code-block:: none - - $ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON .. - $ make mongoc-doc - -To build only the libbson documentation: - -.. code-block:: none - - $ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON .. - $ make bson-doc - -The ``-DENABLE_MAN_PAGES=ON`` and ``-DENABLE_HTML_DOCS=ON`` can also be added as options to a normal build from a release tarball or from git so that the documentation is built at the same time as other components. - -Building on macOS ------------------ - -Install the XCode Command Line Tools:: - - $ xcode-select --install - -The ``cmake`` utility is also required. First `install Homebrew according to its instructions `_, then:: - - $ brew install cmake - -Download the latest release tarball: - -.. parsed-literal:: - - $ curl -LO |release_download| - $ tar xzf mongo-c-driver-|release|.tar.gz - $ cd mongo-c-driver-|release| - -Build and install the driver: - -.. code-block:: none - - $ mkdir cmake-build - $ cd cmake-build - $ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF .. - -All of the same variations described above (e.g., building only libbson, building documentation, etc.) are available when building on macOS. - -.. _build-on-windows: - -Building on Windows with Visual Studio --------------------------------------- - -Building on Windows requires Windows Vista or newer and Visual Studio 2010 or newer. Additionally, ``cmake`` is required to generate Visual Studio project files. - -Let's start by generating Visual Studio project files. The following assumes we are compiling for 64-bit Windows using Visual Studio 2015 Express, which can be freely downloaded from Microsoft. We will be utilizing ``cmake``'s out-of-source build feature to keep build artifacts separate from source files. - -.. parsed-literal:: - - cd mongo-c-driver-|release| - mkdir cmake-build - cd cmake-build - cmake -G "Visual Studio 14 2015 Win64" \\ - "-DCMAKE_INSTALL_PREFIX=C:\\mongo-c-driver" \\ - "-DCMAKE_PREFIX_PATH=C:\\mongo-c-driver" \\ - .. - -(Run ``cmake -LH ..`` for a list of other options.) - -Now that we have project files generated, we can either open the project in Visual Studio or compile from the command line. Let's build using the command line program ``msbuild.exe``: - -.. code-block:: none - - msbuild.exe /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj - -Visual Studio's default build type is ``Debug``, but we recommend a release build with debug info for production use. Now that libmongoc and libbson are compiled, let's install them using msbuild. It will be installed to the path specified by ``CMAKE_INSTALL_PREFIX``. - -.. code-block:: none - - msbuild.exe INSTALL.vcxproj - -You should now see libmongoc and libbson installed in ``C:\mongo-c-driver`` - -To use the driver libraries in your program, see :doc:`visual-studio-guide`. - -Building on Windows with MinGW-W64 and MSYS2 --------------------------------------------- - -Install MSYS2 from `msys2.github.io `_. Choose the x86_64 version, not i686. - -Open ``c:\msys64\ming64_shell.bat`` (not the msys2_shell). Install dependencies: - -.. code-block:: none - - pacman --noconfirm -Syu - pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake - pacman --noconfirm -S mingw-w64-x86_64-extra-cmake-modules make tar - pacman --noconfirm -S mingw64/mingw-w64-x86_64-cyrus-sasl - -Download and untar the latest tarball, enter its directory, and build with CMake: - -.. code-block:: none - - CC=/mingw64/bin/gcc.exe /mingw64/bin/cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="C:/mongo-c-driver" .. - make diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/libbson-objects.inv b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/libbson-objects.inv deleted file mode 100644 index 755ef0142a3d020b6cf0d6ad5b1129a60142de0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2948 zcmV-~3w!hNERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkRX<}k? zZ*B@BAXa5^b7^mGIv_DFF*7bP3L_v?Xk{RBWo=<;Ze(S0Aa78b#rNMXCQiPX<{x4c-oDd%aYu-6^8fy6upcWlag&krOGam?L;YG zRF>_ktXOC^x|-NZ(vC-~L4wC2K@}j)Q|B(t+>W;@ z4}{5R5I{;f8fP2VT~&Sw;N)Ua=HWJWgR_&$%mD&3Ta;=dON2lz9>tFB za5Jw)E;VFn9vTs{}H3YUlJ8M|hDCCVRGDG{$Oj$|_5o=BerJP^HBXg&9pko}aG= zeY%J)=S7{M!eg{iA4AdQsHh95*_rFDMq2}9;A#oXN7L7c-j;dZAhcyT+EX`JwTF}d zPAnE>x|2FJ1WzD&l|Xz|7xm${njEvrg|n_u%-nqPzc>iGkOcLDnw!=PtA@ft)F4ozhUYAjIN9EO@w~eg6$3F^4B5(RyRMntml4h5cV zuuf*_oeBjp0vNayKG-J}>OBGGRSMDTm1^^l<8M;C+;C&uKnvWS8#jt6UME>zA&I`X zw*7MKhO>s)A~;)MY^N`(>OLQ~8IA7oMOEM7 zBR=D?-MuJldwa-bFtV?gM7@X0-CO9}$K@u!r6QMsl8#XR1^6gqfS`5wQ@sn zjLPM=X0s~oM}l;`+>&vc6PH;+j7-mN1>P9fjHlCV-AjtuqU!~2ainNz>w2>|6l_~( zMVrOMDU8ow(%x`3Xg1gp&cF5holJqj?(g8=t7S-VC?RMly>`FkyCd8SX(KrsEWN{n zYxJwfr^)|WnaFVrBO+IU-d^X(7%3vcw zdI5X@B2OENB&fqv^ad$Ql!fLQSXX;FSIijXi6k-z7n-(?R_CQ zjPOj}5%eXhv^-@?Q~3yGvnT)^pG2jb{S<9_r6r2ZNZH7=PwQq?nB^yHj_V|Q_U+EF zN*v%T5o$rwPPY_PD+26&uU?Y1T|Xg)(y=SS)q3kyuGiMfaj|te-UH`2y?`81FQ^ly zD>d?NVcj-u!GQ2jwUqFW0uTR4OjiZsXPBR}`;l)VMH!SEg0zzZoY_wXc0mbAwhg|%Ld7Y?``3?oJgA0UVVGdZk%lM=!~@T;UTbG zW|kUwXAaw$I(4%NaWepI6!x~F9J7ClAwQYHoNd_9h?&v|$DRT>mqU`7<@%6qPQ`OTnPoYW&Hw7J-`JXzyK9Pgfqu%u=MThG5nT~PKraa(Gf}z z!dAJmrolD=Z3d)Wj4)2KK?p&Dx#Aej2FZnEH2Tgk6KEMy7@Pw|*JHK*a%!qLuXSPkR*CfW?97Su5$o%|GSciDxGRCMT)nir<;gPfO6( zBz`1>6OC5bU)d~_oJBx5E@HNqai$k=R-;`jbQzmhgG1TJh}jlCuMfA6nrpD(M&y z6qu-t^??oc0gv`UIx9;$NdzZk^KuBAr&3d82elQCBfbn1NXvTMQCY0h0B{l1%2$(m zqfmk3;5xX|+s4kV@wGeoM~wIyE(O852zIGY@YY47HriMOB|{Hk!%MG@%r3=c9ihUR zXN6U43M&Spt?zBpI6^LEWj&)*iU81Z(PSvnQC!xyt-0)6qZVlbgi_W*iFiRA%rG?K$&o~=E62-kp@euH2H59 zr+{fcDPbV_=jhp8G|(2od7DSD(xkUp90Vr4q)cPqA58mM!(^YcvO|DQBjN7yr=3Q5 z;x7&;vS_}r@B}gK`VD0GpJj1QoyNs=gGC?nR|6ybT@Km%kp0Ivv;3MucCCLea%8T_ zTFTE6X8+HRzx=%aE`3SoQ^$FJxb?>Qhy3+n7#*pb;Af8;f+M8+X_7C|u+1`5_zWykR^py-in3K8YxwKm2m|WLx+CyLopr z(@c6(l49hCV$-i3J#62O*nj`+hljU2KN+1T@~L6gau2Zk uKXQ~C{V2Bn0rrERwqs+3J -#include - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - - mongoc_init (); - - /* Create our MongoDB Client */ - client = mongoc_client_new ( - "mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset"); - - /* Do some work */ - /* TODO */ - - /* Clean up */ - mongoc_client_destroy (client); - mongoc_cleanup (); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -Multiple hostnames can be specified in the MongoDB connection string URI, with a comma separating hosts in the seed list. -.sp -It is recommended to use a seed list of members of the replica set to allow the driver to connect to any node. -.UNINDENT -.UNINDENT -.SH CONNECTING TO A SHARDED CLUSTER -.sp -To connect to a \fI\%sharded cluster\fP, specify the \fBmongos\fP nodes the client should connect to. The C Driver will automatically detect that it has connected to a \fBmongos\fP sharding server. -.sp -If more than one hostname is specified, a seed list will be created to attempt failover between the \fBmongos\fP instances. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -Specifying the \fBreplicaSet\fP parameter when connecting to a \fBmongos\fP sharding server is invalid. -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - - mongoc_init (); - - /* Create our MongoDB Client */ - client = mongoc_client_new ("mongodb://myshard01:27017/"); - - /* Do something with client ... */ - - /* Free the client */ - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return 0; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH CONNECTING TO AN IPV6 ADDRESS -.sp -The MongoDB C Driver will automatically resolve IPv6 addresses from host names. However, to specify an IPv6 address directly, wrap the address in \fB[]\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_uri_t *uri = mongoc_uri_new ("mongodb://[::1]:27017"); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH CONNECTING WITH IPV4 AND IPV6 -.sp -If connecting to a hostname that has both IPv4 and IPv6 DNS records, the behavior follows \fI\%RFC\-6555\fP\&. A connection to the IPv6 address is attempted first. If IPv6 fails, then a connection is attempted to the IPv4 address. If the connection attempt to IPv6 does not complete within 250ms, then IPv4 is tried in parallel. Whichever succeeds connection first cancels the other. The successful DNS result is cached for 10 minutes. -.sp -As a consequence, attempts to connect to a mongod only listening on IPv4 may be delayed if there are both A (IPv4) and AAAA (IPv6) DNS records associated with the host. -.sp -To avoid a delay, configure hostnames to match the MongoDB configuration. That is, only create an A record if the mongod is only listening on IPv4. -.SH CONNECTING TO A UNIX DOMAIN SOCKET -.sp -On UNIX\-like systems, the C Driver can connect directly to a MongoDB server using a UNIX domain socket. Pass the URL\-encoded path to the socket, which \fImust\fP be suffixed with \fB\&.sock\fP\&. For example, to connect to a domain socket at \fB/tmp/mongodb\-27017.sock\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_uri_t *uri = mongoc_uri_new ("mongodb://%2Ftmp%2Fmongodb\-27017.sock"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Include username and password like so: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_uri_t *uri = mongoc_uri_new ("mongodb://user:pass@%2Ftmp%2Fmongodb\-27017.sock"); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH CONNECTING TO A SERVER OVER SSL -.sp -These are instructions for configuring TLS/SSL connections. -.sp -To run a server locally (on port 27017, for example): -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -$ mongod \-\-port 27017 \-\-sslMode requireSSL \-\-sslPEMKeyFile server.pem \-\-sslCAFile ca.pem -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Add \fB/?ssl=true\fP to the end of a client URI. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client = NULL; -client = mongoc_client_new ("mongodb://localhost:27017/?ssl=true"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -MongoDB requires client certificates by default, unless the \fB\-\-sslAllowConnectionsWithoutCertificates\fP is provided. The C Driver can be configured to present a client certificate using a \fBmongoc_ssl_opt_t\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_ssl_opt_t *ssl_default = mongoc_ssl_opt_get_default (); -mongoc_ssl_opt_t ssl_opts = { 0 }; - -/* optionally copy in a custom trust directory or file; otherwise the default is used. */ -memcpy (&ssl_opts, ssl_default, sizeof ssl_opts); -ssl_opts.pem_file = "client.pem" - -mongoc_client_set_ssl_opts (client, &ssl_opts); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The client certificate provided by \fBpem_file\fP must be issued by one of the server trusted Certificate Authorities listed in \fB\-\-sslCAFile\fP, or issued by a CA in the native certificate store on the server when omitted. -.sp -To verify the server certificate against a specific CA, provide a PEM armored file with a CA certificate, or concatenated list of CA certificates using the \fBca_file\fP option, or \fBc_rehash\fP directory structure of CAs, pointed to using the \fBca_dir\fP option. When no \fBca_file\fP or \fBca_dir\fP is provided, the driver will use CAs provided by the native platform certificate store. -.sp -See mongoc_ssl_opt_t for more information on the various SSL related options. -.SH COMPRESSING DATA TO AND FROM MONGODB -.sp -MongoDB 3.4 added Snappy compression support, and zlib compression in 3.6. -To enable compression support the client must be configured with which compressors to use: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client = NULL; -client = mongoc_client_new ("mongodb://localhost:27017/?compressors=snappy,zlib"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBcompressors\fP option specifies the priority order of compressors the -client wants to use. Messages are compressed if the client and server share any -compressors in common. -.sp -Note that the compressor used by the server might not be the same compressor as -the client used. For example, if the client uses the connection string -\fBcompressors=zlib,snappy\fP the client will use \fBzlib\fP compression to send -data (if possible), but the server might still reply using \fBsnappy\fP, -depending on how the server was configured. -.sp -The driver must be built with zlib and/or snappy support to enable compression -support, any unknown (or not compiled in) compressor value will be ignored. -.SH ADDITIONAL CONNECTION OPTIONS -.sp -The full list of connection options can be found in the \fBmongoc_uri_t\fP docs. -.sp -Certain socket/connection related options are not configurable: -.TS -center; -|l|l|l|. -_ -T{ -Option -T} T{ -Description -T} T{ -Value -T} -_ -T{ -SO_KEEPALIVE -T} T{ -TCP Keep Alive -T} T{ -Enabled -T} -_ -T{ -TCP_KEEPIDLE -T} T{ -How long a connection needs to remain idle before TCP -starts sending keepalive probes -T} T{ -300 seconds -T} -_ -T{ -TCP_KEEPINTVL -T} T{ -The time in seconds between TCP probes -T} T{ -10 seconds -T} -_ -T{ -TCP_KEEPCNT -T} T{ -How many probes to send, without acknowledgement, -before dropping the connection -T} T{ -9 probes -T} -_ -T{ -TCP_NODELAY -T} T{ -Send packets as soon as possible or buffer small -packets (Nagle algorithm) -T} T{ -Enabled (no buffering) -T} -_ -.TE -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_aggregate.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_aggregate.3 deleted file mode 100644 index caaa7c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_aggregate.3 +++ /dev/null @@ -1,324 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_AGGREGATE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_aggregate \- Aggregation Framework Examples -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -This document provides a number of practical examples that display the capabilities of the aggregation framework. -.sp -The \fI\%Aggregations using the Zip Codes Data Set\fP examples uses a publicly available data set of all zipcodes and populations in the United States. These data are available at: \fI\%zips.json\fP\&. -.SH REQUIREMENTS -.sp -Let\(aqs check if everything is installed. -.sp -Use the following command to load zips.json data set into mongod instance: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -$ mongoimport \-\-drop \-d test \-c zipcodes zips.json -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Let\(aqs use the MongoDB shell to verify that everything was imported successfully. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -$ mongo test -connecting to: test -> db.zipcodes.count() -29467 -> db.zipcodes.findOne() -{ - "_id" : "35004", - "city" : "ACMAR", - "loc" : [ - \-86.51557, - 33.584132 - ], - "pop" : 6055, - "state" : "AL" -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AGGREGATIONS USING THE ZIP CODES DATA SET -.sp -Each document in this collection has the following form: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ - "_id" : "35004", - "city" : "Acmar", - "state" : "AL", - "pop" : 6055, - "loc" : [\-86.51557, 33.584132] -} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -In these documents: -.INDENT 0.0 -.IP \(bu 2 -The \fB_id\fP field holds the zipcode as a string. -.IP \(bu 2 -The \fBcity\fP field holds the city name. -.IP \(bu 2 -The \fBstate\fP field holds the two letter state abbreviation. -.IP \(bu 2 -The \fBpop\fP field holds the population. -.IP \(bu 2 -The \fBloc\fP field holds the location as a \fB[latitude, longitude]\fP array. -.UNINDENT -.SH STATES WITH POPULATIONS OVER 10 MILLION -.sp -To get all states with a population greater than 10 million, use the following aggregation pipeline: -aggregation1.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -static void -print_pipeline (mongoc_collection_t *collection) -{ - mongoc_cursor_t *cursor; - bson_error_t error; - const bson_t *doc; - bson_t *pipeline; - char *str; - - pipeline = BCON_NEW ("pipeline", - "[", - "{", - "$group", - "{", - "_id", - "$state", - "total_pop", - "{", - "$sum", - "$pop", - "}", - "}", - "}", - "{", - "$match", - "{", - "total_pop", - "{", - "$gte", - BCON_INT32 (10000000), - "}", - "}", - "}", - "]"); - - cursor = mongoc_collection_aggregate ( - collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL); - - while (mongoc_cursor_next (cursor, &doc)) { - str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\en", str); - bson_free (str); - } - - if (mongoc_cursor_error (cursor, &error)) { - fprintf (stderr, "Cursor Failure: %s\en", error.message); - } - - mongoc_cursor_destroy (cursor); - bson_destroy (pipeline); -} - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - const char *uri_string = - "mongodb://localhost:27017/?appname=aggregation\-example"; - mongoc_uri_t *uri; - bson_error_t error; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - collection = mongoc_client_get_collection (client, "test", "zipcodes"); - - print_pipeline (collection); - - mongoc_uri_destroy (uri); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -You should see a result like the following: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "_id" : "PA", "total_pop" : 11881643 } -{ "_id" : "OH", "total_pop" : 10847115 } -{ "_id" : "NY", "total_pop" : 17990455 } -{ "_id" : "FL", "total_pop" : 12937284 } -{ "_id" : "TX", "total_pop" : 16986510 } -{ "_id" : "IL", "total_pop" : 11430472 } -{ "_id" : "CA", "total_pop" : 29760021 } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The above aggregation pipeline is build from two pipeline operators: \fB$group\fP and \fB$match\fP\&. -.sp -The \fB$group\fP pipeline operator requires _id field where we specify grouping; remaining fields specify how to generate composite value and must use one of the group aggregation functions: \fB$addToSet\fP, \fB$first\fP, \fB$last\fP, \fB$max\fP, \fB$min\fP, \fB$avg\fP, \fB$push\fP, \fB$sum\fP\&. The \fB$match\fP pipeline operator syntax is the same as the read operation query syntax. -.sp -The \fB$group\fP process reads all documents and for each state it creates a separate document, for example: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "_id" : "WA", "total_pop" : 4866692 } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBtotal_pop\fP field uses the $sum aggregation function to sum the values of all pop fields in the source documents. -.sp -Documents created by \fB$group\fP are piped to the \fB$match\fP pipeline operator. It returns the documents with the value of \fBtotal_pop\fP field greater than or equal to 10 million. -.SH AVERAGE CITY POPULATION BY STATE -.sp -To get the first three states with the greatest average population per city, use the following aggregation: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pipeline = BCON_NEW ("pipeline", "[", - "{", "$group", "{", "_id", "{", "state", "$state", "city", "$city", "}", "pop", "{", "$sum", "$pop", "}", "}", "}", - "{", "$group", "{", "_id", "$_id.state", "avg_city_pop", "{", "$avg", "$pop", "}", "}", "}", - "{", "$sort", "{", "avg_city_pop", BCON_INT32 (\-1), "}", "}", - "{", "$limit", BCON_INT32 (3) "}", -"]"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This aggregate pipeline produces: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "_id" : "DC", "avg_city_pop" : 303450.0 } -{ "_id" : "FL", "avg_city_pop" : 27942.29805615551 } -{ "_id" : "CA", "avg_city_pop" : 27735.341099720412 } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The above aggregation pipeline is build from three pipeline operators: \fB$group\fP, \fB$sort\fP and \fB$limit\fP\&. -.sp -The first \fB$group\fP operator creates the following documents: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "_id" : { "state" : "WY", "city" : "Smoot" }, "pop" : 414 } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Note, that the \fB$group\fP operator can\(aqt use nested documents except the \fB_id\fP field. -.sp -The second \fB$group\fP uses these documents to create the following documents: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "_id" : "FL", "avg_city_pop" : 27942.29805615551 } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -These documents are sorted by the \fBavg_city_pop\fP field in descending order. Finally, the \fB$limit\fP pipeline operator returns the first 3 documents from the sorted set. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_destroy.3 deleted file mode 100644 index 84656ef..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_destroy.3 +++ /dev/null @@ -1,55 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_CALLBACKS_DESTROY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_callbacks_destroy \- mongoc_apm_callbacks_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_callbacks_destroy (mongoc_apm_callbacks_t *callbacks); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Free a \fBmongoc_apm_callbacks_t\fP\&. Does nothing if \fBcallbacks\fP is NULL. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_new.3 deleted file mode 100644 index 4aab231..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_new.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_CALLBACKS_NEW" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_callbacks_new \- mongoc_apm_callbacks_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_apm_callbacks_t * -mongoc_apm_callbacks_new (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Create a struct to hold event\-notification callbacks. -.SH RETURNS -.sp -A new \fBmongoc_apm_callbacks_t\fP you must free with \fBmongoc_apm_callbacks_destroy\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_t.3 deleted file mode 100644 index 2c99947..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_callbacks_t.3 +++ /dev/null @@ -1,48 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_CALLBACKS_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_callbacks_t \- mongoc_apm_callbacks_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Notification callbacks -.SH SYNOPSIS -.sp -Used to receive notification of events, such as when a MongoDB command begins, succeeds, or fails. -.sp -Create a \fBmongoc_apm_callbacks_t\fP with \fBmongoc_apm_callbacks_new\fP, set callbacks on it, then pass it to \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_command_name.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_command_name.3 deleted file mode 100644 index 77eac04..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_command_name.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_COMMAND_NAME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_command_name \- mongoc_apm_command_failed_get_command_name() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -mongoc_apm_command_failed_get_command_name ( - const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs command name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A string that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_context.3 deleted file mode 100644 index 572d735..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_context \- mongoc_apm_command_failed_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_command_failed_get_context ( - const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_duration.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_duration.3 deleted file mode 100644 index e9bee2b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_duration.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_DURATION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_duration \- mongoc_apm_command_failed_get_duration() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_failed_get_duration ( - const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs duration in microseconds. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs duration. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_error.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_error.3 deleted file mode 100644 index 43f8d8a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_error.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_ERROR" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_error \- mongoc_apm_command_failed_get_error() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_command_failed_get_error (const mongoc_apm_command_failed_t *event, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Copies this event\(aqs error info. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.IP \(bu 2 -\fBerror\fP: A \fI\%bson_error_t\fP to receive the event\(aqs error info. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_host.3 deleted file mode 100644 index cb14559..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_host.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_host \- mongoc_apm_command_failed_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_command_failed_get_host (const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_operation_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_operation_id.3 deleted file mode 100644 index 111ad86..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_operation_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_OPERATION_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_operation_id \- mongoc_apm_command_failed_get_operation_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_failed_get_operation_id ( - const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs operation id. This number correlates all the commands in a bulk operation, or all the "find" and "getMore" commands required to stream a large query result. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs operation id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_reply.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_reply.3 deleted file mode 100644 index 1ce3ad5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_reply.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_REPLY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_reply \- mongoc_apm_command_failed_get_reply() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t * -mongoc_apm_command_failed_get_reply ( - const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns the server\(aqs reply to a command that failed. The reply contains details about why the command failed. If no server reply was received, such as in the event of a network error, then the reply is a valid empty BSON document. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fI\%bson_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_request_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_request_id.3 deleted file mode 100644 index fc9bfb2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_request_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_REQUEST_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_request_id \- mongoc_apm_command_failed_get_request_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_failed_get_request_id ( - const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs wire\-protocol request id. Use this number to correlate client\-side events with server log messages. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs request id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_server_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_server_id.3 deleted file mode 100644 index bf3605b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_get_server_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_GET_SERVER_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_get_server_id \- mongoc_apm_command_failed_get_server_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -mongoc_apm_command_failed_get_server_id ( - const mongoc_apm_command_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs server id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs server id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_t.3 deleted file mode 100644 index 526d858..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_failed_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_FAILED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_failed_t \- mongoc_apm_command_failed_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Command\-failed event -.SH SYNOPSIS -.sp -An event notification sent when the driver fails to execute a MongoDB command. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command.3 deleted file mode 100644 index 3b242fe..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_COMMAND" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_command \- mongoc_apm_command_started_get_command() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t * -mongoc_apm_command_started_get_command ( - const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs command. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fI\%bson_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command_name.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command_name.3 deleted file mode 100644 index 511f874..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_command_name.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_COMMAND_NAME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_command_name \- mongoc_apm_command_started_get_command_name() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -mongoc_apm_command_started_get_command_name ( - const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs command name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A string that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_context.3 deleted file mode 100644 index f441cf0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_context \- mongoc_apm_command_started_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_command_started_get_context ( - const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_database_name.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_database_name.3 deleted file mode 100644 index 6171735..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_database_name.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_DATABASE_NAME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_database_name \- mongoc_apm_command_started_get_database_name() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -mongoc_apm_command_started_get_database_name ( - const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs database name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A string that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_host.3 deleted file mode 100644 index 9b1e390..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_host.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_host \- mongoc_apm_command_started_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_command_started_get_host (const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_operation_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_operation_id.3 deleted file mode 100644 index 2372e77..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_operation_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_OPERATION_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_operation_id \- mongoc_apm_command_started_get_operation_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_started_get_operation_id ( - const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs operation id. This number correlates all the commands in a bulk operation, or all the "find" and "getMore" commands required to stream a large query result. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs operation id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_request_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_request_id.3 deleted file mode 100644 index 3bddf59..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_request_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_REQUEST_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_request_id \- mongoc_apm_command_started_get_request_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_started_get_request_id ( - const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs wire\-protocol request id. Use this number to correlate client\-side events with server log messages. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs request id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_server_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_server_id.3 deleted file mode 100644 index b99fa1a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_get_server_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_GET_SERVER_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_get_server_id \- mongoc_apm_command_started_get_server_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -mongoc_apm_command_started_get_server_id ( - const mongoc_apm_command_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs server id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs server id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_t.3 deleted file mode 100644 index 4a3525d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_started_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_STARTED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_started_t \- mongoc_apm_command_started_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Command\-started event -.SH SYNOPSIS -.sp -An event notification sent when the driver begins executing a MongoDB command. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_command_name.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_command_name.3 deleted file mode 100644 index fb70ecd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_command_name.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_COMMAND_NAME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_command_name \- mongoc_apm_command_succeeded_get_command_name() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const char * -mongoc_apm_command_succeeded_get_command_name ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs command name. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A string that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_context.3 deleted file mode 100644 index 68630de..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_context \- mongoc_apm_command_succeeded_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_command_succeeded_get_context ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_duration.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_duration.3 deleted file mode 100644 index c6eb74a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_duration.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_DURATION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_duration \- mongoc_apm_command_succeeded_get_duration() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_succeeded_get_duration ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs duration in microseconds. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs duration. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_host.3 deleted file mode 100644 index 3ddd581..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_host.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_host \- mongoc_apm_command_succeeded_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_command_succeeded_get_host ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_operation_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_operation_id.3 deleted file mode 100644 index c441086..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_operation_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_OPERATION_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_operation_id \- mongoc_apm_command_succeeded_get_operation_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_succeeded_get_operation_id ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs operation id. This number correlates all the commands in a bulk operation, or all the "find" and "getMore" commands required to stream a large query result. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs operation id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_reply.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_reply.3 deleted file mode 100644 index 25335fc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_reply.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_REPLY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_reply \- mongoc_apm_command_succeeded_get_reply() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t * -mongoc_apm_command_succeeded_get_reply ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs reply. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fI\%bson_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_request_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_request_id.3 deleted file mode 100644 index 4d1b35a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_request_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_REQUEST_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_request_id \- mongoc_apm_command_succeeded_get_request_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_command_succeeded_get_request_id ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs wire\-protocol request id. Use this number to correlate client\-side events with server log messages. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs request id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_server_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_server_id.3 deleted file mode 100644 index 13053c9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_get_server_id.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_GET_SERVER_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_get_server_id \- mongoc_apm_command_succeeded_get_server_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -mongoc_apm_command_succeeded_get_server_id ( - const mongoc_apm_command_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs server id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_command_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs server id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_t.3 deleted file mode 100644 index cfba5f7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_command_succeeded_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_COMMAND_SUCCEEDED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_command_succeeded_t \- mongoc_apm_command_succeeded_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Command\-succeeded event -.SH SYNOPSIS -.sp -An event notification sent when the driver successfully executes a MongoDB command. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_context.3 deleted file mode 100644 index 886143b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CHANGED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_changed_get_context \- mongoc_apm_server_changed_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_server_changed_get_context ( - const mongoc_apm_server_changed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_changed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_host.3 deleted file mode 100644 index 756c4f4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_host.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CHANGED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_changed_get_host \- mongoc_apm_server_changed_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_server_changed_get_host (const mongoc_apm_server_changed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_changed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_new_description.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_new_description.3 deleted file mode 100644 index 0639b87..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_new_description.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CHANGED_GET_NEW_DESCRIPTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_changed_get_new_description \- mongoc_apm_server_changed_get_new_description() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_server_description_t * -mongoc_apm_server_changed_get_new_description ( - const mongoc_apm_server_changed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs new description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_changed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_server_description_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_previous_description.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_previous_description.3 deleted file mode 100644 index 0c36572..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_previous_description.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CHANGED_GET_PREVIOUS_DESCRIPTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_changed_get_previous_description \- mongoc_apm_server_changed_get_previous_description() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_server_description_t * -mongoc_apm_server_changed_get_previous_description ( - const mongoc_apm_server_changed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs previous description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_changed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_server_description_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_topology_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_topology_id.3 deleted file mode 100644 index cf9c99e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_get_topology_id.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CHANGED_GET_TOPOLOGY_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_changed_get_topology_id \- mongoc_apm_server_changed_get_topology_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_server_changed_get_topology_id ( - const mongoc_apm_server_changed_t *event, bson_oid_t *topology_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs topology id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_changed_t\fP\&. -.IP \(bu 2 -\fBtopology_id\fP: A \fI\%bson_oid_t\fP to receive the event\(aqs topology_id. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs topology id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_t.3 deleted file mode 100644 index 133e0e4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_changed_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CHANGED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_changed_t \- mongoc_apm_server_changed_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Server\-changed event -.SH SYNOPSIS -.sp -An event notification sent when the driver observes a change in status of a server it is connected to. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_context.3 deleted file mode 100644 index 7479906..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_context.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CLOSED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_closed_get_context \- mongoc_apm_server_closed_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_server_closed_get_context (const mongoc_apm_server_closed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_closed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_host.3 deleted file mode 100644 index 5534235..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_host.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CLOSED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_closed_get_host \- mongoc_apm_server_closed_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_server_closed_get_host (const mongoc_apm_server_closed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_closed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_topology_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_topology_id.3 deleted file mode 100644 index 851375a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_get_topology_id.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CLOSED_GET_TOPOLOGY_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_closed_get_topology_id \- mongoc_apm_server_closed_get_topology_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_server_closed_get_topology_id ( - const mongoc_apm_server_closed_t *event, bson_oid_t *topology_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs topology id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_closed_t\fP\&. -.IP \(bu 2 -\fBtopology_id\fP: A \fI\%bson_oid_t\fP to receive the event\(aqs topology_id. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs topology id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_t.3 deleted file mode 100644 index 3fe2d07..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_closed_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_CLOSED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_closed_t \- mongoc_apm_server_closed_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Server\-closed event -.SH SYNOPSIS -.sp -An event notification sent when the driver stops monitoring a server and removes its \fBmongoc_server_description_t\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_context.3 deleted file mode 100644 index c8c059b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_FAILED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_failed_get_context \- mongoc_apm_server_heartbeat_failed_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_server_heartbeat_failed_get_context ( - const mongoc_apm_server_heartbeat_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_duration.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_duration.3 deleted file mode 100644 index cc2941d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_duration.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_FAILED_GET_DURATION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_failed_get_duration \- mongoc_apm_server_heartbeat_failed_get_duration() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_server_heartbeat_failed_get_duration ( - const mongoc_apm_server_heartbeat_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs duration in microseconds. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs duration. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_error.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_error.3 deleted file mode 100644 index 7c361f9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_error.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_FAILED_GET_ERROR" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_failed_get_error \- mongoc_apm_server_heartbeat_failed_get_error() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_server_heartbeat_failed_get_error ( - const mongoc_apm_server_heartbeat_failed_t *event, bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Copies this event\(aqs error info. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_failed_t\fP\&. -.IP \(bu 2 -\fBerror\fP: A \fI\%bson_error_t\fP to receive the event\(aqs error info. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_host.3 deleted file mode 100644 index 909f4fd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_get_host.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_FAILED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_failed_get_host \- mongoc_apm_server_heartbeat_failed_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_server_heartbeat_failed_get_host ( - const mongoc_apm_server_heartbeat_failed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_failed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_t.3 deleted file mode 100644 index ca89d31..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_failed_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_FAILED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_failed_t \- mongoc_apm_server_heartbeat_failed_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Heartbeat\-failed event -.SH SYNOPSIS -.sp -An event notification sent when the driver failed to send an "isMaster" command to check the status of a server. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_context.3 deleted file mode 100644 index 3af0a59..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_STARTED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_started_get_context \- mongoc_apm_server_heartbeat_started_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_server_heartbeat_started_get_context ( - const mongoc_apm_server_heartbeat_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_host.3 deleted file mode 100644 index 015da37..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_get_host.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_STARTED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_started_get_host \- mongoc_apm_server_heartbeat_started_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_server_heartbeat_started_get_host ( - const mongoc_apm_server_heartbeat_started_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_started_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_t.3 deleted file mode 100644 index 65eb84b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_started_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_STARTED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_started_t \- mongoc_apm_server_heartbeat_started_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Heartbeat\-started event -.SH SYNOPSIS -.sp -An event notification sent when the driver begins executing an "isMaster" command to check the status of a server. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_context.3 deleted file mode 100644 index 2b181d8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_SUCCEEDED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_succeeded_get_context \- mongoc_apm_server_heartbeat_succeeded_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_server_heartbeat_succeeded_get_context ( - const mongoc_apm_server_heartbeat_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_duration.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_duration.3 deleted file mode 100644 index 559ab9a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_duration.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_SUCCEEDED_GET_DURATION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_succeeded_get_duration \- mongoc_apm_server_heartbeat_succeeded_get_duration() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_apm_server_heartbeat_succeeded_get_duration ( - const mongoc_apm_server_heartbeat_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs duration in microseconds. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs duration. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_host.3 deleted file mode 100644 index 412ef9e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_host.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_SUCCEEDED_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_succeeded_get_host \- mongoc_apm_server_heartbeat_succeeded_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_server_heartbeat_succeeded_get_host ( - const mongoc_apm_server_heartbeat_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_reply.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_reply.3 deleted file mode 100644 index f78e653..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_get_reply.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_SUCCEEDED_GET_REPLY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_succeeded_get_reply \- mongoc_apm_server_heartbeat_succeeded_get_reply() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t * -mongoc_apm_server_heartbeat_succeeded_get_reply ( - const mongoc_apm_server_heartbeat_succeeded_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs reply. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_heartbeat_succeeded_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fI\%bson_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_t.3 deleted file mode 100644 index c08c3c9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_heartbeat_succeeded_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_HEARTBEAT_SUCCEEDED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_heartbeat_succeeded_t \- mongoc_apm_server_heartbeat_succeeded_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Heartbeat\-succeeded event -.SH SYNOPSIS -.sp -An event notification sent when the driver completes an "isMaster" command to check the status of a server. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_context.3 deleted file mode 100644 index 000563c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_OPENING_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_opening_get_context \- mongoc_apm_server_opening_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_server_opening_get_context ( - const mongoc_apm_server_opening_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_opening_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_host.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_host.3 deleted file mode 100644 index 1388905..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_host.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_OPENING_GET_HOST" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_opening_get_host \- mongoc_apm_server_opening_get_host() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_host_list_t * -mongoc_apm_server_opening_get_host (const mongoc_apm_server_opening_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs host. This \fBmongoc_host_list_t\fP is \fInot\fP part of a linked list, it is solely the server for this event. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_opening_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_host_list_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_topology_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_topology_id.3 deleted file mode 100644 index d3f4dd5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_get_topology_id.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_OPENING_GET_TOPOLOGY_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_opening_get_topology_id \- mongoc_apm_server_opening_get_topology_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_server_opening_get_topology_id ( - const mongoc_apm_server_opening_t *event, bson_oid_t *topology_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs topology id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_server_opening_t\fP\&. -.IP \(bu 2 -\fBtopology_id\fP: A \fI\%bson_oid_t\fP to receive the event\(aqs topology_id. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs topology id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_t.3 deleted file mode 100644 index 6ac6133..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_server_opening_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SERVER_OPENING_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_server_opening_t \- mongoc_apm_server_opening_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Server\-opening event -.SH SYNOPSIS -.sp -An event notification sent when the driver adds a \fBmongoc_server_description_t\fP for a new server it was not monitoring before. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_failed_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_failed_cb.3 deleted file mode 100644 index 923c808..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_failed_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_COMMAND_FAILED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_command_failed_cb \- mongoc_apm_set_command_failed_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_command_failed_cb_t) ( - const mongoc_apm_command_failed_t *event); - -void -mongoc_apm_set_command_failed_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_command_failed_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver fails to execute a MongoDB operation. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_command_failed_t\fP whenever a MongoDB operation fails. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_started_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_started_cb.3 deleted file mode 100644 index 760aace..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_started_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_COMMAND_STARTED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_command_started_cb \- mongoc_apm_set_command_started_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_command_started_cb_t) ( - const mongoc_apm_command_started_t *event); - -void -mongoc_apm_set_command_started_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_command_started_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver starts a MongoDB operation. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_command_started_t\fP whenever the driver begins a MongoDB operation. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_succeeded_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_succeeded_cb.3 deleted file mode 100644 index 1ed7f7c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_command_succeeded_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_COMMAND_SUCCEEDED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_command_succeeded_cb \- mongoc_apm_set_command_succeeded_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_command_succeeded_cb_t) ( - const mongoc_apm_command_succeeded_t *event); - -void -mongoc_apm_set_command_succeeded_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_command_succeeded_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver completes a MongoDB operation. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_command_succeeded_t\fP whenever the driver completes a MongoDB operation. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_changed_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_changed_cb.3 deleted file mode 100644 index fc23c35..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_changed_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_SERVER_CHANGED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_server_changed_cb \- mongoc_apm_set_server_changed_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_server_changed_cb_t) ( - const mongoc_apm_server_changed_t *event); - -void -mongoc_apm_set_server_changed_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_server_changed_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver observes a change in status of a server it is connected to. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_server_changed_t\fP whenever the driver observes a change in status of a server it is connected to. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_closed_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_closed_cb.3 deleted file mode 100644 index 64fca42..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_closed_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_SERVER_CLOSED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_server_closed_cb \- mongoc_apm_set_server_closed_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_server_closed_cb_t) ( - const mongoc_apm_server_closed_t *event); - -void -mongoc_apm_set_server_closed_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_server_closed_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver stops monitoring a server and removes its \fBmongoc_server_description_t\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_server_closed_t\fP whenever the driver stops monitoring a server and removes its \fBmongoc_server_description_t\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_failed_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_failed_cb.3 deleted file mode 100644 index 5afb9bb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_failed_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_SERVER_HEARTBEAT_FAILED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_server_heartbeat_failed_cb \- mongoc_apm_set_server_heartbeat_failed_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_server_heartbeat_failed_cb_t) ( - const mongoc_apm_server_heartbeat_failed_t *event); - -void -mongoc_apm_set_server_heartbeat_failed_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_server_heartbeat_failed_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver fails to send an "isMaster" command to check the status of a server. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_server_heartbeat_failed_t\fP whenever the driver fails to send an "isMaster" command to check the status of a server. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_started_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_started_cb.3 deleted file mode 100644 index 9c919d0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_started_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_SERVER_HEARTBEAT_STARTED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_server_heartbeat_started_cb \- mongoc_apm_set_server_heartbeat_started_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_server_heartbeat_started_cb_t) ( - const mongoc_apm_server_heartbeat_started_t *event); - -void -mongoc_apm_set_server_heartbeat_started_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_server_heartbeat_started_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver begins executing an "isMaster" command to check the status of a server. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_server_heartbeat_started_t\fP whenever the driver begins executing an "isMaster" command to check the status of a server. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_succeeded_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_succeeded_cb.3 deleted file mode 100644 index d01a31e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_heartbeat_succeeded_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_SERVER_HEARTBEAT_SUCCEEDED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_server_heartbeat_succeeded_cb \- mongoc_apm_set_server_heartbeat_succeeded_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_server_heartbeat_succeeded_cb_t) ( - const mongoc_apm_server_heartbeat_succeeded_t *event); - -void -mongoc_apm_set_server_heartbeat_succeeded_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_server_heartbeat_succeeded_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver completes an "isMaster" command to check the status of a server. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_server_heartbeat_succeeded_t\fP whenever the driver completes an "isMaster" command to check the status of a server. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_opening_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_opening_cb.3 deleted file mode 100644 index 94365c6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_server_opening_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_SERVER_OPENING_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_server_opening_cb \- mongoc_apm_set_server_opening_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_server_opening_cb_t) ( - const mongoc_apm_server_opening_t *event); - -void -mongoc_apm_set_server_opening_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_server_opening_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver adds a \fBmongoc_server_description_t\fP for a new server it was not monitoring before. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_server_opening_t\fP whenever the driver adds a \fBmongoc_server_description_t\fP for a new server it was not monitoring before. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_changed_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_changed_cb.3 deleted file mode 100644 index 52b0dc7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_changed_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_TOPOLOGY_CHANGED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_topology_changed_cb \- mongoc_apm_set_topology_changed_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_topology_changed_cb_t) ( - const mongoc_apm_topology_changed_t *event); - -void -mongoc_apm_set_topology_changed_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_topology_changed_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver observes a change in any of the servers it is connected to or a change in the overall server topology. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_topology_changed_t\fP whenever the driver observes a change in any of the servers it is connected to or a change in the overall server topology. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_closed_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_closed_cb.3 deleted file mode 100644 index 4069e6e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_closed_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_TOPOLOGY_CLOSED_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_topology_closed_cb \- mongoc_apm_set_topology_closed_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_topology_closed_cb_t) ( - const mongoc_apm_topology_closed_t *event); - -void -mongoc_apm_set_topology_closed_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_topology_closed_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver stops monitoring a server topology and destroys its \fBmongoc_topology_description_t\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_topology_closed_t\fP whenever the driver stops monitoring a server topology and destroys its \fBmongoc_topology_description_t\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_opening_cb.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_opening_cb.3 deleted file mode 100644 index 95bb6b4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_set_topology_opening_cb.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_SET_TOPOLOGY_OPENING_CB" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_set_topology_opening_cb \- mongoc_apm_set_topology_opening_cb() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef void (*mongoc_apm_topology_opening_cb_t) ( - const mongoc_apm_topology_opening_t *event); - -void -mongoc_apm_set_topology_opening_cb (mongoc_apm_callbacks_t *callbacks, - mongoc_apm_topology_opening_cb_t cb); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Receive an event notification whenever the driver initializes a \fBmongoc_topology_description_t\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcb\fP: A function to call with a \fBmongoc_apm_topology_opening_t\fP whenever the driver initializes a \fBmongoc_topology_description_t\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_context.3 deleted file mode 100644 index dff073f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CHANGED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_changed_get_context \- mongoc_apm_topology_changed_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_topology_changed_get_context ( - const mongoc_apm_topology_changed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_changed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_new_description.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_new_description.3 deleted file mode 100644 index 145e4c2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_new_description.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CHANGED_GET_NEW_DESCRIPTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_changed_get_new_description \- mongoc_apm_topology_changed_get_new_description() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_topology_description_t * -mongoc_apm_topology_changed_get_new_description ( - const mongoc_apm_topology_changed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs new description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_changed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_topology_description_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_previous_description.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_previous_description.3 deleted file mode 100644 index fa863a0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_previous_description.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CHANGED_GET_PREVIOUS_DESCRIPTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_changed_get_previous_description \- mongoc_apm_topology_changed_get_previous_description() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_topology_description_t * -mongoc_apm_topology_changed_get_previous_description ( - const mongoc_apm_topology_changed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs previous description. The data is only valid in the scope of the callback that receives this event; copy it if it will be accessed after the callback returns. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_changed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_topology_description_t\fP that should not be modified or freed. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_topology_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_topology_id.3 deleted file mode 100644 index b9673a3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_get_topology_id.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CHANGED_GET_TOPOLOGY_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_changed_get_topology_id \- mongoc_apm_topology_changed_get_topology_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_topology_changed_get_topology_id ( - const mongoc_apm_topology_changed_t *event, bson_oid_t *topology_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs topology id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_changed_t\fP\&. -.IP \(bu 2 -\fBtopology_id\fP: A \fI\%bson_oid_t\fP to receive the event\(aqs topology_id. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs topology id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_t.3 deleted file mode 100644 index 2303edf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_changed_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CHANGED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_changed_t \- mongoc_apm_topology_changed_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Topology\-changed event -.SH SYNOPSIS -.sp -An event notification sent when the driver observes a change in any of the servers it is connected to or a change in the overall server topology. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_context.3 deleted file mode 100644 index 4992ee7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CLOSED_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_closed_get_context \- mongoc_apm_topology_closed_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_topology_closed_get_context ( - const mongoc_apm_topology_closed_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_closed_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_topology_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_topology_id.3 deleted file mode 100644 index 64048c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_get_topology_id.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CLOSED_GET_TOPOLOGY_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_closed_get_topology_id \- mongoc_apm_topology_closed_get_topology_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_topology_closed_get_topology_id ( - const mongoc_apm_topology_closed_t *event, bson_oid_t *topology_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs topology id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_closed_t\fP\&. -.IP \(bu 2 -\fBtopology_id\fP: A \fI\%bson_oid_t\fP to receive the event\(aqs topology_id. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs topology id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_t.3 deleted file mode 100644 index d1bfa39..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_closed_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_CLOSED_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_closed_t \- mongoc_apm_topology_closed_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Topology\-closed event -.SH SYNOPSIS -.sp -An event notification sent when the driver stops monitoring a server topology and destroys its \fBmongoc_topology_description_t\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_context.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_context.3 deleted file mode 100644 index a60210f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_context.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_OPENING_GET_CONTEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_opening_get_context \- mongoc_apm_topology_opening_get_context() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void * -mongoc_apm_topology_opening_get_context ( - const mongoc_apm_topology_opening_t *event); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs context. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_opening_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The pointer passed with \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_topology_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_topology_id.3 deleted file mode 100644 index 8ed78c0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_get_topology_id.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_OPENING_GET_TOPOLOGY_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_opening_get_topology_id \- mongoc_apm_topology_opening_get_topology_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_apm_topology_opening_get_topology_id ( - const mongoc_apm_topology_opening_t *event, bson_oid_t *topology_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns this event\(aqs topology id. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBevent\fP: A \fBmongoc_apm_topology_opening_t\fP\&. -.IP \(bu 2 -\fBtopology_id\fP: A \fI\%bson_oid_t\fP to receive the event\(aqs topology_id. -.UNINDENT -.SH RETURNS -.sp -The event\(aqs topology id. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_t.3 deleted file mode 100644 index cda51e3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_apm_topology_opening_t.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APM_TOPOLOGY_OPENING_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_apm_topology_opening_t \- mongoc_apm_topology_opening_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Topology\-opening event -.SH SYNOPSIS -.sp -An event notification sent when the driver initializes a \fBmongoc_topology_description_t\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_application_performance_monitoring.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_application_performance_monitoring.3 deleted file mode 100644 index c70f780..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_application_performance_monitoring.3 +++ /dev/null @@ -1,629 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_APPLICATION_PERFORMANCE_MONITORING" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_application_performance_monitoring \- Application Performance Monitoring (APM) -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -The MongoDB C Driver allows you to monitor all the MongoDB operations the driver executes. This event\-notification system conforms to two MongoDB driver specs: -.INDENT 0.0 -.IP \(bu 2 -\fI\%Command Monitoring\fP: events related to all application operations. -.IP \(bu 2 -\fI\%SDAM Monitoring\fP: events related to the driver\(aqs Server Discovery And Monitoring logic. -.UNINDENT -.sp -To receive notifications, create a \fBmongoc_apm_callbacks_t\fP with \fBmongoc_apm_callbacks_new\fP, set callbacks on it, then pass it to \fBmongoc_client_set_apm_callbacks\fP or \fBmongoc_client_pool_set_apm_callbacks\fP\&. -.SH COMMAND-MONITORING EXAMPLE -example\-command\-monitoring.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* gcc example\-command\-monitoring.c \-o example\-command\-monitoring \e - * $(pkg\-config \-\-cflags \-\-libs libmongoc\-1.0) */ - -/* ./example\-command\-monitoring [CONNECTION_STRING] */ - -#include -#include - - -typedef struct { - int started; - int succeeded; - int failed; -} stats_t; - - -void -command_started (const mongoc_apm_command_started_t *event) -{ - char *s; - - s = bson_as_relaxed_extended_json ( - mongoc_apm_command_started_get_command (event), NULL); - printf ("Command %s started on %s:\en%s\en\en", - mongoc_apm_command_started_get_command_name (event), - mongoc_apm_command_started_get_host (event)\->host, - s); - - ((stats_t *) mongoc_apm_command_started_get_context (event))\->started++; - - bson_free (s); -} - - -void -command_succeeded (const mongoc_apm_command_succeeded_t *event) -{ - char *s; - - s = bson_as_relaxed_extended_json ( - mongoc_apm_command_succeeded_get_reply (event), NULL); - printf ("Command %s succeeded:\en%s\en\en", - mongoc_apm_command_succeeded_get_command_name (event), - s); - - ((stats_t *) mongoc_apm_command_succeeded_get_context (event))\->succeeded++; - - bson_free (s); -} - - -void -command_failed (const mongoc_apm_command_failed_t *event) -{ - bson_error_t error; - - mongoc_apm_command_failed_get_error (event, &error); - printf ("Command %s failed:\en\e"%s\e"\en\en", - mongoc_apm_command_failed_get_command_name (event), - error.message); - - ((stats_t *) mongoc_apm_command_failed_get_context (event))\->failed++; -} - - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_apm_callbacks_t *callbacks; - stats_t stats = {0}; - mongoc_collection_t *collection; - bson_error_t error; - const char *uri_string = - "mongodb://127.0.0.1/?appname=cmd\-monitoring\-example"; - mongoc_uri_t *uri; - const char *collection_name = "test"; - bson_t *docs[2]; - - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - callbacks = mongoc_apm_callbacks_new (); - mongoc_apm_set_command_started_cb (callbacks, command_started); - mongoc_apm_set_command_succeeded_cb (callbacks, command_succeeded); - mongoc_apm_set_command_failed_cb (callbacks, command_failed); - mongoc_client_set_apm_callbacks ( - client, callbacks, (void *) &stats /* context pointer */); - - collection = mongoc_client_get_collection (client, "test", collection_name); - mongoc_collection_drop (collection, NULL); - - docs[0] = BCON_NEW ("_id", BCON_INT32 (0)); - docs[1] = BCON_NEW ("_id", BCON_INT32 (1)); - mongoc_collection_insert_many ( - collection, (const bson_t **) docs, 2, NULL, NULL, NULL); - - /* duplicate key error on the second insert */ - mongoc_collection_insert_one (collection, docs[0], NULL, NULL, NULL); - - mongoc_collection_destroy (collection); - mongoc_apm_callbacks_destroy (callbacks); - mongoc_uri_destroy (uri); - mongoc_client_destroy (client); - - printf ("started: %d\ensucceeded: %d\enfailed: %d\en", - stats.started, - stats.succeeded, - stats.failed); - - bson_destroy (docs[0]); - bson_destroy (docs[1]); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This example program prints: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -Command drop started on 127.0.0.1: -{ "drop" : "test" } - -Command drop succeeded: -{ "ns" : "test.test", "nIndexesWas" : 1, "ok" : 1.0 } - -Command insert started on 127.0.0.1: -{ - "insert" : "test", - "ordered" : true, - "documents" : [ - { "_id" : 0 }, { "_id" : 1 } - ] -} - -Command insert succeeded: -{ "n" : 2, "ok" : 1.0 } - -Command insert started on 127.0.0.1: -{ - "insert" : "test", - "ordered" : true, - "documents" : [ - { "_id" : 0 } - ] -} - -Command insert succeeded: -{ - "n" : 0, - "writeErrors" : [ - { "index" : 0, "code" : 11000, "errmsg" : "duplicate key" } - ], - "ok" : 1.0 -} - -started: 3 -succeeded: 3 -failed: 0 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The output has been edited and formatted for clarity. Depending on your server configuration, messages may include metadata like database name, logical session ids, or cluster times that are not shown here. -.sp -The final "insert" command is considered successful, despite the writeError, because the server replied to the overall command with \fB"ok": 1\fP\&. -.SH SDAM MONITORING EXAMPLE -example\-sdam\-monitoring.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* gcc example\-sdam\-monitoring.c \-o example\-sdam\-monitoring \e - * $(pkg\-config \-\-cflags \-\-libs libmongoc\-1.0) */ - -/* ./example\-sdam\-monitoring [CONNECTION_STRING] */ - -#include -#include - - -typedef struct { - int server_changed_events; - int server_opening_events; - int server_closed_events; - int topology_changed_events; - int topology_opening_events; - int topology_closed_events; - int heartbeat_started_events; - int heartbeat_succeeded_events; - int heartbeat_failed_events; -} stats_t; - - -static void -server_changed (const mongoc_apm_server_changed_t *event) -{ - stats_t *context; - const mongoc_server_description_t *prev_sd, *new_sd; - - context = (stats_t *) mongoc_apm_server_changed_get_context (event); - context\->server_changed_events++; - - prev_sd = mongoc_apm_server_changed_get_previous_description (event); - new_sd = mongoc_apm_server_changed_get_new_description (event); - - printf ("server changed: %s %s \-> %s\en", - mongoc_apm_server_changed_get_host (event)\->host_and_port, - mongoc_server_description_type (prev_sd), - mongoc_server_description_type (new_sd)); -} - - -static void -server_opening (const mongoc_apm_server_opening_t *event) -{ - stats_t *context; - - context = (stats_t *) mongoc_apm_server_opening_get_context (event); - context\->server_opening_events++; - - printf ("server opening: %s\en", - mongoc_apm_server_opening_get_host (event)\->host_and_port); -} - - -static void -server_closed (const mongoc_apm_server_closed_t *event) -{ - stats_t *context; - - context = (stats_t *) mongoc_apm_server_closed_get_context (event); - context\->server_closed_events++; - - printf ("server closed: %s\en", - mongoc_apm_server_closed_get_host (event)\->host_and_port); -} - - -static void -topology_changed (const mongoc_apm_topology_changed_t *event) -{ - stats_t *context; - const mongoc_topology_description_t *prev_td; - const mongoc_topology_description_t *new_td; - mongoc_server_description_t **prev_sds; - size_t n_prev_sds; - mongoc_server_description_t **new_sds; - size_t n_new_sds; - size_t i; - mongoc_read_prefs_t *prefs; - - context = (stats_t *) mongoc_apm_topology_changed_get_context (event); - context\->topology_changed_events++; - - prev_td = mongoc_apm_topology_changed_get_previous_description (event); - prev_sds = mongoc_topology_description_get_servers (prev_td, &n_prev_sds); - new_td = mongoc_apm_topology_changed_get_new_description (event); - new_sds = mongoc_topology_description_get_servers (new_td, &n_new_sds); - - printf ("topology changed: %s \-> %s\en", - mongoc_topology_description_type (prev_td), - mongoc_topology_description_type (new_td)); - - if (n_prev_sds) { - printf (" previous servers:\en"); - for (i = 0; i < n_prev_sds; i++) { - printf (" %s %s\en", - mongoc_server_description_type (prev_sds[i]), - mongoc_server_description_host (prev_sds[i])\->host_and_port); - } - } - - if (n_new_sds) { - printf (" new servers:\en"); - for (i = 0; i < n_new_sds; i++) { - printf (" %s %s\en", - mongoc_server_description_type (new_sds[i]), - mongoc_server_description_host (new_sds[i])\->host_and_port); - } - } - - prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY); - - /* it is safe, and unfortunately necessary, to cast away const here */ - if (mongoc_topology_description_has_readable_server ( - (mongoc_topology_description_t *) new_td, prefs)) { - printf (" secondary AVAILABLE\en"); - } else { - printf (" secondary UNAVAILABLE\en"); - } - - if (mongoc_topology_description_has_writable_server ( - (mongoc_topology_description_t *) new_td)) { - printf (" primary AVAILABLE\en"); - } else { - printf (" primary UNAVAILABLE\en"); - } - - mongoc_read_prefs_destroy (prefs); - mongoc_server_descriptions_destroy_all (prev_sds, n_prev_sds); - mongoc_server_descriptions_destroy_all (new_sds, n_new_sds); -} - - -static void -topology_opening (const mongoc_apm_topology_opening_t *event) -{ - stats_t *context; - - context = (stats_t *) mongoc_apm_topology_opening_get_context (event); - context\->topology_opening_events++; - - printf ("topology opening\en"); -} - - -static void -topology_closed (const mongoc_apm_topology_closed_t *event) -{ - stats_t *context; - - context = (stats_t *) mongoc_apm_topology_closed_get_context (event); - context\->topology_closed_events++; - - printf ("topology closed\en"); -} - - -static void -server_heartbeat_started (const mongoc_apm_server_heartbeat_started_t *event) -{ - stats_t *context; - - context = - (stats_t *) mongoc_apm_server_heartbeat_started_get_context (event); - context\->heartbeat_started_events++; - - printf ("%s heartbeat started\en", - mongoc_apm_server_heartbeat_started_get_host (event)\->host_and_port); -} - - -static void -server_heartbeat_succeeded ( - const mongoc_apm_server_heartbeat_succeeded_t *event) -{ - stats_t *context; - char *reply; - - context = - (stats_t *) mongoc_apm_server_heartbeat_succeeded_get_context (event); - context\->heartbeat_succeeded_events++; - - reply = bson_as_canonical_extended_json ( - mongoc_apm_server_heartbeat_succeeded_get_reply (event), NULL); - - printf ( - "%s heartbeat succeeded: %s\en", - mongoc_apm_server_heartbeat_succeeded_get_host (event)\->host_and_port, - reply); - - bson_free (reply); -} - - -static void -server_heartbeat_failed (const mongoc_apm_server_heartbeat_failed_t *event) -{ - stats_t *context; - bson_error_t error; - - context = (stats_t *) mongoc_apm_server_heartbeat_failed_get_context (event); - context\->heartbeat_failed_events++; - mongoc_apm_server_heartbeat_failed_get_error (event, &error); - - printf ("%s heartbeat failed: %s\en", - mongoc_apm_server_heartbeat_failed_get_host (event)\->host_and_port, - error.message); -} - - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_apm_callbacks_t *cbs; - stats_t stats = {0}; - const char *uri_string = - "mongodb://127.0.0.1/?appname=sdam\-monitoring\-example"; - mongoc_uri_t *uri; - bson_t cmd = BSON_INITIALIZER; - bson_t reply; - bson_error_t error; - - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - cbs = mongoc_apm_callbacks_new (); - mongoc_apm_set_server_changed_cb (cbs, server_changed); - mongoc_apm_set_server_opening_cb (cbs, server_opening); - mongoc_apm_set_server_closed_cb (cbs, server_closed); - mongoc_apm_set_topology_changed_cb (cbs, topology_changed); - mongoc_apm_set_topology_opening_cb (cbs, topology_opening); - mongoc_apm_set_topology_closed_cb (cbs, topology_closed); - mongoc_apm_set_server_heartbeat_started_cb (cbs, server_heartbeat_started); - mongoc_apm_set_server_heartbeat_succeeded_cb (cbs, - server_heartbeat_succeeded); - mongoc_apm_set_server_heartbeat_failed_cb (cbs, server_heartbeat_failed); - mongoc_client_set_apm_callbacks ( - client, cbs, (void *) &stats /* context pointer */); - - /* the driver connects on demand to perform first operation */ - BSON_APPEND_INT32 (&cmd, "buildinfo", 1); - mongoc_client_command_simple (client, "admin", &cmd, NULL, &reply, &error); - mongoc_uri_destroy (uri); - mongoc_client_destroy (client); - - printf ("Events:\en" - " server changed: %d\en" - " server opening: %d\en" - " server closed: %d\en" - " topology changed: %d\en" - " topology opening: %d\en" - " topology closed: %d\en" - " heartbeat started: %d\en" - " heartbeat succeeded: %d\en" - " heartbeat failed: %d\en", - stats.server_changed_events, - stats.server_opening_events, - stats.server_closed_events, - stats.topology_changed_events, - stats.topology_opening_events, - stats.topology_closed_events, - stats.heartbeat_started_events, - stats.heartbeat_succeeded_events, - stats.heartbeat_failed_events); - - bson_destroy (&cmd); - bson_destroy (&reply); - mongoc_apm_callbacks_destroy (cbs); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Start a 3\-node replica set on localhost with set name "rs" and start the program: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\&./example\-sdam\-monitoring "mongodb://localhost:27017,localhost:27018/?replicaSet=rs" -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This example program prints something like: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -topology opening -topology changed: Unknown \-> ReplicaSetNoPrimary - secondary UNAVAILABLE - primary UNAVAILABLE -server opening: localhost:27017 -server opening: localhost:27018 -localhost:27017 heartbeat started -localhost:27018 heartbeat started -localhost:27017 heartbeat succeeded: { ... reply ... } -server changed: localhost:27017 Unknown \-> RSPrimary -server opening: localhost:27019 -topology changed: ReplicaSetNoPrimary \-> ReplicaSetWithPrimary - new servers: - RSPrimary localhost:27017 - secondary UNAVAILABLE - primary AVAILABLE -localhost:27019 heartbeat started -localhost:27018 heartbeat succeeded: { ... reply ... } -server changed: localhost:27018 Unknown \-> RSSecondary -topology changed: ReplicaSetWithPrimary \-> ReplicaSetWithPrimary - previous servers: - RSPrimary localhost:27017 - new servers: - RSPrimary localhost:27017 - RSSecondary localhost:27018 - secondary AVAILABLE - primary AVAILABLE -localhost:27019 heartbeat succeeded: { ... reply ... } -server changed: localhost:27019 Unknown \-> RSSecondary -topology changed: ReplicaSetWithPrimary \-> ReplicaSetWithPrimary - previous servers: - RSPrimary localhost:27017 - RSSecondary localhost:27018 - new servers: - RSPrimary localhost:27017 - RSSecondary localhost:27018 - RSSecondary localhost:27019 - secondary AVAILABLE - primary AVAILABLE -topology closed - -Events: - server changed: 3 - server opening: 3 - server closed: 0 - topology changed: 4 - topology opening: 1 - topology closed: 1 - heartbeat started: 3 - heartbeat succeeded: 3 - heartbeat failed: 0 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The driver connects to the mongods on ports 27017 and 27018, which were specified in the URI, and determines which is primary. It also discovers the third member, "localhost:27019", and adds it to the topology. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_authentication.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_authentication.3 deleted file mode 100644 index b17cf93..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_authentication.3 +++ /dev/null @@ -1,304 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_AUTHENTICATION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_authentication \- Authentication -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -This guide covers the use of authentication options with the MongoDB C Driver. Ensure that the MongoDB server is also properly configured for authentication before making a connection. For more information, see the \fI\%MongoDB security documentation\fP\&. -.sp -The MongoDB C driver supports several authentication mechanisms through the use of MongoDB connection URIs. -.sp -By default, if a username and password are provided as part of the connection string (and an optional authentication database), they are used to connect via the default authentication mechanism of the server. -.sp -To select a specific authentication mechanism other than the default, see the list of supported mechanism below. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Currently supported values for the authMechanism connection string option are: -.INDENT 0.0 -.IP \(bu 2 -\fI\%SCRAM\-SHA\-1\fP -.IP \(bu 2 -\fI\%MONGODB\-CR (deprecated)\fP -.IP \(bu 2 -\fI\%GSSAPI\fP -.IP \(bu 2 -\fI\%PLAIN\fP -.IP \(bu 2 -\fI\%X509\fP -.UNINDENT -.SH BASIC AUTHENTICATION (SCRAM-SHA-256) -.sp -MongoDB 4.0 introduces support for authenticating using the SCRAM protocol -with the more secure SHA\-256 hash described in \fI\%RFC 7677\fP\&. Using this authentication mechanism -means that the password is never actually sent over the wire when -authenticating, but rather a computed proof that the client password is the -same as the password the server knows. In MongoDB 4.0, the C driver can -determine the correct default authentication mechanism for users with stored -SCRAM\-SHA\-1 and SCRAM\-SHA\-256 credentials: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb"); -/* the correct authMechanism is negotiated between the driver and server. */ -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Alternatively, SCRAM\-SHA\-256 can be explicitly specified as an authMechanism. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM\-SHA\-256&authSource=mydb"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Passwords for SCRAM\-SHA\-256 undergo the preprocessing step known as SASLPrep -specified in \fI\%RFC 4013\fP\&. SASLPrep will -only be performed for passwords containing non\-ASCII characters. SASLPrep -requires libicu. If libicu is not available, attempting to authenticate over -SCRAM\-SHA\-256 with non\-ASCII passwords will result in error. -.sp -Usernames \fInever\fP undergo SASLPrep. -.sp -By default, when building the C driver libicu is linked if available. This can -be changed with the \fBENABLE_ICU\fP cmake option. To specify an installation -path of libicu, specify \fBICU_ROOT\fP as a cmake option. See the -\fI\%FindICU\fP documentation -for more information. -.SH BASIC AUTHENTICATION (SCRAM-SHA-1) -.sp -The default authentication mechanism before MongoDB 4.0 is \fBSCRAM\-SHA\-1\fP (\fI\%RFC 5802\fP). Using this authentication mechanism means that the password is never actually sent over the wire when authenticating, but rather a computed proof that the client password is the same as the password the server knows. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM\-SHA\-1&authSource=mydb"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBSCRAM\-SHA\-1\fP authenticates against the \fBadmin\fP database by default. If the user is created in another database, then specifying the authSource is required. -.UNINDENT -.UNINDENT -.SH LEGACY AUTHENTICATION (MONGODB-CR) -.sp -The MONGODB\-CR authMechanism is deprecated and will no longer function in MongoDB 4.0. Instead, specify no authMechanism and the driver -will use an authentication mechanism compatible with your server. -.SH GSSAPI (KERBEROS) AUTHENTICATION -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Kerberos support requires compiling the driver against \fBcyrus\-sasl\fP on UNIX\-like environments. On Windows, configure the driver to build against the Windows Native SSPI. -.UNINDENT -.UNINDENT -.sp -\fBGSSAPI\fP (Kerberos) authentication is available in the Enterprise Edition of MongoDB. To authenticate using \fBGSSAPI\fP, the MongoDB C driver must be installed with SASL support. -.sp -On UNIX\-like environments, run the \fBkinit\fP command before using the following authentication methods: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -$ kinit mongodbuser@EXAMPLE.COM -mongodbuser@EXAMPLE.COM\(aqs Password: -$ klistCredentials cache: FILE:/tmp/krb5cc_1000 - Principal: mongodbuser@EXAMPLE.COM - - Issued Expires Principal -Feb 9 13:48:51 2013 Feb 9 23:48:51 2013 krbtgt/EXAMPLE.COM@EXAMPLE.COM -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now authenticate using the MongoDB URI. \fBGSSAPI\fP authenticates against the \fB$external\fP virtual database, so a database does not need to be specified in the URI. Note that the Kerberos principal \fImust\fP be URL\-encoded: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client; - -client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo\-server.example.com/?authMechanism=GSSAPI"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBGSSAPI\fP authenticates against the \fB$external\fP database, so specifying the authSource database is not required. -.UNINDENT -.UNINDENT -.sp -The driver supports these GSSAPI properties: -.INDENT 0.0 -.IP \(bu 2 -\fBCANONICALIZE_HOST_NAME\fP: This might be required with Cyrus\-SASL when the hosts report different hostnames than what is used in the Kerberos database. The default is "false". -.IP \(bu 2 -\fBSERVICE_NAME\fP: Use a different service name than the default, "mongodb". -.UNINDENT -.sp -Set properties in the URL: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client; - -client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo\-server.example.com/?authMechanism=GSSAPI&" - "authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If you encounter errors such as \fBInvalid net address\fP, check if the application is behind a NAT (Network Address Translation) firewall. If so, create a ticket that uses \fBforwardable\fP and \fBaddressless\fP Kerberos tickets. This can be done by passing \fB\-f \-A\fP to \fBkinit\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -$ kinit \-f \-A mongodbuser@EXAMPLE.COM -.ft P -.fi -.UNINDENT -.UNINDENT -.SH SASL PLAIN AUTHENTICATION -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The MongoDB C Driver must be compiled with SASL support in order to use \fBSASL PLAIN\fP authentication. -.UNINDENT -.UNINDENT -.sp -MongoDB Enterprise Edition supports the \fBSASL PLAIN\fP authentication mechanism, initially intended for delegating authentication to an LDAP server. Using the \fBSASL PLAIN\fP mechanism is very similar to the challenge response mechanism with usernames and passwords. This authentication mechanism uses the \fB$external\fP virtual database for \fBLDAP\fP support: -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBSASL PLAIN\fP is a clear\-text authentication mechanism. It is strongly recommended to connect to MongoDB using SSL with certificate validation when using the \fBPLAIN\fP mechanism. -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client; - -client = mongoc_client_new ("mongodb://user:password@example.com/?authMechanism=PLAIN"); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBPLAIN\fP authenticates against the \fB$external\fP database, so specifying the authSource database is not required. -.SH X.509 CERTIFICATE AUTHENTICATION -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The MongoDB C Driver must be compiled with SSL support for X.509 authentication support. Once this is done, start a server with the following options: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -$ mongod \-\-sslMode requireSSL \-\-sslPEMKeyFile server.pem \-\-sslCAFile ca.pem -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.sp -The \fBMONGODB\-X509\fP mechanism authenticates a username derived from the distinguished subject name of the X.509 certificate presented by the driver during SSL negotiation. This authentication method requires the use of SSL connections with certificate validation. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client; -mongoc_ssl_opt_t ssl_opts = { 0 }; - -ssl_opts.pem_file = "mycert.pem"; -ssl_opts.pem_pwd = "mycertpassword"; -ssl_opts.ca_file = "myca.pem"; -ssl_opts.ca_dir = "trust_dir"; -ssl_opts.weak_cert_validation = false; - -client = mongoc_client_new ("mongodb://x509_derived_username@localhost/?authMechanism=MONGODB\-X509"); -mongoc_client_set_ssl_opts (client, &ssl_opts); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBMONGODB\-X509\fP authenticates against the \fB$external\fP database, so specifying the authSource database is not required. For more information on the x509_derived_username, see the MongoDB server \fI\%x.509 tutorial\fP\&. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The MongoDB C Driver will attempt to determine the x509 derived username when none is provided, and as of MongoDB 3.4 providing the username is not required at all. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_basic_troubleshooting.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_basic_troubleshooting.3 deleted file mode 100644 index 55a2be2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_basic_troubleshooting.3 +++ /dev/null @@ -1,138 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BASIC_TROUBLESHOOTING" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_basic_troubleshooting \- Basic Troubleshooting -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH TROUBLESHOOTING CHECKLIST -.sp -The following is a short list of things to check when you have a problem. -.INDENT 0.0 -.IP \(bu 2 -Did you call \fBmongoc_init()\fP in \fBmain()\fP? If not, you will likely see a segfault. -.IP \(bu 2 -Have you leaked any clients or cursors as can be found with \fBmongoc\-stat \fP? -.IP \(bu 2 -Have packets been delivered to the server? See egress bytes from \fBmongoc\-stat \fP\&. -.IP \(bu 2 -Does \fBvalgrind\fP show any leaks? Ensure you call \fBmongoc_cleanup()\fP at the end of your process to cleanup lingering allocations from the MongoDB C driver. -.IP \(bu 2 -If compiling your own copy of MongoDB C Driver, consider using the cmake option \fB\-DENABLE_TRACING=ON\fP to enable function tracing and hex dumps of network packets to \fBSTDERR\fP and \fBSTDOUT\fP\&. -.UNINDENT -.SH PERFORMANCE COUNTERS -.sp -The MongoDB C driver comes with an optional unique feature to help developers and sysadmins troubleshoot problems in production. -Performance counters are available for each process using the driver. -If available, the counters can be accessed outside of the application process via a shared memory segment. -This means that you can graph statistics about your application process easily from tools like Munin or Nagios. -Your author often uses \fBwatch \-\-interval=0.5 \-d mongoc\-stat $PID\fP to monitor an application. -.sp -Performance counters are only available on Linux platforms supporting shared memory segments. -On supported platforms they are enabled by default. -Applications can be built without the counters by specifying the cmake option \fB\-DENABLE_SHM_COUNTERS=OFF\fP\&. Additionally, if -performance counters are already compiled, they can be disabled at runtime by specifying the environment variable \fBMONGOC_DISABLE_SHM\fP\&. -.sp -Performance counters keep track of the following: -.INDENT 0.0 -.IP \(bu 2 -Active and Disposed Cursors -.IP \(bu 2 -Active and Disposed Clients, Client Pools, and Socket Streams. -.IP \(bu 2 -Number of operations sent and received, by type. -.IP \(bu 2 -Bytes transferred and received. -.IP \(bu 2 -Authentication successes and failures. -.IP \(bu 2 -Number of wire protocol errors. -.UNINDENT -.sp -To access counters for a given process, simply provide the process id to the \fBmongoc\-stat\fP program installed with the MongoDB C Driver. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -$ mongoc\-stat 22203 - Operations : Egress Total : The number of sent operations. : 13247 - Operations : Ingress Total : The number of received operations. : 13246 - Operations : Egress Queries : The number of sent Query operations. : 13247 - Operations : Ingress Queries : The number of received Query operations. : 0 - Operations : Egress GetMore : The number of sent GetMore operations. : 0 - Operations : Ingress GetMore : The number of received GetMore operations. : 0 - Operations : Egress Insert : The number of sent Insert operations. : 0 - Operations : Ingress Insert : The number of received Insert operations. : 0 - Operations : Egress Delete : The number of sent Delete operations. : 0 - Operations : Ingress Delete : The number of received Delete operations. : 0 - Operations : Egress Update : The number of sent Update operations. : 0 - Operations : Ingress Update : The number of received Update operations. : 0 - Operations : Egress KillCursors : The number of sent KillCursors operations. : 0 - Operations : Ingress KillCursors : The number of received KillCursors operations. : 0 - Operations : Egress Msg : The number of sent Msg operations. : 0 - Operations : Ingress Msg : The number of received Msg operations. : 0 - Operations : Egress Reply : The number of sent Reply operations. : 0 - Operations : Ingress Reply : The number of received Reply operations. : 13246 - Cursors : Active : The number of active cursors. : 1 - Cursors : Disposed : The number of disposed cursors. : 13246 - Clients : Active : The number of active clients. : 1 - Clients : Disposed : The number of disposed clients. : 0 - Streams : Active : The number of active streams. : 1 - Streams : Disposed : The number of disposed streams. : 0 - Streams : Egress Bytes : The number of bytes sent. : 794931 - Streams : Ingress Bytes : The number of bytes received. : 589694 - Streams : N Socket Timeouts : The number of socket timeouts. : 0 - Client Pools : Active : The number of active client pools. : 1 - Client Pools : Disposed : The number of disposed client pools. : 0 - Protocol : Ingress Errors : The number of protocol errors on ingress. : 0 - Auth : Failures : The number of failed authentication requests. : 0 - Auth : Success : The number of successful authentication requests. : 0 -.ft P -.fi -.UNINDENT -.UNINDENT -.SH SUBMITTING A BUG REPORT -.sp -Think you\(aqve found a bug? Want to see a new feature in the MongoDB C driver? Please open a case in our issue management tool, JIRA: -.INDENT 0.0 -.IP \(bu 2 -\fI\%Create an account and login\fP\&. -.IP \(bu 2 -Navigate to \fI\%the CDRIVER project\fP\&. -.IP \(bu 2 -Click \fICreate Issue\fP \- Please provide as much information as possible about the issue type and how to reproduce it. -.UNINDENT -.sp -Bug reports in JIRA for all driver projects (i.e. CDRIVER, CSHARP, JAVA) and the Core Server (i.e. SERVER) project are \fIpublic\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk.3 deleted file mode 100644 index 0597b1c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk.3 +++ /dev/null @@ -1,1002 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk \- Bulk Write Operations -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -This tutorial explains how to take advantage of MongoDB C driver bulk write operation features. Executing write operations in batches reduces the number of network round trips, increasing write throughput. -.SH BULK INSERT -.sp -First we need to fetch a bulk operation handle from the \fBmongoc_collection_t\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_bulk_operation_t *bulk = - mongoc_collection_create_bulk_operation_with_opts (collection, NULL); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -We can now start inserting documents to the bulk operation. These will be buffered until we execute the operation. -.sp -The bulk operation will coalesce insertions as a single batch for each consecutive call to \fBmongoc_bulk_operation_insert()\fP\&. This creates a pipelined effect when possible. -.sp -To execute the bulk operation and receive the result we call \fBmongoc_bulk_operation_execute()\fP\&. -bulk1.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include -#include - -static void -bulk1 (mongoc_collection_t *collection) -{ - mongoc_bulk_operation_t *bulk; - bson_error_t error; - bson_t *doc; - bson_t reply; - char *str; - bool ret; - int i; - - bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL); - - for (i = 0; i < 10000; i++) { - doc = BCON_NEW ("i", BCON_INT32 (i)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - } - - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - fprintf (stderr, "Error: %s\en", error.message); - } - - bson_destroy (&reply); - mongoc_bulk_operation_destroy (bulk); -} - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - const char *uri_string = "mongodb://localhost/?appname=bulk1\-example"; - mongoc_uri_t *uri; - bson_error_t error; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - collection = mongoc_client_get_collection (client, "test", "test"); - - bulk1 (collection); - - mongoc_uri_destroy (uri); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Example \fBreply\fP document: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{"nInserted" : 10000, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [] - "writeConcernErrors" : [] } -.ft P -.fi -.UNINDENT -.UNINDENT -.SH MIXED BULK WRITE OPERATIONS -.sp -MongoDB C driver also supports executing mixed bulk write operations. A batch of insert, update, and remove operations can be executed together using the bulk write operations API. -.SH ORDERED BULK WRITE OPERATIONS -.sp -Ordered bulk write operations are batched and sent to the server in the order provided for serial execution. The \fBreply\fP document describes the type and count of operations performed. -bulk2.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include -#include - -static void -bulk2 (mongoc_collection_t *collection) -{ - mongoc_bulk_operation_t *bulk; - bson_error_t error; - bson_t *query; - bson_t *doc; - bson_t *opts; - bson_t reply; - char *str; - bool ret; - int i; - - bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL); - - /* Remove everything */ - query = bson_new (); - mongoc_bulk_operation_remove (bulk, query); - bson_destroy (query); - - /* Add a few documents */ - for (i = 1; i < 4; i++) { - doc = BCON_NEW ("_id", BCON_INT32 (i)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - } - - /* {_id: 1} => {$set: {foo: "bar"}} */ - query = BCON_NEW ("_id", BCON_INT32 (1)); - doc = BCON_NEW ("$set", "{", "foo", BCON_UTF8 ("bar"), "}"); - mongoc_bulk_operation_update_many_with_opts (bulk, query, doc, NULL, &error); - bson_destroy (query); - bson_destroy (doc); - - /* {_id: 4} => {\(aq$inc\(aq: {\(aqj\(aq: 1}} (upsert) */ - opts = BCON_NEW ("upsert", BCON_BOOL (true)); - query = BCON_NEW ("_id", BCON_INT32 (4)); - doc = BCON_NEW ("$inc", "{", "j", BCON_INT32 (1), "}"); - mongoc_bulk_operation_update_many_with_opts (bulk, query, doc, opts, &error); - bson_destroy (query); - bson_destroy (doc); - bson_destroy (opts); - - /* replace {j:1} with {j:2} */ - query = BCON_NEW ("j", BCON_INT32 (1)); - doc = BCON_NEW ("j", BCON_INT32 (2)); - mongoc_bulk_operation_replace_one_with_opts (bulk, query, doc, NULL, &error); - bson_destroy (query); - bson_destroy (doc); - - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - printf ("Error: %s\en", error.message); - } - - bson_destroy (&reply); - mongoc_bulk_operation_destroy (bulk); -} - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - const char *uri_string = "mongodb://localhost/?appname=bulk2\-example"; - mongoc_uri_t *uri; - bson_error_t error; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - collection = mongoc_client_get_collection (client, "test", "test"); - - bulk2 (collection); - - mongoc_uri_destroy (uri); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Example \fBreply\fP document: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "nInserted" : 3, - "nMatched" : 2, - "nModified" : 2, - "nRemoved" : 10000, - "nUpserted" : 1, - "upserted" : [{"index" : 5, "_id" : 4}], - "writeErrors" : [] - "writeConcernErrors" : [] } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBindex\fP field in the \fBupserted\fP array is the 0\-based index of the upsert operation; in this example, the sixth operation of the overall bulk operation was an upsert, so its index is 5. -.SH UNORDERED BULK WRITE OPERATIONS -.sp -Unordered bulk write operations are batched and sent to the server in \fIarbitrary order\fP where they may be executed in parallel. Any errors that occur are reported after all operations are attempted. -.sp -In the next example the first and third operations fail due to the unique constraint on \fB_id\fP\&. Since we are doing unordered execution the second and fourth operations succeed. -bulk3.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include -#include - -static void -bulk3 (mongoc_collection_t *collection) -{ - bson_t opts = BSON_INITIALIZER; - mongoc_bulk_operation_t *bulk; - bson_error_t error; - bson_t *query; - bson_t *doc; - bson_t reply; - char *str; - bool ret; - - /* false indicates unordered */ - BSON_APPEND_BOOL (&opts, "ordered", false); - bulk = mongoc_collection_create_bulk_operation_with_opts (collection, &opts); - bson_destroy (&opts); - - /* Add a document */ - doc = BCON_NEW ("_id", BCON_INT32 (1)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - /* remove {_id: 2} */ - query = BCON_NEW ("_id", BCON_INT32 (2)); - mongoc_bulk_operation_remove_one (bulk, query); - bson_destroy (query); - - /* insert {_id: 3} */ - doc = BCON_NEW ("_id", BCON_INT32 (3)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - /* replace {_id:4} {\(aqi\(aq: 1} */ - query = BCON_NEW ("_id", BCON_INT32 (4)); - doc = BCON_NEW ("i", BCON_INT32 (1)); - mongoc_bulk_operation_replace_one (bulk, query, doc, false); - bson_destroy (query); - bson_destroy (doc); - - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - printf ("Error: %s\en", error.message); - } - - bson_destroy (&reply); - mongoc_bulk_operation_destroy (bulk); - bson_destroy (&opts); -} - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - const char *uri_string = "mongodb://localhost/?appname=bulk3\-example"; - mongoc_uri_t *uri; - bson_error_t error; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - collection = mongoc_client_get_collection (client, "test", "test"); - - bulk3 (collection); - - mongoc_uri_destroy (uri); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Example \fBreply\fP document: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "nInserted" : 0, - "nMatched" : 1, - "nModified" : 1, - "nRemoved" : 1, - "nUpserted" : 0, - "writeErrors" : [ - { "index" : 0, - "code" : 11000, - "errmsg" : "E11000 duplicate key error index: test.test.$_id_ dup key: { : 1 }" }, - { "index" : 2, - "code" : 11000, - "errmsg" : "E11000 duplicate key error index: test.test.$_id_ dup key: { : 3 }" } ], - "writeConcernErrors" : [] } - -Error: E11000 duplicate key error index: test.test.$_id_ dup key: { : 1 } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBbson_error_t\fP domain is \fBMONGOC_ERROR_COMMAND\fP and its code is 11000. -.SH BULK OPERATION BYPASSING DOCUMENT VALIDATION -.sp -This feature is only available when using MongoDB 3.2 and later. -.sp -By default bulk operations are validated against the schema, if any is defined. In certain cases however it may be necessary to bypass the document validation. -bulk5.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include -#include - -static void -bulk5_fail (mongoc_collection_t *collection) -{ - mongoc_bulk_operation_t *bulk; - bson_error_t error; - bson_t *doc; - bson_t reply; - char *str; - bool ret; - - bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL); - - /* Two inserts */ - doc = BCON_NEW ("_id", BCON_INT32 (31)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - doc = BCON_NEW ("_id", BCON_INT32 (32)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - /* The above documents do not comply to the schema validation rules - * we created previously, so this will result in an error */ - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - printf ("Error: %s\en", error.message); - } - - bson_destroy (&reply); - mongoc_bulk_operation_destroy (bulk); -} - -static void -bulk5_success (mongoc_collection_t *collection) -{ - mongoc_bulk_operation_t *bulk; - bson_error_t error; - bson_t *doc; - bson_t reply; - char *str; - bool ret; - - bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL); - - /* Allow this document to bypass document validation. - * NOTE: When authentication is enabled, the authenticated user must have - * either the "dbadmin" or "restore" roles to bypass document validation */ - mongoc_bulk_operation_set_bypass_document_validation (bulk, true); - - /* Two inserts */ - doc = BCON_NEW ("_id", BCON_INT32 (31)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - doc = BCON_NEW ("_id", BCON_INT32 (32)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - printf ("Error: %s\en", error.message); - } - - bson_destroy (&reply); - mongoc_bulk_operation_destroy (bulk); -} - -int -main (int argc, char *argv[]) -{ - bson_t *options; - bson_error_t error; - mongoc_client_t *client; - mongoc_collection_t *collection; - mongoc_database_t *database; - const char *uri_string = "mongodb://localhost/?appname=bulk5\-example"; - mongoc_uri_t *uri; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - database = mongoc_client_get_database (client, "testasdf"); - - /* Create schema validator */ - options = BCON_NEW ( - "validator", "{", "number", "{", "$gte", BCON_INT32 (5), "}", "}"); - collection = - mongoc_database_create_collection (database, "collname", options, &error); - - if (collection) { - bulk5_fail (collection); - bulk5_success (collection); - mongoc_collection_destroy (collection); - } else { - fprintf (stderr, "Couldn\(aqt create collection: \(aq%s\(aq\en", error.message); - } - - bson_free (options); - mongoc_uri_destroy (uri); - mongoc_database_destroy (database); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Running the above example will result in: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "nInserted" : 0, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [ - { "index" : 0, - "code" : 121, - "errmsg" : "Document failed validation" } ] } - -Error: Document failed validation - -{ "nInserted" : 2, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [] } -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBbson_error_t\fP domain is \fBMONGOC_ERROR_COMMAND\fP\&. -.SH BULK OPERATION WRITE CONCERNS -.sp -By default bulk operations are executed with the \fBwrite_concern\fP of the collection they are executed against. A custom write concern can be passed to the \fBmongoc_collection_create_bulk_operation_with_opts()\fP method. Write concern errors (e.g. wtimeout) will be reported after all operations are attempted, regardless of execution order. -bulk4.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include -#include - -static void -bulk4 (mongoc_collection_t *collection) -{ - bson_t opts = BSON_INITIALIZER; - mongoc_write_concern_t *wc; - mongoc_bulk_operation_t *bulk; - bson_error_t error; - bson_t *doc; - bson_t reply; - char *str; - bool ret; - - wc = mongoc_write_concern_new (); - mongoc_write_concern_set_w (wc, 4); - mongoc_write_concern_set_wtimeout (wc, 100); /* milliseconds */ - mongoc_write_concern_append (wc, &opts); - - bulk = mongoc_collection_create_bulk_operation_with_opts (collection, &opts); - - /* Two inserts */ - doc = BCON_NEW ("_id", BCON_INT32 (10)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - doc = BCON_NEW ("_id", BCON_INT32 (11)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - printf ("Error: %s\en", error.message); - } - - bson_destroy (&reply); - mongoc_bulk_operation_destroy (bulk); - mongoc_write_concern_destroy (wc); - bson_destroy (&opts); -} - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - const char *uri_string = "mongodb://localhost/?appname=bulk4\-example"; - mongoc_uri_t *uri; - bson_error_t error; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - collection = mongoc_client_get_collection (client, "test", "test"); - - bulk4 (collection); - - mongoc_uri_destroy (uri); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Example \fBreply\fP document and error message: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "nInserted" : 2, - "nMatched" : 0, - "nModified" : 0, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [], - "writeConcernErrors" : [ - { "code" : 64, - "errmsg" : "waiting for replication timed out" } -] } - -Error: waiting for replication timed out -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBbson_error_t\fP domain is \fBMONGOC_ERROR_WRITE_CONCERN\fP if there are write concern errors and no write errors. Write errors indicate failed operations, so they take precedence over write concern errors, which mean merely that the write concern is not satisfied \fIyet\fP\&. -.SH SETTING COLLATION ORDER -.sp -This feature is only available when using MongoDB 3.4 and later. -bulk\-collation.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -bulk_collation (mongoc_collection_t *collection) -{ - mongoc_bulk_operation_t *bulk; - bson_t *opts; - bson_t *doc; - bson_t *selector; - bson_t *update; - bson_error_t error; - bson_t reply; - char *str; - uint32_t ret; - - /* insert {_id: "one"} and {_id: "One"} */ - bulk = mongoc_collection_create_bulk_operation_with_opts ( - collection, NULL); - doc = BCON_NEW ("_id", BCON_UTF8 ("one")); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - doc = BCON_NEW ("_id", BCON_UTF8 ("One")); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - /* "One" normally sorts before "one"; make "one" come first */ - opts = BCON_NEW ("collation", - "{", - "locale", - BCON_UTF8 ("en_US"), - "caseFirst", - BCON_UTF8 ("lower"), - "}"); - - /* set x=1 on the document with _id "One", which now sorts after "one" */ - update = BCON_NEW ("$set", "{", "x", BCON_INT64 (1), "}"); - selector = BCON_NEW ("_id", "{", "$gt", BCON_UTF8 ("one"), "}"); - mongoc_bulk_operation_update_one_with_opts ( - bulk, selector, update, opts, &error); - - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - printf ("Error: %s\en", error.message); - } - - bson_destroy (&reply); - bson_destroy (update); - bson_destroy (selector); - bson_destroy (opts); - mongoc_bulk_operation_destroy (bulk); -} - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - const char *uri_string = "mongodb://localhost/?appname=bulk\-collation"; - mongoc_uri_t *uri; - bson_error_t error; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - collection = mongoc_client_get_collection (client, "db", "collection"); - bulk_collation (collection); - - mongoc_uri_destroy (uri); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Running the above example will result in: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ "nInserted" : 2, - "nMatched" : 1, - "nModified" : 1, - "nRemoved" : 0, - "nUpserted" : 0, - "writeErrors" : [ ] -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH UNACKNOWLEDGED BULK WRITES -.sp -Set "w" to zero for an unacknowledged write. The driver sends unacknowledged writes using the legacy opcodes \fBOP_INSERT\fP, \fBOP_UPDATE\fP, and \fBOP_DELETE\fP\&. -bulk6.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -bulk6 (mongoc_collection_t *collection) -{ - bson_t opts = BSON_INITIALIZER; - mongoc_write_concern_t *wc; - mongoc_bulk_operation_t *bulk; - bson_error_t error; - bson_t *doc; - bson_t *selector; - bson_t reply; - char *str; - bool ret; - - wc = mongoc_write_concern_new (); - mongoc_write_concern_set_w (wc, 0); - mongoc_write_concern_append (wc, &opts); - - bulk = mongoc_collection_create_bulk_operation_with_opts (collection, &opts); - - doc = BCON_NEW ("_id", BCON_INT32 (10)); - mongoc_bulk_operation_insert (bulk, doc); - bson_destroy (doc); - - selector = BCON_NEW ("_id", BCON_INT32 (11)); - mongoc_bulk_operation_remove_one (bulk, selector); - bson_destroy (selector); - - ret = mongoc_bulk_operation_execute (bulk, &reply, &error); - - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - - if (!ret) { - printf ("Error: %s\en", error.message); - } - - bson_destroy (&reply); - mongoc_bulk_operation_destroy (bulk); - mongoc_write_concern_destroy (wc); - bson_destroy (&opts); -} - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - const char *uri_string = "mongodb://localhost/?appname=bulk6\-example"; - mongoc_uri_t *uri; - bson_error_t error; - - mongoc_init (); - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - collection = mongoc_client_get_collection (client, "test", "test"); - - bulk6 (collection); - - mongoc_uri_destroy (uri); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBreply\fP document is empty: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ } -.ft P -.fi -.UNINDENT -.UNINDENT -.SH FURTHER READING -.sp -See the \fI\%Driver Bulk API Spec\fP, which describes bulk write operations for all MongoDB drivers. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete.3 deleted file mode 100644 index 5fa9c68..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_DELETE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_delete \- mongoc_bulk_operation_delete() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_delete (mongoc_bulk_operation_t *bulk, - const bson_t *selector); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Deletes documents as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.SH DEPRECATED -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function is deprecated and should not be used in new code. -.UNINDENT -.UNINDENT -.sp -Please use \fBmongoc_bulk_operation_remove()\fP instead. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_remove_many_with_opts()\fP -.sp -\fBmongoc_bulk_operation_remove_one_with_opts()\fP -.SH ERRORS -.sp -Errors are propagated via \fBmongoc_bulk_operation_execute()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete_one.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete_one.3 deleted file mode 100644 index 9ed2560..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_delete_one.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_DELETE_ONE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_delete_one \- mongoc_bulk_operation_delete_one() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_delete_one (mongoc_bulk_operation_t *bulk, - const bson_t *selector); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Delete a single document as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.SH DEPRECATED -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function is deprecated and should not be used in new code. -.UNINDENT -.UNINDENT -.sp -Please use \fBmongoc_bulk_operation_remove_one()\fP instead. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_remove_one_with_opts()\fP -.sp -\fBmongoc_bulk_operation_remove_many_with_opts()\fP -.SH ERRORS -.sp -Errors are propagated via \fBmongoc_bulk_operation_execute()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_destroy.3 deleted file mode 100644 index 0950ba7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_destroy.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_DESTROY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_destroy \- mongoc_bulk_operation_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_destroy (mongoc_bulk_operation_t *bulk); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Destroys a \fBmongoc_bulk_operation_t\fP and frees the structure. Does nothing if \fBbulk\fP is NULL. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_execute.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_execute.3 deleted file mode 100644 index 38ebac5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_execute.3 +++ /dev/null @@ -1,87 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_EXECUTE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_execute \- mongoc_bulk_operation_execute() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -mongoc_bulk_operation_execute (mongoc_bulk_operation_t *bulk, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function executes all operations queued into the bulk operation. Unless \fBordered: false\fP was specified in the \fBopts\fP passed to \fBmongoc_collection_create_bulk_operation_with_opts()\fP, then forward progress will be stopped upon the first error. -.sp -It is only valid to call \fBmongoc_bulk_operation_execute()\fP once. The \fBmongoc_bulk_operation_t\fP must be destroyed afterwards. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBreply\fP is always initialized, even upon failure. Callers \fImust\fP call \fI\%bson_destroy()\fP to release this potential allocation. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBreply\fP: An uninitialized \fI\%bson_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -\fBBulk Write Operations\fP -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -On success, returns the server id used. On failure, returns 0 and sets \fBerror\fP\&. -.sp -A write concern timeout or write concern error is considered a failure. -.sp -The \fBreply\fP document counts operations and collects error information. See Bulk Write Operations for examples. -.sp -See also \fBmongoc_bulk_operation_get_hint\fP, which gets the id of the server used even if the operation failed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_hint.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_hint.3 deleted file mode 100644 index 9bb9bba..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_hint.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_GET_HINT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_get_hint \- mongoc_bulk_operation_get_hint() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -uint32_t -mongoc_bulk_operation_get_hint (const mongoc_bulk_operation_t *bulk); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Retrieves the opaque id of the server used for the operation. -.sp -(The function name includes the old term "hint" for the sake of backward compatibility, but we now call this number a "server id".) -.sp -This number is zero until the driver actually uses a server in \fBmongoc_bulk_operation_execute\fP\&. The server id is the same number as the return value of a successful \fBmongoc_bulk_operation_execute\fP, so \fBmongoc_bulk_operation_get_hint\fP is useful mainly in case \fBmongoc_bulk_operation_execute\fP fails and returns zero. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_write_concern.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_write_concern.3 deleted file mode 100644 index 829d4f7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_get_write_concern.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_GET_WRITE_CONCERN" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_get_write_concern \- mongoc_bulk_operation_get_write_concern() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_write_concern_t * -mongoc_bulk_operation_get_write_concern (const mongoc_bulk_operation_t *bulk); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Fetches the write concern to be used for \fBbulk\fP\&. -.SH RETURNS -.sp -A \fBmongoc_write_concern_t\fP that should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert.3 deleted file mode 100644 index 8d2a64c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_INSERT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_insert \- mongoc_bulk_operation_insert() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_insert (mongoc_bulk_operation_t *bulk, - const bson_t *document); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Queue an insert of a single document into a bulk operation. The insert is not performed until \fBmongoc_bulk_operation_execute()\fP is called. -.sp -This function is superseded by \fBmongoc_bulk_operation_insert_with_opts()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -bulk -.SH ERRORS -.sp -Errors are propagated via \fBmongoc_bulk_operation_execute()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert_with_opts.3 deleted file mode 100644 index e378a40..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_insert_with_opts.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_INSERT_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_insert_with_opts \- mongoc_bulk_operation_insert_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_bulk_operation_insert_with_opts (mongoc_bulk_operation_t *bulk, - const bson_t *document, - const bson_t *opts, - bson_error_t *error); /* OUT */ -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Queue an insert of a single document into a bulk operation. The insert is not performed until \fBmongoc_bulk_operation_execute()\fP is called. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBvalidate\fP: Construct a bitwise\-or of all desired \fI\%bson_validate_flags_t\fP\&. Set to \fBfalse\fP to skip client\-side validation of the provided BSON documents. -.UNINDENT -.SH ERRORS -.sp -Operation errors are propagated via \fBmongoc_bulk_operation_execute()\fP, while argument validation errors are reported by the \fBerror\fP argument. -.SH RETURNS -.sp -Returns true on success, and false if passed invalid arguments. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove.3 deleted file mode 100644 index 1dd1bdb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_REMOVE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_remove \- mongoc_bulk_operation_remove() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_remove (mongoc_bulk_operation_t *bulk, - const bson_t *selector); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Remove documents as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.sp -This function is superseded by \fBmongoc_bulk_operation_remove_one_with_opts()\fP and \fBmongoc_bulk_operation_remove_many_with_opts()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP\&. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_remove_one()\fP -.sp -\fBmongoc_bulk_operation_remove_one_with_opts()\fP -.sp -\fBmongoc_bulk_operation_remove_many_with_opts()\fP -.SH ERRORS -.sp -Errors are propagated via \fBmongoc_bulk_operation_execute()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_many_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_many_with_opts.3 deleted file mode 100644 index 77b0d6c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_many_with_opts.3 +++ /dev/null @@ -1,81 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_REMOVE_MANY_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_remove_many_with_opts \- mongoc_bulk_operation_remove_many_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_bulk_operation_remove_many_with_opts (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *opts, - bson_error_t *error); /* OUT */ -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Delete documents as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which document to remove. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_remove()\fP -.sp -\fBmongoc_bulk_operation_remove_one_with_opts()\fP -.SH ERRORS -.sp -Operation errors are propagated via \fBmongoc_bulk_operation_execute()\fP, while argument validation errors are reported by the \fBerror\fP argument. -.SH RETURNS -.sp -Returns true on success, and false if passed invalid arguments. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one.3 deleted file mode 100644 index f8efde5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_REMOVE_ONE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_remove_one \- mongoc_bulk_operation_remove_one() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_remove_one (mongoc_bulk_operation_t *bulk, - const bson_t *selector); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Remove a single document as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.sp -This function is superseded by \fBmongoc_bulk_operation_remove_one_with_opts()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which document to remove. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_remove_one_with_opts()\fP -.sp -\fBmongoc_bulk_operation_remove_many_with_opts()\fP -.SH ERRORS -.sp -Errors are propagated via \fBmongoc_bulk_operation_execute()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one_with_opts.3 deleted file mode 100644 index 4e086f4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_remove_one_with_opts.3 +++ /dev/null @@ -1,81 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_REMOVE_ONE_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_remove_one_with_opts \- mongoc_bulk_operation_remove_one_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_bulk_operation_remove_one_with_opts (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *opts, - bson_error_t *error); /* OUT */ -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Remove a single document as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which document to remove. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_remove_one()\fP -.sp -\fBmongoc_bulk_operation_remove_many_with_opts()\fP -.SH ERRORS -.sp -Operation errors are propagated via \fBmongoc_bulk_operation_execute()\fP, while argument validation errors are reported by the \fBerror\fP argument. -.SH RETURNS -.sp -Returns true on success, and false if passed invalid arguments. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one.3 deleted file mode 100644 index 94f79e7..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one.3 +++ /dev/null @@ -1,81 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_REPLACE_ONE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_replace_one \- mongoc_bulk_operation_replace_one() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_replace_one (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *document, - bool upsert); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Replace a single document as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.sp -This function is superseded by \fBmongoc_bulk_operation_replace_one_with_opts()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which document to remove. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP containing the replacement document. -.IP \(bu 2 -\fBupsert\fP: \fBtrue\fP if this should be an \fBupsert\fP\&. -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBdocument\fP may not contain fields with keys containing \fB\&.\fP or \fB$\fP\&. -.UNINDENT -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_replace_one_with_opts()\fP -.SH ERRORS -.sp -Errors are propagated via \fBmongoc_bulk_operation_execute()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one_with_opts.3 deleted file mode 100644 index f98b21c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_replace_one_with_opts.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_REPLACE_ONE_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_replace_one_with_opts \- mongoc_bulk_operation_replace_one_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_bulk_operation_replace_one_with_opts (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *document, - const bson_t *opts, - bson_error_t *error); /* OUT */ -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Replace a single document as part of a bulk operation. This only queues the operation. To execute it, call \fBmongoc_bulk_operation_execute()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which document to remove. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP containing the replacement document. -.IP \(bu 2 -\fBerror\fP: A \fI\%bson_error_t\fP any errors that may have occurred. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBvalidate\fP: Construct a bitwise\-or of all desired \fI\%bson_validate_flags_t\fP\&. Set to \fBfalse\fP to skip client\-side validation of the provided BSON documents. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBupsert\fP: If true, insert a document if none match \fBselector\fP\&. -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBdocument\fP may not contain fields with keys containing \fB\&.\fP or \fB$\fP\&. -.UNINDENT -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_remove_many_with_opts()\fP -.sp -\fBmongoc_bulk_operation_insert()\fP -.SH ERRORS -.sp -Operation errors are propagated via \fBmongoc_bulk_operation_execute()\fP, while argument validation errors are reported by the \fBerror\fP argument. -.SH RETURNS -.sp -Returns true on success, and false if passed invalid arguments. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_bypass_document_validation.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_bypass_document_validation.3 deleted file mode 100644 index dc79fc4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_bypass_document_validation.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_SET_BYPASS_DOCUMENT_VALIDATION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_set_bypass_document_validation \- mongoc_bulk_operation_set_bypass_document_validation() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_set_bypass_document_validation ( - mongoc_bulk_operation_t *bulk, bool bypass); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBbypass\fP: A boolean. -.UNINDENT -.SH DESCRIPTION -.sp -Will bypass document validation for all operations part of this bulk\&. -.SH SEE ALSO -.sp -bulk_operation_bypassing_document_validation -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_hint.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_hint.3 deleted file mode 100644 index 69adec9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_set_hint.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_SET_HINT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_set_hint \- mongoc_bulk_operation_set_hint() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_set_hint (const mongoc_bulk_operation_t *bulk, - uint32_t server_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBserver_id\fP: An opaque id identifying the server to use. -.UNINDENT -.SH DESCRIPTION -.sp -Specifies which server to use for the operation. This function has an effect only if called before \fBmongoc_bulk_operation_execute\fP\&. -.sp -(The function name includes the old term "hint" for the sake of backward compatibility, but we now call this number a "server id".) -.sp -Use \fBmongoc_bulk_operation_set_hint\fP only for building a language driver that wraps the C Driver. When writing applications in C, leave the server id unset and allow the driver to choose a suitable server for the bulk operation. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_t.3 deleted file mode 100644 index f996e3d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_t.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_t \- mongoc_bulk_operation_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Bulk Write Operations -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef struct _mongoc_bulk_operation_t mongoc_bulk_operation_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The opaque type \fBmongoc_bulk_operation_t\fP provides an abstraction for submitting multiple write operations as a single batch. -.sp -After adding all of the write operations to the \fBmongoc_bulk_operation_t\fP, call \fBmongoc_bulk_operation_execute()\fP to execute the operation. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -It is only valid to call \fBmongoc_bulk_operation_execute()\fP once. The \fBmongoc_bulk_operation_t\fP must be destroyed afterwards. -.UNINDENT -.UNINDENT -.SH SEE ALSO -.sp -\fBBulk Write Operations\fP -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update.3 deleted file mode 100644 index 78a1138..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_UPDATE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_update \- mongoc_bulk_operation_update() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_update (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *document, - bool upsert); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function queues an update as part of a bulk operation. This does not execute the operation. To execute the entirety of the bulk operation call \fBmongoc_bulk_operation_execute()\fP\&. -.sp -\fBdocument\fP MUST only contain fields whose key starts with \fB$\fP\&. See the update document specification for more details. -.sp -This function is superseded by \fBmongoc_bulk_operation_update_one_with_opts()\fP and \fBmongoc_bulk_operation_update_many_with_opts()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which documents to remove. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP containing the update document. -.IP \(bu 2 -\fBupsert\fP: \fBtrue\fP if an \fBupsert\fP should be performed. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_update_one_with_opts()\fP -.sp -\fBmongoc_bulk_operation_update_many_with_opts()\fP -.SH ERRORS -.sp -Errors are propagated via \fBmongoc_bulk_operation_execute()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_many_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_many_with_opts.3 deleted file mode 100644 index 5a7debc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_many_with_opts.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_UPDATE_MANY_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_update_many_with_opts \- mongoc_bulk_operation_update_many_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_bulk_operation_update_many_with_opts (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *document, - const bson_t *opts, - bson_error_t *error); /* OUT */ -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function queues an update as part of a bulk operation. This does not execute the operation. To execute the entirety of the bulk operation call \fBmongoc_bulk_operation_execute()\fP\&. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBdocument\fP MUST only contain fields whose key starts with \fB$\fP\&. See the update document specification for more details. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which documents to remove. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP containing the update document. -.IP \(bu 2 -\fBerror\fP: A \fI\%bson_error_t\fP any errors that may have occurred. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBvalidate\fP: Construct a bitwise\-or of all desired \fI\%bson_validate_flags_t\fP\&. Set to \fBfalse\fP to skip client\-side validation of the provided BSON documents. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBupsert\fP: If true, insert a document if none match \fBselector\fP\&. -.IP \(bu 2 -\fBarrayFilters\fP: An array of filters specifying to which array elements an update should apply. -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_update_one_with_opts()\fP -.SH ERRORS -.sp -Operation errors are propagated via \fBmongoc_bulk_operation_execute()\fP, while argument validation errors are reported by the \fBerror\fP argument. -.SH RETURNS -.sp -Returns true on success, and false if there is a server or network error or if passed invalid arguments. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one.3 deleted file mode 100644 index 63f0d20..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_UPDATE_ONE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_update_one \- mongoc_bulk_operation_update_one() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_bulk_operation_update_one (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *document, - bool upsert); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function queues an update as part of a bulk operation. It will only modify a single document on the MongoDB server. This function does not execute the operation. To execute the entirety of the bulk operation call \fBmongoc_bulk_operation_execute()\fP\&. -.sp -This function is superseded by \fBmongoc_bulk_operation_update_one_with_opts()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which document to remove. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP containing the update document. -.IP \(bu 2 -\fBupsert\fP: \fBtrue\fP if an \fBupsert\fP should be performed. -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBdocument\fP \fImust only\fP contain fields whose key starts with \fB$\fP\&. See the update document specification for more details. -.UNINDENT -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_update()\fP -.sp -\fBmongoc_bulk_operation_update_one_with_opts()\fP -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one_with_opts.3 deleted file mode 100644 index 011c66b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_bulk_operation_update_one_with_opts.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_BULK_OPERATION_UPDATE_ONE_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_bulk_operation_update_one_with_opts \- mongoc_bulk_operation_update_one_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_bulk_operation_update_one_with_opts (mongoc_bulk_operation_t *bulk, - const bson_t *selector, - const bson_t *document, - const bson_t *opts, - bson_error_t *error); /* OUT */ -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function queues an update as part of a bulk operation. It will only modify a single document on the MongoDB server. This function does not execute the operation. To execute the entirety of the bulk operation call \fBmongoc_bulk_operation_execute()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBbulk\fP: A \fBmongoc_bulk_operation_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP that selects which document to remove. -.IP \(bu 2 -\fBdocument\fP: A \fI\%bson_t\fP containing the update document. -.IP \(bu 2 -\fBerror\fP: A \fI\%bson_error_t\fP any errors that may have occurred. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBvalidate\fP: Construct a bitwise\-or of all desired \fI\%bson_validate_flags_t\fP\&. Set to \fBfalse\fP to skip client\-side validation of the provided BSON documents. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBupsert\fP: If true, insert a document if none match \fBselector\fP\&. -.IP \(bu 2 -\fBarrayFilters\fP: An array of filters specifying to which array elements an update should apply. -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBdocument\fP \fImust only\fP contain fields whose key starts with \fB$\fP\&. See the update document specification for more details. -.UNINDENT -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_bulk_operation_update_many_with_opts()\fP -.SH ERRORS -.sp -Operation errors are propagated via \fBmongoc_bulk_operation_execute()\fP, while argument validation errors are reported by the \fBerror\fP argument. -.SH RETURNS -.sp -Returns true on success, and false if there is a server or network error or if passed invalid arguments. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_destroy.3 deleted file mode 100644 index 46e38e1..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_destroy.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CHANGE_STREAM_DESTROY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_change_stream_destroy \- mongoc_change_stream_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_change_stream_destroy (mongoc_change_stream_t *stream); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Destroys a change stream and associated data. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstream\fP: An allocated \fBmongoc_change_stream_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_error_document.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_error_document.3 deleted file mode 100644 index 442fd57..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_error_document.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CHANGE_STREAM_ERROR_DOCUMENT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_change_stream_error_document \- mongoc_change_stream_error_document() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_change_stream_error_document (mongoc_change_stream_t *stream, - bson_error_t *err, - const bson_t **reply); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Checks if an error has occurred when creating or iterating over a change stream. -.sp -Similar to \fBmongoc_cursor_error_document\fP if the error has occurred -client\-side then the \fBreply\fP will be set to an empty BSON document. If the -error occurred server\-side, \fBreply\fP is set to the server\(aqs reply document. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstream\fP: A \fBmongoc_change_stream_t\fP\&. -.IP \(bu 2 -\fBerr\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.IP \(bu 2 -\fBreply\fP: A location for a \fI\%bson_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A boolean indicating if there was an error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_next.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_next.3 deleted file mode 100644 index 5718c24..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_next.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CHANGE_STREAM_NEXT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_change_stream_next \- mongoc_change_stream_next() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_change_stream_next (mongoc_change_stream_t *stream, - const bson_t **bson); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function iterates the underlying cursor, setting \fBbson\fP to the next -document. This will block for a maximum of \fBmaxAwaitTimeMS\fP milliseconds as -specified in the options when created, or the default timeout if omitted. Data -may be returned before the timeout. If no data is returned this function returns -\fBfalse\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBstream\fP: A \fBmongoc_change_stream_t\fP obtained from \fBmongoc_collection_watch\fP\&. -.IP \(bu 2 -\fBbson\fP: The location for the resulting document. -.UNINDENT -.SH RETURNS -.sp -A boolean indicating whether or not there was another document in the stream. -.sp -Similar to \fBmongoc_cursor_next\fP the lifetime of \fBbson\fP is until the -next call to \fBmongoc_change_stream_next\fP, so it needs to be copied to -extend the lifetime. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_t.3 deleted file mode 100644 index 65bbfdb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_change_stream_t.3 +++ /dev/null @@ -1,444 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CHANGE_STREAM_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_change_stream_t \- mongoc_change_stream_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -typedef struct _mongoc_change_stream_t mongoc_change_stream_t; -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBmongoc_change_stream_t\fP is a handle to a change stream. A collection -change stream can be obtained using \fBmongoc_collection_watch\fP\&. -.sp -It is recommended to use a \fBmongoc_change_stream_t\fP and its functions instead of a raw aggregation with a \fB$changeStream\fP stage. For more information see the \fI\%MongoDB Manual Entry on Change Streams\fP\&. -.SH EXAMPLE -example\-collection\-watch.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -int -main () -{ - bson_t empty = BSON_INITIALIZER; - const bson_t *doc; - bson_t *to_insert = BCON_NEW ("x", BCON_INT32 (1)); - const bson_t *err_doc; - bson_error_t error; - const char *uri_string; - mongoc_uri_t *uri; - mongoc_client_t *client; - mongoc_collection_t *coll; - mongoc_change_stream_t *stream; - mongoc_write_concern_t *wc = mongoc_write_concern_new (); - bson_t opts = BSON_INITIALIZER; - bool r; - - mongoc_init (); - - uri_string = "mongodb://" - "localhost:27017,localhost:27018,localhost:" - "27019/db?replicaSet=rs0"; - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - coll = mongoc_client_get_collection (client, "db", "coll"); - stream = mongoc_collection_watch (coll, &empty, NULL); - - mongoc_write_concern_set_wmajority (wc, 10000); - mongoc_write_concern_append (wc, &opts); - r = mongoc_collection_insert_one (coll, to_insert, &opts, NULL, &error); - if (!r) { - fprintf (stderr, "Error: %s\en", error.message); - return EXIT_FAILURE; - } - - while (mongoc_change_stream_next (stream, &doc)) { - char *as_json = bson_as_relaxed_extended_json (doc, NULL); - fprintf (stderr, "Got document: %s\en", as_json); - bson_free (as_json); - } - - if (mongoc_change_stream_error_document (stream, &error, &err_doc)) { - if (!bson_empty (err_doc)) { - fprintf (stderr, - "Server Error: %s\en", - bson_as_relaxed_extended_json (err_doc, NULL)); - } else { - fprintf (stderr, "Client Error: %s\en", error.message); - } - return EXIT_FAILURE; - } - - bson_destroy (to_insert); - mongoc_write_concern_destroy (wc); - bson_destroy (&opts); - mongoc_change_stream_destroy (stream); - mongoc_collection_destroy (coll); - mongoc_uri_destroy (uri); - mongoc_client_destroy (client); - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Starting and Resuming -.sp -All \fBwatch\fP functions accept two options to indicate where a change stream should start returning changes from: \fBstartAtOperationTime\fP and \fBresumeAfter\fP\&. -.sp -All changes returned by \fBmongoc_change_stream_next\fP include a resume token in the \fB_id\fP field. This resume token is automatically cached in libmongoc. -In the event of an error, libmongoc attempts to recreate the change stream starting where it left off by passing the resume token. -libmongoc only attempts to resume once, but client applications can cache this resume token and use it for their own resume logic by passing it as the option \fBresumeAfter\fP\&. -.sp -Additionally, change streams can start returning changes at an operation time by using the \fBstartAtOperationTime\fP field. This can be the timestamp returned in the \fBoperationTime\fP field of a command reply. -.sp -\fBstartAtOperationTime\fP and \fBresumeAfter\fP are mutually exclusive options. Setting them both will result in a server error. -.sp -The following example implements custom resuming logic, persisting the resume token in a file. -example\-resume.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include - -/* An example implementation of custom resume logic in a change stream. -* example\-resume starts a client\-wide change stream and persists the resume -* token in a file "resume\-token.json". On restart, if "resume\-token.json" -* exists, the change stream starts watching after the persisted resume token. -* -* This behavior allows a user to exit example\-resume, and restart it later -* without missing any change events. -*/ -#include - -static const char *RESUME_TOKEN_PATH = "resume\-token.json"; - -static bool -_save_resume_token (const bson_t *doc) -{ - FILE *file_stream; - bson_iter_t iter; - bson_t resume_token_doc; - char *as_json = NULL; - size_t as_json_len; - ssize_t r, n_written; - const bson_value_t *resume_token; - - if (!bson_iter_init_find (&iter, doc, "_id")) { - fprintf (stderr, "reply does not contain operationTime."); - return false; - } - resume_token = bson_iter_value (&iter); - /* store the resume token in a document, { resumeAfter: } - * which we can later append easily. */ - file_stream = fopen (RESUME_TOKEN_PATH, "w+"); - if (!file_stream) { - fprintf (stderr, "failed to open %s for writing\en", RESUME_TOKEN_PATH); - return false; - } - bson_init (&resume_token_doc); - BSON_APPEND_VALUE (&resume_token_doc, "resumeAfter", resume_token); - as_json = bson_as_canonical_extended_json (&resume_token_doc, &as_json_len); - bson_destroy (&resume_token_doc); - n_written = 0; - while (n_written < as_json_len) { - r = fwrite ((void *) (as_json + n_written), - sizeof (char), - as_json_len \- n_written, - file_stream); - if (r == \-1) { - fprintf (stderr, "failed to write to %s\en", RESUME_TOKEN_PATH); - bson_free (as_json); - fclose (file_stream); - return false; - } - n_written += r; - } - - bson_free (as_json); - fclose (file_stream); - return true; -} - -bool -_load_resume_token (bson_t *opts) -{ - bson_error_t error; - bson_json_reader_t *reader; - bson_t doc; - - /* if the file does not exist, skip. */ - if (\-1 == access (RESUME_TOKEN_PATH, R_OK)) { - return true; - } - reader = bson_json_reader_new_from_file (RESUME_TOKEN_PATH, &error); - if (!reader) { - fprintf (stderr, - "failed to open %s for reading: %s\en", - RESUME_TOKEN_PATH, - error.message); - return false; - } - - bson_init (&doc); - if (\-1 == bson_json_reader_read (reader, &doc, &error)) { - fprintf (stderr, "failed to read doc from %s\en", RESUME_TOKEN_PATH); - bson_destroy (&doc); - bson_json_reader_destroy (reader); - return false; - } - - printf ("found cached resume token in %s, resuming change stream.\en", - RESUME_TOKEN_PATH); - - bson_concat (opts, &doc); - bson_destroy (&doc); - bson_json_reader_destroy (reader); - return true; -} - -int -main () -{ - int exit_code = EXIT_FAILURE; - const char *uri_string; - mongoc_uri_t *uri = NULL; - bson_error_t error; - mongoc_client_t *client = NULL; - bson_t pipeline = BSON_INITIALIZER; - bson_t opts = BSON_INITIALIZER; - mongoc_change_stream_t *stream = NULL; - const bson_t *doc; - - const int max_time = 30; /* max amount of time, in seconds, that - mongoc_change_stream_next can block. */ - - mongoc_init (); - uri_string = "mongodb://localhost:27017/db?replicaSet=rs0"; - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - goto cleanup; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - goto cleanup; - } - - if (!_load_resume_token (&opts)) { - goto cleanup; - } - BSON_APPEND_INT64 (&opts, "maxAwaitTimeMS", max_time * 1000); - - printf ("listening for changes on the client (max %d seconds).\en", max_time); - stream = mongoc_client_watch (client, &pipeline, &opts); - - while (mongoc_change_stream_next (stream, &doc)) { - char *as_json; - - as_json = bson_as_canonical_extended_json (doc, NULL); - printf ("change received: %s\en", as_json); - bson_free (as_json); - if (!_save_resume_token (doc)) { - goto cleanup; - } - } - - exit_code = EXIT_SUCCESS; - -cleanup: - mongoc_uri_destroy (uri); - bson_destroy (&pipeline); - bson_destroy (&opts); - mongoc_change_stream_destroy (stream); - mongoc_client_destroy (client); - mongoc_cleanup (); - return exit_code; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The following example shows using \fBstartAtOperationTime\fP to synchronize a change stream with another operation. -example\-start\-at\-optime.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* An example of starting a change stream with startAtOperationTime. */ -#include - -int -main () -{ - int exit_code = EXIT_FAILURE; - const char *uri_string; - mongoc_uri_t *uri = NULL; - bson_error_t error; - mongoc_client_t *client = NULL; - mongoc_collection_t *coll = NULL; - bson_t pipeline = BSON_INITIALIZER; - bson_t opts = BSON_INITIALIZER; - mongoc_change_stream_t *stream = NULL; - bson_iter_t iter; - const bson_t *doc; - bson_value_t cached_operation_time = {0}; - int i; - bool r; - - mongoc_init (); - uri_string = "mongodb://localhost:27017/db?replicaSet=rs0"; - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - goto cleanup; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - goto cleanup; - } - - /* insert five documents. */ - coll = mongoc_client_get_collection (client, "db", "coll"); - for (i = 0; i < 5; i++) { - bson_t reply; - bson_t *insert_cmd = BCON_NEW ("insert", - "coll", - "documents", - "[", - "{", - "x", - BCON_INT64 (i), - "}", - "]"); - - r = mongoc_collection_write_command_with_opts ( - coll, insert_cmd, NULL, &reply, &error); - bson_destroy (insert_cmd); - if (!r) { - bson_destroy (&reply); - fprintf (stderr, "failed to insert: %s\en", error.message); - goto cleanup; - } - if (i == 0) { - /* cache the operation time in the first reply. */ - if (bson_iter_init_find (&iter, &reply, "operationTime")) { - bson_value_copy (bson_iter_value (&iter), &cached_operation_time); - } else { - fprintf (stderr, "reply does not contain operationTime."); - bson_destroy (&reply); - goto cleanup; - } - } - bson_destroy (&reply); - } - - /* start a change stream at the first returned operationTime. */ - BSON_APPEND_VALUE (&opts, "startAtOperationTime", &cached_operation_time); - stream = mongoc_collection_watch (coll, &pipeline, &opts); - - /* since the change stream started at the operation time of the first - * insert, the five inserts are returned. */ - printf ("listening for changes on db.coll:\en"); - while (mongoc_change_stream_next (stream, &doc)) { - char *as_json; - - as_json = bson_as_canonical_extended_json (doc, NULL); - printf ("change received: %s\en", as_json); - bson_free (as_json); - } - - exit_code = EXIT_SUCCESS; - -cleanup: - mongoc_uri_destroy (uri); - bson_destroy (&pipeline); - bson_destroy (&opts); - if (cached_operation_time.value_type) { - bson_value_destroy (&cached_operation_time); - } - mongoc_change_stream_destroy (stream); - mongoc_collection_destroy (coll); - mongoc_client_destroy (client); - mongoc_cleanup (); - return exit_code; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_check_version.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_check_version.3 deleted file mode 100644 index df4b09d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_check_version.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CHECK_VERSION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_check_version \- mongoc_check_version() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_check_version (int required_major, - int required_minor, - int required_micro); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBrequired_major\fP: The minimum major version required. -.IP \(bu 2 -\fBrequired_minor\fP: The minimum minor version required. -.IP \(bu 2 -\fBrequired_micro\fP: The minimum micro version required. -.UNINDENT -.SH RETURNS -.sp -True if libmongoc\(aqs version is greater than or equal to the required version. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cleanup.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cleanup.3 deleted file mode 100644 index f995d60..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_cleanup.3 +++ /dev/null @@ -1,55 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLEANUP" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_cleanup \- mongoc_cleanup() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_cleanup (void); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DESCRIPTION -.sp -Initialize the MongoDB C Driver by calling \fBmongoc_init\fP exactly once at the beginning of your program. It is responsible for initializing global state such as process counters, SSL, and threading primitives. -.sp -Call \fBmongoc_cleanup\fP exactly once at the end of your program to release all memory and other resources allocated by the driver. You must not call any other MongoDB C Driver functions after \fBmongoc_cleanup\fP\&. Note that \fBmongoc_init\fP does \fBnot\fP reinitialize the driver after \fBmongoc_cleanup\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command.3 deleted file mode 100644 index bd8c054..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command.3 +++ /dev/null @@ -1,91 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_COMMAND" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_command \- mongoc_client_command() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_cursor_t * -mongoc_client_command (mongoc_client_t *client, - const char *db_name, - mongoc_query_flags_t flags, - uint32_t skip, - uint32_t limit, - uint32_t batch_size, - const bson_t *query, - const bson_t *fields, - const mongoc_read_prefs_t *read_prefs); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function is superseded by \fBmongoc_client_command_with_opts()\fP, \fBmongoc_client_read_command_with_opts()\fP, \fBmongoc_client_write_command_with_opts()\fP, and \fBmongoc_client_read_write_command_with_opts()\fP\&. -.SH DESCRIPTION -.sp -This function creates a cursor which will execute the command when \fBmongoc_cursor_next\fP is called on it. The client\(aqs read preference, read concern, and write concern are not applied to the command, and \fBmongoc_cursor_next\fP will not check the server response for a write concern error or write concern timeout. -.sp -If \fBmongoc_cursor_next()\fP returns \fBfalse\fP, then retrieve error details with \fBmongoc_cursor_error()\fP or \fBmongoc_cursor_error_document()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb_name\fP: The name of the database to run the command on. -.IP \(bu 2 -\fBflags\fP: Unused. -.IP \(bu 2 -\fBskip\fP: Unused. -.IP \(bu 2 -\fBlimit\fP: Unused. -.IP \(bu 2 -\fBbatch_size\fP: Unused. -.IP \(bu 2 -\fBquery\fP: A \fI\%bson_t\fP containing the command specification. -.IP \(bu 2 -\fBfields\fP: Unused. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. Otherwise, the command uses mode \fBMONGOC_READ_PRIMARY\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_cursor_t\fP\&. -.sp -The cursor should be freed with \fBmongoc_cursor_destroy()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple.3 deleted file mode 100644 index 543d03d..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple.3 +++ /dev/null @@ -1,87 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_COMMAND_SIMPLE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_command_simple \- mongoc_client_command_simple() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_command_simple (mongoc_client_t *client, - const char *db_name, - const bson_t *command, - const mongoc_read_prefs_t *read_prefs, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This is a simplified interface to \fBmongoc_client_command()\fP\&. It returns the first document from the result cursor into \fBreply\fP\&. The client\(aqs read preference, read concern, and write concern are not applied to the command. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBreply\fP is always set, and should be released with \fI\%bson_destroy()\fP\&. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb_name\fP: The name of the database to run the command on. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command specification. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. Otherwise, the command uses mode \fBMONGOC_READ_PRIMARY\fP\&. -.IP \(bu 2 -\fBreply\fP: A location for the resulting document. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -This function does not check the server response for a write concern error or write concern timeout. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple_with_server_id.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple_with_server_id.3 deleted file mode 100644 index 600a0cf..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_simple_with_server_id.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_COMMAND_SIMPLE_WITH_SERVER_ID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_command_simple_with_server_id \- mongoc_client_command_simple_with_server_id() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_command_simple_with_server_id ( - mongoc_client_t *client, - const char *db_name, - const bson_t *command, - const mongoc_read_prefs_t *read_prefs, - uint32_t server_id bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function executes a command on a specific server, using the database and command specification provided. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb_name\fP: The name of the database to run the command on. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. -.IP \(bu 2 -\fBserver_id\fP: An opaque id specifying which server to use. -.IP \(bu 2 -\fBreply\fP: An optional location for a \fI\%bson_t\fP which will store the server\(aqs reply. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or a \fBNULL\fP\&. -.UNINDENT -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -This function does not check the server response for a write concern error or write concern timeout. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_with_opts.3 deleted file mode 100644 index 21a1624..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_command_with_opts.3 +++ /dev/null @@ -1,151 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_COMMAND_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_command_with_opts \- mongoc_client_command_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_command_with_opts ( - mongoc_client_t *client, - const char *db_name, - const bson_t *command, - const mongoc_read_prefs_t *read_prefs, - const bson_t *opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Execute a command on the server, interpreting \fBopts\fP according to the MongoDB server version. To send a raw command to the server without any of this logic, use \fBmongoc_client_command_simple\fP\&. -.sp -Read preferences, read and write concern, and collation can be overridden by various sources. The highest\-priority sources for these options are listed first: -.TS -center; -|l|l|l|l|. -_ -T{ -Read Preferences -T} T{ -Read Concern -T} T{ -Write Concern -T} T{ -Collation -T} -_ -T{ -\fBread_prefs\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} -_ -T{ -Transaction -T} T{ -Transaction -T} T{ -Transaction -T} T{ -T} -_ -T{ -\fBclient\fP -T} T{ -T} T{ -T} T{ -T} -_ -.TE -.sp -In a transaction, read concern and write concern are prohibited in \fBopts\fP and the read preference must be primary or NULL. -See the example for transactions and for the "distinct" command with opts\&. -.sp -\fBreply\fP is always initialized, and must be freed with \fI\%bson_destroy()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb_name\fP: The name of the database to run the command on. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command specification. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing additional options. -.IP \(bu 2 -\fBreply\fP: A location for the resulting document. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBclient\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.sp -Consult \fI\%the MongoDB Manual entry on Database Commands\fP for each command\(aqs arguments. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -The reply is not parsed for a write concern timeout or write concern error. -.SH EXAMPLE -.sp -See the example code for \fBmongoc_client_read_command_with_opts\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_destroy.3 deleted file mode 100644 index 1dcf0bc..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_destroy.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_DESTROY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_destroy \- mongoc_client_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_destroy (mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Release all resources associated with \fBclient\fP and free the structure. Does nothing if \fBclient\fP is NULL. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_find_databases_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_find_databases_with_opts.3 deleted file mode 100644 index 8fdd562..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_find_databases_with_opts.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_FIND_DATABASES_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_find_databases_with_opts \- mongoc_client_find_databases_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_cursor_t * -mongoc_client_find_databases_with_opts (mongoc_client_t *client, - const bson_t *opts); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Fetches a cursor containing documents, each corresponding to a database on this MongoDB server. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing additional options. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBclient\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.SH ERRORS -.sp -Use \fBmongoc_cursor_error\fP on the returned cursor to check for errors. -.SH RETURNS -.sp -A cursor where each result corresponds to the server\(aqs representation of a database. -.sp -The cursor functions \fBmongoc_cursor_set_limit\fP, \fBmongoc_cursor_set_batch_size\fP, and \fBmongoc_cursor_set_max_await_time_ms\fP have no use on the returned cursor. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_collection.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_collection.3 deleted file mode 100644 index 0b7c9d6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_collection.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_COLLECTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_collection \- mongoc_client_get_collection() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_collection_t * -mongoc_client_get_collection (mongoc_client_t *client, - const char *db, - const char *collection); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get a newly allocated \fBmongoc_collection_t\fP for the collection named \fBcollection\fP in the database named \fBdb\fP\&. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -Collections are automatically created on the MongoDB server upon insertion of the first document. There is no need to create a collection manually. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb\fP: The name of the database containing the collection. -.IP \(bu 2 -\fBcollection\fP: The name of the collection. -.UNINDENT -.SH RETURNS -.sp -A newly allocated \fBmongoc_collection_t\fP that should be freed with \fBmongoc_collection_destroy()\fP when no longer in use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database.3 deleted file mode 100644 index 788a1b9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_DATABASE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_database \- mongoc_client_get_database() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_database_t * -mongoc_client_get_database (mongoc_client_t *client, const char *name); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get a newly allocated \fBmongoc_database_t\fP for the database named \fBname\fP\&. -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -Databases are automatically created on the MongoDB server upon insertion of the first document into a collection. There is no need to create a database manually. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBname\fP: The name of the database. -.UNINDENT -.SH RETURNS -.sp -A newly allocated \fBmongoc_database_t\fP that should be freed with \fBmongoc_database_destroy()\fP when no longer in use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names.3 deleted file mode 100644 index ffd2c47..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_DATABASE_NAMES" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_database_names \- mongoc_client_get_database_names() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char ** -mongoc_client_get_database_names (mongoc_client_t *client, bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. -.sp -Please use \fBmongoc_client_get_database_names_with_opts()\fP instead. -.SH DESCRIPTION -.sp -This function queries the MongoDB server for a list of known databases. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -A \fBNULL\fP terminated vector of \fBNULL\-byte\fP terminated strings. The result should be freed with \fI\%bson_strfreev()\fP\&. -.sp -\fBNULL\fP is returned upon failure and \fBerror\fP is set. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names_with_opts.3 deleted file mode 100644 index f4bdbe8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_database_names_with_opts.3 +++ /dev/null @@ -1,102 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_DATABASE_NAMES_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_database_names_with_opts \- mongoc_client_get_database_names_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -char ** -mongoc_client_get_database_names_with_opts (mongoc_client_t *client, - const bson_t *opts, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function queries the MongoDB server for a list of known databases. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing additional options. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBclient\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -A \fBNULL\fP terminated vector of \fBNULL\-byte\fP terminated strings. The result should be freed with \fI\%bson_strfreev()\fP\&. -.sp -\fBNULL\fP is returned upon failure and \fBerror\fP is set. -.SH EXAMPLES -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -{ - bson_error_t error; - char **strv; - unsigned i; - - if ((strv = mongoc_client_get_database_names_with_opts (client, NULL, &error))) { - for (i = 0; strv[i]; i++) - printf ("%s\en", strv[i]); - bson_strfreev (strv); - } else { - fprintf (stderr, "Command failed: %s\en", error.message); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_default_database.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_default_database.3 deleted file mode 100644 index fd261cd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_default_database.3 +++ /dev/null @@ -1,88 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_DEFAULT_DATABASE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_default_database \- mongoc_client_get_default_database() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_database_t * -mongoc_client_get_default_database (mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get the database named in the MongoDB connection URI, or \fBNULL\fP if the URI specifies none. -.sp -Useful when you want to choose which database to use based only on the URI in a configuration file. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A newly allocated \fBmongoc_database_t\fP that should be freed with \fBmongoc_database_destroy()\fP\&. -.SH EXAMPLE -Default Database Example.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* default database is "db_name" */ -mongoc_client_t *client = mongoc_client_new ("mongodb://host/db_name"); -mongoc_database_t *db = mongoc_client_get_default_database (client); - -assert (!strcmp ("db_name", mongoc_database_get_name (db))); - -mongoc_database_destroy (db); -mongoc_client_destroy (client); - -/* no default database */ -client = mongoc_client_new ("mongodb://host/"); -db = mongoc_client_get_default_database (client); - -assert (!db); - -mongoc_client_destroy (client); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_gridfs.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_gridfs.3 deleted file mode 100644 index 42eb355..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_gridfs.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_GRIDFS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_gridfs \- mongoc_client_get_gridfs() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_gridfs_t * -mongoc_client_get_gridfs (mongoc_client_t *client, - const char *db, - const char *prefix, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBmongoc_client_get_gridfs()\fP function shall create a new \fBmongoc_gridfs_t\fP\&. The \fBdb\fP parameter is the name of the database which the gridfs instance should exist in. The \fBprefix\fP parameter corresponds to the gridfs collection namespacing; its default is "fs", thus the default GridFS collection names are "fs.files" and "fs.chunks". -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb\fP: The database name. -.IP \(bu 2 -\fBprefix\fP: Optional prefix for gridfs collection names or \fBNULL\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -On success, returns a \fBmongoc_gridfs_t\fP you must free with \fBmongoc_gridfs_destroy()\fP\&. Returns \fBNULL\fP upon failure and sets \fBerror\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_bson_size.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_bson_size.3 deleted file mode 100644 index bb5b057..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_bson_size.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_MAX_BSON_SIZE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_max_bson_size \- mongoc_client_get_max_bson_size() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int32_t -mongoc_client_get_max_bson_size (mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBmongoc_client_get_max_bson_size()\fP returns the maximum bson document size allowed by the cluster. Until a connection has been made, this will be the default of 16Mb. -.SH DEPRECATED -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function is deprecated and should not be used in new code. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The server provided max bson size, or 16Mb if no connection has been established. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_message_size.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_message_size.3 deleted file mode 100644 index 61af239..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_max_message_size.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_MAX_MESSAGE_SIZE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_max_message_size \- mongoc_client_get_max_message_size() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int32_t -mongoc_client_get_max_message_size (mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBmongoc_client_get_max_message_size()\fP returns the maximum message size allowed by the cluster. Until a connection has been made, this will be the default of 40Mb. -.SH DEPRECATED -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -This function is deprecated and should not be used in new code. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -The server provided max message size, or 40Mb if no connection has been established. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_concern.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_concern.3 deleted file mode 100644 index 05805c8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_concern.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_READ_CONCERN" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_read_concern \- mongoc_client_get_read_concern() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_read_concern_t * -mongoc_client_get_read_concern (const mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Retrieve the default read concern configured for the client instance. The result should not be modified or freed. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_read_concern_t\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_prefs.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_prefs.3 deleted file mode 100644 index a530260..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_read_prefs.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_READ_PREFS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_read_prefs \- mongoc_client_get_read_prefs() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_read_prefs_t * -mongoc_client_get_read_prefs (const mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Retrieves the default read preferences configured for the client instance. The result should not be modified or freed. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_read_prefs_t\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_description.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_description.3 deleted file mode 100644 index 4346e73..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_description.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_SERVER_DESCRIPTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_server_description \- mongoc_client_get_server_description() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_server_description_t * -mongoc_client_get_server_description (mongoc_client_t *client, - uint32_t server_id); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get information about the server specified by \fBserver_id\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBserver_id\fP: An opaque id specifying the server. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_server_description_t\fP that must be freed with \fBmongoc_server_description_destroy\fP\&. If the server is no longer in the topology, returns NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_descriptions.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_descriptions.3 deleted file mode 100644 index dac1f39..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_descriptions.3 +++ /dev/null @@ -1,97 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_SERVER_DESCRIPTIONS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_server_descriptions \- mongoc_client_get_server_descriptions() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_server_description_t ** -mongoc_client_get_server_descriptions (const mongoc_client_t *client, - size_t *n); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Fetches an array of \fBmongoc_server_description_t\fP structs for all known servers in the topology. Returns no servers until the client connects. Returns a single server if the client is directly connected, or all members of a replica set if the client\(aqs MongoDB URI includes a "replicaSet" option, or all known mongos servers if the MongoDB URI includes a list of them. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -show_servers (const mongoc_client_t *client) -{ - bson_t *b = BCON_NEW ("ping", BCON_INT32 (1)); - bson_error_t error; - bool r; - mongoc_server_description_t **sds; - size_t i, n; - - /* ensure client has connected */ - r = mongoc_client_command_simple (client, "db", b, NULL, NULL, &error); - if (!r) { - MONGOC_ERROR ("could not connect: %s\en", error.message); - return; - } - - sds = mongoc_client_get_server_descriptions (client, &n); - - for (i = 0; i < n; ++i) { - printf ("%s\en", mongoc_server_description_host (sds[i])\->host_and_port); - } - - mongoc_server_descriptions_destroy_all (sds, n); - bson_destroy (&b); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBn\fP: Receives the length of the descriptions array. -.UNINDENT -.SH RETURNS -.sp -A newly allocated array that must be freed with \fBmongoc_server_descriptions_destroy_all\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_status.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_status.3 deleted file mode 100644 index dc9aa41..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_server_status.3 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_SERVER_STATUS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_server_status \- mongoc_client_get_server_status() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_get_server_status (mongoc_client_t *client, - mongoc_read_prefs_t *read_prefs, - bson_t *reply, - bson_error_t *error) BSON_GNUC_DEPRECATED; -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Queries the server for the current server status. The result is stored in \fBreply\fP\&. -.sp -\fBreply\fP is always initialized, even in the case of failure. Always call \fI\%bson_destroy()\fP to release it. -.SH DEPRECATED -.sp -This helper function is deprecated and should not be used in new code. Run the \fI\%serverStatus\fP command directly with \fBmongoc_client_read_command_with_opts()\fP instead. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBread_prefs\fP: A \fBmongoc_read_prefs_t\fP\&. -.IP \(bu 2 -\fBreply\fP: A location for the result \fI\%bson_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_uri.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_uri.3 deleted file mode 100644 index c59df15..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_uri.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_URI" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_uri \- mongoc_client_get_uri() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_uri_t * -mongoc_client_get_uri (const mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Fetches the \fBmongoc_uri_t\fP used to create the client. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_uri_t\fP that should not be modified or freed. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_write_concern.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_write_concern.3 deleted file mode 100644 index 42dffae..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_get_write_concern.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_GET_WRITE_CONCERN" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_get_write_concern \- mongoc_client_get_write_concern() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_write_concern_t * -mongoc_client_get_write_concern (const mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Retrieve the default write concern configured for the client instance. The result should not be modified or freed. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_write_concern_t\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new.3 deleted file mode 100644 index 0fb2016..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_NEW" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_new \- mongoc_client_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t * -mongoc_client_new (const char *uri_string); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Creates a new \fBmongoc_client_t\fP using the URI string provided. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBuri_string\fP: A string containing the MongoDB connection URI. -.UNINDENT -.SH RETURNS -.sp -A newly allocated \fBmongoc_client_t\fP if the URI parsed successfully, otherwise \fBNULL\fP\&. -.SH SEE ALSO -.sp -\fBmongoc_client_new_from_uri()\fP -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new_from_uri.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new_from_uri.3 deleted file mode 100644 index 50fad66..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_new_from_uri.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_NEW_FROM_URI" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_new_from_uri \- mongoc_client_new_from_uri() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t * -mongoc_client_new_from_uri (const mongoc_uri_t *uri); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Creates a new \fBmongoc_client_t\fP using the \fBmongoc_uri_t\fP provided. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBuri\fP: A \fBmongoc_uri_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A newly allocated \fBmongoc_client_t\fP that should be freed with \fBmongoc_client_destroy()\fP when no longer in use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_destroy.3 deleted file mode 100644 index 30d18b4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_destroy.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_DESTROY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_destroy \- mongoc_client_pool_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_pool_destroy (mongoc_client_pool_t *pool); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Release all resources associated with \fBpool\fP, including freeing the structure. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_max_size.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_max_size.3 deleted file mode 100644 index 7c62df4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_max_size.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_MAX_SIZE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_max_size \- mongoc_client_pool_max_size() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_pool_min_size (mongoc_client_pool_t *pool, - uint32_t max_pool_size); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function sets the maximum number of pooled connections available from a \fBmongoc_client_pool_t\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.IP \(bu 2 -\fBmax_pool_size\fP: The maximum number of connections which shall be available from the pool. -.UNINDENT -.SH THREAD SAFETY -.sp -This function is safe to call from multiple threads. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_min_size.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_min_size.3 deleted file mode 100644 index c06944f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_min_size.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_MIN_SIZE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_min_size \- mongoc_client_pool_min_size() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_pool_min_size (mongoc_client_pool_t *pool, - uint32_t min_pool_size) - BSON_GNUC_DEPRECATED; -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function sets the \fImaximum\fP number of idle clients to be kept in the pool. Any idle clients in excess of the maximum are destroyed. This function is deprecated because its behavior does not match what developers expect from a "minimum pool size", and its actual behavior is likely to hurt performance. -.sp -Applications should not call this function, they should instead accept the default behavior, which is to keep all idle clients that are pushed into the pool. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.IP \(bu 2 -\fBmin_pool_size\fP: The number of idle clients to keep in the pool. -.UNINDENT -.SH THREAD SAFETY -.sp -This function is safe to call from multiple threads. -.sp -Subsequent calls to \fBmongoc_client_pool_push\fP respect the new minimum size, and close the least recently used \fBmongoc_client_t\fP if the minimum size is exceeded. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_new.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_new.3 deleted file mode 100644 index e4ecf8f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_new.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_NEW" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_new \- mongoc_client_pool_new() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_pool_t * -mongoc_client_pool_new (const mongoc_uri_t *uri); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function creates a new \fBmongoc_client_pool_t\fP using the \fBmongoc_uri_t\fP provided. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBuri\fP: A \fBmongoc_uri_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A newly allocated \fBmongoc_client_pool_t\fP that should be freed with \fBmongoc_client_pool_destroy()\fP when no longer in use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_pop.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_pop.3 deleted file mode 100644 index 1928605..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_pop.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_POP" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_pop \- mongoc_client_pool_pop() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t * -mongoc_client_pool_pop (mongoc_client_pool_t *pool); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Retrieve a \fBmongoc_client_t\fP from the client pool, or create one. The total number of clients that can be created from this pool is limited by the URI option "maxPoolSize", default 100. If this number of clients has been created and all are in use, \fBmongoc_client_pool_pop\fP blocks until another thread returns a client with \fBmongoc_client_pool_push\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_client_t\fP\&. -.SH THREAD SAFETY -.sp -This function is safe to call from multiple threads. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_push.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_push.3 deleted file mode 100644 index 20836c8..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_push.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_PUSH" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_push \- mongoc_client_pool_push() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_pool_push (mongoc_client_pool_t *pool, mongoc_client_t *client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function returns a \fBmongoc_client_t\fP back to the client pool. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.UNINDENT -.SH THREAD SAFETY -.sp -This function is safe to call from multiple threads. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_apm_callbacks.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_apm_callbacks.3 deleted file mode 100644 index 33d6f12..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_apm_callbacks.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_SET_APM_CALLBACKS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_set_apm_callbacks \- mongoc_client_pool_set_apm_callbacks() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_pool_set_apm_callbacks (mongoc_client_pool_t *pool, - mongoc_apm_callbacks_t *callbacks, - void *context); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Register a set of callbacks to receive Application Performance Monitoring events. -.sp -The callbacks are copied by the pool and may be destroyed at any time after. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.IP \(bu 2 -\fBcallbacks\fP: A \fBmongoc_apm_callbacks_t\fP\&. -.IP \(bu 2 -\fBcontext\fP: Optional pointer to include with each event notification. -.UNINDENT -.SH RETURNS -.sp -Returns true on success. If any arguments are invalid, returns false and logs an error. -.SH THREAD SAFETY -.sp -This function can only be called once on a pool, and must be called before the first call to \fBmongoc_client_pool_pop\fP\&. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_appname.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_appname.3 deleted file mode 100644 index 24b1498..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_appname.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_SET_APPNAME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_set_appname \- mongoc_client_pool_set_appname() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_pool_set_appname (mongoc_client_pool_t *pool, const char *appname) -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function is identical to \fBmongoc_client_set_appname()\fP except for client pools. -.sp -Also note that \fBmongoc_client_set_appname()\fP cannot be called on a client retrieved from a client pool. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.IP \(bu 2 -\fBappname\fP: The application name, of length at most \fBMONGOC_HANDSHAKE_APPNAME_MAX\fP\&. -.UNINDENT -.SH RETURNS -.sp -Returns true if appname was set. If appname is too long, returns false and logs an error. -.SH THREAD SAFETY -.sp -This function can only be called once on a pool, and must be called before the first call to \fBmongoc_client_pool_pop\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_error_api.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_error_api.3 deleted file mode 100644 index 9756e4b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_error_api.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_SET_ERROR_API" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_set_error_api \- mongoc_client_pool_set_error_api() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_pool_set_error_api (mongoc_client_pool_t *client, - int32_t version); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Configure how the C Driver reports errors. See Setting the Error API Version\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.IP \(bu 2 -\fBversion\fP: The version of the error API, either \fBMONGOC_ERROR_API_VERSION_LEGACY\fP or \fBMONGOC_ERROR_API_VERSION_2\fP\&. -.UNINDENT -.SH RETURNS -.sp -Returns true if the error API version was set, or logs an error message and returns false if \fBversion\fP is invalid. -.SH THREAD SAFETY -.sp -This function can only be called once on a pool, and must be called before the first call to \fBmongoc_client_pool_pop\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_ssl_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_ssl_opts.3 deleted file mode 100644 index 4335351..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_set_ssl_opts.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_SET_SSL_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_set_ssl_opts \- mongoc_client_pool_set_ssl_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#ifdef MONGOC_ENABLE_SSL -void -mongoc_client_pool_set_ssl_opts (mongoc_client_pool_t *pool, - const mongoc_ssl_opt_t *opts); -#endif -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function is identical to \fBmongoc_client_set_ssl_opts()\fP except for -client pools. It ensures that all clients retrieved from -\fBmongoc_client_pool_pop()\fP or \fBmongoc_client_pool_try_pop()\fP -are configured with the same SSL settings. -.sp -The \fBmongoc_ssl_opt_t\fP struct is copied by the pool along with the strings -it points to (\fBpem_file\fP, \fBpem_pwd\fP, \fBca_file\fP, \fBca_dir\fP, and -\fBcrl_file\fP) so they don\(aqt have to remain valid after the call to -\fBmongoc_client_pool_set_ssl_opts\fP\&. -.sp -A call to \fBmongoc_client_pool_set_ssl_opts\fP overrides all SSL options set -through the connection string with which the \fBmongoc_client_pool_t\fP was -constructed. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fBmongoc_ssl_opt_t\fP\&. -.UNINDENT -.SH THREAD SAFETY -.sp -This function can only be called once on a pool, and must be called before the first call to \fBmongoc_client_pool_pop\fP\&. -.SH AVAILABILITY -.sp -This feature requires that the MongoDB C driver was compiled with \fB\-DENABLE_SSL\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_t.3 deleted file mode 100644 index e5eb065..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_t.3 +++ /dev/null @@ -1,166 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_t \- mongoc_client_pool_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -A connection pool for multi\-threaded programs. See connection\-pooling\&. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef struct _mongoc_client_pool_t mongoc_client_pool_t -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBmongoc_client_pool_t\fP is the basis for multi\-threading in the MongoDB C driver. Since \fBmongoc_client_t\fP structures are not thread\-safe, this structure is used to retrieve a new \fBmongoc_client_t\fP for a given thread. This structure \fIis thread\-safe\fP\&. -.SH EXAMPLE -example\-pool.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* gcc example\-pool.c \-o example\-pool $(pkg\-config \-\-cflags \-\-libs - * libmongoc\-1.0) */ - -/* ./example\-pool [CONNECTION_STRING] */ - -#include -#include -#include - -static pthread_mutex_t mutex; -static bool in_shutdown = false; - -static void * -worker (void *data) -{ - mongoc_client_pool_t *pool = data; - mongoc_client_t *client; - bson_t ping = BSON_INITIALIZER; - bson_error_t error; - bool r; - - BSON_APPEND_INT32 (&ping, "ping", 1); - - while (true) { - client = mongoc_client_pool_pop (pool); - /* Do something with client. If you are writing an HTTP server, you - * probably only want to hold onto the client for the portion of the - * request performing database queries. - */ - r = mongoc_client_command_simple ( - client, "admin", &ping, NULL, NULL, &error); - - if (!r) { - fprintf (stderr, "%s\en", error.message); - } - - mongoc_client_pool_push (pool, client); - - pthread_mutex_lock (&mutex); - if (in_shutdown || !r) { - pthread_mutex_unlock (&mutex); - break; - } - - pthread_mutex_unlock (&mutex); - } - - bson_destroy (&ping); - return NULL; -} - -int -main (int argc, char *argv[]) -{ - const char *uri_string = "mongodb://127.0.0.1/?appname=pool\-example"; - mongoc_uri_t *uri; - bson_error_t error; - mongoc_client_pool_t *pool; - pthread_t threads[10]; - unsigned i; - void *ret; - - pthread_mutex_init (&mutex, NULL); - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - pool = mongoc_client_pool_new (uri); - mongoc_client_pool_set_error_api (pool, 2); - - for (i = 0; i < 10; i++) { - pthread_create (&threads[i], NULL, worker, pool); - } - - sleep (10); - pthread_mutex_lock (&mutex); - in_shutdown = true; - pthread_mutex_unlock (&mutex); - - for (i = 0; i < 10; i++) { - pthread_join (threads[i], &ret); - } - - mongoc_client_pool_destroy (pool); - mongoc_uri_destroy (uri); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_try_pop.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_try_pop.3 deleted file mode 100644 index 43ce925..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_pool_try_pop.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_POOL_TRY_POP" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_pool_try_pop \- mongoc_client_pool_try_pop() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t * -mongoc_client_pool_try_pop (mongoc_client_pool_t *pool); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function is identical to \fBmongoc_client_pool_pop()\fP except it will return \fBNULL\fP instead of blocking for a client to become available. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBpool\fP: A \fBmongoc_client_pool_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_client_t\fP if one is immediately available, otherwise \fBNULL\fP\&. -.SH THREAD SAFETY -.sp -This function is safe to call from multiple threads. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_command_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_command_with_opts.3 deleted file mode 100644 index 4f7f2b2..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_command_with_opts.3 +++ /dev/null @@ -1,295 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_READ_COMMAND_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_read_command_with_opts \- mongoc_client_read_command_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_read_command_with_opts (mongoc_client_t *client, - const char *db_name, - const bson_t *command, - const mongoc_read_prefs_t *read_prefs, - const bson_t *opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Execute a command on the server, applying logic that is specific to commands that read, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use \fBmongoc_client_command_simple\fP\&. -.sp -Use this function for commands that read such as "count" or "distinct". -.sp -Read preferences, read concern, and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in \fBopts\fP and the read preference must be primary or NULL. The highest\-priority sources for these options are listed first in the following table. No write concern is applied. -.TS -center; -|l|l|l|. -_ -T{ -Read Preferences -T} T{ -Read Concern -T} T{ -Collation -T} -_ -T{ -\fBread_prefs\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} -_ -T{ -Transaction -T} T{ -Transaction -T} T{ -T} -_ -T{ -\fBclient\fP -T} T{ -T} T{ -T} -_ -.TE -.sp -See the example for transactions and for \fI\%the "distinct" command with opts\fP\&. -.sp -\fBreply\fP is always initialized, and must be freed with \fI\%bson_destroy()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb_name\fP: The name of the database to run the command on. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command specification. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing additional options. -.IP \(bu 2 -\fBreply\fP: A location for the resulting document. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBclient\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.sp -Consult \fI\%the MongoDB Manual entry on Database Commands\fP for each command\(aqs arguments. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.SH EXAMPLE -example\-command\-with\-opts.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - -Demonstrates how to prepare options for mongoc_client_read_command_with_opts and -mongoc_client_write_command_with_opts. First it calls "cloneCollectionAsCapped" -command with "writeConcern" option, then "distinct" command with "collation" and -"readConcern" options, - -Start a MongoDB 3.4 replica set with \-\-enableMajorityReadConcern and insert two -documents: - -$ mongo -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 1, y: "One"}) -WriteResult({ "nInserted" : 1 }) -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 2, y: "Two"}) -WriteResult({ "nInserted" : 1 }) - -Build and run the example: - -gcc example\-command\-with\-opts.c \-o example\-command\-with\-opts $(pkg\-config -\-\-cflags \-\-libs libmongoc\-1.0) -\&./example\-command\-with\-opts [CONNECTION_STRING] -cloneCollectionAsCapped: { "ok" : 1 } -distinct: { "values" : [ 1, 2 ], "ok" : 1 } - -*/ - -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - const char *uri_string = "mongodb://127.0.0.1/?appname=client\-example"; - mongoc_uri_t *uri; - bson_t *cmd; - bson_t *opts; - mongoc_write_concern_t *write_concern; - mongoc_read_prefs_t *read_prefs; - mongoc_read_concern_t *read_concern; - bson_t reply; - bson_error_t error; - char *json; - - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - - cmd = BCON_NEW ("cloneCollectionAsCapped", - BCON_UTF8 ("my_collection"), - "toCollection", - BCON_UTF8 ("my_capped_collection"), - "size", - BCON_INT64 (1024 * 1024)); - - /* include write concern "majority" in command options */ - write_concern = mongoc_write_concern_new (); - mongoc_write_concern_set_wmajority (write_concern, 10000 /* wtimeoutMS */); - opts = bson_new (); - mongoc_write_concern_append (write_concern, opts); - - if (mongoc_client_write_command_with_opts ( - client, "test", cmd, opts, &reply, &error)) { - json = bson_as_canonical_extended_json (&reply, NULL); - printf ("cloneCollectionAsCapped: %s\en", json); - bson_free (json); - } else { - fprintf (stderr, "cloneCollectionAsCapped: %s\en", error.message); - } - - bson_free (cmd); - bson_free (opts); - - /* distinct values of "x" in "my_collection" where "y" sorts after "one" */ - cmd = BCON_NEW ("distinct", - BCON_UTF8 ("my_collection"), - "key", - BCON_UTF8 ("x"), - "query", - "{", - "y", - "{", - "$gt", - BCON_UTF8 ("one"), - "}", - "}"); - - read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY); - - /* "One" normally sorts before "one"; make "One" sort after "one" */ - opts = BCON_NEW ("collation", - "{", - "locale", - BCON_UTF8 ("en_US"), - "caseFirst", - BCON_UTF8 ("lower"), - "}"); - - /* add a read concern to "opts" */ - read_concern = mongoc_read_concern_new (); - mongoc_read_concern_set_level (read_concern, - MONGOC_READ_CONCERN_LEVEL_MAJORITY); - - mongoc_read_concern_append (read_concern, opts); - - if (mongoc_client_read_command_with_opts ( - client, "test", cmd, read_prefs, opts, &reply, &error)) { - json = bson_as_canonical_extended_json (&reply, NULL); - printf ("distinct: %s\en", json); - bson_free (json); - } else { - fprintf (stderr, "distinct: %s\en", error.message); - } - - bson_destroy (cmd); - bson_destroy (opts); - bson_destroy (&reply); - mongoc_read_prefs_destroy (read_prefs); - mongoc_read_concern_destroy (read_concern); - mongoc_write_concern_destroy (write_concern); - mongoc_uri_destroy (uri); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_write_command_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_write_command_with_opts.3 deleted file mode 100644 index 54cc01c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_read_write_command_with_opts.3 +++ /dev/null @@ -1,148 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_READ_WRITE_COMMAND_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_read_write_command_with_opts \- mongoc_client_read_write_command_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_read_write_command_with_opts ( - mongoc_client_t *client, - const char *db_name, - const bson_t *command, - const mongoc_read_prefs_t *read_prefs /* UNUSED */, - const bson_t *opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Execute a command on the server, applying logic for commands that both read and write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use \fBmongoc_client_command_simple\fP\&. -.sp -Use this function for commands that both read and write, such as "mapReduce" with an output collection. -.sp -Read and write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in \fBopts\fP\&. The highest\-priority sources for these options are listed first in the following table. Read preferences are \fInot\fP applied. The write concern is omitted for MongoDB before 3.4. -.TS -center; -|l|l|l|. -_ -T{ -Read Concern -T} T{ -Write Concern -T} T{ -Collation -T} -_ -T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} -_ -T{ -Transaction -T} T{ -Transaction -T} T{ -T} -_ -T{ -\fBclient\fP -T} T{ -\fBclient\fP -T} T{ -T} -_ -.TE -.sp -See the example for transactions and for the "distinct" command with opts\&. -.sp -\fBreply\fP is always initialized, and must be freed with \fI\%bson_destroy()\fP\&. -.sp -(The \fBmongoc_read_prefs_t\fP parameter was included by mistake when this function was introduced in libmongoc 1.5. A command that writes must not obey a read preference.) -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb_name\fP: The name of the database to run the command on. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command specification. -.IP \(bu 2 -\fBread_prefs\fP: Ignored. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing additional options. -.IP \(bu 2 -\fBreply\fP: A location for the resulting document. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBclient\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.sp -Consult \fI\%the MongoDB Manual entry on Database Commands\fP for each command\(aqs arguments. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -A write concern timeout or write concern error is considered a failure. -.SH EXAMPLE -.sp -See the example code for \fBmongoc_client_read_command_with_opts\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_select_server.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_select_server.3 deleted file mode 100644 index 1b2d7f4..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_select_server.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SELECT_SERVER" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_select_server \- mongoc_client_select_server() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_server_description_t * -mongoc_client_select_server (mongoc_client_t *client, - bool for_writes, - const mongoc_read_prefs_t *prefs, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Choose a server for an operation, according to the logic described in the Server Selection Spec. -.sp -Use this function only for building a language driver that wraps the C Driver. When writing applications in C, higher\-level functions automatically select a suitable server. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBfor_writes\fP: Whether to choose a server suitable for writes or reads. -.IP \(bu 2 -\fBprefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. If \fBfor_writes\fP is true, \fBprefs\fP must be NULL. Otherwise, use \fBprefs\fP to customize server selection, or pass NULL to use the read preference configured on the client. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_server_description_t\fP that must be freed with \fBmongoc_server_description_destroy\fP\&. If no suitable server is found, returns NULL and \fBerror\fP is filled out. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_abort_transaction.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_abort_transaction.3 deleted file mode 100644 index baacb01..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_abort_transaction.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_ABORT_TRANSACTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_abort_transaction \- mongoc_client_session_abort_transaction() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_session_abort_transaction (mongoc_client_session_t *session, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Abort a multi\-document transaction. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH RETURN -.sp -Returns true if the transaction was aborted. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments, such as a session with no transaction in progress. Network or server errors are ignored. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_cluster_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_cluster_time.3 deleted file mode 100644 index 8e1b133..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_cluster_time.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_ADVANCE_CLUSTER_TIME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_advance_cluster_time \- mongoc_client_session_advance_cluster_time() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_session_advance_cluster_time (mongoc_client_session_t *session, - const bson_t *cluster_time); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Advance the cluster time for a session. Has an effect only if the new cluster time is greater than the session\(aqs current cluster time. -.sp -Use \fBmongoc_client_session_advance_operation_time\fP and \fBmongoc_client_session_advance_cluster_time\fP to copy the operationTime and clusterTime from another session, ensuring subsequent operations in this session are causally consistent with the last operation in the other session -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcluster_time\fP: The session\(aqs new cluster time, as a \fI\%bson_t\fP like \fI{"cluster time": }\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_operation_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_operation_time.3 deleted file mode 100644 index e947892..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_advance_operation_time.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_ADVANCE_OPERATION_TIME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_advance_operation_time \- mongoc_client_session_advance_operation_time() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_session_advance_operation_time (mongoc_client_session_t *session, - uint32_t timestamp, - uint32_t increment); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Advance the session\(aqs operation time, expressed as a BSON Timestamp with timestamp and increment components. Has an effect only if the new operation time is greater than the session\(aqs current operation time. -.sp -Use \fBmongoc_client_session_advance_operation_time\fP and \fBmongoc_client_session_advance_cluster_time\fP to copy the operationTime and clusterTime from another session, ensuring subsequent operations in this session are causally consistent with the last operation in the other session -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBtimestamp\fP: The new operationTime\(aqs timestamp component. -.IP \(bu 2 -\fBincrement\fP: The new operationTime\(aqs increment component. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_append.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_append.3 deleted file mode 100644 index b95f66a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_append.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_APPEND" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_append \- mongoc_client_session_append() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_session_append (const mongoc_client_session_t *client_session, - bson_t *opts, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient_session\fP: A pointer to a \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A pointer to a \fI\%bson_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function appends a logical session id to command options. Use it to configure a session for any function that takes an options document, such as \fBmongoc_client_write_command_with_opts\fP\&. -.sp -It is an error to use a session for unacknowledged writes. -.SH RETURNS -.sp -Returns true on success. If any arguments are invalid, returns false and fills out \fBerror\fP\&. -.SH EXAMPLE -.sp -See the example code for \fBmongoc_client_session_t\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_commit_transaction.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_commit_transaction.3 deleted file mode 100644 index ad8e997..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_commit_transaction.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_COMMIT_TRANSACTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_commit_transaction \- mongoc_client_session_commit_transaction() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_session_commit_transaction (mongoc_client_session_t *session, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Commit a multi\-document transaction. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBreply\fP: An optional uninitialized \fI\%bson_t\fP to receive the server reply, or \fBNULL\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH RETURN -.sp -Returns true if the transaction was committed. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments, such as a session with no transaction in progress, or if there is a server or network error. -.sp -If a \fBreply\fP is supplied, it is always initialized and must be freed with \fI\%bson_destroy()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_destroy.3 deleted file mode 100644 index 7f720fd..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_destroy.3 +++ /dev/null @@ -1,59 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_DESTROY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_destroy \- mongoc_client_session_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_session_destroy (mongoc_client_session_t *session); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -End a session, returning its session id to the pool, and free all client resources associated with the session. If a multi\-document transaction is in progress, abort it. Does nothing if \fBsession\fP is NULL. -.sp -See the example code for \fBmongoc_client_session_t\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_client.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_client.3 deleted file mode 100644 index 49590a0..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_client.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_GET_CLIENT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_get_client \- mongoc_client_session_get_client() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t * -mongoc_client_session_get_client (const mongoc_client_session_t *session); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Returns the \fBmongoc_client_t\fP from which this session was created with \fBmongoc_client_start_session()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_cluster_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_cluster_time.3 deleted file mode 100644 index e449039..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_cluster_time.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_GET_CLUSTER_TIME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_get_cluster_time \- mongoc_client_session_get_cluster_time() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t * -mongoc_client_session_get_cluster_time (const mongoc_client_session_t *session); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get the session\(aqs clusterTime, as a BSON document. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fI\%bson_t\fP you must not modify or free. If the session has not been used for any operation and you have not called \fBmongoc_client_session_advance_cluster_time\fP, then the returned value is NULL. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_lsid.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_lsid.3 deleted file mode 100644 index f253c44..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_lsid.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_GET_LSID" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_get_lsid \- mongoc_client_session_get_lsid() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const bson_t * -mongoc_client_session_get_lsid (mongoc_client_session_t *session); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get the server\-side "logical session ID" associated with this \fBmongoc_client_session_t\fP, as a BSON document. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fI\%bson_t\fP you must not modify or free. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_operation_time.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_operation_time.3 deleted file mode 100644 index 24549ea..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_operation_time.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_GET_OPERATION_TIME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_get_operation_time \- mongoc_client_session_get_operation_time() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_session_get_operation_time (const mongoc_client_session_t *session, - uint32_t *timestamp, - uint32_t *increment); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get the session\(aqs operationTime, expressed as a BSON Timestamp with timestamp and increment components. If the session has not been used for any operations, the timestamp and increment are 0. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBtimestamp\fP: A pointer to a \fBuint32_t\fP to receive the timestamp component. -.IP \(bu 2 -\fBincrement\fP: A pointer to a \fBuint32_t\fP to receive the increment component. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_opts.3 deleted file mode 100644 index d5778f9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_get_opts.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_GET_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_get_opts \- mongoc_client_session_get_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -const mongoc_session_opt_t * -mongoc_client_session_get_opts (const mongoc_client_session_t *session); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Get a reference to the \fBmongoc_session_opt_t\fP with which this session was configured. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_session_opt_t\fP you must not modify or free. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_in_transaction.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_in_transaction.3 deleted file mode 100644 index 076b0b6..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_in_transaction.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_IN_TRANSACTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_in_transaction \- mongoc_client_session_in_transaction() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_session_in_transaction (const mongoc_client_session_t *session); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Check whether a multi\-document transaction is in progress for this session. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH RETURN -.sp -Returns true if a transaction was started and has not been committed or aborted, otherwise \fBfalse\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_start_transaction.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_start_transaction.3 deleted file mode 100644 index f462793..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_start_transaction.3 +++ /dev/null @@ -1,261 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_START_TRANSACTION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_start_transaction \- mongoc_client_session_start_transaction() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_session_start_transaction (mongoc_client_session_t *session, - const mongoc_transaction_opt_t *opts, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Start a multi\-document transaction for all following operations in this session. Any options provided in \fBopts\fP override options passed to \fBmongoc_session_opts_set_default_transaction_opts\fP, and options inherited from the \fBmongoc_client_t\fP\&. The \fBopts\fP argument is copied and can be freed after calling this function. -.sp -The transaction must be completed with \fBmongoc_client_session_commit_transaction\fP or \fBmongoc_client_session_abort_transaction\fP\&. An in\-progress transaction is automatically aborted by \fBmongoc_client_session_destroy\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBsession\fP: A \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fBmongoc_transaction_opt_t\fP or \fBNULL\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH RETURN -.sp -Returns true if the transaction was started. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments, such as a session with a transaction already in progress. -.SH EXAMPLE -.sp -The following example demonstrates how to use error labels to reliably execute a multi\-document transaction despite network errors and other transient failures. -example\-transaction.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* gcc example\-transaction.c \-o example\-transaction \e - * $(pkg\-config \-\-cflags \-\-libs libmongoc\-1.0) */ - -/* ./example\-transaction [CONNECTION_STRING] */ - -#include -#include - - -int -main (int argc, char *argv[]) -{ - int exit_code = EXIT_FAILURE; - - mongoc_client_t *client = NULL; - mongoc_database_t *database = NULL; - mongoc_collection_t *collection = NULL; - mongoc_client_session_t *session = NULL; - mongoc_session_opt_t *session_opts = NULL; - mongoc_transaction_opt_t *default_txn_opts = NULL; - mongoc_transaction_opt_t *txn_opts = NULL; - mongoc_read_concern_t *read_concern = NULL; - mongoc_write_concern_t *write_concern = NULL; - const char *uri_string = "mongodb://127.0.0.1/?appname=transaction\-example"; - mongoc_uri_t *uri; - bson_error_t error; - bson_t *doc = NULL; - bson_t *insert_opts = NULL; - int32_t i; - int64_t start; - bson_t reply = BSON_INITIALIZER; - char *reply_json; - bool r; - - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - MONGOC_ERROR ("failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - goto done; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - goto done; - } - - mongoc_client_set_error_api (client, 2); - database = mongoc_client_get_database (client, "example\-transaction"); - - /* inserting into a nonexistent collection normally creates it, but a - * collection can\(aqt be created in a transaction; create it now */ - collection = - mongoc_database_create_collection (database, "collection", NULL, &error); - - if (!collection) { - /* code 48 is NamespaceExists, see error_codes.err in mongodb source */ - if (error.code == 48) { - collection = mongoc_database_get_collection (database, "collection"); - } else { - MONGOC_ERROR ("Failed to create collection: %s", error.message); - goto done; - } - } - - /* a transaction\(aqs read preferences, read concern, and write concern can be - * set on the client, on the default transaction options, or when starting - * the transaction. for the sake of this example, set read concern on the - * default transaction options. */ - default_txn_opts = mongoc_transaction_opts_new (); - read_concern = mongoc_read_concern_new (); - mongoc_read_concern_set_level (read_concern, "snapshot"); - mongoc_transaction_opts_set_read_concern (default_txn_opts, read_concern); - session_opts = mongoc_session_opts_new (); - mongoc_session_opts_set_default_transaction_opts (session_opts, - default_txn_opts); - - session = mongoc_client_start_session (client, session_opts, &error); - if (!session) { - MONGOC_ERROR ("Failed to start session: %s", error.message); - goto done; - } - - /* in this example, set write concern when starting the transaction */ - txn_opts = mongoc_transaction_opts_new (); - write_concern = mongoc_write_concern_new (); - mongoc_write_concern_set_wmajority (write_concern, 1000 /* wtimeout */); - mongoc_transaction_opts_set_write_concern (txn_opts, write_concern); - - insert_opts = bson_new (); - if (!mongoc_client_session_append (session, insert_opts, &error)) { - MONGOC_ERROR ("Could not add session to opts: %s", error.message); - goto done; - } - -retry_transaction: - r = mongoc_client_session_start_transaction (session, txn_opts, &error); - if (!r) { - MONGOC_ERROR ("Failed to start transaction: %s", error.message); - goto done; - } - - /* insert two documents \- on error, retry the whole transaction */ - for (i = 0; i < 2; i++) { - doc = BCON_NEW ("_id", BCON_INT32 (i)); - bson_destroy (&reply); - r = mongoc_collection_insert_one ( - collection, doc, insert_opts, &reply, &error); - - bson_destroy (doc); - - if (!r) { - MONGOC_ERROR ("Insert failed: %s", error.message); - mongoc_client_session_abort_transaction (session, NULL); - - /* a network error, primary failover, or other temporary error in a - * transaction includes {"errorLabels": ["TransientTransactionError"]}, - * meaning that trying the entire transaction again may succeed - */ - if (mongoc_error_has_label (&reply, "TransientTransactionError")) { - goto retry_transaction; - } - - goto done; - } - - reply_json = bson_as_json (&reply, NULL); - printf ("%s\en", reply_json); - bson_free (reply_json); - } - - /* in case of transient errors, retry for 5 seconds to commit transaction */ - start = bson_get_monotonic_time (); - while (bson_get_monotonic_time () \- start < 5 * 1000 * 1000) { - bson_destroy (&reply); - r = mongoc_client_session_commit_transaction (session, &reply, &error); - if (r) { - /* success */ - break; - } else { - MONGOC_ERROR ("Warning: commit failed: %s", error.message); - if (mongoc_error_has_label (&reply, "TransientTransactionError")) { - goto retry_transaction; - } else if (mongoc_error_has_label (&reply, - "UnknownTransactionCommitResult")) { - /* try again to commit */ - continue; - } - - /* unrecoverable error trying to commit */ - break; - } - } - - exit_code = EXIT_SUCCESS; - -done: - bson_destroy (&reply); - bson_destroy (insert_opts); - mongoc_write_concern_destroy (write_concern); - mongoc_read_concern_destroy (read_concern); - mongoc_transaction_opts_destroy (txn_opts); - mongoc_transaction_opts_destroy (default_txn_opts); - mongoc_client_session_destroy (session); - mongoc_collection_destroy (collection); - mongoc_database_destroy (database); - mongoc_uri_destroy (uri); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return exit_code; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_t.3 deleted file mode 100644 index 1d0ab74..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_session_t.3 +++ /dev/null @@ -1,205 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SESSION_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_session_t \- mongoc_client_session_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -Use a session for a sequence of operations, optionally with causal consistency. See \fI\%the MongoDB Manual Entry for Causal Consistency\fP\&. -.SH SYNOPSIS -.sp -Start a session with \fBmongoc_client_start_session\fP, use the session for a sequence of operations and multi\-document transactions, then free it with \fBmongoc_client_session_destroy()\fP\&. Any \fBmongoc_cursor_t\fP or \fBmongoc_change_stream_t\fP using a session must be destroyed before the session, and a session must be destroyed before the \fBmongoc_client_t\fP it came from. -.sp -By default, sessions are \fI\%causally consistent\fP\&. To disable causal consistency, before starting a session create a \fBmongoc_session_opt_t\fP with \fBmongoc_session_opts_new()\fP and call \fBmongoc_session_opts_set_causal_consistency()\fP, then free the struct with \fBmongoc_session_opts_destroy\fP\&. -.sp -Unacknowledged writes are prohibited with sessions. -.sp -A \fBmongoc_client_session_t\fP must be used by only one thread at a time. Due to session pooling, \fBmongoc_client_start_session\fP may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout. -.SH EXAMPLE -example\-session.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* gcc example\-session.c \-o example\-session \e - * $(pkg\-config \-\-cflags \-\-libs libmongoc\-1.0) */ - -/* ./example\-session [CONNECTION_STRING] */ - -#include -#include - - -int -main (int argc, char *argv[]) -{ - int exit_code = EXIT_FAILURE; - - mongoc_client_t *client = NULL; - const char *uri_string = "mongodb://127.0.0.1/?appname=session\-example"; - mongoc_uri_t *uri = NULL; - mongoc_client_session_t *client_session = NULL; - mongoc_collection_t *collection = NULL; - bson_error_t error; - bson_t *selector = NULL; - bson_t *update = NULL; - bson_t *update_opts = NULL; - bson_t *find_opts = NULL; - mongoc_read_prefs_t *secondary = NULL; - mongoc_cursor_t *cursor = NULL; - const bson_t *doc; - char *str; - bool r; - - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - goto done; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - goto done; - } - - mongoc_client_set_error_api (client, 2); - - /* pass NULL for options \- by default the session is causally consistent */ - client_session = mongoc_client_start_session (client, NULL, &error); - if (!client_session) { - fprintf (stderr, "Failed to start session: %s\en", error.message); - goto done; - } - - collection = mongoc_client_get_collection (client, "test", "collection"); - selector = BCON_NEW ("_id", BCON_INT32 (1)); - update = BCON_NEW ("$inc", "{", "x", BCON_INT32 (1), "}"); - update_opts = bson_new (); - if (!mongoc_client_session_append (client_session, update_opts, &error)) { - fprintf (stderr, "Could not add session to opts: %s\en", error.message); - goto done; - } - - r = mongoc_collection_update_one ( - collection, selector, update, update_opts, NULL /* reply */, &error); - - if (!r) { - fprintf (stderr, "Update failed: %s\en", error.message); - goto done; - } - - bson_destroy (selector); - selector = BCON_NEW ("_id", BCON_INT32 (1)); - secondary = mongoc_read_prefs_new (MONGOC_READ_SECONDARY); - - find_opts = BCON_NEW ("maxTimeMS", BCON_INT32 (2000)); - if (!mongoc_client_session_append (client_session, find_opts, &error)) { - fprintf (stderr, "Could not add session to opts: %s\en", error.message); - goto done; - }; - - /* read from secondary. since we\(aqre in a causally consistent session, the - * data is guaranteed to reflect the update we did on the primary. the query - * blocks waiting for the secondary to catch up, if necessary, or times out - * and fails after 2000 ms. - */ - cursor = mongoc_collection_find_with_opts ( - collection, selector, find_opts, secondary); - - while (mongoc_cursor_next (cursor, &doc)) { - str = bson_as_json (doc, NULL); - fprintf (stdout, "%s\en", str); - bson_free (str); - } - - if (mongoc_cursor_error (cursor, &error)) { - fprintf (stderr, "Cursor Failure: %s\en", error.message); - goto done; - } - - exit_code = EXIT_SUCCESS; - -done: - if (find_opts) { - bson_destroy (find_opts); - } - if (update) { - bson_destroy (update); - } - if (selector) { - bson_destroy (selector); - } - if (update_opts) { - bson_destroy (update_opts); - } - if (secondary) { - mongoc_read_prefs_destroy (secondary); - } - /* destroy cursor, collection, session before the client they came from */ - if (cursor) { - mongoc_cursor_destroy (cursor); - } - if (collection) { - mongoc_collection_destroy (collection); - } - if (client_session) { - mongoc_client_session_destroy (client_session); - } - if (uri) { - mongoc_uri_destroy (uri); - } - if (client) { - mongoc_client_destroy (client); - } - - mongoc_cleanup (); - - return exit_code; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_apm_callbacks.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_apm_callbacks.3 deleted file mode 100644 index 6635ac3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_apm_callbacks.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_APM_CALLBACKS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_apm_callbacks \- mongoc_client_set_apm_callbacks() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_set_apm_callbacks (mongoc_client_t *client, - mongoc_apm_callbacks_t *callbacks, - void *context); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Register a set of callbacks to receive Application Performance Monitoring events. -.sp -The callbacks are copied by the client and may be destroyed at any time after. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBcallbacks\fP: Optional \fBmongoc_apm_callbacks_t\fP\&. Pass NULL to clear all callbacks. -.IP \(bu 2 -\fBcontext\fP: Optional pointer to include with each event notification. -.UNINDENT -.SH RETURNS -.sp -Returns true on success. If any arguments are invalid, returns false and logs an error. -.SH SEE ALSO -.sp -Introduction to Application Performance Monitoring -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_appname.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_appname.3 deleted file mode 100644 index 2e82b4a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_appname.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_APPNAME" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_appname \- mongoc_client_set_appname() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_set_appname (mongoc_client_t *client, const char *appname) -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Sets the application name for this client. This string, along with other internal driver details, is sent to the server as part of the initial connection handshake (\fI\%"isMaster"\fP). -.sp -\fBappname\fP is copied, and doesn\(aqt have to remain valid after the call to \fBmongoc_client_set_appname()\fP\&. -.sp -This function will log an error and return false in the following cases: -.INDENT 0.0 -.IP \(bu 2 -\fBappname\fP is longer than \fBMONGOC_HANDSHAKE_APPNAME_MAX\fP -.IP \(bu 2 -\fBclient\fP has already initiated a handshake -.IP \(bu 2 -\fBclient\fP is from a \fBmongoc_client_pool_t\fP -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBappname\fP: The application name, of length at most \fBMONGOC_HANDSHAKE_APPNAME_MAX\fP\&. -.UNINDENT -.SH RETURNS -.sp -true if the appname is set successfully. Otherwise, false. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_error_api.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_error_api.3 deleted file mode 100644 index 7d17739..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_error_api.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_ERROR_API" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_error_api \- mongoc_client_set_error_api() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_set_error_api (mongoc_client_t *client, int32_t version); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Configure how the C Driver reports errors. See Setting the Error API Version\&. -.sp -Do not use this function with pooled clients, see \fBmongoc_client_pool_set_error_api\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBversion\fP: The version of the error API, either \fBMONGOC_ERROR_API_VERSION_LEGACY\fP or \fBMONGOC_ERROR_API_VERSION_2\fP\&. -.UNINDENT -.SH RETURNS -.sp -Returns true on success. If any arguments are invalid, returns false and logs an error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_concern.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_concern.3 deleted file mode 100644 index ac7bb6a..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_concern.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_READ_CONCERN" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_read_concern \- mongoc_client_set_read_concern() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_set_read_concern (mongoc_client_t *client, - const mongoc_read_concern_t *read_concern); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Sets the read concern for the client. This only affects future operations, collections, and databases inheriting from \fBclient\fP\&. -.sp -The default read concern is MONGOC_READ_CONCERN_LEVEL_LOCAL. This is the correct read concern for the great majority of applications. -.sp -It is a programming error to call this function on a client from a \fBmongoc_client_pool_t\fP\&. For pooled clients, set the read concern with the MongoDB URI instead. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBread_concern\fP: A \fBmongoc_read_concern_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_prefs.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_prefs.3 deleted file mode 100644 index ef22592..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_read_prefs.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_READ_PREFS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_read_prefs \- mongoc_client_set_read_prefs() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_set_read_prefs (mongoc_client_t *client, - const mongoc_read_prefs_t *read_prefs); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Sets the default read preferences to use with future operations upon \fBclient\fP\&. -.sp -The global default is to read from the replica set primary. -.sp -It is a programming error to call this function on a client from a \fBmongoc_client_pool_t\fP\&. For pooled clients, set the read preferences with the MongoDB URI instead. -.sp -Please see the MongoDB website for a description of \fI\%Read Preferences\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBread_prefs\fP: A \fBmongoc_read_prefs_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_ssl_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_ssl_opts.3 deleted file mode 100644 index 79965b5..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_ssl_opts.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_SSL_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_ssl_opts \- mongoc_client_set_ssl_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#ifdef MONGOC_ENABLE_SSL -void -mongoc_client_set_ssl_opts (mongoc_client_t *client, - const mongoc_ssl_opt_t *opts); -#endif -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Sets the SSL options to use when connecting to SSL enabled MongoDB servers. -.sp -The \fBmongoc_ssl_opt_t\fP struct is copied by the client along with the strings -it points to (\fBpem_file\fP, \fBpem_pwd\fP, \fBca_file\fP, \fBca_dir\fP, and -\fBcrl_file\fP) so they don\(aqt have to remain valid after the call to -\fBmongoc_client_set_ssl_opts\fP\&. -.sp -A call to \fBmongoc_client_set_ssl_opts\fP overrides all SSL options set through -the connection string with which the \fBmongoc_client_t\fP was constructed. -.sp -It is a programming error to call this function on a client from a -\fBmongoc_client_pool_t\fP\&. Instead, call -\fBmongoc_client_pool_set_ssl_opts\fP on the pool before popping any -clients. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fBmongoc_ssl_opt_t\fP\&. -.UNINDENT -.SH AVAILABILITY -.sp -This feature requires that the MongoDB C driver was compiled with \fB\-DENABLE_SSL\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_stream_initiator.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_stream_initiator.3 deleted file mode 100644 index 8c1ec7e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_stream_initiator.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_STREAM_INITIATOR" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_stream_initiator \- mongoc_client_set_stream_initiator() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_set_stream_initiator (mongoc_client_t *client, - mongoc_stream_initiator_t initiator, - void *user_data); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBmongoc_client_set_stream_initiator()\fP function shall associate a given \fBmongoc_client_t\fP with a new stream initiator. This will completely replace the default transport (buffered TCP, possibly with TLS). The \fBinitiator\fP should fulfill the \fBmongoc_stream_t\fP contract. \fBuser_data\fP is passed through to the \fBinitiator\fP callback and may be used for whatever run time customization is necessary. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBinitiator\fP: A \fBmongoc_stream_initiator_t\fP\&. -.IP \(bu 2 -\fBuser_data\fP: User supplied pointer for callback function. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_write_concern.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_write_concern.3 deleted file mode 100644 index 28d71da..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_set_write_concern.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_SET_WRITE_CONCERN" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_set_write_concern \- mongoc_client_set_write_concern() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_client_set_write_concern (mongoc_client_t *client, - const mongoc_write_concern_t *write_concern); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Sets the write concern for the client. This only affects future operations, collections, and databases inheriting from \fBclient\fP\&. -.sp -The default write concern is MONGOC_WRITE_CONCERN_W_DEFAULT: the driver blocks awaiting basic acknowledgement of write operations from MongoDB. This is the correct write concern for the great majority of applications. -.sp -It is a programming error to call this function on a client from a \fBmongoc_client_pool_t\fP\&. For pooled clients, set the write concern with the MongoDB URI instead. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBwrite_concern\fP: A \fBmongoc_write_concern_t\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_start_session.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_start_session.3 deleted file mode 100644 index 8a2cbe9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_start_session.3 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_START_SESSION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_start_session \- mongoc_client_start_session() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_session_t * -mongoc_client_start_session (mongoc_client_t *client, - mongoc_session_opt_t *opts, - bson_error_t *error) -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Create a session for a sequence of operations. -.sp -Start a session with \fBmongoc_client_start_session\fP, use the session for a sequence of operations and multi\-document transactions, then free it with \fBmongoc_client_session_destroy()\fP\&. Any \fBmongoc_cursor_t\fP or \fBmongoc_change_stream_t\fP using a session must be destroyed before the session, and a session must be destroyed before the \fBmongoc_client_t\fP it came from. -.sp -By default, sessions are \fI\%causally consistent\fP\&. To disable causal consistency, before starting a session create a \fBmongoc_session_opt_t\fP with \fBmongoc_session_opts_new()\fP and call \fBmongoc_session_opts_set_causal_consistency()\fP, then free the struct with \fBmongoc_session_opts_destroy\fP\&. -.sp -Unacknowledged writes are prohibited with sessions. -.sp -A \fBmongoc_client_session_t\fP must be used by only one thread at a time. Due to session pooling, \fBmongoc_client_start_session\fP may return a session that has been idle for some time and is about to be closed after its idle timeout. Use the session within one minute of acquiring it to refresh the session and avoid a timeout. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBopts\fP: An optional \fBmongoc_session_opt_t\fP\&. -.IP \(bu 2 -\fBerror\fP: A \fI\%bson_error_t\fP\&. -.UNINDENT -.SH RETURNS -.sp -If successful, this function returns a newly allocated \fBmongoc_client_session_t\fP that should be freed with \fBmongoc_client_session_destroy()\fP when no longer in use. On error, returns NULL and sets \fBerror\fP\&. -.SH ERRORS -.sp -This function can fail if the driver is not built with crypto support, if \fBopts\fP is misconfigured, or if the session is configured with options that the server does not support. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_t.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_t.3 deleted file mode 100644 index 0f2b00e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_t.3 +++ /dev/null @@ -1,161 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_T" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_t \- mongoc_client_t -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.sp -A single\-threaded MongoDB connection. See connection\-pooling\&. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -typedef struct _mongoc_client_t mongoc_client_t; - -typedef mongoc_stream_t *(*mongoc_stream_initiator_t) ( - const mongoc_uri_t *uri, - const mongoc_host_list_t *host, - void *user_data, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBmongoc_client_t\fP is an opaque type that provides access to a MongoDB server, -replica set, or sharded cluster. It maintains management of underlying sockets -and routing to individual nodes based on \fBmongoc_read_prefs_t\fP or \fBmongoc_write_concern_t\fP\&. -.SH STREAMS -.sp -The underlying transport for a given client can be customized, wrapped or replaced by any implementation that fulfills \fBmongoc_stream_t\fP\&. A custom transport can be set with \fBmongoc_client_set_stream_initiator()\fP\&. -.SH THREAD SAFETY -.sp -\fBmongoc_client_t\fP is \fINOT\fP thread\-safe and should only be used from one thread at a time. When used in multi\-threaded scenarios, it is recommended that you use the thread\-safe \fBmongoc_client_pool_t\fP to retrieve a \fBmongoc_client_t\fP for your thread. -.SH EXAMPLE -example\-client.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* gcc example\-client.c \-o example\-client $(pkg\-config \-\-cflags \-\-libs - * libmongoc\-1.0) */ - -/* ./example\-client [CONNECTION_STRING [COLLECTION_NAME]] */ - -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - mongoc_collection_t *collection; - mongoc_cursor_t *cursor; - bson_error_t error; - const bson_t *doc; - const char *collection_name = "test"; - bson_t query; - char *str; - const char *uri_string = "mongodb://127.0.0.1/?appname=client\-example"; - mongoc_uri_t *uri; - - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - if (argc > 2) { - collection_name = argv[2]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - - bson_init (&query); - -#if 0 - bson_append_utf8 (&query, "hello", \-1, "world", \-1); -#endif - - collection = mongoc_client_get_collection (client, "test", collection_name); - cursor = mongoc_collection_find_with_opts ( - collection, - &query, - NULL, /* additional options */ - NULL); /* read prefs, NULL for default */ - - while (mongoc_cursor_next (cursor, &doc)) { - str = bson_as_canonical_extended_json (doc, NULL); - fprintf (stdout, "%s\en", str); - bson_free (str); - } - - if (mongoc_cursor_error (cursor, &error)) { - fprintf (stderr, "Cursor Failure: %s\en", error.message); - return EXIT_FAILURE; - } - - bson_destroy (&query); - mongoc_cursor_destroy (cursor); - mongoc_collection_destroy (collection); - mongoc_uri_destroy (uri); - mongoc_client_destroy (client); - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_watch.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_watch.3 deleted file mode 100644 index 9ed470e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_watch.3 +++ /dev/null @@ -1,102 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_WATCH" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_watch \- mongoc_client_watch() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_change_stream_t* -mongoc_client_watch (mongoc_client_t *client, - const bson_t *pipeline, - const bson_t *opts); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -A helper function to create a change stream. It is preferred to call this -function over using a raw aggregation to create a change stream. -.sp -This function uses the read preference and read concern of the client. If -the change stream needs to re\-establish connection, the same read preference -will be used. This may happen if the change stream encounters a resumable error. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -A change stream is only supported with majority read concern. -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBdb\fP: A \fBmongoc_client_t\fP specifying the client which the change stream listens to. -.IP \(bu 2 -\fBpipeline\fP: A \fI\%bson_t\fP representing an aggregation pipeline appended to the change stream. This may be an empty document. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing change stream options or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be \fBNULL\fP or a document consisting of any subset of the following -parameters: -.INDENT 0.0 -.IP \(bu 2 -\fBbatchSize\fP An \fBint32\fP representing number of documents requested to be returned on each call to \fBmongoc_change_stream_next\fP -.IP \(bu 2 -\fBresumeAfter\fP A \fBDocument\fP representing the logical starting point of the change stream. The \fB_id\fP field of any change received from a change stream can be used here. -.IP \(bu 2 -\fBstartAtOperationTime\fP A \fBTimestamp\fP\&. The change stream only provides changes that occurred at or after the specified timestamp. Any command run against the server will return an operation time that can be used here. -.IP \(bu 2 -\fBmaxAwaitTimeMS\fP An \fBint64\fP representing the maximum amount of time a call to \fBmongoc_change_stream_next\fP will block waiting for data -.IP \(bu 2 -\fBcollation\fP A \fI\%Collation Document\fP -.UNINDENT -.SH RETURNS -.sp -A newly allocated \fBmongoc_change_stream_t\fP which must be freed with -\fBmongoc_change_stream_destroy\fP when no longer in use. The returned -\fBmongoc_change_stream_t\fP is never \fBNULL\fP\&. If there is an error, it can -be retrieved with \fBmongoc_change_stream_error_document\fP, and subsequent -calls to \fBmongoc_change_stream_next\fP will return \fBfalse\fP\&. -.SH SEE ALSO -.sp -mongoc_database_watch -.sp -mongoc_collection_watch -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_write_command_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_write_command_with_opts.3 deleted file mode 100644 index abec20e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_client_write_command_with_opts.3 +++ /dev/null @@ -1,288 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_CLIENT_WRITE_COMMAND_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_client_write_command_with_opts \- mongoc_client_write_command_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_client_write_command_with_opts (mongoc_client_t *client, - const char *db_name, - const bson_t *command, - const bson_t *opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Execute a command on the server, applying logic that is specific to commands that write, and taking the MongoDB server version into account. To send a raw command to the server without any of this logic, use \fBmongoc_client_command_simple\fP\&. -.sp -Use this function for commands that write such as "drop" or "createRole" (but not for "insert", "update", or "delete", see \fI\%Basic Write Operations\fP). Write concern and collation can be overridden by various sources. In a transaction, read concern and write concern are prohibited in \fBopts\fP\&. The highest\-priority sources for these options are listed first in the following table. The write concern is omitted for MongoDB before 3.4. -.TS -center; -|l|l|. -_ -T{ -Write Concern -T} T{ -Collation -T} -_ -T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} -_ -T{ -Transaction -T} T{ -T} -_ -T{ -\fBclient\fP -T} T{ -T} -_ -.TE -.sp -See the example for transactions and for the "distinct" command with opts\&. -.sp -\fBreply\fP is always initialized, and must be freed with \fI\%bson_destroy()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBclient\fP: A \fBmongoc_client_t\fP\&. -.IP \(bu 2 -\fBdb_name\fP: The name of the database to run the command on. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command specification. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing additional options. -.IP \(bu 2 -\fBreply\fP: A location for the resulting document. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBclient\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.sp -Consult \fI\%the MongoDB Manual entry on Database Commands\fP for each command\(aqs arguments. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -A write concern timeout or write concern error is considered a failure. -.SH BASIC WRITE OPERATIONS -.sp -Do not use this function to call the basic write commands "insert", "update", and "delete". Those commands require special logic not implemented in \fBmongoc_client_write_command_with_opts\fP\&. For basic write operations use CRUD functions such as \fBmongoc_collection_insert_one\fP and the others described in the CRUD tutorial, or use the Bulk API\&. -.SH EXAMPLE -example\-command\-with\-opts.c.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* - -Demonstrates how to prepare options for mongoc_client_read_command_with_opts and -mongoc_client_write_command_with_opts. First it calls "cloneCollectionAsCapped" -command with "writeConcern" option, then "distinct" command with "collation" and -"readConcern" options, - -Start a MongoDB 3.4 replica set with \-\-enableMajorityReadConcern and insert two -documents: - -$ mongo -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 1, y: "One"}) -WriteResult({ "nInserted" : 1 }) -MongoDB Enterprise replset:PRIMARY> db.my_collection.insert({x: 2, y: "Two"}) -WriteResult({ "nInserted" : 1 }) - -Build and run the example: - -gcc example\-command\-with\-opts.c \-o example\-command\-with\-opts $(pkg\-config -\-\-cflags \-\-libs libmongoc\-1.0) -\&./example\-command\-with\-opts [CONNECTION_STRING] -cloneCollectionAsCapped: { "ok" : 1 } -distinct: { "values" : [ 1, 2 ], "ok" : 1 } - -*/ - -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - mongoc_client_t *client; - const char *uri_string = "mongodb://127.0.0.1/?appname=client\-example"; - mongoc_uri_t *uri; - bson_t *cmd; - bson_t *opts; - mongoc_write_concern_t *write_concern; - mongoc_read_prefs_t *read_prefs; - mongoc_read_concern_t *read_concern; - bson_t reply; - bson_error_t error; - char *json; - - mongoc_init (); - - if (argc > 1) { - uri_string = argv[1]; - } - - uri = mongoc_uri_new_with_error (uri_string, &error); - if (!uri) { - fprintf (stderr, - "failed to parse URI: %s\en" - "error message: %s\en", - uri_string, - error.message); - return EXIT_FAILURE; - } - - client = mongoc_client_new_from_uri (uri); - if (!client) { - return EXIT_FAILURE; - } - - mongoc_client_set_error_api (client, 2); - - cmd = BCON_NEW ("cloneCollectionAsCapped", - BCON_UTF8 ("my_collection"), - "toCollection", - BCON_UTF8 ("my_capped_collection"), - "size", - BCON_INT64 (1024 * 1024)); - - /* include write concern "majority" in command options */ - write_concern = mongoc_write_concern_new (); - mongoc_write_concern_set_wmajority (write_concern, 10000 /* wtimeoutMS */); - opts = bson_new (); - mongoc_write_concern_append (write_concern, opts); - - if (mongoc_client_write_command_with_opts ( - client, "test", cmd, opts, &reply, &error)) { - json = bson_as_canonical_extended_json (&reply, NULL); - printf ("cloneCollectionAsCapped: %s\en", json); - bson_free (json); - } else { - fprintf (stderr, "cloneCollectionAsCapped: %s\en", error.message); - } - - bson_free (cmd); - bson_free (opts); - - /* distinct values of "x" in "my_collection" where "y" sorts after "one" */ - cmd = BCON_NEW ("distinct", - BCON_UTF8 ("my_collection"), - "key", - BCON_UTF8 ("x"), - "query", - "{", - "y", - "{", - "$gt", - BCON_UTF8 ("one"), - "}", - "}"); - - read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY); - - /* "One" normally sorts before "one"; make "One" sort after "one" */ - opts = BCON_NEW ("collation", - "{", - "locale", - BCON_UTF8 ("en_US"), - "caseFirst", - BCON_UTF8 ("lower"), - "}"); - - /* add a read concern to "opts" */ - read_concern = mongoc_read_concern_new (); - mongoc_read_concern_set_level (read_concern, - MONGOC_READ_CONCERN_LEVEL_MAJORITY); - - mongoc_read_concern_append (read_concern, opts); - - if (mongoc_client_read_command_with_opts ( - client, "test", cmd, read_prefs, opts, &reply, &error)) { - json = bson_as_canonical_extended_json (&reply, NULL); - printf ("distinct: %s\en", json); - bson_free (json); - } else { - fprintf (stderr, "distinct: %s\en", error.message); - } - - bson_destroy (cmd); - bson_destroy (opts); - bson_destroy (&reply); - mongoc_read_prefs_destroy (read_prefs); - mongoc_read_concern_destroy (read_concern); - mongoc_write_concern_destroy (write_concern); - mongoc_uri_destroy (uri); - mongoc_client_destroy (client); - - mongoc_cleanup (); - - return EXIT_SUCCESS; -} - -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_aggregate.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_aggregate.3 deleted file mode 100644 index fc78e6e..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_aggregate.3 +++ /dev/null @@ -1,215 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_AGGREGATE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_aggregate \- mongoc_collection_aggregate() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_cursor_t * -mongoc_collection_aggregate (mongoc_collection_t *collection, - mongoc_query_flags_t flags, - const bson_t *pipeline, - const bson_t *opts, - const mongoc_read_prefs_t *read_prefs) - BSON_GNUC_WARN_UNUSED_RESULT; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A \fBmongoc_query_flags_t\fP\&. -.IP \(bu 2 -\fBpipeline\fP: A \fI\%bson_t\fP, either a BSON array or a BSON document containing an array field named "pipeline". -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing options for the command, or \fBNULL\fP\&. -.IP \(bu 2 -\fBread_prefs\fP: A \fBmongoc_read_prefs_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBwriteConcern\fP: For aggregations that include "$out", you can construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: Construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBbypassDocumentValidation\fP: Set to \fBtrue\fP to skip server\-side schema validation of the provided BSON documents. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.IP \(bu 2 -\fBbatchSize\fP: To specify the number of documents to return in each batch of a response from the server, include an int "batchSize" field. -.UNINDENT -.sp -For a list of all options, see \fI\%the MongoDB Manual entry on the aggregate command\fP\&. -.SH DESCRIPTION -.sp -This function shall execute an aggregation query on the underlying collection. For more information on building aggregation pipelines, see \fI\%the MongoDB Manual entry on the aggregate command\fP\&. -.sp -Read preferences, read and write concern, and collation can be overridden by various sources. The highest\-priority sources for these options are listed first in the following table. In a transaction, read concern and write concern are prohibited in \fBopts\fP and the read preference must be primary or NULL. Write concern is applied from \fBopts\fP, or if \fBopts\fP has no write concern and the aggregation pipeline includes "$out", the write concern is applied from \fBcollection\fP\&. The write concern is omitted for MongoDB before 3.4. -.TS -center; -|l|l|l|l|. -_ -T{ -Read Preferences -T} T{ -Read Concern -T} T{ -Write Concern -T} T{ -Collation -T} -_ -T{ -\fBread_prefs\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} -_ -T{ -Transaction -T} T{ -Transaction -T} T{ -Transaction -T} T{ -T} -_ -T{ -\fBcollection\fP -T} T{ -\fBcollection\fP -T} T{ -\fBcollection\fP -T} T{ -T} -_ -.TE -.sp -See the example for transactions and for the "distinct" command with opts\&. -.SH RETURNS -.sp -This function returns a newly allocated \fBmongoc_cursor_t\fP that should be freed with \fBmongoc_cursor_destroy()\fP when no longer in use. The returned \fBmongoc_cursor_t\fP is never \fBNULL\fP; if the parameters are invalid, the \fI\%bson_error_t\fP in the \fBmongoc_cursor_t\fP is filled out, and the \fBmongoc_cursor_t\fP is returned before the server is selected. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -Failure to handle the result of this function is a programming error. -.UNINDENT -.UNINDENT -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include - -static mongoc_cursor_t * -pipeline_query (mongoc_collection_t *collection) -{ - mongoc_cursor_t *cursor; - bson_t *pipeline; - - pipeline = BCON_NEW ("pipeline", - "[", - "{", - "$match", - "{", - "foo", - BCON_UTF8 ("A"), - "}", - "}", - "{", - "$match", - "{", - "bar", - BCON_BOOL (false), - "}", - "}", - "]"); - - cursor = mongoc_collection_aggregate ( - collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL); - - bson_destroy (pipeline); - - return cursor; -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH OTHER PARAMETERS -.sp -When using \fB$out\fP, the pipeline stage that writes, the write_concern field of the \fBmongoc_cursor_t\fP will be set to the \fBmongoc_write_concern_t\fP parameter, if it is valid, and applied to the write command when \fBmongoc_cursor_next()\fP is called. Pass any other parameters to the \fBaggregate\fP command, besides \fBpipeline\fP, as fields in \fBopts\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_write_concern_t *write_concern = mongoc_write_concern_new (); -mongoc_write_concern_set_w (write_concern, 3); - -pipeline = - BCON_NEW ("pipeline", "[", "{", "$out", BCON_UTF8 ("collection2"), "}", "]"); - -opts = BCON_NEW ("bypassDocumentValidation", BCON_BOOL (true)); -mongoc_write_concern_append (write_concern, opts); - -cursor = mongoc_collection_aggregate ( - collection1, MONGOC_QUERY_NONE, pipeline, opts, NULL); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command.3 deleted file mode 100644 index 1f0d77c..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command.3 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_COMMAND" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_command \- mongoc_collection_command() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_cursor_t * -mongoc_collection_command (mongoc_collection_t *collection, - mongoc_query_flags_t flags, - uint32_t skip, - uint32_t limit, - uint32_t batch_size, - const bson_t *command, - const bson_t *fields, - const mongoc_read_prefs_t *read_prefs) - BSON_GNUC_WARN_UNUSED_RESULT; -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This function is superseded by \fBmongoc_collection_command_with_opts()\fP, \fBmongoc_collection_read_command_with_opts()\fP, \fBmongoc_collection_write_command_with_opts()\fP, and \fBmongoc_collection_read_write_command_with_opts()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A \fBmongoc_query_flags_t\fP\&. -.IP \(bu 2 -\fBskip\fP: A uint32_t with the number of documents to skip or zero. -.IP \(bu 2 -\fBlimit\fP: A uint32_t with the max number of documents to return or zero. -.IP \(bu 2 -\fBbatch_size\fP: A uint32_t with the number of documents in each batch or zero. Default is 100. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command to execute. -.IP \(bu 2 -\fBfields\fP: A \fI\%bson_t\fP containing the fields to return or \fBNULL\fP\&. Not all commands support this option. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. Otherwise, the command uses mode \fBMONGOC_READ_PRIMARY\fP\&. -.UNINDENT -.SH RETURNS -.sp -A \fBmongoc_cursor_t\fP\&. -.sp -The cursor should be freed with \fBmongoc_cursor_destroy()\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_simple.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_simple.3 deleted file mode 100644 index 28cad28..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_simple.3 +++ /dev/null @@ -1,119 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_COMMAND_SIMPLE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_command_simple \- mongoc_collection_command_simple() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_command_simple (mongoc_collection_t *collection, - const bson_t *command, - const mongoc_read_prefs_t *read_prefs, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command to execute. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. Otherwise, the command uses mode \fBMONGOC_READ_PRIMARY\fP\&. -.IP \(bu 2 -\fBreply\fP: A location to initialize a \fI\%bson_t\fP\&. This should be on the stack. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This is a simplified version of \fBmongoc_collection_command()\fP that returns the first result document in \fBreply\fP\&. The collection\(aqs read preference, read concern, and write concern are not applied to the command. The parameter \fBreply\fP is initialized even upon failure to simplify memory management. -.sp -This function tries to unwrap an embedded error in the command when possible. The unwrapped error will be propagated via the \fBerror\fP parameter. Additionally, the result document is set in \fBreply\fP\&. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -This function does not check the server response for a write concern error or write concern timeout. -.SH EXAMPLE -.sp -The following is an example of executing the collection stats command. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -print_collection_stats (mongoc_collection_t *collection) -{ - bson_error_t error; - const char *name; - bson_t *cmd; - bson_t reply; - - name = mongoc_collection_get_name (collection); - cmd = BCON_NEW ("collStats", BCON_UTF8 (name)); - - if (mongoc_collection_command_simple ( - collection, cmd, NULL, &reply, &error)) { - str = bson_as_canonical_extended_json (&reply, NULL); - printf ("%s\en", str); - bson_free (str); - } else { - fprintf (stderr, "%s\en", error.message); - } - - bson_destroy (&reply); - bson_destroy (cmd); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_with_opts.3 deleted file mode 100644 index 0b1aee9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_command_with_opts.3 +++ /dev/null @@ -1,148 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_COMMAND_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_command_with_opts \- mongoc_collection_command_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_command_with_opts ( - mongoc_collection_t *collection, - const bson_t *command, - const mongoc_read_prefs_t *read_prefs, - const bson_t *opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Execute a command on the server, interpreting \fBopts\fP according to the MongoDB server version. To send a raw command to the server without any of this logic, use \fBmongoc_client_command_simple\fP\&. -.sp -Read preferences, read and write concern, and collation can be overridden by various sources. The highest\-priority sources for these options are listed first: -.TS -center; -|l|l|l|l|. -_ -T{ -Read Preferences -T} T{ -Read Concern -T} T{ -Write Concern -T} T{ -Collation -T} -_ -T{ -\fBread_prefs\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} T{ -\fBopts\fP -T} -_ -T{ -Transaction -T} T{ -Transaction -T} T{ -Transaction -T} T{ -T} -_ -T{ -\fBcollection\fP -T} T{ -T} T{ -T} T{ -T} -_ -.TE -.sp -In a transaction, read concern and write concern are prohibited in \fBopts\fP and the read preference must be primary or NULL. -See the example for transactions and for the "distinct" command with opts\&. -.sp -\fBreply\fP is always initialized, and must be freed with \fI\%bson_destroy()\fP\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBcommand\fP: A \fI\%bson_t\fP containing the command specification. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP containing additional options. -.IP \(bu 2 -\fBreply\fP: A location for the resulting document. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.sp -Consult \fI\%the MongoDB Manual entry on Database Commands\fP for each command\(aqs arguments. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -The reply is not parsed for a write concern timeout or write concern error. -.SH EXAMPLE -.sp -See the example code for \fBmongoc_client_read_command_with_opts\fP\&. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_copy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_copy.3 deleted file mode 100644 index e0d530f..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_copy.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_COPY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_copy \- mongoc_collection_copy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_collection_t * -mongoc_collection_copy (mongoc_collection_t *collection); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -Performs a deep copy of the \fBcollection\fP struct and its configuration. Useful if you intend to call \fBmongoc_collection_set_write_concern\fP, \fBmongoc_collection_set_read_prefs\fP, or \fBmongoc_collection_set_read_concern\fP, and want to preserve an unaltered copy of the struct. -.sp -This function does \fInot\fP copy the contents of the collection on the MongoDB server; use the cloneCollection command for that purpose. -.SH RETURNS -.sp -A newly allocated \fBmongoc_collection_t\fP that should be freed with \fBmongoc_collection_destroy()\fP when no longer in use. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count.3 deleted file mode 100644 index 3cf3c2b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count.3 +++ /dev/null @@ -1,125 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_COUNT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_count \- mongoc_collection_count() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. -Use \fBmongoc_collection_count_documents\fP or \fBmongoc_collection_estimated_document_count\fP instead. -.sp -\fBmongoc_collection_count_documents\fP has similar performance to calling \fBmongoc_collection_count\fP with a non\-NULL \fBquery\fP, and is guaranteed to retrieve an accurate collection count. See migrating from deprecated count functions for details. -.sp -\fBmongoc_collection_estimated_document_count\fP has the same performance as calling \fBmongoc_collection_count\fP with a NULL \fBquery\fP, but is not guaranteed to retrieve an accurate collection count. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_collection_count (mongoc_collection_t *collection, - mongoc_query_flags_t flags, - const bson_t *query, - int64_t skip, - int64_t limit, - const mongoc_read_prefs_t *read_prefs, - bson_error_t *error) - BSON_GNUC_DEPRECATED_FOR (mongoc_collection_count_documents or - mongoc_collection_estimated_document_count); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A \fBmongoc_query_flags_t\fP\&. -.IP \(bu 2 -\fBquery\fP: A \fI\%bson_t\fP containing the query. -.IP \(bu 2 -\fBskip\fP: A int64_t, zero to ignore. -.IP \(bu 2 -\fBlimit\fP: A int64_t, zero to ignore. -.IP \(bu 2 -\fBread_prefs\fP: A \fBmongoc_read_prefs_t\fP or \fBNULL\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall execute a count query on the underlying \(aqcollection\(aq. The bson \(aqquery\(aq is not validated, simply passed along as appropriate to the server. As such, compatibility and errors should be validated in the appropriate server documentation. -.sp -For more information, see the \fI\%query reference\fP at the MongoDB website. -.sp -The \fBmongoc_read_concern_t\fP specified on the \fBmongoc_collection_t\fP will be used, if any. If \fBread_prefs\fP is NULL, the collection\(aqs read preferences are used. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -\-1 on failure, otherwise the number of documents counted. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -print_query_count (mongoc_collection_t *collection, bson_t *query) -{ - bson_error_t error; - int64_t count; - - count = mongoc_collection_count ( - collection, MONGOC_QUERY_NONE, query, 0, 0, NULL, &error); - - if (count < 0) { - fprintf (stderr, "Count failed: %s\en", error.message); - } else { - printf ("%" PRId64 " documents counted.\en", count); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_documents.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_documents.3 deleted file mode 100644 index 8d52058..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_documents.3 +++ /dev/null @@ -1,163 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_COUNT_DOCUMENTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_count_documents \- mongoc_collection_count_documents() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_collection_count_documents (mongoc_collection_t *collection, - const bson_t *filter, - const bson_t *opts, - const mongoc_read_prefs_t *read_prefs, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBfilter\fP: A \fI\%bson_t\fP containing the filter. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP, \fBNULL\fP to ignore. -.IP \(bu 2 -\fBread_prefs\fP: A \fBmongoc_read_prefs_t\fP or \fBNULL\fP\&. -.IP \(bu 2 -\fBreply\fP: A location for an uninitialized \fI\%bson_t\fP to store the command reply, \fBNULL\fP to ignore. If not \fBNULL\fP, \fBreply\fP will be initialized. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.IP \(bu 2 -\fBskip\fP: An int specifying how many documents matching the \fBquery\fP should be skipped before counting. -.IP \(bu 2 -\fBlimit\fP: An int specifying the maximum number of documents to count. -.UNINDENT -.SH DESCRIPTION -.sp -This functions executes a count query on \fBcollection\fP\&. In contrast with \fBmongoc_collection_estimated_document_count()\fP, the count returned is guaranteed to be accurate. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -\-1 on failure, otherwise the number of documents counted. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -print_count (mongoc_collection_t *collection, bson_t *filter) -{ - bson_error_t error; - int64_t count; - bson_t* opts = BCON_NEW ("skip", BCON_INT64(5)); - - count = mongoc_collection_count_documents ( - collection, filter, opts, NULL, NULL, &error); - bson_destroy (opts); - - if (count < 0) { - fprintf (stderr, "Count failed: %s\en", error.message); - } else { - printf ("%" PRId64 " documents counted.\en", count); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH MIGRATING FROM DEPRECATED COUNT FUNCTIONS -.sp -When migrating to \fBmongoc_collection_count_documents\fP from the deprecated \fBmongoc_collection_count\fP or \fBmongoc_collection_count_with_opts\fP, the following query operators in the filter must be replaced: -.TS -center; -|l|l|. -_ -T{ -Operator -T} T{ -Replacement -T} -_ -T{ -$where -T} T{ -\fI\%$expr\fP -T} -_ -T{ -$near -T} T{ -\fI\%$geoWithin\fP with \fI\%$center\fP -T} -_ -T{ -$nearSphere -T} T{ -\fI\%$geoWithin\fP with \fI\%$centerSphere\fP -T} -_ -.TE -.sp -$expr requires MongoDB 3.6+ -.SH SEE ALSO -.sp -\fBmongoc_collection_estimated_document_count()\fP -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_with_opts.3 deleted file mode 100644 index 1a2b2b3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_count_with_opts.3 +++ /dev/null @@ -1,192 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_COUNT_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_count_with_opts \- mongoc_collection_count_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. -Use \fBmongoc_collection_count_documents\fP or \fBmongoc_collection_estimated_document_count\fP instead. -.sp -\fBmongoc_collection_count_documents\fP has similar performance to calling \fBmongoc_collection_count\fP with a non\-NULL \fBquery\fP, and is guaranteed to retrieve an accurate collection count. See migrating from deprecated count functions for details. -.sp -\fBmongoc_collection_estimated_document_count\fP has the same performance as calling \fBmongoc_collection_count\fP with a NULL \fBquery\fP, but is not guaranteed to retrieve an accurate collection count. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_collection_count_with_opts (mongoc_collection_t *collection, - mongoc_query_flags_t flags, - const bson_t *query, - int64_t skip, - int64_t limit, - const bson_t *opts, - const mongoc_read_prefs_t *read_prefs, - bson_error_t *error) - BSON_GNUC_DEPRECATED_FOR (mongoc_collection_count_documents or - mongoc_collection_estimated_document_count); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A \fBmongoc_query_flags_t\fP\&. -.IP \(bu 2 -\fBquery\fP: A \fI\%bson_t\fP containing the query. -.IP \(bu 2 -\fBskip\fP: A int64_t, zero to ignore. -.IP \(bu 2 -\fBlimit\fP: A int64_t, zero to ignore. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP, \fBNULL\fP to ignore. -.IP \(bu 2 -\fBread_prefs\fP: An optional \fBmongoc_read_prefs_t\fP, otherwise uses the collection\(aqs read preference. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall execute a count query on the underlying \(aqcollection\(aq. The bson \(aqquery\(aq is not validated, simply passed along as appropriate to the server. As such, compatibility and errors should be validated in the appropriate server documentation. -.sp -The \fBmongoc_read_concern_t\fP specified on the \fBmongoc_collection_t\fP will be used, if any. If \fBread_prefs\fP is NULL, the collection\(aqs read preferences are used. -.sp -In addition to the standard functionality available from mongoc_collection_count, this function allows the user to add arbitrary extra keys to the count. This pass through enables features such as hinting for counts. -.sp -For more information, see the \fI\%query reference\fP at the MongoDB website. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -\-1 on failure, otherwise the number of documents counted. -.SH EXAMPLES -Basic Counting.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -print_query_count (mongoc_collection_t *collection, bson_t *query) -{ - bson_error_t error; - int64_t count; - bson_t opts; - - bson_init (&opts); - BSON_APPEND_UTF8 (&opts, "hint", "_id_"); - - count = mongoc_collection_count_with_opts ( - collection, MONGOC_QUERY_NONE, query, 0, 0, &opts, NULL, &error); - - bson_destroy (&opts); - - if (count < 0) { - fprintf (stderr, "Count failed: %s\en", error.message); - } else { - printf ("%" PRId64 " documents counted.\en", count); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -Counting with Collation.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -print_query_count (mongoc_collection_t *collection, bson_t *query) -{ - bson_t *selector; - bson_t *opts; - bson_error_t error; - int64_t count; - - selector = BCON_NEW ("_id", "{", "$gt", BCON_UTF8 ("one"), "}"); - - /* "One" normally sorts before "one"; make "one" come first */ - opts = BCON_NEW ("collation", - "{", - "locale", - BCON_UTF8 ("en_US"), - "caseFirst", - BCON_UTF8 ("lower"), - "}"); - - count = mongoc_collection_count_with_opts ( - collection, MONGOC_QUERY_NONE, query, 0, 0, opts, NULL, &error); - - bson_destroy (selector); - bson_destroy (opts); - - if (count < 0) { - fprintf (stderr, "Count failed: %s\en", error.message); - } else { - printf ("%" PRId64 " documents counted.\en", count); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation.3 deleted file mode 100644 index fbbbc89..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation.3 +++ /dev/null @@ -1,97 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_CREATE_BULK_OPERATION" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_create_bulk_operation \- mongoc_collection_create_bulk_operation() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_bulk_operation_t * -mongoc_collection_create_bulk_operation ( - mongoc_collection_t *collection, - bool ordered, - const mongoc_write_concern_t *write_concern) BSON_GNUC_WARN_UNUSED_RESULT - BSON_GNUC_DEPRECATED_FOR (mongoc_collection_create_bulk_operation_with_opts); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. -.sp -Please use \fBmongoc_collection_create_bulk_operation_with_opts()\fP instead. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBordered\fP: If the operations must be performed in order. -.IP \(bu 2 -\fBwrite_concern\fP: An optional \fBmongoc_write_concern_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall begin a new bulk operation. After creating this you may call various functions such as \fBmongoc_bulk_operation_update()\fP, \fBmongoc_bulk_operation_insert()\fP and others. -.sp -After calling \fBmongoc_bulk_operation_execute()\fP the commands will be executed in as large as batches as reasonable by the client. -.sp -If \fBordered\fP is true, then processing will stop at the first error. -.sp -If \fBordered\fP is not true, then the bulk operation will attempt to continue processing even after the first failure. -.sp -\fBwrite_concern\fP contains the write concern for all operations in the bulk operation. If \fBNULL\fP, the collection\(aqs write concern is used. The global default is acknowledged writes: MONGOC_WRITE_CONCERN_W_DEFAULT. -.SH SEE ALSO -.sp -\fBBulk Write Operations\fP -.sp -\fBmongoc_bulk_operation_t\fP -.SH ERRORS -.sp -Errors are propagated when executing the bulk operation. -.SH RETURNS -.sp -A newly allocated \fBmongoc_bulk_operation_t\fP that should be freed with \fBmongoc_bulk_operation_destroy()\fP when no longer in use. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -Failure to handle the result of this function is a programming error. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation_with_opts.3 deleted file mode 100644 index 8856e8b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_bulk_operation_with_opts.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_CREATE_BULK_OPERATION_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_create_bulk_operation_with_opts \- mongoc_collection_create_bulk_operation_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_bulk_operation_t * -mongoc_collection_create_bulk_operation_with_opts ( - mongoc_collection_t *collection, - const bson_t *opts) BSON_GNUC_WARN_UNUSED_RESULT; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBordered\fP: set to \fBfalse\fP to attempt to insert all documents, continuing after errors. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall begin a new bulk operation. After creating this you may call various functions such as \fBmongoc_bulk_operation_update()\fP, \fBmongoc_bulk_operation_insert()\fP and others. -.sp -After calling \fBmongoc_bulk_operation_execute()\fP the commands will be executed in as large as batches as reasonable by the client. -.SH SEE ALSO -.sp -\fBBulk Write Operations\fP -.sp -\fBmongoc_bulk_operation_t\fP -.SH ERRORS -.sp -Errors are propagated when executing the bulk operation. -.SH RETURNS -.sp -A newly allocated \fBmongoc_bulk_operation_t\fP that should be freed with \fBmongoc_bulk_operation_destroy()\fP when no longer in use. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -Failure to handle the result of this function is a programming error. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index.3 deleted file mode 100644 index e1cdca3..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_CREATE_INDEX" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_create_index \- mongoc_collection_create_index() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_create_index (mongoc_collection_t *collection, - const bson_t *keys, - const mongoc_index_opt_t *opt, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. See create\-indexes\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBkeys\fP: A \fI\%bson_t\fP\&. -.IP \(bu 2 -\fBopt\fP: A mongoc_index_opt_t. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index_with_opts.3 deleted file mode 100644 index a95dc30..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_create_index_with_opts.3 +++ /dev/null @@ -1,97 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_CREATE_INDEX_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_create_index_with_opts \- mongoc_collection_create_index_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_create_index_with_opts (mongoc_collection_t *collection, - const bson_t *keys, - const mongoc_index_opt_t *index_opts, - const bson_t *command_opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. See create\-indexes\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBkeys\fP: A \fI\%bson_t\fP\&. -.IP \(bu 2 -\fBindex_opts\fP: A mongoc_index_opt_t. -.IP \(bu 2 -\fBreply\fP: An optional location for a \fI\%bson_t\fP which will store the server\(aqs reply. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBcommand_opts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function will request the creation of a new index. -.sp -This function will use the \fBcreateIndexes\fP command. -The server\(aqs reply is stored in \fBreply\fP\&. -.sp -If no write concern is provided in \fBcommand_opts\fP, the collection\(aqs write concern is used. -.sp -See \fBmongoc_index_opt_t\fP for options on creating indexes. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -\fBreply\fP is always initialized and must be destroyed with \fI\%bson_destroy()\fP\&. If the server is running an obsolete version of MongoDB then \fBreply\fP may be empty, though it will still be initialized. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete.3 deleted file mode 100644 index 2b9cf4b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete.3 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DELETE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_delete \- mongoc_collection_delete() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_delete (mongoc_collection_t *collection, - mongoc_delete_flags_t flags, - const bson_t *selector, - const mongoc_write_concern_t *write_concern, - bson_error_t *error) - BSON_GNUC_DEPRECATED_FOR (mongoc_collection_delete_one or - mongoc_collection_delete_many); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DEPRECATED -.sp -Please use \fBmongoc_collection_delete_one()\fP or \fBmongoc_collection_delete_many()\fP instead. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A \fBmongoc_delete_flags_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP containing the query to match documents. -.IP \(bu 2 -\fBwrite_concern\fP: A \fBmongoc_write_concern_t\fP or \fBNULL\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall delete documents in the given \fBcollection\fP that match \fBselector\fP\&. The bson \fBselector\fP is not validated, simply passed along as appropriate to the server. As such, compatibility and errors should be validated in the appropriate server documentation. -.sp -If you want to limit deletes to a single document, provide \fBMONGOC_DELETE_SINGLE_REMOVE\fP in \fBflags\fP\&. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.sp -A write concern timeout or write concern error is considered a failure. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_many.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_many.3 deleted file mode 100644 index d4e7293..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_many.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DELETE_MANY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_delete_many \- mongoc_collection_delete_many() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_delete_many (mongoc_collection_t *collection, - const bson_t *selector, - const bson_t *opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP containing the query to match documents. -.IP \(bu 2 -\fBreply\fP: Optional. An uninitialized \fI\%bson_t\fP populated with the delete result, or \fBNULL\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBvalidate\fP: Construct a bitwise\-or of all desired \fI\%bson_validate_flags_t\fP\&. Set to \fBfalse\fP to skip client\-side validation of the provided BSON documents. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.UNINDENT -.SH DESCRIPTION -.sp -This function removes all documents in the given \fBcollection\fP that match \fBselector\fP\&. -.sp -To delete at most one matching document, use \fBmongoc_collection_delete_one\fP\&. -.sp -If you pass a non\-NULL \fBreply\fP, it is filled out with the field "deletedCount". If there is a server error then \fBreply\fP contains either a "writeErrors" array with one subdocument or a "writeConcernErrors" array. The reply must be freed with \fI\%bson_destroy()\fP\&. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_one.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_one.3 deleted file mode 100644 index 7d88427..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_delete_one.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DELETE_ONE" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_delete_one \- mongoc_collection_delete_one() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_delete_one (mongoc_collection_t *collection, - const bson_t *selector, - const bson_t *opts, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBselector\fP: A \fI\%bson_t\fP containing the query to match documents. -.IP \(bu 2 -\fBreply\fP: Optional. An uninitialized \fI\%bson_t\fP populated with the delete result, or \fBNULL\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBvalidate\fP: Construct a bitwise\-or of all desired \fI\%bson_validate_flags_t\fP\&. Set to \fBfalse\fP to skip client\-side validation of the provided BSON documents. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.UNINDENT -.SH DESCRIPTION -.sp -This function removes at most one document in the given \fBcollection\fP that matches \fBselector\fP\&. -.sp -To delete all matching documents, use \fBmongoc_collection_delete_many\fP\&. -.sp -If you pass a non\-NULL \fBreply\fP, it is filled out with the field "deletedCount". If there is a server error then \fBreply\fP contains either a "writeErrors" array with one subdocument or a "writeConcernErrors" array. The reply must be freed with \fI\%bson_destroy()\fP\&. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_destroy.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_destroy.3 deleted file mode 100644 index eae4c7b..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_destroy.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DESTROY" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_destroy \- mongoc_collection_destroy() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -void -mongoc_collection_destroy (mongoc_collection_t *collection); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall destroy a \fBmongoc_collection_t\fP and its associated resources. Does nothing if \fBcollection\fP is NULL. -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -Always destroy a \fBmongoc_cursor_t\fP created from a collection before destroying the collection. -.UNINDENT -.UNINDENT -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop.3 deleted file mode 100644 index 2b006bb..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DROP" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_drop \- mongoc_collection_drop() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_drop (mongoc_collection_t *collection, bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -For more information, see \fBmongoc_collection_drop_with_opts()\fP\&. This function is a thin wrapper, passing \fBNULL\fP in as \fI\%bson_t\fP parameter. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index.3 deleted file mode 100644 index 3d7fbb9..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DROP_INDEX" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_drop_index \- mongoc_collection_drop_index() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_drop_index (mongoc_collection_t *collection, - const char *index_name, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBindex_name\fP: A string containing the name of the index. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH DESCRIPTION -.sp -For more information, see \fBmongoc_collection_drop_with_opts()\fP\&. This function is a thin wrapper, passing \fBNULL\fP in as \fI\%bson_t\fP parameter. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index_with_opts.3 deleted file mode 100644 index 28ef219..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_index_with_opts.3 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DROP_INDEX_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_drop_index_with_opts \- mongoc_collection_drop_index_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_drop_index_with_opts (mongoc_collection_t *collection, - const char *index_name, - const bson_t *opts, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBindex_name\fP: A string containing the name of the index. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.SH DESCRIPTION -.sp -This function requests than an index on \fBcollection\fP be dropped. -.sp -If no write concern is provided in \fBopts\fP, the collection\(aqs write concern is used. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns \fBtrue\fP if successful. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_with_opts.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_with_opts.3 deleted file mode 100644 index 782c885..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_drop_with_opts.3 +++ /dev/null @@ -1,117 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_DROP_WITH_OPTS" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_drop_with_opts \- mongoc_collection_drop_with_opts() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_drop_with_opts (mongoc_collection_t *collection, - bson_t *opts, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBwriteConcern\fP: Construct a \fBmongoc_write_concern_t\fP and use \fBmongoc_write_concern_append\fP to add the write concern to \fBopts\fP\&. See the example code for \fBmongoc_client_write_command_with_opts\fP\&. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.UNINDENT -.SH DESCRIPTION -.sp -This function requests that a \fBcollection\fP be dropped, including all indexes associated with the \fBcollection\fP\&. -.sp -If no write concern is provided in \fBopts\fP, the collection\(aqs write concern is used. -.sp -If the collection does not exist, the server responds with an "ns not found" error. It is safe to ignore this error; set the Error API Version to 2 and ignore server error code 26: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_client_t *client; -mongoc_collection_t *collection; -bson_error_t error; -bool r; - -client = mongoc_client_new (NULL); -mongoc_client_set_error_api (client, 2); -collection = mongoc_client_get_collection (client, "db", "collection"); -r = mongoc_collection_drop_with_opts (collection, NULL /* opts */, &error); -if (r) { - printf ("Dropped.\en"); -} else { - printf ("Error message: %s\en", error.message); - if (error.domain == MONGOC_ERROR_SERVER && error.code == 26) { - printf ("Ignoring \(aqns not found\(aq error\en"); - } else { - fprintf (stderr, "Unrecognized error!\en"); - } -} - -mongoc_collection_destroy (collection); -mongoc_client_destroy (client); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -In MongoDB 3.0 and older, the "ns not found" error code is the generic MONGOC_ERROR_QUERY_FAILURE; in this case check whether the error message is equal to the string "ns not found". -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -Returns true if the collection was successfully dropped. Returns \fBfalse\fP and sets \fBerror\fP if there are invalid arguments or a server or network error. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_ensure_index.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_ensure_index.3 deleted file mode 100644 index 2fb3297..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_ensure_index.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_ENSURE_INDEX" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_ensure_index \- mongoc_collection_ensure_index() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -bool -mongoc_collection_ensure_index (mongoc_collection_t *collection, - const bson_t *keys, - const mongoc_index_opt_t *opt, - bson_error_t *error) - BSON_GNUC_DEPRECATED; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. See create\-indexes\&. -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBkeys\fP: A \fI\%bson_t\fP\&. -.IP \(bu 2 -\fBopt\fP: A mongoc_index_opt_t. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_estimated_document_count.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_estimated_document_count.3 deleted file mode 100644 index 6a30402..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_estimated_document_count.3 +++ /dev/null @@ -1,126 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_ESTIMATED_DOCUMENT_COUNT" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_estimated_document_count \- mongoc_collection_estimated_document_count() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -int64_t -mongoc_collection_estimated_document_count (mongoc_collection_t *collection, - const bson_t *opts, - const mongoc_read_prefs_t *read_prefs, - bson_t *reply, - bson_error_t *error); -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBopts\fP: A \fI\%bson_t\fP, \fBNULL\fP to ignore. -.IP \(bu 2 -\fBread_prefs\fP: A \fBmongoc_read_prefs_t\fP or \fBNULL\fP\&. -.IP \(bu 2 -\fBreply\fP: A location for an uninitialized \fI\%bson_t\fP to store the command reply, \fBNULL\fP to ignore. If not \fBNULL\fP, \fBreply\fP will be initialized. -.IP \(bu 2 -\fBerror\fP: An optional location for a \fBbson_error_t\fP or \fBNULL\fP\&. -.UNINDENT -.sp -\fBopts\fP may be NULL or a BSON document with additional command options: -.INDENT 0.0 -.IP \(bu 2 -\fBreadConcern\fP: Construct a \fBmongoc_read_concern_t\fP and use \fBmongoc_read_concern_append\fP to add the read concern to \fBopts\fP\&. See the example code for \fBmongoc_client_read_command_with_opts\fP\&. Read concern requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBsessionId\fP: First, construct a \fBmongoc_client_session_t\fP with \fBmongoc_client_start_session\fP\&. You can begin a transaction with \fBmongoc_client_session_start_transaction\fP, optionally with a \fBmongoc_transaction_opt_t\fP that overrides the options inherited from \fBcollection\fP, and use \fBmongoc_client_session_append\fP to add the session to \fBopts\fP\&. See the example code for \fBmongoc_client_session_t\fP\&. -.IP \(bu 2 -\fBcollation\fP: Configure textual comparisons. See Setting Collation Order, and \fI\%the MongoDB Manual entry on Collation\fP\&. Collation requires MongoDB 3.2 or later, otherwise an error is returned. -.IP \(bu 2 -\fBserverId\fP: To target a specific server, include an int32 "serverId" field. Obtain the id by calling \fBmongoc_client_select_server\fP, then \fBmongoc_server_description_id\fP on its return value. -.IP \(bu 2 -\fBskip\fP: An int specifying how many documents matching the \fBquery\fP should be skipped before counting. -.IP \(bu 2 -\fBlimit\fP: An int specifying the maximum number of documents to count. -.UNINDENT -.SH DESCRIPTION -.sp -This functions executes a count query on \fBcollection\fP\&. In contrast with \fBmongoc_collection_count_documents()\fP, the count returned is \fInot\fP guaranteed to be accurate. -.SH ERRORS -.sp -Errors are propagated via the \fBerror\fP parameter. -.SH RETURNS -.sp -\-1 on failure, otherwise the number of documents counted. -.SH EXAMPLE -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -print_count (mongoc_collection_t *collection, bson_t *query) -{ - bson_error_t error; - int64_t count; - bson_t* opts = BCON_NEW ("skip", BCON_INT64(5)); - - count = mongoc_collection_estimated_document_count ( - collection, opts, NULL, NULL, &error); - bson_destroy (opts); - - if (count < 0) { - fprintf (stderr, "Count failed: %s\en", error.message); - } else { - printf ("%" PRId64 " documents counted.\en", count); - } -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH SEE ALSO -.sp -\fBmongoc_collection_count_documents()\fP -.SH AUTHOR -MongoDB, Inc -.SH COPYRIGHT -2017-present, MongoDB, Inc -.\" Generated by docutils manpage writer. -. diff --git a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find.3 b/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find.3 deleted file mode 100644 index 6e12c54..0000000 --- a/contrib/mongoc/mongo-c-driver-1.13.1/src/libmongoc/doc/man/mongoc_collection_find.3 +++ /dev/null @@ -1,238 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "MONGOC_COLLECTION_FIND" "3" "Jan 24, 2019" "1.13.1" "MongoDB C Driver" -.SH NAME -mongoc_collection_find \- mongoc_collection_find() -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH DEPRECATED -.sp -This function is deprecated and should not be used in new code. -.sp -Use the more convenient \fBmongoc_collection_find_with_opts\fP instead. -.SH SYNOPSIS -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -mongoc_cursor_t * -mongoc_collection_find (mongoc_collection_t *collection, - mongoc_query_flags_t flags, - uint32_t skip, - uint32_t limit, - uint32_t batch_size, - const bson_t *query, - const bson_t *fields, - const mongoc_read_prefs_t *read_prefs) - BSON_GNUC_DEPRECATED_FOR (mongoc_collection_find_with_opts) - BSON_GNUC_WARN_UNUSED_RESULT; -.ft P -.fi -.UNINDENT -.UNINDENT -.SH PARAMETERS -.INDENT 0.0 -.IP \(bu 2 -\fBcollection\fP: A \fBmongoc_collection_t\fP\&. -.IP \(bu 2 -\fBflags\fP: A \fBmongoc_query_flags_t\fP\&. -.IP \(bu 2 -\fBskip\fP: A uint32_t of number of documents to skip or 0. -.IP \(bu 2 -\fBlimit\fP: A uint32_t of max number of documents to return or 0. -.IP \(bu 2 -\fBbatch_size\fP: A uint32_t containing batch size of document result sets or 0 for default. Default is 100. -.IP \(bu 2 -\fBquery\fP: A \fI\%bson_t\fP containing the query and options to execute. -.IP \(bu 2 -\fBfields\fP: A \fI\%bson_t\fP containing fields to return or \fBNULL\fP\&. -.IP \(bu 2 -\fBread_prefs\fP: A \fBmongoc_read_prefs_t\fP or \fBNULL\fP for default read preferences. -.UNINDENT -.SH DESCRIPTION -.sp -This function shall execute a query on the underlying \fBcollection\fP\&. -.sp -If no options are necessary, \fBquery\fP can simply contain a query such as \fB{a:1}\fP\&. If you would like to specify options such as a sort order, the query must be placed inside of \fB{"$query": {}}\fP\&. See the example below for how to properly specify additional options to \fBquery\fP\&. -.SH RETURNS -.sp -A newly allocated \fBmongoc_cursor_t\fP that should be freed with \fBmongoc_cursor_destroy()\fP when no longer in use. -.SH EXAMPLE -Print All Documents in a Collection.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -#include -#include -#include - -static void -print_all_documents (mongoc_collection_t *collection) -{ - mongoc_cursor_t *cursor; - bson_error_t error; - const bson_t *doc; - char *str; - bson_t *query; - - query = BCON_NEW ("$query", - "{", - "foo", - BCON_INT32 (1), - "}", - "$orderby", - "{", - "bar", - BCON_INT32 (\-1), - "}"); - cursor = mongoc_collection_find ( - collection, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL); - - while (mongoc_cursor_next (cursor, &doc)) { - str = bson_as_canonical_extended_json (doc, NULL); - printf ("%s\en", str); - bson_free (str); - } - - if (mongoc_cursor_error (cursor, &error)) { - fprintf (stderr, "An error occurred: %s\en", error.message); - } - - mongoc_cursor_destroy (cursor); - bson_destroy (query); -} -.ft P -.fi -.UNINDENT -.UNINDENT -.SH THE "FIND" COMMAND -.sp -Queries have historically been sent as OP_QUERY wire protocol messages, but beginning in MongoDB 3.2 queries use \fI\%the "find" command\fP instead. -.sp -The driver automatically converts queries to the new "find" command syntax if needed, so this change is typically invisible to C Driver users. However, an application written exclusively for MongoDB 3.2 and later can choose to use the new syntax directly instead of relying on the driver to convert from the old syntax: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/* MongoDB 3.2+ "find" command syntax */ -query = BCON_NEW ("filter", - "{", - "foo", - BCON_INT32 (1), - "}", - "sort", - "{", - "bar", - BCON_INT32 (\-1), - "}"); -cursor = mongoc_collection_find ( - collection, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL); -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The "find" command takes different options from the traditional OP_QUERY message. -.TS -center; -|l|l|l|. -_ -T{ -Query -T} T{ -\fB$query\fP -T} T{ -\fBfilter\fP -T} -_ -T{ -Sort -T} T{ -\fB$orderby\fP -T} T{ -\fBsort\fP -T} -_ -T{ -Show record location -T} T{ -\fB$showDiskLoc\fP -T} T{ -\fBshowRecordId\fP -T} -_ -T{ -Other $\-options -T} T{ -\fB$

    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