From ee2e68f44f7b9ee099f98b668257b5d57a86a695 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 10 Aug 2021 18:14:30 +0100 Subject: Enable numeric conversion warning and fix the fallout --- lib/mysql_types.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'lib/mysql_types.cpp') diff --git a/lib/mysql_types.cpp b/lib/mysql_types.cpp index a4641ba..41dbb6e 100644 --- a/lib/mysql_types.cpp +++ b/lib/mysql_types.cpp @@ -16,11 +16,11 @@ namespace MyGrate::MySQL { #define INTEGER_TYPE(ET) \ typename Type::C Type::read(RawDataReader &, RawDataReader & data) \ { \ - return data.readValue::C>(); \ + return data.readValue::C>(); \ } \ typename Type::C Type::read(RawDataReader &, RawDataReader & data) \ { \ - return data.readValue::C>(); \ + return data.readValue::C>(); \ } INTEGER_TYPE(MYSQL_TYPE_TINY); INTEGER_TYPE(MYSQL_TYPE_SHORT); @@ -138,7 +138,7 @@ namespace MyGrate::MySQL { dt.hour = mod100_extract(dtint); dt.day = mod100_extract(dtint); dt.month = mod100_extract(dtint); - dt.year = dtint; + dt.year = boost::numeric_cast(dtint); return dt; } @@ -149,7 +149,7 @@ namespace MyGrate::MySQL { Time t {}; t.second = mod100_extract(tint); t.minute = mod100_extract(tint); - t.hour = tint; + t.hour = boost::numeric_cast(tint); return t; } @@ -164,9 +164,9 @@ namespace MyGrate::MySQL { { auto dint {data.readValue()}; Date d {}; - d.day = bitslice(dint, 0, 6); - d.month = bitslice(dint, 6, 4); - d.year = bitslice(dint, 10, 14); + d.day = bitslice<6>(dint, 0); + d.month = bitslice<4>(dint, 6); + d.year = bitslice<14>(dint, 10); return d; } @@ -201,12 +201,12 @@ namespace MyGrate::MySQL { std::reverse(r.b.begin(), r.b.end()); DateTime dt; - dt.year = (bitslice(r.i, 22, 17) / 13); - dt.month = (bitslice(r.i, 22, 17) % 13); - dt.day = bitslice(r.i, 17, 5); - dt.hour = bitslice(r.i, 12, 5); - dt.minute = bitslice(r.i, 6, 6); - dt.second = bitslice(r.i, 0, 6); + dt.year = boost::numeric_cast(bitslice<17>(r.i, 22) / 13); + dt.month = boost::numeric_cast(bitslice<17>(r.i, 22) % 13); + dt.day = bitslice<5>(r.i, 17); + dt.hour = bitslice<5>(r.i, 12); + dt.minute = bitslice<6>(r.i, 6); + dt.second = bitslice<6>(r.i, 0); return dt; } } -- cgit v1.2.3