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