locale revision 9720d5f59b9c1f5d1b9ecbc9173dbcb71bd557be
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#define _STLP_LOCALE
20
21// Basic framework: class locale and class locale::facet
22
23#ifndef _STLP_OUTERMOST_HEADER_ID
24#  define _STLP_OUTERMOST_HEADER_ID 0x1041
25#  include <stl/_prolog.h>
26#endif
27
28#ifdef _STLP_PRAGMA_ONCE
29#  pragma once
30#endif
31
32#include <stl/_ioserr.h>
33
34// Individual facets
35#ifndef _STLP_INTERNAL_CTYPE_H
36#  include <stl/_ctype.h>
37#endif
38
39#ifndef _STLP_INTERNAL_CODECVT_H
40#  include <stl/_codecvt.h>
41#endif
42
43#ifndef _STLP_INTERNAL_COLLATE_H
44#  include <stl/_collate.h>
45#endif
46
47#ifndef _STLP_INTERNAL_NUM_PUT_H
48#  include <stl/_num_put.h>
49#endif
50
51#ifndef _STLP_INTERNAL_NUM_GET_H
52#  include <stl/_num_get.h>
53#endif
54
55// those never included separately anyway
56#include <stl/_monetary.h>
57#include <stl/_time_facets.h>
58#include <stl/_messages_facets.h>
59
60// some stuff for streambuf iterators ended up defined there
61// Strictly speaking, _istream.h portion is only required for <iterator>, but it may break too many
62// programs if we omit it
63#ifndef _STLP_ISTREAM_H
64#  include <stl/_istream.h>
65#endif
66
67// Convenience interfaces
68#undef isspace
69#undef isprint
70#undef iscntrl
71#undef isupper
72#undef islower
73#undef isalpha
74#undef isdigit
75#undef ispunct
76#undef isxdigit
77#undef isalnum
78#undef isgraph
79#undef toupper
80#undef tolower
81
82_STLP_BEGIN_NAMESPACE
83
84template <class _CharT>
85inline bool isspace (_CharT c, const locale& loc)
86{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::space, c); }
87
88template <class _CharT>
89inline bool isprint (_CharT c, const locale& loc)
90{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::print, c); }
91
92template <class _CharT>
93inline bool iscntrl (_CharT c, const locale& loc)
94{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::cntrl, c); }
95
96template <class _CharT>
97inline bool isupper (_CharT c, const locale& loc)
98{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::upper, c); }
99
100template <class _CharT>
101inline bool islower (_CharT c, const locale& loc)
102{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::lower, c); }
103
104template <class _CharT>
105inline bool isalpha (_CharT c, const locale& loc)
106{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::alpha, c); }
107
108template <class _CharT>
109inline bool isdigit (_CharT c, const locale& loc)
110{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::digit, c); }
111
112template <class _CharT>
113inline bool ispunct (_CharT c, const locale& loc)
114{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::punct, c); }
115
116template <class _CharT>
117inline bool isxdigit (_CharT c, const locale& loc)
118{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::xdigit, c); }
119
120template <class _CharT>
121inline bool isalnum (_CharT c, const locale& loc)
122{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::alnum, c); }
123
124template <class _CharT>
125inline bool isgraph (_CharT c, const locale& loc)
126{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::graph, c); }
127
128template <class _CharT>
129inline _CharT toupper(_CharT c, const locale& loc)
130{ return (use_facet<ctype<_CharT> >(loc)).toupper(c); }
131
132template <class _CharT>
133inline _CharT tolower(_CharT c, const locale& loc)
134{ return (use_facet<ctype<_CharT> >(loc)).tolower(c); }
135
136_STLP_END_NAMESPACE
137
138#if (_STLP_OUTERMOST_HEADER_ID == 0x1041)
139#  include <stl/_epilog.h>
140#  undef _STLP_OUTERMOST_HEADER_ID
141#endif
142
143#endif /* _STLP_LOCALE */
144
145
146// Local Variables:
147// mode:C++
148// End:
149