19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc.
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk.
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies.
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted,
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice.
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_LOCALE
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Basic framework: class locale and class locale::facet
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_OUTERMOST_HEADER_ID
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_OUTERMOST_HEADER_ID 0x1041
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_prolog.h>
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_LOCALE
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (_STLP_OUTERMOST_HEADER_ID == 0x1041) && \
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD))
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  include <stl/_ioserr.h>
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Individual facets
33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  ifndef _STLP_INTERNAL_CTYPE_H
34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <stl/_ctype.h>
35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  ifndef _STLP_INTERNAL_CODECVT_H
38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <stl/_codecvt.h>
39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  ifndef _STLP_INTERNAL_COLLATE_H
42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <stl/_collate.h>
43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  ifndef _STLP_INTERNAL_NUM_PUT_H
46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <stl/_num_put.h>
47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  ifndef _STLP_INTERNAL_NUM_GET_H
50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <stl/_num_get.h>
51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// those never included separately anyway
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  include <stl/_monetary.h>
55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  include <stl/_time_facets.h>
56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  include <stl/_messages_facets.h>
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// some stuff for streambuf iterators ended up defined there
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Strictly speaking, _istream.h portion is only required for <iterator>, but it may break too many
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// programs if we omit it
61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  ifndef _STLP_ISTREAM_H
62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <stl/_istream.h>
63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Convenience interfaces
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isspace
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isprint
689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef iscntrl
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isupper
709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef islower
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isalpha
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isdigit
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef ispunct
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isxdigit
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isalnum
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef isgraph
779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef toupper
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef tolower
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE
819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isspace (_CharT c, const locale& loc)
849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::space, c); }
859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isprint (_CharT c, const locale& loc)
889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::print, c); }
899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool iscntrl (_CharT c, const locale& loc)
929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::cntrl, c); }
939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isupper (_CharT c, const locale& loc)
969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::upper, c); }
979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool islower (_CharT c, const locale& loc)
1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::lower, c); }
1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isalpha (_CharT c, const locale& loc)
1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::alpha, c); }
1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isdigit (_CharT c, const locale& loc)
1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::digit, c); }
1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool ispunct (_CharT c, const locale& loc)
1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::punct, c); }
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isxdigit (_CharT c, const locale& loc)
1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::xdigit, c); }
1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isalnum (_CharT c, const locale& loc)
1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::alnum, c); }
1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool isgraph (_CharT c, const locale& loc)
1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).is(ctype_base::graph, c); }
1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _CharT toupper(_CharT c, const locale& loc)
1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).toupper(c); }
1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT>
1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _CharT tolower(_CharT c, const locale& loc)
1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (use_facet<ctype<_CharT> >(loc)).tolower(c); }
1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE
1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (_STLP_OUTERMOST_HEADER_ID != 0x1041) || defined (_STLP_IMPORT_VENDOR_STD)
139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (_STLP_HAS_INCLUDE_NEXT)
140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include_next <locale>
141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  else
142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include _STLP_NATIVE_HEADER(locale)
143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if (_STLP_OUTERMOST_HEADER_ID == 0x1041)
1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_epilog.h>
1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_OUTERMOST_HEADER_ID
1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_LOCALE */
1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables:
1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++
1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End:
157