14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ptypes.h * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __PTYPES_H 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __PTYPES_H 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <string.h> 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <ctype.h> 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "limits.h" 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PortPrefix.h" 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef MAX 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX(A,B) ((A)>(B)?(A):(B)) 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef MIN 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MIN(A,B) ((A)<(B)?(A):(B)) 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Boolean definition. 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum ESR_BOOL 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_FALSE = 0, 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_TRUE = 1 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} ESR_BOOL; 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @addtogroup ESR_PortableModule ESR_Portable API functions 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{ 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#pragma warning (disable: 4100 4127) 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#pragma warning (error: 4133 4020) 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef WIN32_LEAN_AND_MEAN 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define WIN32_LEAN_AND_MEAN 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <windows.h> 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 32-bit unsigned integer. 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef unsigned int asr_uint32_t; 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 32-bit signed integer. 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef int asr_int32_t; 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 16-bit unsigned integer. 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef unsigned short asr_uint16_t; 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 16-bit signed integer. 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef short asr_int16_t; 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 8-bit unsigned integer. 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef unsigned char asr_uint8_t; 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 8-bit signed integer. 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef signed char asr_int8_t; 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 32-bit unsigned integer. 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef unsigned int asr_uint32_t; 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 32-bit signed integer. 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef int asr_int32_t; 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 16-bit unsigned integer. 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef unsigned short asr_uint16_t; 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 16-bit signed integer. 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef short asr_int16_t; 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 8-bit unsigned integer. 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef unsigned char asr_uint8_t; 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 8-bit signed integer. 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef signed char asr_int8_t; 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project///** 1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// * Boolean definition. 1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// */ 1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//#ifdef __vxworks 1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project///* VxWorks defines BOOL as: typedef int BOOL in vxTypesOld.h */ 1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//#include <vxWorks.h> 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//#define FALSE 0 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//#define TRUE 1 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//#endif 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _solaris_ 1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <sys/int_types.h> 1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif defined(_decunix_) 1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <inttypes.h> 1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif defined(POSIX) 1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <time.h> 1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <errno.h> 1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if (CPU != SIMNT) 1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef void * HANDLE; 1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* (CPU != SIMNT) */ 1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(__vxworks) /* VxWorks */ 1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <sys/times.h> 1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <types.h> 1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* VxWorks does not support recursive mutex in POSIX.4 */ 1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define OS_NO_RECURSIVE_MUTEX_SUPPORT 1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif defined(_QNX_) /* QNX */ 1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <sys/time.h> 1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <inttypes.h> 1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif (OS == OS_UNIX) 1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <string.h> 1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <pthread.h> 1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#error "New OS support here" 1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _POSIX_SOURCE 1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define _POSIX_SOURCE 1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Both POSIX.1 and POSIX.4 (POSIX1003.1c) are supported */ 1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _POSIX_C_SOURCE 1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define _POSIX_C_SOURCE 199309 1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <unistd.h> 1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* 1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _POSIX_VERSION 1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#error "POSIX is not supported!") 1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif _POSIX_VERSION == 199009 1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#pragma message("POSIX.1 is supported only") 1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif _POSIX_VERSION == 199309 1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#pragma message("POSIX.1 and POSIX.4 are supported") 1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif _POSIX_VERSION > 199309 1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#pragma message("Version is newer than POSIX.4") 1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif // _POSIX_VERSION 1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Linux, maybe others too */ 1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Minimum value of UINT16_T. 1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define UINT16_TMIN 0 1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Maximum value of UINT16_T. 1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define UINT16_TMAX 65535 1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* 2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * These should be platform-dependent. But for the moment, we will assume 2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * narrow character. 2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef USE_NARROW_CHAR 2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define USE_NARROW_CHAR 2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef USE_NARROW_CHAR 2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Locale-independant character. 2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef char LCHAR; 2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Locale-independant integer-representation of a character. Used by fgetc() and others. 2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef int LINT; 2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of string-constant 2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define L(x) x 2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strcat() 2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCAT strcat 2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strchr() 2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCHR strchr 2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strrchr() 2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRRCHR strrchr 2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strcmp() 2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCMP strcmp 2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strncmp() 2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRNCMP strncmp 2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strcpy() 2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCPY strcpy 2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strftime() 2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRFTIME strftime 2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strlen() 2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRLEN strlen 2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strncpy() 2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRNCPY strncpy 2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of memmove() 2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LMEMMOVE memmove 2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strstr() 2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRSTR strstr 2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strlwr() which converts a string to lowercase. 2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRLWR lstrlwr 2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strupr() which converts a string to lowercase. 2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRUPR lstrupr 2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strtod() 2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOD strtod 2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strtol() 2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOL strtol 2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strtoul() 3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOUL strtoul 3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of isspace() 3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISSPACE(c) isspace((unsigned char) c) 3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strcspn() 3114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCSPN strcspn 3134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of isalpha() 3164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISALPHA isalpha 3184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of isalnum() 3214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISALNUM isalnum 3234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of isdigit() 3264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISDIGIT isdigit 3284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of strtok() 3314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOK strtok 3334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * LCHAR version of getenv() 3364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LGETENV getenv 3384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Converts LCHAR character to uppercase. 3414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LTOUPPER toupper 3434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Converts LCHAR character to lowercase. 3464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LTOLOWER tolower 3484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable printf(). 3514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LPRINTF printf 3534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable fprintf(). 3554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LFPRINTF fprintf 3574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable sprintf(). 3594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSPRINTF sprintf 3614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable sprintf(). 3644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define psprintf sprintf 3664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable svprintf(). 3694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define pvsprintf vsprintf 3714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 3734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <wchar.h> 3754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef wchar_t LCHAR; 3764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Locale-independant integer-representation of a character. Used by fgetc() and others. 3784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 3794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef wint_t LINT; 3804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define L(x) L ## x 3814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCAT wcscat 3824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCHR wcschr 3834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRRCHR wcsrchr 3844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCMP wcscmp 3854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRNCMP wcsncmp 3864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCPY wcscpy 3874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRFTIME wcsftime 3884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LPRINTF wprintf 3904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LFPRINTF fwprintf 3914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSPRINTF swprintf 3924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32 3944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 3964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* LCHAR version of getenv() 3974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 3984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LGETENV wgetenv 3994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* LCHAR version of strlwr() which converts a string to lowercase. 4024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 4034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRLWR _wcslwr 4044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* LCHAR version of strtok() 4074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 4084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOK wcstok 4094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* LCHAR version of strupr() which converts a string to lowercase. 4124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 4134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRUPR _wcsupr 4144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 4154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCASECMP wcscasecmp 4164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRLWR #error LSTRLWR not defined. 4174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRUPR #error LSTRUPR not defined. 4184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* _WIN32 */ 4194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRLEN wcslen 4214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRNCPY wcsncpy 4224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LMEMMOVE wmemmove 4234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRSTR wcsstr 4244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOD wcstod 4254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOL wcstol 4264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRTOUL wcstoul 4274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISSPACE iswspace 4284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LSTRCSPN wcscspn 4294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISALPHA iswalpha 4304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISALNUM iswalnum 4314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LISDIGIT iswdigit 4324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Converts LCHAR character to uppercase. 4354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 4364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LTOUPPER towupper 4374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Converts LCHAR character to lowercase. 4404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 4414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LTOLOWER towlower 4424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Portable sprintf(). 4454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 4464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define psprintf sprintf 4474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Portable svprintf(). 4504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 4514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define pvsprintf vsprintf 4524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* USE_NARROW_CHAR */ 4544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Log of 2 in base 10. 4574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 4584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LOG_10_2 (0.30102999566398) 4594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Maximum number of digits used to represent an unsigned int as a string in 4634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * base 10. The +1 is for taking into account the fact that the fractional 4644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * part is removed and that we really need to take the ceiling. 4654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 4664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_UINT_DIGITS ((size_t) ((CHAR_BIT * sizeof(int) * LOG_10_2) + 1)) 4674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Maximum number of digits used to represent an int as a string in base 10. 4704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * +1 for sign character [+, -] 4714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 4724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_INT_DIGITS ((size_t) (MAX_UINT_DIGITS + 1)) 4734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Indicates if text contains a number (and nothing else). 4764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 4774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param text String to check 4784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_TRUE if text is a number, ESR_FALSE otherwise. 4794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 4804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPORTABLE_API ESR_BOOL isNumber(const LCHAR* text); 4814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 4834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @} 4844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 4854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_ReturnCode.h" 4884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pstdio.h" 4914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 4934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 495