ReactOS 0.4.16-dev-1133-g947c03e
__crt_stdio_input::input_processor< Character, InputAdapter > Class Template Reference

#include <corecrt_internal_stdio_input.h>

Collaboration diagram for __crt_stdio_input::input_processor< Character, InputAdapter >:

Public Types

using traits = __acrt_stdio_char_traits< Character >
 
using char_type = Character
 
using unsigned_char_type = typename traits::unsigned_char_type
 
using int_type = typename traits::int_type
 

Public Member Functions

 input_processor (InputAdapter const &input_adapter, uint64_t const options, char_type const *const format, _locale_t const locale, va_list const arglist) throw ()
 
int process () throw ()
 

Private Member Functions

bool process_state () throw ()
 
bool process_whitespace () throw ()
 
bool process_literal_character () throw ()
 
bool process_literal_character_tchar (char const initial_character) throw ()
 
bool process_literal_character_tchar (wchar_t) throw ()
 
bool process_conversion_specifier () throw ()
 
bool process_string_specifier (conversion_mode const mode) throw ()
 
template<typename BufferCharacter >
bool process_string_specifier_tchar (conversion_mode const mode, BufferCharacter) throw ()
 
bool write_character (char *const buffer, size_t const buffer_count, char *&buffer_pointer, size_t &buffer_remaining, char const c) throw ()
 
bool write_character (char *const buffer, size_t const buffer_count, char *&buffer_pointer, size_t &buffer_remaining, wchar_t const c) throw ()
 
bool write_character (wchar_t _UNALIGNED *const buffer, size_t const buffer_count, wchar_t _UNALIGNED *&buffer_pointer, size_t &buffer_remaining, char const c) throw ()
 
bool write_character (wchar_t _UNALIGNED *const buffer, size_t const buffer_count, wchar_t _UNALIGNED *&buffer_pointer, size_t &buffer_remaining, wchar_t const c) throw ()
 
bool is_character_allowed_in_string (conversion_mode const mode, int_type const c) const throw ()
 
bool process_integer_specifier (unsigned base, bool const is_signed) throw ()
 
template<typename FloatingType >
bool process_floating_point_specifier_t () throw ()
 
bool process_floating_point_specifier () throw ()
 
bool process_character_count_specifier () throw ()
 
bool write_integer (uint64_t const value) throw ()
 
template<typename FloatingType >
bool write_floating_point (FloatingType const &value) throw ()
 
bool secure_buffers () const throw ()
 

Static Private Member Functions

template<typename BufferCharacter >
static void fill_buffer (BufferCharacter _UNALIGNED *const buffer, size_t const buffer_count, size_t const buffer_remaining) throw ()
 
template<typename BufferCharacter >
static void reset_buffer (BufferCharacter _UNALIGNED *const buffer, size_t const buffer_count) throw ()
 

Private Attributes

uint64_t _options
 
InputAdapter _input_adapter
 
format_string_parser< char_type_format_parser
 
_locale_t _locale
 
va_list _valist
 
size_t _receiving_arguments_assigned
 

Detailed Description

template<typename Character, typename InputAdapter>
class __crt_stdio_input::input_processor< Character, InputAdapter >

Definition at line 1065 of file corecrt_internal_stdio_input.h.

Member Typedef Documentation

◆ char_type

template<typename Character , typename InputAdapter >
using __crt_stdio_input::input_processor< Character, InputAdapter >::char_type = Character

Definition at line 1070 of file corecrt_internal_stdio_input.h.

◆ int_type

template<typename Character , typename InputAdapter >
using __crt_stdio_input::input_processor< Character, InputAdapter >::int_type = typename traits::int_type

Definition at line 1072 of file corecrt_internal_stdio_input.h.

◆ traits

template<typename Character , typename InputAdapter >
using __crt_stdio_input::input_processor< Character, InputAdapter >::traits = __acrt_stdio_char_traits<Character>

Definition at line 1069 of file corecrt_internal_stdio_input.h.

◆ unsigned_char_type

template<typename Character , typename InputAdapter >
using __crt_stdio_input::input_processor< Character, InputAdapter >::unsigned_char_type = typename traits::unsigned_char_type

Definition at line 1071 of file corecrt_internal_stdio_input.h.

Constructor & Destructor Documentation

◆ input_processor()

template<typename Character , typename InputAdapter >
__crt_stdio_input::input_processor< Character, InputAdapter >::input_processor ( InputAdapter const input_adapter,
uint64_t const  options,
char_type const *const  format,
_locale_t const  locale,
va_list const  arglist 
)
throw (
)
inline

Member Function Documentation

◆ fill_buffer()

template<typename Character , typename InputAdapter >
template<typename BufferCharacter >
static void __crt_stdio_input::input_processor< Character, InputAdapter >::fill_buffer ( BufferCharacter _UNALIGNED *const  buffer,
size_t const  buffer_count,
size_t const  buffer_remaining 
)
throw (
)
inlinestaticprivate

Definition at line 1441 of file corecrt_internal_stdio_input.h.

1446 {
1448 UNREFERENCED_PARAMETER(buffer_remaining);
1449
1451 return;
1452
1453 _FILL_STRING(buffer, buffer_count, buffer_count - buffer_remaining);
1454 }
#define _CRT_UNBOUNDED_BUFFER_SIZE
#define _FILL_STRING
GLuint buffer
Definition: glext.h:5915
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:325
size_t const buffer_count
Definition: xtoa.cpp:36

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_string_specifier_tchar().

◆ is_character_allowed_in_string()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::is_character_allowed_in_string ( conversion_mode const  mode,
int_type const  c 
) const
throw (
)
inlineprivate

Definition at line 1470 of file corecrt_internal_stdio_input.h.

1471 {
1472 if (c == traits::eof)
1473 return false;
1474
1475 switch (mode)
1476 {
1478 {
1479 return true;
1480 }
1481
1483 {
1484 if (c >= '\t' && c <= '\r')
1485 return false;
1486
1487 if (c == ' ')
1488 return false;
1489
1490 return true;
1491 }
1492
1494 {
1495 if (!_format_parser.scanset().test(static_cast<unsigned_char_type>(c)))
1496 return false;
1497
1498 return true;
1499 }
1500 }
1501
1502 return false;
1503 }
scanset_buffer< unsigned_char_type > const & scanset() const
bool test(UnsignedCharacter const c) const
const GLubyte * c
Definition: glext.h:8905
GLenum mode
Definition: glext.h:6217

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_string_specifier_tchar().

◆ process()

template<typename Character , typename InputAdapter >
int __crt_stdio_input::input_processor< Character, InputAdapter >::process ( )
throw (
)
inline

Definition at line 1090 of file corecrt_internal_stdio_input.h.

1091 {
1092 if (!_input_adapter.validate())
1093 return EOF;
1094
1095 if (!_format_parser.validate())
1096 return EOF;
1097
1098 while (_format_parser.advance())
1099 {
1100 if (!process_state())
1101 break;
1102 }
1103
1104 // Return value is number of receiving arguments assigned,
1105 // or EOF if read failure occurs before the first receiving argument was assigned.
1106 int result{static_cast<int>(_receiving_arguments_assigned)};
1107
1108 // If we haven't reached the 'end_of_string' parse, then a read error occurred.
1110 {
1111 int_type const c{_input_adapter.get()};
1112 if (c == traits::eof)
1113 result = EOF;
1114
1115 _input_adapter.unget(c);
1116 }
1117
1118 if (secure_buffers())
1119 {
1121 }
1122
1123 return result;
1124 }
#define _VALIDATE_RETURN(expr, errorcode, retexpr)
GLuint64EXT * result
Definition: glext.h:11304
#define EOF
Definition: stdio.h:24

◆ process_character_count_specifier()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_character_count_specifier ( )
throw (
)
inlineprivate

◆ process_conversion_specifier()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_conversion_specifier ( )
throw (
)
inlineprivate

Definition at line 1206 of file corecrt_internal_stdio_input.h.

1207 {
1208 switch (_format_parser.mode())
1209 {
1213
1219
1221
1223 }
1224
1225 return false;
1226 }
bool process_string_specifier(conversion_mode const mode)
bool process_integer_specifier(unsigned base, bool const is_signed)

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_state().

◆ process_floating_point_specifier()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_floating_point_specifier ( )
throw (
)
inlineprivate

Definition at line 1544 of file corecrt_internal_stdio_input.h.

1545 {
1547
1548 switch (_format_parser.length())
1549 {
1550 case sizeof(float): return process_floating_point_specifier_t<float >();
1551 case sizeof(double): return process_floating_point_specifier_t<double>();
1552 default: return false;
1553 }
1554 }
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
Definition: string.c:89
static float(__cdecl *square_half_float)(float x

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_conversion_specifier().

◆ process_floating_point_specifier_t()

template<typename Character , typename InputAdapter >
template<typename FloatingType >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_floating_point_specifier_t ( )
throw (
)
inlineprivate

Definition at line 1526 of file corecrt_internal_stdio_input.h.

1527 {
1528 bool succeeded{false};
1529 FloatingType value{};
1531 _locale,
1533 &value)};
1534
1535 if (!succeeded || status == SLD_NODIGITS)
1536 return false;
1537
1539 return true;
1540
1542 }
bool write_floating_point(FloatingType const &value)
input_adapter_character_source< InputAdapter > __cdecl make_input_adapter_character_source(InputAdapter *const input_adapter, uint64_t const width, bool *const succeeded)
SLD_STATUS __cdecl parse_floating_point(_locale_t const locale, CharacterSource source, FloatingType *const result)
Definition: ps.c:97
Definition: pdh_main.c:96

◆ process_integer_specifier()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_integer_specifier ( unsigned  base,
bool const  is_signed 
)
throw (
)
inlineprivate

Definition at line 1505 of file corecrt_internal_stdio_input.h.

1506 {
1508
1509 bool succeeded{false};
1510 uint64_t const number{__crt_strtox::parse_integer<uint64_t>(
1511 _locale,
1513 base,
1514 is_signed)};
1515
1516 if (!succeeded)
1517 return false;
1518
1520 return true;
1521
1522 return write_integer(number);
1523 }
UINT64 uint64_t
Definition: types.h:77
static unsigned int number
Definition: dsound.c:1479

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_conversion_specifier().

◆ process_literal_character()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_literal_character ( )
throw (
)
inlineprivate

Definition at line 1166 of file corecrt_internal_stdio_input.h.

1167 {
1168 int_type const c{_input_adapter.get()};
1169 if (c == traits::eof)
1170 {
1171 return false;
1172 }
1173
1175 {
1176 _input_adapter.unget(c);
1177 return false;
1178 }
1179
1180 return process_literal_character_tchar(static_cast<char_type>(c));
1181 }
bool process_literal_character_tchar(char const initial_character)

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_state().

◆ process_literal_character_tchar() [1/2]

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_literal_character_tchar ( char const  initial_character)
throw (
)
inlineprivate

Definition at line 1183 of file corecrt_internal_stdio_input.h.

1184 {
1185 if (isleadbyte(static_cast<unsigned char>(initial_character)) == 0)
1186 {
1187 return true;
1188 }
1189
1190 int_type const c{_input_adapter.get()};
1192 {
1193 _input_adapter.unget(c);
1194 _input_adapter.unget(initial_character);
1195 return false;
1196 }
1197
1198 return true;
1199 }
#define isleadbyte(_c)
Definition: wchar.h:598

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_literal_character().

◆ process_literal_character_tchar() [2/2]

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_literal_character_tchar ( wchar_t  )
throw (
)
inlineprivate

Definition at line 1201 of file corecrt_internal_stdio_input.h.

1202 {
1203 return true; // No-op for Unicode
1204 }

◆ process_state()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_state ( )
throw (
)
inlineprivate

Definition at line 1128 of file corecrt_internal_stdio_input.h.

1129 {
1130 switch (_format_parser.kind())
1131 {
1133 {
1134 return process_whitespace();
1135 }
1136
1138 {
1140 }
1141
1143 {
1145 // %n and suppressed conversion specifiers are not considered receiving arguments
1146 if (result
1149 {
1151 }
1152
1153 return result;
1154 }
1155 }
1156
1157 return false;
1158 }

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process().

◆ process_string_specifier()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_string_specifier ( conversion_mode const  mode)
throw (
)
inlineprivate

Definition at line 1228 of file corecrt_internal_stdio_input.h.

1229 {
1231 {
1233 }
1234
1235 switch (_format_parser.length())
1236 {
1237 case sizeof(char): return process_string_specifier_tchar(mode, char());
1238 case sizeof(wchar_t): return process_string_specifier_tchar(mode, wchar_t());
1239 default: return false;
1240 }
1241 }
bool process_string_specifier_tchar(conversion_mode const mode, BufferCharacter)
unsigned char
Definition: typeof.h:29
#define wchar_t
Definition: wchar.h:102

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_conversion_specifier().

◆ process_string_specifier_tchar()

template<typename Character , typename InputAdapter >
template<typename BufferCharacter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::process_string_specifier_tchar ( conversion_mode const  mode,
BufferCharacter   
)
throw (
)
inlineprivate

Definition at line 1244 of file corecrt_internal_stdio_input.h.

1245 {
1246 BufferCharacter _UNALIGNED* buffer{nullptr};
1248 {
1249 buffer = va_arg(_valist, BufferCharacter _UNALIGNED*);
1250 _VALIDATE_RETURN(buffer != nullptr, EINVAL, false);
1251 }
1252
1253 size_t const buffer_count{buffer != nullptr && secure_buffers()
1254 ? va_arg(_valist, unsigned)
1256 };
1257
1258 if (buffer_count == 0)
1259 {
1261 {
1262 // For legacy compatibility: in the old implementation, we failed
1263 // to unget the last character read if the buffer had a size of zero
1264 _input_adapter.get();
1265
1266 // Additionally, we wrote a terminator to the buffer, even though
1267 // the caller said the buffer had zero elements
1268 buffer[0] = '\0';
1269 }
1270
1271 errno = ENOMEM;
1272 return false;
1273 }
1274
1276
1277 BufferCharacter _UNALIGNED* buffer_pointer {buffer };
1278 size_t buffer_remaining{buffer_count};
1279
1280 if (mode != conversion_mode::character && buffer_remaining != _CRT_UNBOUNDED_BUFFER_SIZE)
1281 {
1282 --buffer_remaining; // Leave room for terminator when scanning strings
1283 }
1284
1285 uint64_t width_consumed{0};
1286 for (; width == 0 || width_consumed != width; ++width_consumed)
1287 {
1288 int_type c{_input_adapter.get()};
1289
1291 {
1292 _input_adapter.unget(c);
1293 break;
1294 }
1295
1297 {
1298 continue;
1299 }
1300
1301 if (buffer_remaining == 0)
1302 {
1304 errno = ENOMEM;
1305 return false;
1306 }
1307
1308 if (!write_character(buffer, buffer_count, buffer_pointer, buffer_remaining, static_cast<char_type>(c)))
1309 {
1310 break;
1311 }
1312 }
1313
1314 if (width_consumed == 0)
1315 {
1316 return false;
1317 }
1318
1319 // The %c conversion specifier "matches a sequence of characters of exactly
1320 // the number specified by the field width." The legacy behavior was to
1321 // match a sequence of up to that many characters. If legacy mode was not
1322 // requested, fail if we did not match the requested number of characters:
1324 width_consumed != width &&
1326 {
1327 return false;
1328 }
1329
1331 {
1332 return true;
1333 }
1334
1336 {
1337 *buffer_pointer = '\0';
1338 fill_buffer(buffer, buffer_count, buffer_remaining);
1339 }
1340
1341 return true;
1342 }
#define EINVAL
Definition: acclib.h:90
#define ENOMEM
Definition: acclib.h:84
#define va_arg(ap, T)
Definition: acmsvcex.h:89
static void reset_buffer(BufferCharacter _UNALIGNED *const buffer, size_t const buffer_count)
static void fill_buffer(BufferCharacter _UNALIGNED *const buffer, size_t const buffer_count, size_t const buffer_remaining)
bool write_character(char *const buffer, size_t const buffer_count, char *&buffer_pointer, size_t &buffer_remaining, char const c)
bool is_character_allowed_in_string(conversion_mode const mode, int_type const c) const
#define _CRT_INTERNAL_SCANF_LEGACY_MSVCRT_COMPATIBILITY
GLint GLint GLsizei width
Definition: gl.h:1546
#define errno
Definition: errno.h:18
#define _UNALIGNED
Definition: vcruntime.h:207

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_string_specifier().

◆ process_whitespace()

◆ reset_buffer()

template<typename Character , typename InputAdapter >
template<typename BufferCharacter >
static void __crt_stdio_input::input_processor< Character, InputAdapter >::reset_buffer ( BufferCharacter _UNALIGNED *const  buffer,
size_t const  buffer_count 
)
throw (
)
inlinestaticprivate

◆ secure_buffers()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::secure_buffers ( ) const
throw (
)
inlineprivate

◆ write_character() [1/4]

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::write_character ( char *const  buffer,
size_t const  buffer_count,
char *&  buffer_pointer,
size_t buffer_remaining,
char const  c 
)
throw (
)
inlineprivate

Definition at line 1346 of file corecrt_internal_stdio_input.h.

1353 {
1356
1357 *buffer_pointer++ = c;
1358 --buffer_remaining;
1359 return true;
1360 }
#define c
Definition: ke_i.h:80

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_string_specifier_tchar().

◆ write_character() [2/4]

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::write_character ( char *const  buffer,
size_t const  buffer_count,
char *&  buffer_pointer,
size_t buffer_remaining,
wchar_t const  c 
)
throw (
)
inlineprivate

Definition at line 1362 of file corecrt_internal_stdio_input.h.

1369 {
1371 {
1372 int narrow_count{0};
1373 if (_ERRCHECK_EINVAL_ERANGE(wctomb_s(&narrow_count, buffer_pointer, MB_LEN_MAX, c)) == 0)
1374 {
1375 buffer_pointer += narrow_count;
1376 buffer_remaining -= narrow_count;
1377 }
1378 }
1379 else
1380 {
1381 int narrow_count{0};
1382 if (wctomb_s(&narrow_count, buffer_pointer, buffer_remaining, c) == ERANGE)
1383 {
1385 return false;
1386 }
1387
1388 if (narrow_count > 0)
1389 {
1390 buffer_pointer += narrow_count;
1391 buffer_remaining -= narrow_count;
1392 }
1393 }
1394
1395 return true;
1396 }
#define ERANGE
Definition: acclib.h:92
#define _ERRCHECK_EINVAL_ERANGE(e)
#define MB_LEN_MAX
Definition: stdlib.h:19
errno_t __cdecl wctomb_s(int *const return_value, char *const destination, size_t const destination_count, wchar_t const wchar)
Definition: wctomb.cpp:160

◆ write_character() [3/4]

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::write_character ( wchar_t _UNALIGNED *const  buffer,
size_t const  buffer_count,
wchar_t _UNALIGNED *&  buffer_pointer,
size_t buffer_remaining,
char const  c 
)
throw (
)
inlineprivate

Definition at line 1398 of file corecrt_internal_stdio_input.h.

1405 {
1408
1409 char narrow_temp[2]{c, '\0'};
1410 if (isleadbyte(static_cast<unsigned char>(c)))
1411 {
1412 narrow_temp[1] = static_cast<char>(_input_adapter.get());
1413 }
1414
1415 wchar_t wide_temp{'?'};
1416
1417 _mbtowc_l(&wide_temp, narrow_temp, _locale->locinfo->_public._locale_mb_cur_max, _locale);
1418
1419 *buffer_pointer++ = c;
1420 --buffer_remaining;
1421 return true;
1422 }
_CRTIMP int __cdecl _mbtowc_l(_Pre_notnull_ _Post_z_ wchar_t *_DstCh, _In_reads_bytes_opt_(_SrcSizeInBytes) _Pre_opt_z_ const char *_SrcCh, _In_ size_t _SrcSizeInBytes, _In_opt_ _locale_t _Locale)
pthreadlocinfo locinfo
Definition: corecrt.h:23

◆ write_character() [4/4]

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::write_character ( wchar_t _UNALIGNED *const  buffer,
size_t const  buffer_count,
wchar_t _UNALIGNED *&  buffer_pointer,
size_t buffer_remaining,
wchar_t const  c 
)
throw (
)
inlineprivate

Definition at line 1424 of file corecrt_internal_stdio_input.h.

1431 {
1434
1435 *buffer_pointer++ = c;
1436 --buffer_remaining;
1437 return true;
1438 }

◆ write_floating_point()

template<typename Character , typename InputAdapter >
template<typename FloatingType >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::write_floating_point ( FloatingType const value)
throw (
)
inlineprivate

Definition at line 1582 of file corecrt_internal_stdio_input.h.

1583 {
1584 using integer_type = uintn_t<sizeof(FloatingType)>;
1585
1586 void* const result_pointer{va_arg(_valist, void*)};
1587 _VALIDATE_RETURN(result_pointer != nullptr, EINVAL, false);
1588
1589 _ASSERTE(sizeof(FloatingType) == _format_parser.length());
1590
1591 // We write through the pointer as if it were an integer pointer, to
1592 // avoid floating point instructions that cause information loss for
1593 // special NaNs (signaling NaNs, indeterminates):
1594 *static_cast<integer_type*>(result_pointer) = reinterpret_cast<integer_type const&>(value);
1595 return true;
1596 }
#define _ASSERTE(expr)
Definition: crtdbg.h:114
typename uintn_t_impl< N >::type uintn_t

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_floating_point_specifier_t().

◆ write_integer()

template<typename Character , typename InputAdapter >
bool __crt_stdio_input::input_processor< Character, InputAdapter >::write_integer ( uint64_t const  value)
throw (
)
inlineprivate

Definition at line 1564 of file corecrt_internal_stdio_input.h.

1565 {
1566 void* const result_pointer{va_arg(_valist, void*)};
1567 _VALIDATE_RETURN(result_pointer != nullptr, EINVAL, false);
1568
1569 switch (_format_parser.length())
1570 {
1571 case sizeof(uint8_t ): *static_cast<uint8_t *>(result_pointer) = static_cast<uint8_t >(value); return true;
1572 case sizeof(uint16_t): *static_cast<uint16_t*>(result_pointer) = static_cast<uint16_t>(value); return true;
1573 case sizeof(uint32_t): *static_cast<uint32_t*>(result_pointer) = static_cast<uint32_t>(value); return true;
1574 case sizeof(uint64_t): *static_cast<uint64_t*>(result_pointer) = static_cast<uint64_t>(value); return true;
1575 default:
1576 _ASSERTE(("Unexpected length specifier", false));
1577 return false;
1578 }
1579 }
unsigned short int uint16_t
Definition: acefiex.h:54
UINT32 uint32_t
Definition: types.h:75
BYTE uint8_t
Definition: msvideo1.c:66
#define uint32_t
Definition: nsiface.idl:61
#define uint64_t
Definition: nsiface.idl:62
#define uint16_t
Definition: nsiface.idl:60
#define uint8_t
Definition: nsiface.idl:59

Referenced by __crt_stdio_input::input_processor< Character, InputAdapter >::process_character_count_specifier(), and __crt_stdio_input::input_processor< Character, InputAdapter >::process_integer_specifier().

Member Data Documentation

◆ _format_parser

template<typename Character , typename InputAdapter >
format_string_parser<char_type> __crt_stdio_input::input_processor< Character, InputAdapter >::_format_parser
private

◆ _input_adapter

◆ _locale

◆ _options

◆ _receiving_arguments_assigned

◆ _valist


The documentation for this class was generated from the following file: