_num_get.h
来自「stl的源码」· C头文件 代码 · 共 238 行
H
238 行
/* * Copyright (c) 1999 * Silicon Graphics Computer Systems, Inc. * * Copyright (c) 1999 * Boris Fomitchev * * This material is provided "as is", with absolutely no warranty expressed * or implied. Any use is at your own risk. * * Permission to use or copy this software for any purpose is hereby granted * without fee, provided the above notices are retained on all copies. * Permission to modify the code and to distribute modified code is granted, * provided the above notices are retained, and a notice that the code was * modified is included with the above copyright notice. * */// WARNING: This is an internal header file, included by other C++// standard library headers. You should not attempt to use this header// file directly.#ifndef _STLP_INTERNAL_NUM_GET_H#define _STLP_INTERNAL_NUM_GET_H#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H# include <stl/_istreambuf_iterator.h>#endif#ifndef _STLP_C_LOCALE_H# include <stl/c_locale.h>#endif#ifndef _STLP_INTERNAL_NUMPUNCT_H# include <stl/_numpunct.h>#endif#ifndef _STLP_INTERNAL_CTYPE_H# include <stl/_ctype.h>#endif#ifndef _STLP_INTERNAL_IOSTREAM_STRING_H# include <stl/_iostream_string.h>#endif#ifndef _STLP_FACETS_FWD_H# include <stl/_facets_fwd.h>#endif_STLP_BEGIN_NAMESPACE//----------------------------------------------------------------------// num_get facetstemplate <class _CharT, class _InputIter>class num_get: public locale::facet {public: typedef _CharT char_type; typedef _InputIter iter_type; explicit num_get(size_t __refs = 0): locale::facet(__refs) {}#if !defined (_STLP_NO_BOOL) _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, bool& __val) const { return do_get(__ii, __end, __str, __err, __val); }#endif#if defined (_STLP_FIX_LIBRARY_ISSUES) _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, short& __val) const { return do_get(__ii, __end, __str, __err, __val); } _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, int& __val) const { return do_get(__ii, __end, __str, __err, __val); }#endif _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, long& __val) const { return do_get(__ii, __end, __str, __err, __val); } _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned short& __val) const { return do_get(__ii, __end, __str, __err, __val); } _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned int& __val) const { return do_get(__ii, __end, __str, __err, __val); } _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned long& __val) const { return do_get(__ii, __end, __str, __err, __val); }#if defined (_STLP_LONG_LONG) _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, _STLP_LONG_LONG& __val) const { return do_get(__ii, __end, __str, __err, __val); } _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const { return do_get(__ii, __end, __str, __err, __val); }#endif /* _STLP_LONG_LONG */ _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, float& __val) const { return do_get(__ii, __end, __str, __err, __val); } _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, double& __val) const { return do_get(__ii, __end, __str, __err, __val); }#if !defined (_STLP_NO_LONG_DOUBLE) _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, long double& __val) const { return do_get(__ii, __end, __str, __err, __val); }# endif _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, void*& __val) const { return do_get(__ii, __end, __str, __err, __val); } static locale::id id;protected: ~num_get() {} typedef string string_type; typedef ctype<_CharT> _Ctype; typedef numpunct<_CharT> _Numpunct;#if !defined (_STLP_NO_BOOL) virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, bool& __val) const;#endif virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, long& __val) const; virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned short& __val) const; virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned int& __val) const; virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned long& __val) const;#if defined (_STLP_FIX_LIBRARY_ISSUES) // issue 118 : those are actually not supposed to be here virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, short& __val) const; virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, int& __val) const;#endif virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, float& __val) const; virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, double& __val) const; virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, void*& __p) const;#if !defined (_STLP_NO_LONG_DOUBLE) virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, long double& __val) const;#endif#if defined (_STLP_LONG_LONG) virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, _STLP_LONG_LONG& __val) const; virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const;#endif};#if defined (_STLP_USE_TEMPLATE_EXPORT)_STLP_EXPORT_TEMPLATE_CLASS num_get<char, istreambuf_iterator<char, char_traits<char> > >;// _STLP_EXPORT_TEMPLATE_CLASS num_get<char, const char*>;# if !defined (_STLP_NO_WCHAR_T)_STLP_EXPORT_TEMPLATE_CLASS num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;// _STLP_EXPORT_TEMPLATE_CLASS num_get<wchar_t, const wchar_t*>;# endif#endif#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)_STLP_MOVE_TO_PRIV_NAMESPACE_STLP_DECLSPEC bool _STLP_CALL __valid_grouping(const char*, const char*, const char*, const char*);template <class _InputIter, class _Integer, class _CharT>bool _STLP_CALL__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val, _CharT*);# if !defined (_STLP_NO_WCHAR_T)bool _STLP_DECLSPEC _STLP_CALL __get_fdigit(wchar_t&, const wchar_t*);bool _STLP_DECLSPEC _STLP_CALL __get_fdigit_or_sep(wchar_t&, wchar_t, const wchar_t*);# endifinline void _STLP_CALL_Initialize_get_float(const ctype<char>&, char& Plus, char& Minus, char& pow_e, char& pow_E, char*) { Plus = '+'; Minus = '-'; pow_e = 'e'; pow_E = 'E';}# if !defined (_STLP_NO_WCHAR_T)void _STLP_DECLSPEC _STLP_CALL _Initialize_get_float(const ctype<wchar_t>&, wchar_t&, wchar_t&, wchar_t&, wchar_t&, wchar_t*);# endifvoid _STLP_DECLSPEC _STLP_CALL __string_to_float(const __iostring&, float&);void _STLP_DECLSPEC _STLP_CALL __string_to_float(const __iostring&, double&);# if !defined (_STLP_NO_LONG_DOUBLE)void _STLP_DECLSPEC _STLP_CALL __string_to_float(const __iostring&, long double&);# endif_STLP_MOVE_TO_STD_NAMESPACE#endif /* _STLP_EXPOSE_STREAM_IMPLEMENTATION */_STLP_END_NAMESPACE#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)# include <stl/_num_get.c>#endif#endif /* _STLP_INTERNAL_NUM_GET_H */// Local Variables:// mode:C++// End:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?