Skip to content

Commit e80123f

Browse files
committed
CXX-1312 Eliminate warnings generated by compiler
1 parent 002acde commit e80123f

File tree

22 files changed

+164
-120
lines changed

22 files changed

+164
-120
lines changed

.mci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ variables:
2828

2929
## cmake flag variables
3030
cmake_flags:
31-
linux_cmake_flags: &linux_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-error=missing-field-initializers" -DCMAKE_CXX_FLAGS="-Wall -Wextra -Wconversion -Wnarrowing -Wno-expansion-to-defined -pedantic -Werror -Wno-error=missing-field-initializers"
32-
osx_cmake_flags: &osx_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-error=missing-field-initializers" -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Wall -Wextra -Wconversion -Wnarrowing -pedantic -Werror"
33-
asan_cmake_flags: &asan_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-error=missing-field-initializers" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -O1 -g -fno-omit-frame-pointer -Wall -Wextra -Wconversion -Wnarrowing -pedantic -Werror"
34-
ubsan_cmake_flags: &ubsan_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-error=missing-field-initializers" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=undefined -fsanitize-blacklist=$(pwd)/etc/ubsan.blacklist -fno-sanitize-recover=undefined -O1 -g -fno-omit-frame-pointer -Wall -Wextra -Wconversion -Wnarrowing -pedantic -Werror"
31+
linux_cmake_flags: &linux_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-missing-field-initializers" -DCMAKE_CXX_FLAGS="-Wall -Wextra -Wconversion -Wnarrowing -Wno-expansion-to-defined -pedantic -Werror -Wno-missing-field-initializers"
32+
osx_cmake_flags: &osx_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-missing-field-initializers" -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Wall -Wextra -Wconversion -Wnarrowing -pedantic -Werror"
33+
asan_cmake_flags: &asan_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-missing-field-initializers" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=address -O1 -g -fno-omit-frame-pointer -Wall -Wextra -Wconversion -Wnarrowing -pedantic -Werror"
34+
ubsan_cmake_flags: &ubsan_cmake_flags -DCMAKE_C_FLAGS="-Wall -Wextra -Wno-attributes -Werror -Wno-missing-field-initializers" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -fsanitize=undefined -fsanitize-blacklist=$(pwd)/etc/ubsan.blacklist -fno-sanitize-recover=undefined -O1 -g -fno-omit-frame-pointer -Wall -Wextra -Wconversion -Wnarrowing -pedantic -Werror"
3535
windows_cmake_flags: &windows_cmake_flags -G "Visual Studio 14 2015 Win64" -DBOOST_ROOT=c:/local/boost_1_60_0
3636

3737
example_projects_cc:

examples/mongocxx/gridfs.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ int main() {
6060
auto bytes_counter = 0;
6161

6262
auto buffer_size = std::min(file_length, static_cast<std::int64_t>(downloader.chunk_size()));
63-
auto buffer = make_unique<std::uint8_t[]>(buffer_size);
63+
auto buffer = make_unique<std::uint8_t[]>(static_cast<std::size_t>(buffer_size));
6464

65-
while (auto length_read = downloader.read(buffer.get(), buffer_size)) {
66-
bytes_counter += length_read;
65+
while (auto length_read =
66+
downloader.read(buffer.get(), static_cast<std::size_t>(buffer_size))) {
67+
bytes_counter += static_cast<std::int32_t>(length_read);
6768

6869
// Do something with the contents of buffer.
6970
}

examples/mongocxx/pool.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@ int main() {
4545
auto run = [&](std::int64_t j) {
4646
// Each client and collection can only be used in a single thread.
4747
auto client = pool.acquire();
48-
auto coll = (*client)["test"][collection_names[j]];
48+
auto coll = (*client)["test"][collection_names[static_cast<std::size_t>(j)]];
4949
coll.delete_many({});
5050

5151
bsoncxx::types::b_int64 index = {j};
5252
coll.insert_one(bsoncxx::builder::basic::make_document(kvp("x", index)));
5353

54-
if (auto doc = (*client)["test"][collection_names[j]].find_one({})) {
54+
if (auto doc =
55+
(*client)["test"][collection_names[static_cast<std::size_t>(j)]].find_one({})) {
5556
// In order to ensure that the newline is printed immediately after the document,
5657
// they need to be streamed to std::cout as a single string.
5758
std::stringstream ss;

src/bsoncxx/builder/core.cpp

Lines changed: 59 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,12 @@ class core::impl {
119119
}
120120
}
121121

122-
void push_back_document(const char* key, std::size_t len) {
122+
void push_back_document(const char* key, std::int32_t len) {
123123
_depth++;
124124
_stack.emplace_back(back(), key, len, false);
125125
}
126126

127-
void push_back_array(const char* key, std::size_t len) {
127+
void push_back_array(const char* key, std::int32_t len) {
128128
_depth++;
129129
_stack.emplace_back(back(), key, len, true);
130130
}
@@ -138,7 +138,8 @@ class core::impl {
138138
// to be appended to start a new key/value pair.
139139
stdx::string_view next_key() {
140140
if (is_array()) {
141-
_itoa_key = _stack.empty() ? _n++ : _stack.back().n++;
141+
_itoa_key = _stack.empty() ? static_cast<std::uint32_t>(_n++)
142+
: static_cast<std::uint32_t>(_stack.back().n++);
142143
_user_key_view = stdx::string_view{_itoa_key.c_str(), _itoa_key.length()};
143144
} else if (!_has_user_key) {
144145
throw bsoncxx::exception{error_code::k_need_key};
@@ -200,7 +201,7 @@ class core::impl {
200201

201202
private:
202203
struct frame {
203-
frame(bson_t* parent, const char* key, std::size_t len, bool is_array)
204+
frame(bson_t* parent, const char* key, std::int32_t len, bool is_array)
204205
: n(0), is_array(is_array), parent(parent) {
205206
if (is_array) {
206207
bson_append_array_begin(parent, key, len, &bson);
@@ -269,16 +270,20 @@ core& core::key_owned(std::string key) {
269270
core& core::append(const types::b_double& value) {
270271
stdx::string_view key = _impl->next_key();
271272

272-
bson_append_double(_impl->back(), key.data(), key.length(), value.value);
273+
bson_append_double(
274+
_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), value.value);
273275

274276
return *this;
275277
}
276278

277279
core& core::append(const types::b_utf8& value) {
278280
stdx::string_view key = _impl->next_key();
279281

280-
bson_append_utf8(
281-
_impl->back(), key.data(), key.length(), value.value.data(), value.value.length());
282+
bson_append_utf8(_impl->back(),
283+
key.data(),
284+
static_cast<std::int32_t>(key.length()),
285+
value.value.data(),
286+
static_cast<std::int32_t>(value.value.length()));
282287

283288
return *this;
284289
}
@@ -288,7 +293,7 @@ core& core::append(const types::b_document& value) {
288293
bson_t bson;
289294
bson_init_static(&bson, value.value.data(), value.value.length());
290295

291-
bson_append_document(_impl->back(), key.data(), key.length(), &bson);
296+
bson_append_document(_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), &bson);
292297

293298
return *this;
294299
}
@@ -298,7 +303,7 @@ core& core::append(const types::b_array& value) {
298303
bson_t bson;
299304
bson_init_static(&bson, value.value.data(), value.value.length());
300305

301-
bson_append_array(_impl->back(), key.data(), key.length(), &bson);
306+
bson_append_array(_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), &bson);
302307

303308
return *this;
304309
}
@@ -308,7 +313,7 @@ core& core::append(const types::b_binary& value) {
308313

309314
bson_append_binary(_impl->back(),
310315
key.data(),
311-
key.length(),
316+
static_cast<std::int32_t>(key.length()),
312317
static_cast<bson_subtype_t>(value.sub_type),
313318
value.bytes,
314319
value.size);
@@ -319,7 +324,7 @@ core& core::append(const types::b_binary& value) {
319324
core& core::append(const types::b_undefined&) {
320325
stdx::string_view key = _impl->next_key();
321326

322-
bson_append_undefined(_impl->back(), key.data(), key.length());
327+
bson_append_undefined(_impl->back(), key.data(), static_cast<std::int32_t>(key.length()));
323328

324329
return *this;
325330
}
@@ -329,31 +334,33 @@ core& core::append(const types::b_oid& value) {
329334
bson_oid_t oid;
330335
std::memcpy(&oid.bytes, value.value.bytes(), sizeof(oid.bytes));
331336

332-
bson_append_oid(_impl->back(), key.data(), key.length(), &oid);
337+
bson_append_oid(_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), &oid);
333338

334339
return *this;
335340
}
336341

337342
core& core::append(const types::b_bool& value) {
338343
stdx::string_view key = _impl->next_key();
339344

340-
bson_append_bool(_impl->back(), key.data(), key.length(), value.value);
345+
bson_append_bool(
346+
_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), value.value);
341347

342348
return *this;
343349
}
344350

345351
core& core::append(const types::b_date& value) {
346352
stdx::string_view key = _impl->next_key();
347353

348-
bson_append_date_time(_impl->back(), key.data(), key.length(), value.to_int64());
354+
bson_append_date_time(
355+
_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), value.to_int64());
349356

350357
return *this;
351358
}
352359

353360
core& core::append(const types::b_null&) {
354361
stdx::string_view key = _impl->next_key();
355362

356-
bson_append_null(_impl->back(), key.data(), key.length());
363+
bson_append_null(_impl->back(), key.data(), static_cast<std::int32_t>(key.length()));
357364

358365
return *this;
359366
}
@@ -363,7 +370,7 @@ core& core::append(const types::b_regex& value) {
363370

364371
bson_append_regex(_impl->back(),
365372
key.data(),
366-
key.length(),
373+
static_cast<std::int32_t>(key.length()),
367374
value.regex.to_string().data(),
368375
value.options.to_string().data());
369376

@@ -376,25 +383,34 @@ core& core::append(const types::b_dbpointer& value) {
376383
bson_oid_t oid;
377384
std::memcpy(&oid.bytes, value.value.bytes(), sizeof(oid.bytes));
378385

379-
bson_append_dbpointer(
380-
_impl->back(), key.data(), key.length(), value.collection.to_string().data(), &oid);
386+
bson_append_dbpointer(_impl->back(),
387+
key.data(),
388+
static_cast<std::int32_t>(key.length()),
389+
value.collection.to_string().data(),
390+
&oid);
381391

382392
return *this;
383393
}
384394

385395
core& core::append(const types::b_code& value) {
386396
stdx::string_view key = _impl->next_key();
387397

388-
bson_append_code(_impl->back(), key.data(), key.length(), value.code.to_string().data());
398+
bson_append_code(_impl->back(),
399+
key.data(),
400+
static_cast<std::int32_t>(key.length()),
401+
value.code.to_string().data());
389402

390403
return *this;
391404
}
392405

393406
core& core::append(const types::b_symbol& value) {
394407
stdx::string_view key = _impl->next_key();
395408

396-
bson_append_symbol(
397-
_impl->back(), key.data(), key.length(), value.symbol.data(), value.symbol.length());
409+
bson_append_symbol(_impl->back(),
410+
key.data(),
411+
static_cast<std::int32_t>(key.length()),
412+
value.symbol.data(),
413+
static_cast<std::int32_t>(value.symbol.length()));
398414

399415
return *this;
400416
}
@@ -405,33 +421,41 @@ core& core::append(const types::b_codewscope& value) {
405421
bson_t bson;
406422
bson_init_static(&bson, value.scope.data(), value.scope.length());
407423

408-
bson_append_code_with_scope(
409-
_impl->back(), key.data(), key.length(), value.code.to_string().data(), &bson);
424+
bson_append_code_with_scope(_impl->back(),
425+
key.data(),
426+
static_cast<std::int32_t>(key.length()),
427+
value.code.to_string().data(),
428+
&bson);
410429

411430
return *this;
412431
}
413432

414433
core& core::append(const types::b_int32& value) {
415434
stdx::string_view key = _impl->next_key();
416435

417-
bson_append_int32(_impl->back(), key.data(), key.length(), value.value);
436+
bson_append_int32(
437+
_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), value.value);
418438

419439
return *this;
420440
}
421441

422442
core& core::append(const types::b_timestamp& value) {
423443
stdx::string_view key = _impl->next_key();
424444

425-
bson_append_timestamp(
426-
_impl->back(), key.data(), key.length(), value.increment, value.timestamp);
445+
bson_append_timestamp(_impl->back(),
446+
key.data(),
447+
static_cast<std::int32_t>(key.length()),
448+
value.increment,
449+
value.timestamp);
427450

428451
return *this;
429452
}
430453

431454
core& core::append(const types::b_int64& value) {
432455
stdx::string_view key = _impl->next_key();
433456

434-
bson_append_int64(_impl->back(), key.data(), key.length(), value.value);
457+
bson_append_int64(
458+
_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), value.value);
435459

436460
return *this;
437461
}
@@ -442,23 +466,24 @@ core& core::append(const types::b_decimal128& value) {
442466
d128.high = value.value.high();
443467
d128.low = value.value.low();
444468

445-
bson_append_decimal128(_impl->back(), key.data(), key.length(), &d128);
469+
bson_append_decimal128(
470+
_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), &d128);
446471

447472
return *this;
448473
}
449474

450475
core& core::append(const types::b_minkey&) {
451476
stdx::string_view key = _impl->next_key();
452477

453-
bson_append_minkey(_impl->back(), key.data(), key.length());
478+
bson_append_minkey(_impl->back(), key.data(), static_cast<std::int32_t>(key.length()));
454479

455480
return *this;
456481
}
457482

458483
core& core::append(const types::b_maxkey&) {
459484
stdx::string_view key = _impl->next_key();
460485

461-
bson_append_maxkey(_impl->back(), key.data(), key.length());
486+
bson_append_maxkey(_impl->back(), key.data(), static_cast<std::int32_t>(key.length()));
462487

463488
return *this;
464489
}
@@ -526,15 +551,15 @@ core& core::append(bool value) {
526551
core& core::open_document() {
527552
stdx::string_view key = _impl->next_key();
528553

529-
_impl->push_back_document(key.data(), key.length());
554+
_impl->push_back_document(key.data(), static_cast<std::int32_t>(key.length()));
530555

531556
return *this;
532557
}
533558

534559
core& core::open_array() {
535560
stdx::string_view key = _impl->next_key();
536561

537-
_impl->push_back_array(key.data(), key.length());
562+
_impl->push_back_array(key.data(), static_cast<std::int32_t>(key.length()));
538563

539564
return *this;
540565
}
@@ -550,7 +575,8 @@ core& core::concatenate(const bsoncxx::document::view& view) {
550575
while (bson_iter_next(&iter)) {
551576
stdx::string_view key = _impl->next_key();
552577

553-
bson_append_iter(_impl->back(), key.data(), key.length(), &iter);
578+
bson_append_iter(
579+
_impl->back(), key.data(), static_cast<std::int32_t>(key.length()), &iter);
554580
}
555581

556582
} else {

src/bsoncxx/json.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ std::string BSONCXX_CALL to_json(document::view view) {
6060

6161
document::value BSONCXX_CALL from_json(stdx::string_view json) {
6262
bson_error_t error;
63-
bson_t* result =
64-
bson_new_from_json(reinterpret_cast<const uint8_t*>(json.data()), json.size(), &error);
63+
bson_t* result = bson_new_from_json(reinterpret_cast<const uint8_t*>(json.data()),
64+
static_cast<std::int32_t>(json.size()),
65+
&error);
6566

6667
if (!result)
6768
throw exception(error_code::k_json_parse_failure, error.message);

src/bsoncxx/private/b64_ntop.hh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ BSONCXX_INLINE int ntop(std::uint8_t const* src,
135135
input[2] = *src++;
136136
srclength -= 3;
137137

138-
output[0] = input[0] >> 2;
139-
output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
140-
output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
138+
output[0] = static_cast<std::uint8_t>(input[0] >> 2);
139+
output[1] = static_cast<std::uint8_t>(((input[0] & 0x03) << 4) + (input[1] >> 4));
140+
output[2] = static_cast<std::uint8_t>(((input[1] & 0x0f) << 2) + (input[2] >> 6));
141141
output[3] = input[2] & 0x3f;
142142
BSONCXX_B64_ASSERT(output[0] < 64);
143143
BSONCXX_B64_ASSERT(output[1] < 64);
@@ -161,9 +161,9 @@ BSONCXX_INLINE int ntop(std::uint8_t const* src,
161161
for (i = 0; i < srclength; i++) {
162162
input[i] = *src++;
163163
}
164-
output[0] = input[0] >> 2;
165-
output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
166-
output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
164+
output[0] = static_cast<std::uint8_t>(input[0] >> 2);
165+
output[1] = static_cast<std::uint8_t>(((input[0] & 0x03) << 4) + (input[1] >> 4));
166+
output[2] = static_cast<std::uint8_t>(((input[1] & 0x0f) << 2) + (input[2] >> 6));
167167
BSONCXX_B64_ASSERT(output[0] < 64);
168168
BSONCXX_B64_ASSERT(output[1] < 64);
169169
BSONCXX_B64_ASSERT(output[2] < 64);

src/bsoncxx/private/itoa.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,19 +1038,19 @@ void itoa::init() {
10381038
_str = kIndexTable + (2 * 10) + (3 * 90) + (4 * (_val - 100));
10391039
_len = 3;
10401040
} else {
1041-
int size = sizeof(_buf) - 1;
1041+
int size = static_cast<std::int32_t>(sizeof(_buf) - 1);
10421042
int i = size;
10431043

10441044
_buf[i] = '\0';
10451045

10461046
while (_val > 0) {
10471047
i--;
1048-
_buf[i] = (_val % 10) + '0';
1048+
_buf[i] = static_cast<std::int8_t>((_val % 10) + '0');
10491049
_val = _val / 10;
10501050
}
10511051

10521052
_str = _buf + i;
1053-
_len = size - i;
1053+
_len = static_cast<std::uint8_t>(size - i);
10541054
}
10551055
}
10561056

0 commit comments

Comments
 (0)