// -*- C++ -*-
/***************************************************************************
 *
 * climits - C++ Standard library interface to the ANSI C header limits.h
 *
 * $Id$
 *
 ***************************************************************************
 *
 * 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.
 * 
 **************************************************************************/

#ifndef _RWSTD_CLIMITS_INCLUDED
#define _RWSTD_CLIMITS_INCLUDED


#include <rw/_defs.h>


#if !defined (_RWSTD_NO_PURE_C_HEADERS) || defined (_RWSTD_NO_LIMITS_H)

// 18.2.2, p1
#ifndef CHAR_BIT
#  define CHAR_BIT   _RWSTD_CHAR_BIT
#endif   // CHAR_BIT

#ifndef CHAR_MAX
#  define CHAR_MAX   _RWSTD_CHAR_MAX
#endif   // CHAR_MAX

#ifndef CHAR_MIN
#  define CHAR_MIN   _RWSTD_CHAR_MIN
#endif   // CHAR_MIN

#ifndef SCHAR_MAX
#  define SCHAR_MAX  _RWSTD_SCHAR_MAX
#endif   // SCHAR_MAX

#ifndef SCHAR_MIN
#  define SCHAR_MIN  _RWSTD_SCHAR_MIN
#endif   // SCHAR_MIN

#ifndef UCHAR_MAX
#  define UCHAR_MAX  _RWSTD_UCHAR_MAX
#endif   // UCHAR_MAX

#ifndef SHRT_MAX
#  define SHRT_MAX   _RWSTD_SHRT_MAX
#endif   // SHRT_MAX

#ifndef SHRT_MIN
#  define SHRT_MIN   _RWSTD_SHRT_MIN
#endif   // SHRT_MIN

#ifndef USHRT_MAX
#  define USHRT_MAX  _RWSTD_USHRT_MAX
#endif   // USHRT_MAX

#ifndef INT_MAX
#  define INT_MAX    _RWSTD_INT_MAX
#endif   // INT_MAX

#ifndef INT_MIN
#  define INT_MIN    _RWSTD_INT_MIN
#endif   // INT_MIN

#ifndef UINT_MAX
#  define UINT_MAX   _RWSTD_UINT_MAX
#endif   // UINT_MAX

#ifndef LONG_MAX
#  define LONG_MAX   _RWSTD_LONG_MAX
#endif   // LONG_MAX

#ifndef LONG_MIN
#  define LONG_MIN   _RWSTD_LONG_MIN
#endif   // LONG_MIN

#ifndef ULONG_MAX
#  define ULONG_MAX  _RWSTD_ULONG_MAX
#endif   // ULONG_MAX

#ifndef MB_LEN_MAX
#  define MB_LEN_MAX _RWSTD_MB_LEN_MAX
#endif   // MB_LEN_MAX

#else   // if defined (_RWSTD_NO_PURE_C_HEADERS)

#include _RWSTD_ANSI_C_LIMITS_H

#endif  // _RWSTD_NO_PURE_C_HEADERS

#endif   // _RWSTD_CLIMITS_INCLUDED
