blob: b553e964b555c8fc2d15726f57ba04a49fae82b5 [file] [log] [blame]
/***************************************************************************
*
* strtol.h - declarations of __rw_strtol, __rw_strtoul, and other helpers
*
* $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.
*
**************************************************************************/
#include <rw/_defs.h>
_RWSTD_NAMESPACE (__rw) {
_RWSTD_EXPORT extern const unsigned char
__rw_digit_map[];
unsigned long
__rw_strtoul (const char*, int*, int);
long
__rw_strtol (const char*, int*, int);
#ifdef _RWSTD_LONG_LONG
// using LLONG_SIZE instead of ULLONG_MAX in the preprocessor
// conditional below to work around a gcc 3.2 bug (PR #28595)
# if (_RWSTD_LLONG_SIZE <= _RWSTD_LONG_SIZE)
inline unsigned _RWSTD_LONG_LONG
__rw_strtoull (const char *nptr, int *errptr, int base)
{
_RWSTD_ASSERT (sizeof (_RWSTD_LONG_LONG) == sizeof (long));
return __rw_strtoul (nptr, errptr, base);
}
inline _RWSTD_LONG_LONG
__rw_strtoll (const char *nptr, int *errptr, int base)
{
_RWSTD_ASSERT (sizeof (_RWSTD_LONG_LONG) == sizeof (long));
return __rw_strtol (nptr, errptr, base);
}
# else // if (_RWSTD_LLONG_SIZE > _RWSTD_LONG_SIZE)
unsigned _RWSTD_LONG_LONG
__rw_strtoull (const char*, int*, int);
_RWSTD_LONG_LONG
__rw_strtoll (const char*, int*, int);
# endif // _RWSTD_LLONG_SIZE <= _RWSTD_LONG_SIZE
#endif // _RWSTD_LONG_LONG
} // namespace __rw