Skip to content

Commit c993f9b

Browse files
committed
Resolve some warnings from MSVC
1 parent 32e8704 commit c993f9b

File tree

2 files changed

+42
-38
lines changed

2 files changed

+42
-38
lines changed

include/tao/json/events/msgpack/grammar.hpp

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ namespace tao
3333
return ( !in.empty() ) && match_impl( in, consumer );
3434
}
3535

36+
template< typename Result, typename Number, typename Read, typename Input >
37+
static Result read_number( Input& in )
38+
{
39+
if( in.size( sizeof( Number ) ) > sizeof( Number ) ) {
40+
const Result result = static_cast< Result >( static_cast< Number >( json::internal::be_to_h< Read >( in.current() + 1 ) ) );
41+
in.bump_in_this_line( 1 + sizeof( Number ) );
42+
return result;
43+
}
44+
throw json_pegtl::parse_error( "unexpected end of msgpack input", in );
45+
}
46+
3647
template< typename Input, typename Consumer >
3748
static bool match_impl( Input& in, Consumer& consumer )
3849
{
@@ -73,52 +84,52 @@ namespace tao
7384
in.bump_in_this_line();
7485
return true;
7586
case 0xc4:
76-
consumer.binary( read_container< tao::byte_view >( in, read_number< std::size_t, std::uint8_t >( in ) ) );
87+
consumer.binary( read_container< tao::byte_view >( in, read_number< std::size_t, std::uint8_t, std::uint8_t >( in ) ) );
7788
return true;
7889
case 0xc5:
79-
consumer.binary( read_container< tao::byte_view >( in, read_number< std::size_t, std::uint16_t >( in ) ) );
90+
consumer.binary( read_container< tao::byte_view >( in, read_number< std::size_t, std::uint16_t, std::uint16_t >( in ) ) );
8091
return true;
8192
case 0xc6:
82-
consumer.binary( read_container< tao::byte_view >( in, read_number< std::size_t, std::uint32_t >( in ) ) );
93+
consumer.binary( read_container< tao::byte_view >( in, read_number< std::size_t, std::uint32_t, std::uint32_t >( in ) ) );
8394
return true;
8495
case 0xc7:
85-
discard( in, read_number< std::size_t, std::uint8_t >( in ) + 1 );
96+
discard( in, read_number< std::size_t, std::uint8_t, std::uint8_t >( in ) + 1 );
8697
return true;
8798
case 0xc8:
88-
discard( in, read_number< std::size_t, std::uint16_t >( in ) + 1 );
99+
discard( in, read_number< std::size_t, std::uint16_t, std::uint16_t >( in ) + 1 );
89100
return true;
90101
case 0xc9:
91-
discard( in, read_number< std::size_t, std::uint32_t >( in ) + 1 );
102+
discard( in, read_number< std::size_t, std::uint32_t, std::uint32_t >( in ) + 1 );
92103
return true;
93104
case 0xca:
94-
consumer.number( read_number< double, float >( in ) );
105+
consumer.number( read_number< double, float, float >( in ) );
95106
return true;
96107
case 0xcb:
97-
consumer.number( read_number< double, double >( in ) );
108+
consumer.number( read_number< double, double, double >( in ) );
98109
return true;
99110
case 0xcc:
100-
consumer.number( read_number< std::uint64_t, std::uint8_t >( in ) );
111+
consumer.number( read_number< std::uint64_t, std::uint8_t, std::uint8_t >( in ) );
101112
return true;
102113
case 0xcd:
103-
consumer.number( read_number< std::uint64_t, std::uint16_t >( in ) );
114+
consumer.number( read_number< std::uint64_t, std::uint16_t, std::uint16_t >( in ) );
104115
return true;
105116
case 0xce:
106-
consumer.number( read_number< std::uint64_t, std::uint32_t >( in ) );
117+
consumer.number( read_number< std::uint64_t, std::uint32_t, std::uint32_t >( in ) );
107118
return true;
108119
case 0xcf:
109-
consumer.number( read_number< std::uint64_t, std::uint64_t >( in ) );
120+
consumer.number( read_number< std::uint64_t, std::uint64_t, std::uint64_t >( in ) );
110121
return true;
111122
case 0xd0:
112-
consumer.number( read_number< std::int64_t, std::int8_t >( in ) );
123+
consumer.number( read_number< std::int64_t, std::int8_t, std::uint8_t >( in ) );
113124
return true;
114125
case 0xd1:
115-
consumer.number( read_number< std::int64_t, std::int16_t >( in ) );
126+
consumer.number( read_number< std::int64_t, std::int16_t, std::uint16_t >( in ) );
116127
return true;
117128
case 0xd2:
118-
consumer.number( read_number< std::int64_t, std::int32_t >( in ) );
129+
consumer.number( read_number< std::int64_t, std::int32_t, std::uint32_t >( in ) );
119130
return true;
120131
case 0xd3:
121-
consumer.number( read_number< std::int64_t, std::int64_t >( in ) );
132+
consumer.number( read_number< std::int64_t, std::int64_t, std::uint64_t >( in ) );
122133
return true;
123134
case 0xd4:
124135
discard( in, 3 );
@@ -136,22 +147,22 @@ namespace tao
136147
discard( in, 18 );
137148
return true;
138149
case 0xd9:
139-
consumer.string( read_container< tao::string_view >( in, read_number< std::size_t, std::uint8_t >( in ) ) );
150+
consumer.string( read_container< tao::string_view >( in, read_number< std::size_t, std::uint8_t, std::uint8_t >( in ) ) );
140151
return true;
141152
case 0xda:
142-
consumer.string( read_container< tao::string_view >( in, read_number< std::size_t, std::uint16_t >( in ) ) );
153+
consumer.string( read_container< tao::string_view >( in, read_number< std::size_t, std::uint16_t, std::uint16_t >( in ) ) );
143154
return true;
144155
case 0xdb:
145-
consumer.string( read_container< tao::string_view >( in, read_number< std::size_t, std::uint32_t >( in ) ) );
156+
consumer.string( read_container< tao::string_view >( in, read_number< std::size_t, std::uint32_t, std::uint32_t >( in ) ) );
146157
return true;
147158
case 0xdc:
148-
return match_array( in, consumer, read_number< std::size_t, std::uint16_t >( in ) );
159+
return match_array( in, consumer, read_number< std::size_t, std::uint16_t, std::uint16_t >( in ) );
149160
case 0xdd:
150-
return match_array( in, consumer, read_number< std::size_t, std::uint32_t >( in ) );
161+
return match_array( in, consumer, read_number< std::size_t, std::uint32_t, std::uint32_t >( in ) );
151162
case 0xde:
152-
return match_object( in, consumer, read_number< std::size_t, std::uint16_t >( in ) );
163+
return match_object( in, consumer, read_number< std::size_t, std::uint16_t, std::uint16_t >( in ) );
153164
case 0xdf:
154-
return match_object( in, consumer, read_number< std::size_t, std::uint32_t >( in ) );
165+
return match_object( in, consumer, read_number< std::size_t, std::uint32_t, std::uint32_t >( in ) );
155166
}
156167
// LCOV_EXCL_START
157168
assert( false );
@@ -168,17 +179,6 @@ namespace tao
168179
in.bump_in_this_line( count );
169180
}
170181

171-
template< typename Result, typename Number, typename Input >
172-
static Result read_number( Input& in )
173-
{
174-
if( in.size( sizeof( Number ) ) > sizeof( Number ) ) {
175-
const Result result = json::internal::be_to_h< Number >( in.current() + 1 );
176-
in.bump_in_this_line( 1 + sizeof( Number ) );
177-
return result;
178-
}
179-
throw json_pegtl::parse_error( "unexpected end of msgpack input", in );
180-
}
181-
182182
template< typename Result, typename Input >
183183
static Result read_container( Input& in, const std::size_t size )
184184
{
@@ -199,17 +199,17 @@ namespace tao
199199
throw json_pegtl::parse_error( "unexpected end of input", in );
200200
}
201201
const auto b = in.peek_byte();
202-
if ( ( 0xa0 <= b ) && ( b <= 0xbf ) ) {
202+
if( ( 0xa0 <= b ) && ( b <= 0xbf ) ) {
203203
in.bump_in_this_line();
204204
return read_container< tao::string_view >( in, b - 0xa0 );
205205
}
206206
switch( b ) {
207207
case 0xd9:
208-
return read_container< tao::string_view >( in, read_number< std::size_t, std::uint8_t >( in ) );
208+
return read_container< tao::string_view >( in, read_number< std::size_t, std::uint8_t, std::uint8_t >( in ) );
209209
case 0xda:
210-
return read_container< tao::string_view >( in, read_number< std::size_t, std::uint16_t >( in ) );
210+
return read_container< tao::string_view >( in, read_number< std::size_t, std::uint16_t, std::uint16_t >( in ) );
211211
case 0xdb:
212-
return read_container< tao::string_view >( in, read_number< std::size_t, std::uint32_t >( in ) );
212+
return read_container< tao::string_view >( in, read_number< std::size_t, std::uint32_t, std::uint32_t >( in ) );
213213
}
214214
throw json_pegtl::parse_error( "unexpected key type", in );
215215
}

src/test/json/validate_event_interfaces.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33

44
#include "test.hpp"
55

6+
#ifdef _MSC_VER
7+
#pragma warning( disable : 4702 )
8+
#endif
9+
610
#include <tao/json/events/compare.hpp>
711
#include <tao/json/events/debug.hpp>
812
#include <tao/json/events/discard.hpp>

0 commit comments

Comments
 (0)