1/* 2 * Copyright (c) 1999 3 * Silicon Graphics Computer Systems, Inc. 4 * 5 * Copyright (c) 1999 6 * Boris Fomitchev 7 * 8 * This material is provided "as is", with absolutely no warranty expressed 9 * or implied. Any use is at your own risk. 10 * 11 * Permission to use or copy this software for any purpose is hereby granted 12 * without fee, provided the above notices are retained on all copies. 13 * Permission to modify the code and to distribute modified code is granted, 14 * provided the above notices are retained, and a notice that the code was 15 * modified is included with the above copyright notice. 16 * 17 */ 18#ifndef _STLP_LOCALE 19 20// Basic framework: class locale and class locale::facet 21 22#ifndef _STLP_OUTERMOST_HEADER_ID 23# define _STLP_OUTERMOST_HEADER_ID 0x1041 24# include <stl/_prolog.h> 25# define _STLP_LOCALE 26#endif 27 28#if (_STLP_OUTERMOST_HEADER_ID == 0x1041) && \ 29 !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) 30# include <stl/_ioserr.h> 31 32// Individual facets 33# ifndef _STLP_INTERNAL_CTYPE_H 34# include <stl/_ctype.h> 35# endif 36 37# ifndef _STLP_INTERNAL_CODECVT_H 38# include <stl/_codecvt.h> 39# endif 40 41# ifndef _STLP_INTERNAL_COLLATE_H 42# include <stl/_collate.h> 43# endif 44 45# ifndef _STLP_INTERNAL_NUM_PUT_H 46# include <stl/_num_put.h> 47# endif 48 49# ifndef _STLP_INTERNAL_NUM_GET_H 50# include <stl/_num_get.h> 51# endif 52 53// those never included separately anyway 54# include <stl/_monetary.h> 55# include <stl/_time_facets.h> 56# include <stl/_messages_facets.h> 57 58// some stuff for streambuf iterators ended up defined there 59// Strictly speaking, _istream.h portion is only required for <iterator>, but it may break too many 60// programs if we omit it 61# ifndef _STLP_ISTREAM_H 62# include <stl/_istream.h> 63# endif 64 65// Convenience interfaces 66#undef isspace 67#undef isprint 68#undef iscntrl 69#undef isupper 70#undef islower 71#undef isalpha 72#undef isdigit 73#undef ispunct 74#undef isxdigit 75#undef isalnum 76#undef isgraph 77#undef toupper 78#undef tolower 79 80_STLP_BEGIN_NAMESPACE 81 82template <class _CharT> 83inline bool isspace (_CharT c, const locale& loc) 84{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::space, c); } 85 86template <class _CharT> 87inline bool isprint (_CharT c, const locale& loc) 88{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::print, c); } 89 90template <class _CharT> 91inline bool iscntrl (_CharT c, const locale& loc) 92{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::cntrl, c); } 93 94template <class _CharT> 95inline bool isupper (_CharT c, const locale& loc) 96{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::upper, c); } 97 98template <class _CharT> 99inline bool islower (_CharT c, const locale& loc) 100{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::lower, c); } 101 102template <class _CharT> 103inline bool isalpha (_CharT c, const locale& loc) 104{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::alpha, c); } 105 106template <class _CharT> 107inline bool isdigit (_CharT c, const locale& loc) 108{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::digit, c); } 109 110template <class _CharT> 111inline bool ispunct (_CharT c, const locale& loc) 112{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::punct, c); } 113 114template <class _CharT> 115inline bool isxdigit (_CharT c, const locale& loc) 116{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::xdigit, c); } 117 118template <class _CharT> 119inline bool isalnum (_CharT c, const locale& loc) 120{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::alnum, c); } 121 122template <class _CharT> 123inline bool isgraph (_CharT c, const locale& loc) 124{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::graph, c); } 125 126template <class _CharT> 127inline _CharT toupper(_CharT c, const locale& loc) 128{ return (use_facet<ctype<_CharT> >(loc)).toupper(c); } 129 130template <class _CharT> 131inline _CharT tolower(_CharT c, const locale& loc) 132{ return (use_facet<ctype<_CharT> >(loc)).tolower(c); } 133 134_STLP_END_NAMESPACE 135 136#endif 137 138#if (_STLP_OUTERMOST_HEADER_ID != 0x1041) || defined (_STLP_IMPORT_VENDOR_STD) 139# if defined (_STLP_HAS_INCLUDE_NEXT) 140# include_next <locale> 141# else 142# include _STLP_NATIVE_HEADER(locale) 143# endif 144#endif 145 146#if (_STLP_OUTERMOST_HEADER_ID == 0x1041) 147# include <stl/_epilog.h> 148# undef _STLP_OUTERMOST_HEADER_ID 149#endif 150 151#endif /* _STLP_LOCALE */ 152 153 154// Local Variables: 155// mode:C++ 156// End: 157