Fix Visual Studio 2017 new warning (C4244: 'argument': conversion fro… (#4261)
* Fix Visual Studio 2017 new warning (C4244: 'argument': conversion from 'int' to 'const char', possible loss of data)
* Fix Visual Studio 2017 pedantic warnings
* Fix Visual Studio 2017 pedantic warnings
diff --git a/include/flatbuffers/util.h b/include/flatbuffers/util.h
index 2bd0ae0..008b186 100644
--- a/include/flatbuffers/util.h
+++ b/include/flatbuffers/util.h
@@ -114,6 +114,11 @@
#endif
}
+// Pedantic warning free version of toupper().
+inline char ToUpper(char c) {
+ return static_cast<char>(::toupper(c));
+}
+
typedef bool (*LoadFileFunction)(const char *filename, bool binary,
std::string *dest);
typedef bool (*FileExistsFunction)(const char *filename);
diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp
index 521ca8f..95c5d71 100644
--- a/src/idl_gen_cpp.cpp
+++ b/src/idl_gen_cpp.cpp
@@ -54,7 +54,7 @@
guard += *it + "_";
}
guard += "H_";
- std::transform(guard.begin(), guard.end(), guard.begin(), ::toupper);
+ std::transform(guard.begin(), guard.end(), guard.begin(), ToUpper);
return guard;
}
@@ -852,7 +852,7 @@
std::string GenFieldOffsetName(const FieldDef &field) {
std::string uname = field.name;
- std::transform(uname.begin(), uname.end(), uname.begin(), ::toupper);
+ std::transform(uname.begin(), uname.end(), uname.begin(), ToUpper);
return "VT_" + uname;
}
diff --git a/tests/test.cpp b/tests/test.cpp
index 8011a11..262562a 100644
--- a/tests/test.cpp
+++ b/tests/test.cpp
@@ -261,7 +261,7 @@
// Test accessing a vector of sorted structs
auto vecofstructs = monster->testarrayofsortedstruct();
if (vecofstructs) { // not filled in monster_test.bfbs
- for (size_t i = 0; i < vecofstructs->size()-1; i++) {
+ for (flatbuffers::uoffset_t i = 0; i < vecofstructs->size()-1; i++) {
auto left = vecofstructs->Get(i);
auto right = vecofstructs->Get(i+1);
TEST_EQ(true, (left->KeyCompareLessThan(right)));