// -*- C++ -*-
/***************************************************************************
 *
 * cwctype - C++ Standard library interface to the ANSI C header wctype.h
 *
 * $Id: cwctype 550991 2007-06-26 23:58:07Z sebor $
 *
 ***************************************************************************
 *
 * Licensed to the Apache Software  Foundation (ASF) under one or more
 * contributor  license agreements.  See  the NOTICE  file distributed
 * with  this  work  for  additional information  regarding  copyright
 * ownership.   The ASF  licenses this  file to  you under  the Apache
 * License, Version  2.0 (the  "License"); you may  not use  this file
 * except in  compliance with the License.   You may obtain  a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the  License is distributed on an  "AS IS" BASIS,
 * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
 * implied.   See  the License  for  the  specific language  governing
 * permissions and limitations under the License.
 *
 * Copyright 1994-2006 Rogue Wave Software.
 * 
 **************************************************************************/

#include <rw/_defs.h>

#ifndef _RWSTD_NO_PURE_C_HEADERS
#  include <ansi/_cwctype.h>
#else

#ifndef _RWSTD_NO_DEPRECATED_C_HEADERS

#ifndef _RWSTD_NAMESPACE_STD_OPEN
#define _RWSTD_NAMESPACE_STD_OPEN 18

_RWSTD_NAMESPACE (std) { 

#endif   // _RWSTD_NAMESPACE_STD_OPEN


#include _RWSTD_ANSI_C_WCTYPE_H


#if _RWSTD_NAMESPACE_STD_OPEN == 18
#undef _RWSTD_NAMESPACE_STD_OPEN

}   // namespace std

#endif   // _RWSTD_NAMESPACE_STD_OPEN == 18

#else   // if defined (_RWSTD_NO_DEPRECATED_C_HEADERS)

#ifndef _RWSTD_CWCTYPE_INCLUDED
#define _RWSTD_CWCTYPE_INCLUDED

#include _RWSTD_ANSI_C_WCTYPE_H

#ifdef __hpux
#  include _RWSTD_ANSI_C_WCHAR_H
#endif   // __hpux

// #define WEOF when not #defined (see also <cwchar>)
#if !defined WEOF
#  ifndef _RWSTD_NO_WINT_T
#    define WEOF _RWSTD_STATIC_CAST (_RWSTD_WINT_T, -1)
#  else
#    define WEOF (-1)
#  endif
#endif   // WEOF

#if !defined (_RWSTD_NO_NAMESPACE) && !defined (_RWSTD_NO_HONOR_STD) && \
      !defined (_RWSTD_NO_USING_LIBC_IN_STD)

#  ifndef _RWSTD_NO_WCTYPE_H

namespace std {

#ifndef _RWSTD_NO_WCTRANS_T
    using ::wctrans_t;
#else
    typedef int wctrans_t;
#endif   // _RWSTD_NO_WCTRANS_T

#ifndef _RWSTD_NO_WCTYPE_T
    using ::wctype_t;
#else
    typedef unsigned wctype_t;
#endif   // _RWSTD_NO_WCTYPE_T

#ifndef _RWSTD_NO_WINT_T
    using ::wint_t;
#else
    typedef unsigned wint_t;
#endif   // _RWSTD_NO_WINT_T

#ifndef _RWSTD_NO_ISWALNUM
    using ::iswalnum;
#elif !defined (_RWSTD_NO_ISWALNUM_IN_LIBC)

    extern "C" int iswalnum (wint_t);
#else
#endif   // _RWSTD_NO_ISWALNUM

#ifndef _RWSTD_NO_ISWALPHA
    using ::iswalpha;
#elif !defined (_RWSTD_NO_ISWALPHA_IN_LIBC)

    extern "C" int iswalpha (wint_t);

#else
#endif   // _RWSTD_NO_ISWALPHA

#ifndef _RWSTD_NO_ISWCNTRL
    using ::iswcntrl;
#elif !defined (_RWSTD_NO_ISWCNTRL_IN_LIBC)

    extern "C" int iswcntrl (wint_t);

#else
#endif   // _RWSTD_NO_ISWCNTRL

#ifndef _RWSTD_NO_ISWCTYPE
    using ::iswctype;
#elif !defined (_RWSTD_NO_ISWCTYPE_IN_LIBC)

    extern "C" int iswctype (wint_t, wctype_t);

#else
#endif   // _RWSTD_NO_ISWCTYPE

#ifndef _RWSTD_NO_ISWDIGIT
    using ::iswdigit;
#elif !defined (_RWSTD_NO_ISWDIGIT_IN_LIBC)

    extern "C" int iswdigit (wint_t);

#else
#endif   // _RWSTD_NO_ISWDIGIT

#ifndef _RWSTD_NO_ISWGRAPH
    using ::iswgraph;
#elif !defined (_RWSTD_NO_ISWGRAPH_IN_LIBC)

    extern "C" int iswgraph (wint_t);

#else
#endif   // _RWSTD_NO_ISWGRAPH

#ifndef _RWSTD_NO_ISWLOWER
    using ::iswlower;
#elif !defined (_RWSTD_NO_ISWLOWER_IN_LIBC)

    extern "C" int iswlower (wint_t);

#else
#endif   // _RWSTD_NO_ISWLOWER

#ifndef _RWSTD_NO_ISWPRINT
    using ::iswprint;
#elif !defined (_RWSTD_NO_ISWPRINT_IN_LIBC)

    extern "C" int iswprint (wint_t);

#else
#endif   // _RWSTD_NO_ISWPRINT

#ifndef _RWSTD_NO_ISWPUNCT
    using ::iswpunct;
#elif !defined (_RWSTD_NO_ISWPUNCT_IN_LIBC)

    extern "C" int iswpunct (wint_t);

#else
#endif   // _RWSTD_NO_ISWPUNCT

#ifndef _RWSTD_NO_ISWSPACE
    using ::iswspace;
#elif !defined (_RWSTD_NO_ISWSPACE_IN_LIBC)

    extern "C" int iswspace (wint_t);

#else
#endif   // _RWSTD_NO_ISWSPACE

#ifndef _RWSTD_NO_ISWUPPER
    using ::iswupper;
#elif !defined (_RWSTD_NO_ISWUPPER_IN_LIBC)

    extern "C" int iswupper (wint_t);

#else
#endif   // _RWSTD_NO_ISWUPPER

#ifndef _RWSTD_NO_ISWXDIGIT
    using ::iswxdigit;
#elif !defined (_RWSTD_NO_ISWXDIGIT_IN_LIBC)

    extern "C" int iswxdigit (wint_t);

#else
#endif   // _RWSTD_NO_ISWXDIGIT

#ifndef _RWSTD_NO_TOWCTRANS
    using ::towctrans;
#elif !defined (_RWSTD_NO_TOWCTRANS_IN_LIBC)

    extern "C" wint_t towctrans (wint_t, wctrans_t);

#else
#endif   // _RWSTD_NO_TOWCTRANS

#ifndef _RWSTD_NO_TOWLOWER
    using ::towlower;
#elif !defined (_RWSTD_NO_TOWLOWER_IN_LIBC)

    extern "C" wint_t towlower (wint_t);

#else
#endif   // _RWSTD_NO_TOWLOWER

#ifndef _RWSTD_NO_TOWUPPER
    using ::towupper;
#elif !defined (_RWSTD_NO_TOWUPPER_IN_LIBC)

    extern "C" wint_t towupper (wint_t);

#else
#endif   // _RWSTD_NO_TOWUPPER

#ifndef _RWSTD_NO_WCTRANS
    using ::wctrans;
#elif !defined (_RWSTD_NO_WCTRANS_IN_LIBC)

    extern "C" wctrans_t wctrans (const char*);

#else
#endif   // _RWSTD_NO_WCTRANS

#ifndef _RWSTD_NO_WCTYPE
    using ::wctype;
#elif !defined (_RWSTD_NO_WCTYPE_IN_LIBC)

    extern "C" wctype_t wctype (const char*);

#else
#endif   // _RWSTD_NO_WCTYPE

}   // std

#  endif   // _RWSTD_NO_WCTYPE_H

#endif   // !_RWSTD_NO_NAMESPACE && !_RWSTD_NO_HONOR_STD && !_RWSTD_NO_USING_LIBC_IN_STD

#endif   // _RWSTD_CWCTYPE_INCLUDED

#endif   // _RWSTD_NO_DEPRECATED_C_HEADERS

#endif   // _RWSTD_NO_PURE_C_HEADERS
