/* * 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 #endif #ifndef _STLP_C_LOCALE_H # include #endif #ifndef _STLP_INTERNAL_NUMPUNCT_H # include #endif #ifndef _STLP_INTERNAL_CTYPE_H # include #endif #ifndef _STLP_INTERNAL_IOSTREAM_STRING_H # include #endif #ifndef _STLP_FACETS_FWD_H # include #endif _STLP_BEGIN_NAMESPACE //---------------------------------------------------------------------- // num_get facets template 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 > >; // _STLP_EXPORT_TEMPLATE_CLASS num_get; # if !defined (_STLP_NO_WCHAR_T) _STLP_EXPORT_TEMPLATE_CLASS num_get > >; // _STLP_EXPORT_TEMPLATE_CLASS num_get; # 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 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*); # endif inline void _STLP_CALL _Initialize_get_float(const ctype&, 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*); # endif void _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 #endif #endif /* _STLP_INTERNAL_NUM_GET_H */ // Local Variables: // mode:C++ // End: